From 25b5231cbc307ad755e35b81bb626f68bffe79f1 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 12 Jun 2023 14:25:52 +0200 Subject: [PATCH 1/6] eliminada la lib datatables editor de httpdocs --- .../datatable-editor/ccs/editor.bootstrap.css | 702 -- .../ccs/editor.bootstrap.min.css | 1 - .../ccs/editor.bootstrap4.css | 779 -- .../ccs/editor.bootstrap4.min.css | 1 - .../ccs/editor.bootstrap5.css | 782 -- .../ccs/editor.bootstrap5.min.css | 1 - .../datatable-editor/ccs/editor.bulma.css | 466 -- .../datatable-editor/ccs/editor.bulma.min.css | 1 - .../ccs/editor.dataTables.css | 1279 --- .../ccs/editor.dataTables.min.css | 1 - .../ccs/editor.foundation.css | 590 -- .../ccs/editor.foundation.min.css | 1 - .../datatable-editor/ccs/editor.jqueryui.css | 865 --- .../ccs/editor.jqueryui.min.css | 1 - .../ccs/editor.semanticui.css | 602 -- .../ccs/editor.semanticui.min.css | 1 - .../datatable-editor/ccs/scss/bubble.scss | 130 - .../datatable-editor/ccs/scss/datatable.scss | 100 - .../datatable-editor/ccs/scss/envelope.scss | 63 - .../datatable-editor/ccs/scss/fields.scss | 280 - .../datatable-editor/ccs/scss/inline.scss | 79 - .../datatable-editor/ccs/scss/lightbox.scss | 174 - .../libs/datatable-editor/ccs/scss/main.scss | 180 - .../datatable-editor/ccs/scss/mixins.scss | 178 - .../datatable-editor/ccs/scss/processing.scss | 106 - .../datatable-editor/ccs/scss/upload.scss | 143 - .../datatable-editor/js/dataTables.editor.js | 6830 ----------------- .../js/dataTables.editor.min.js | 6 - .../js/dataTables.editor.min.mjs | 6 - .../datatable-editor/js/dataTables.editor.mjs | 6789 ---------------- .../datatable-editor/js/editor.bootstrap.js | 272 - .../js/editor.bootstrap.min.js | 4 - .../js/editor.bootstrap.min.mjs | 4 - .../datatable-editor/js/editor.bootstrap.mjs | 228 - .../datatable-editor/js/editor.bootstrap4.js | 264 - .../js/editor.bootstrap4.min.js | 4 - .../js/editor.bootstrap4.min.mjs | 4 - .../datatable-editor/js/editor.bootstrap4.mjs | 220 - .../datatable-editor/js/editor.bootstrap5.js | 315 - .../js/editor.bootstrap5.min.js | 4 - .../js/editor.bootstrap5.min.mjs | 4 - .../datatable-editor/js/editor.bootstrap5.mjs | 271 - .../libs/datatable-editor/js/editor.bulma.js | 216 - .../datatable-editor/js/editor.bulma.min.js | 4 - .../datatable-editor/js/editor.bulma.min.mjs | 4 - .../libs/datatable-editor/js/editor.bulma.mjs | 172 - .../datatable-editor/js/editor.dataTables.js | 59 - .../js/editor.dataTables.min.js | 4 - .../js/editor.dataTables.min.mjs | 4 - .../datatable-editor/js/editor.dataTables.mjs | 15 - .../datatable-editor/js/editor.foundation.js | 171 - .../js/editor.foundation.min.js | 4 - .../js/editor.foundation.min.mjs | 4 - .../datatable-editor/js/editor.foundation.mjs | 127 - .../datatable-editor/js/editor.jqueryui.js | 186 - .../js/editor.jqueryui.min.js | 4 - .../js/editor.jqueryui.min.mjs | 4 - .../datatable-editor/js/editor.jqueryui.mjs | 142 - .../datatable-editor/js/editor.semanticui.js | 256 - .../js/editor.semanticui.min.js | 4 - .../js/editor.semanticui.min.mjs | 4 - .../datatable-editor/js/editor.semanticui.mjs | 212 - 62 files changed, 24327 deletions(-) delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.min.css delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/bubble.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/datatable.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/envelope.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/fields.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/inline.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/lightbox.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/main.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/mixins.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/processing.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/upload.scss delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap4.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap4.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap4.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap4.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap5.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap5.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap5.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap5.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.jqueryui.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.jqueryui.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.jqueryui.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.jqueryui.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.semanticui.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.semanticui.min.js delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.semanticui.min.mjs delete mode 100644 httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.semanticui.mjs diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.css deleted file mode 100644 index c7a54469..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.css +++ /dev/null @@ -1,702 +0,0 @@ -div.DTE div.DTE_Form_Error { - color: #b11f1f; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE div.DTE_Form_Buttons button { - margin-left: 0.5em; -} - -div.modal div.DTE div.DTE_Form_Error { - display: none; - float: left; - padding-top: 7px; -} - -div.DTE_Field { - position: relative; -} -div.DTE_Field div.multi-value, -div.DTE_Field div.multi-restore { - display: none; - cursor: pointer; -} -div.DTE_Field div.multi-value span, -div.DTE_Field div.multi-restore span { - display: block; - color: #666; -} -div.DTE_Field div.multi-value:hover, -div.DTE_Field div.multi-restore:hover { - background-color: #f1f1f1; -} -div.DTE_Field div.multi-restore { - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; -} -div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} -div.DTE_Field div:not([data-dte-e=msg-error]) { - color: inherit; -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE_Inline div.DTE_Field { - width: 100%; -} -div.DTE_Inline div.DTE_Field > div { - width: 100%; - padding: 0; -} -div.DTE_Inline div.DTE_Field input.form-control { - height: 30px; -} -div.DTE_Inline div.DTE_Field div.help-block { - display: none; - margin-top: 10px; - margin-bottom: 0; -} -div.DTE_Inline.DTE_Processing:after { - top: 5px; -} - -div.DTE_Field_Type_checkbox div.controls, -div.DTE_Field_Type_radio div.controls { - margin-top: 0.4em; -} -div.DTE_Field_Type_checkbox div.controls label, -div.DTE_Field_Type_radio div.controls label { - margin-left: 0.75em; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Bubble div.DTE_Bubble_Liner { - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - border-radius: 6px; - padding: 1em; - border: 1px solid rgba(0, 0, 0, 0.2); -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - width: 100%; - max-width: 100%; - float: none; - clear: both; - text-align: left; - flex: none; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { - padding: 0 0 4px 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - font-size: 14px; - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - margin-top: -2px; - display: block; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-left: 1px solid rgba(0, 0, 0, 0.2); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - background-color: rgba(0, 0, 0, 0.05); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - height: auto; -} -div.DTE div.editor_upload ul li button { - padding-bottom: 8px; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - font-weight: normal; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { - text-align: center; -} - -@media (min-width: 1200px) { - div.DTE_Field_Type_datatable label.control-label { - text-align: left; - } -} -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -table.dataTable tbody tr.highlight { - background-color: #3399ff !important; -} -table.dataTable tbody tr.highlight, -table.dataTable tbody tr.noHighlight, -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} - -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 20px; -} - -div.DTE div.DTE_Processing_Indicator { - top: 52px; - right: 12px; -} - -/* - * Namespace: DTED - DataTables Editor Display - Envelope - */ -div.DTED_Envelope_Wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 50%; - height: 100%; - z-index: 11; - display: none; - overflow: hidden; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { - position: absolute; - top: -10px; - left: 10px; - right: 10px; - height: 10px; - z-index: 10; - box-shadow: 0 0 20px black; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { - position: absolute; - top: 0; - left: 5%; - width: 90%; - border-left: 1px solid #777; - border-right: 1px solid #777; - border-bottom: 1px solid #777; - box-shadow: 3px 3px 10px #555; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - background-color: white; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { - right: 36px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { - color: black; -} - -div.DTED_Envelope_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTED_Envelope_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTED_Envelope_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - top: 10px; - background: transparent; - text-shadow: none; - box-shadow: none; - border: none; - font-size: 21px; - color: black; - opacity: 0.2; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { - opacity: 1; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.min.css deleted file mode 100644 index 73e1f121..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.css deleted file mode 100644 index a6a37bba..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.css +++ /dev/null @@ -1,779 +0,0 @@ -div.DTE div.DTE_Form_Error { - color: #b11f1f; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE div.DTE_Form_Buttons button { - margin-left: 0.5em; -} - -div.modal div.DTE div.DTE_Form_Error { - display: none; - float: left; - padding-top: 7px; -} - -div.DTE_Field { - position: relative; -} -div.DTE_Field div.multi-value, -div.DTE_Field div.multi-restore { - display: none; - cursor: pointer; -} -div.DTE_Field div.multi-value span, -div.DTE_Field div.multi-restore span { - display: block; - color: #666; -} -div.DTE_Field div.multi-value:hover, -div.DTE_Field div.multi-restore:hover { - background-color: #f1f1f1; -} -div.DTE_Field div.multi-restore { - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; -} -div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} -div.DTE_Field div:not([data-dte-e=msg-error]) { - color: inherit; -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE_Inline div.DTE_Field { - width: 100%; -} -div.DTE_Inline div.DTE_Field > div { - width: 100%; - padding: 0; -} -div.DTE_Inline div.DTE_Field input.form-control { - height: 30px; -} -div.DTE_Inline div.DTE_Field div.help-block { - display: none; - margin-top: 10px; - margin-bottom: 0; -} -div.DTE_Inline.DTE_Processing:after { - top: 5px; -} - -div.DTE_Field_Type_checkbox div.controls, -div.DTE_Field_Type_radio div.controls { - margin-top: 0.4em; -} -div.DTE_Field_Type_checkbox div.controls label, -div.DTE_Field_Type_radio div.controls label { - margin-left: 0.75em; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Bubble div.DTE_Bubble_Liner { - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - border-radius: 6px; - padding: 1em; - border: 1px solid rgba(0, 0, 0, 0.2); -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - width: 100%; - max-width: 100%; - float: none; - clear: both; - text-align: left; - flex: none; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { - padding: 0 0 4px 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - font-size: 14px; - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - margin-top: -2px; - display: block; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-left: 1px solid rgba(0, 0, 0, 0.2); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - background-color: rgba(0, 0, 0, 0.05); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - height: auto; -} -div.DTE div.editor_upload ul li button { - padding-bottom: 8px; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - font-weight: normal; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { - text-align: center; -} - -@media (min-width: 1200px) { - div.DTE_Field_Type_datatable label.control-label { - text-align: left; - } -} -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -table.dataTable tbody tr.highlight { - background-color: #3399ff !important; -} -table.dataTable tbody tr.highlight, -table.dataTable tbody tr.noHighlight, -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} - -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 20px; -} - -div.DTE div.DTE_Processing_Indicator { - top: 52px; - right: 12px; -} - -/* - * Namespace: DTED - DataTables Editor Display - Envelope - */ -div.DTED_Envelope_Wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 50%; - height: 100%; - z-index: 11; - display: none; - overflow: hidden; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { - position: absolute; - top: -10px; - left: 10px; - right: 10px; - height: 10px; - z-index: 10; - box-shadow: 0 0 20px black; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { - position: absolute; - top: 0; - left: 5%; - width: 90%; - border-left: 1px solid #777; - border-right: 1px solid #777; - border-bottom: 1px solid #777; - box-shadow: 3px 3px 10px #555; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - background-color: white; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { - right: 36px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { - color: black; -} - -div.DTED_Envelope_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTED_Envelope_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTED_Envelope_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - top: 10px; - background: transparent; - text-shadow: none; - box-shadow: none; - border: none; - font-size: 21px; - color: black; - opacity: 0.2; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { - opacity: 1; -} - -div.multi-value, -div.multi-restore { - padding: 0.5em; -} -div.multi-value span, -div.multi-restore span { - line-height: 1.2em; -} - -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - margin: 0 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - margin-top: 1em; -} - -div.DTE_Inline div.DTE_Field { - width: 100%; - margin: 0; -} -div.DTE_Inline div.DTE_Field > div { - max-width: 100%; - flex: none; -} -div.DTE_Inline div.DTE_Field input { - margin: -5px 0 -10px !important; -} - -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label, -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div { - max-width: 100%; - flex: 0 0 100%; -} - -div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, -div.DTE_Field_Type_radio div.DTE_Field_InputControl { - padding-top: 5px; -} -div.DTE_Field_Type_checkbox div label, -div.DTE_Field_Type_radio div label { - margin-bottom: 0.2em; - margin-left: 0.75em; - vertical-align: middle; -} - -div.DTE div.DTE_Processing_Indicator { - top: 20px; - right: 36px; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 0; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper > table { - border: 1px solid #ced4da; - border-radius: 3px; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper > table thead th, -div.DTE_Field_Type_datatable div.dataTables_wrapper > table tbody td { - border-top: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination { - justify-content: center; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.min.css deleted file mode 100644 index a7f634b4..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap4.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1}div.multi-value,div.multi-restore{padding:.5em}div.multi-value span,div.multi-restore span{line-height:1.2em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{margin:0 1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:1em}div.DTE_Inline div.DTE_Field{width:100%;margin:0}div.DTE_Inline div.DTE_Field>div{max-width:100%;flex:none}div.DTE_Inline div.DTE_Field input{margin:-5px 0 -10px !important}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div{max-width:100%;flex:0 0 100%}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:5px}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-bottom:.2em;margin-left:.75em;vertical-align:middle}div.DTE div.DTE_Processing_Indicator{top:20px;right:36px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:0}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper>table{border:1px solid #ced4da;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_wrapper>table thead th,div.DTE_Field_Type_datatable div.dataTables_wrapper>table tbody td{border-top:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.css deleted file mode 100644 index 3183ec1a..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.css +++ /dev/null @@ -1,782 +0,0 @@ -div.DTE div.DTE_Form_Error { - color: #b11f1f; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE div.DTE_Form_Buttons button { - margin-left: 0.5em; -} - -div.modal div.DTE div.DTE_Form_Error { - display: none; - float: left; - padding-top: 7px; -} - -div.DTE_Field { - position: relative; -} -div.DTE_Field div.multi-value, -div.DTE_Field div.multi-restore { - display: none; - cursor: pointer; -} -div.DTE_Field div.multi-value span, -div.DTE_Field div.multi-restore span { - display: block; - color: #666; -} -div.DTE_Field div.multi-value:hover, -div.DTE_Field div.multi-restore:hover { - background-color: #f1f1f1; -} -div.DTE_Field div.multi-restore { - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; -} -div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} -div.DTE_Field div:not([data-dte-e=msg-error]) { - color: inherit; -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE_Inline div.DTE_Field { - width: 100%; -} -div.DTE_Inline div.DTE_Field > div { - width: 100%; - padding: 0; -} -div.DTE_Inline div.DTE_Field input.form-control { - height: 30px; -} -div.DTE_Inline div.DTE_Field div.help-block { - display: none; - margin-top: 10px; - margin-bottom: 0; -} -div.DTE_Inline.DTE_Processing:after { - top: 5px; -} - -div.DTE_Field_Type_checkbox div.controls, -div.DTE_Field_Type_radio div.controls { - margin-top: 0.4em; -} -div.DTE_Field_Type_checkbox div.controls label, -div.DTE_Field_Type_radio div.controls label { - margin-left: 0.75em; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Bubble div.DTE_Bubble_Liner { - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - border-radius: 6px; - padding: 1em; - border: 1px solid rgba(0, 0, 0, 0.2); -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - width: 100%; - max-width: 100%; - float: none; - clear: both; - text-align: left; - flex: none; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { - padding: 0 0 4px 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - font-size: 14px; - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - margin-top: -2px; - display: block; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-left: 1px solid rgba(0, 0, 0, 0.2); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - background-color: rgba(0, 0, 0, 0.05); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - height: auto; -} -div.DTE div.editor_upload ul li button { - padding-bottom: 8px; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - font-weight: normal; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { - text-align: center; -} - -@media (min-width: 1200px) { - div.DTE_Field_Type_datatable label.control-label { - text-align: left; - } -} -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -table.dataTable tbody tr.highlight { - background-color: #3399ff !important; -} -table.dataTable tbody tr.highlight, -table.dataTable tbody tr.noHighlight, -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} - -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 20px; -} - -div.DTE div.DTE_Processing_Indicator { - top: 52px; - right: 12px; -} - -/* - * Namespace: DTED - DataTables Editor Display - Envelope - */ -div.DTED_Envelope_Wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 50%; - height: 100%; - z-index: 11; - display: none; - overflow: hidden; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { - position: absolute; - top: -10px; - left: 10px; - right: 10px; - height: 10px; - z-index: 10; - box-shadow: 0 0 20px black; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { - position: absolute; - top: 0; - left: 5%; - width: 90%; - border-left: 1px solid #777; - border-right: 1px solid #777; - border-bottom: 1px solid #777; - box-shadow: 3px 3px 10px #555; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - background-color: white; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { - right: 36px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { - color: black; -} - -div.DTED_Envelope_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTED_Envelope_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTED_Envelope_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - top: 10px; - background: transparent; - text-shadow: none; - box-shadow: none; - border: none; - font-size: 21px; - color: black; - opacity: 0.2; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { - opacity: 1; -} - -div.multi-value, -div.multi-restore { - padding: 0.5em; -} -div.multi-value span, -div.multi-restore span { - line-height: 1.2em; -} - -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - margin: 0 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - margin-top: 1em; -} - -div.DTE_Inline div.DTE_Field { - width: 100%; - margin: 0; -} -div.DTE_Inline div.DTE_Field > div { - max-width: 100%; - flex: none; -} -div.DTE_Inline div.DTE_Field input { - font-size: 1em; - margin: -5px 0 -10px !important; -} - -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label, -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div { - max-width: 100%; - flex: 0 0 100%; -} - -div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, -div.DTE_Field_Type_radio div.DTE_Field_InputControl { - padding-top: 5px; -} -div.DTE_Field_Type_checkbox div label, -div.DTE_Field_Type_radio div label { - margin-left: 0.75em; - vertical-align: middle; -} - -div.DTE div.DTE_Processing_Indicator { - top: 20px; - right: 36px; -} - -div.DTE_Field_Type_datatable div.dataTables_filter { - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 0; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper > table { - border: 1px solid #ced4da; - border-radius: 3px; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper > table thead th, -div.DTE_Field_Type_datatable div.dataTables_wrapper > table tbody td { - border-top: none; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination { - justify-content: center; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.min.css deleted file mode 100644 index 37c4eed4..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bootstrap5.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1}div.multi-value,div.multi-restore{padding:.5em}div.multi-value span,div.multi-restore span{line-height:1.2em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{margin:0 1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:1em}div.DTE_Inline div.DTE_Field{width:100%;margin:0}div.DTE_Inline div.DTE_Field>div{max-width:100%;flex:none}div.DTE_Inline div.DTE_Field input{font-size:1em;margin:-5px 0 -10px !important}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div{max-width:100%;flex:0 0 100%}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:5px}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-left:.75em;vertical-align:middle}div.DTE div.DTE_Processing_Indicator{top:20px;right:36px}div.DTE_Field_Type_datatable div.dataTables_filter{padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:0}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper>table{border:1px solid #ced4da;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_wrapper>table thead th,div.DTE_Field_Type_datatable div.dataTables_wrapper>table tbody td{border-top:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.css deleted file mode 100644 index afa57bb8..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.css +++ /dev/null @@ -1,466 +0,0 @@ -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -div.modal-content { - padding: 20px; - background: white; - border-radius: 5px; -} -div.modal-content div.modal-header { - padding-bottom: 20px; -} -div.modal-content div.modal-footer { - padding-top: 6px; -} -div.modal-content div.field.is-grouped { - display: none; -} -div.modal-content div.dataTables_info { - font-weight: 1; - font-size: 0.8em; - padding-left: 2px; -} -div.modal-content div.dataTables_info span.select-item { - padding-left: 0.5em; -} - -div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; - padding-top: 10px; -} -div.DTE_Form_Buttons button { - margin-left: 0.5em; -} - -div.card { - border-color: #888; -} - -table.dataTable div.field { - margin-bottom: 0px; -} -table.dataTable div.field input.input { - padding: 0px; -} -table.dataTable div.field input.is-small { - font-size: 1em; - height: 2em; -} - -div.DTE_Field_Type_checkbox div label, -div.DTE_Field_Type_radio div label { - margin-left: 0.75em; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.min.css deleted file mode 100644 index 1be29df8..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.bulma.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.modal-content{padding:20px;background:white;border-radius:5px}div.modal-content div.modal-header{padding-bottom:20px}div.modal-content div.modal-footer{padding-top:6px}div.modal-content div.field.is-grouped{display:none}div.modal-content div.dataTables_info{font-weight:1;font-size:.8em;padding-left:2px}div.modal-content div.dataTables_info span.select-item{padding-left:.5em}div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse;padding-top:10px}div.DTE_Form_Buttons button{margin-left:.5em}div.card{border-color:#888}table.dataTable div.field{margin-bottom:0px}table.dataTable div.field input.input{padding:0px}table.dataTable div.field input.is-small{font-size:1em;height:2em}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-left:.75em} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.css deleted file mode 100644 index d497dbd2..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.css +++ /dev/null @@ -1,1279 +0,0 @@ -div.DTE { - position: relative; -} -div.DTE div.DTE_Header { - position: absolute; - top: 0; - left: 0; - height: 52px; - width: 100%; - background-color: #e8e9eb; - border-bottom: 1px solid rgba(0, 0, 0, 0.15); - padding: 16px 10px 2px 16px; - font-size: 1.3em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE div.DTE_Body { - position: relative; -} -div.DTE div.DTE_Footer { - position: absolute; - bottom: 0; - left: 0; - height: 52px; - width: 100%; - background-color: #e8e9eb; - border-top: 1px solid rgba(0, 0, 0, 0.15); - padding: 10px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE div.DTE_Form_Info { - margin-bottom: 0.5em; - display: none; -} -div.DTE div.DTE_Form_Content { - position: relative; - padding: 1em; -} -div.DTE div.DTE_Form_Error { - float: left; - padding: 5px; - display: none; - color: #b11f1f; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE button.btn, -div.DTE div.DTE_Form_Buttons button { - position: relative; - text-align: center; - display: block; - margin-top: 0; - padding: 0.5em 1em; - cursor: pointer; - margin-left: 0.75em; - color: inherit; - font-size: 14px; - white-space: nowrap; - border: 1px solid #999; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -ms-border-radius: 2px; - -o-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: 1px 1px 3px #ccc; - -moz-box-shadow: 1px 1px 3px #ccc; - box-shadow: 1px 1px 3px #ccc; - background-color: #dcdcdc; /* Fallback */ - background-image: -webkit-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* FF3.6 */ - background-image: -ms-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* IE10 */ - background-image: -o-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* Opera 11.10+ */ - background-image: linear-gradient(to bottom, #ffffff 0%, #dcdcdc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#ffffff", EndColorStr="#dcdcdc"); -} -div.DTE button.btn:hover, -div.DTE div.DTE_Form_Buttons button:hover { - border: 1px solid #666; - -webkit-box-shadow: 1px 1px 3px #999; - -moz-box-shadow: 1px 1px 3px #999; - box-shadow: 1px 1px 3px #999; - background-color: #cccccc; /* Fallback */ - background-image: -webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* FF3.6 */ - background-image: -ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* IE10 */ - background-image: -o-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* Opera 11.10+ */ - background-image: linear-gradient(to bottom, #eaeaea 0%, #cccccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#eaeaea", EndColorStr="#cccccc"); -} -div.DTE button.btn:active, -div.DTE div.DTE_Form_Buttons button:active { - -webkit-box-shadow: inset 1px 1px 3px #999; - -moz-box-shadow: inset 1px 1px 3px #999; - box-shadow: inset 1px 1px 3px #999; -} -div.DTE button.btn:focus, -div.DTE div.DTE_Form_Buttons button:focus { - border: 1px solid #426c9e; - text-shadow: 0 1px 0 #c4def1; - background-color: #79ace9; /* Fallback */ - background-image: -webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* FF3.6 */ - background-image: -ms-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* IE10 */ - background-image: -o-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* Opera 11.10+ */ - background-image: linear-gradient(to bottom, #bddef4 0%, #79ace9 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#bddef4", EndColorStr="#79ace9"); - outline: none; -} -div.DTE button.btn:focus:after, -div.DTE div.DTE_Form_Buttons button:focus:after { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: white; - display: block; - content: " "; - -webkit-animation-duration: 1s; - -webkit-animation-name: buttonPulse; - -webkit-animation-fill-mode: forwards; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - -webkit-animation-direction: alternate; - -moz-animation-duration: 1s; - -moz-animation-name: buttonPulse; - -moz-animation-fill-mode: forwards; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - -moz-animation-direction: alternate; - -o-animation-duration: 1s; - -o-animation-name: buttonPulse; - -o-animation-fill-mode: forwards; - -o-animation-iteration-count: infinite; - -o-animation-timing-function: linear; - -o-animation-direction: alternate; - animation-duration: 1s; - animation-name: buttonPulse; - animation-fill-mode: forwards; - animation-iteration-count: infinite; - animation-timing-function: linear; - animation-direction: alternate; -} -div.DTE.DTE_Action_Remove div.DTE_Body_Content { - text-align: center; - padding: 20px 0; -} - -@-webkit-keyframes buttonPulse { - 0% { - opacity: 0; - } - 100% { - opacity: 0.2; - } -} -@-moz-keyframes buttonPulse { - 0% { - opacity: 0; - } - 100% { - opacity: 0.2; - } -} -@-o-keyframes buttonPulse { - 0% { - opacity: 0; - } - 100% { - opacity: 0.2; - } -} -@keyframes buttonPulse { - 0% { - opacity: 0; - } - 100% { - opacity: 0.2; - } -} -div.DTTT_container { - float: left; -} - -div.DTE_Field input, -div.DTE_Field textarea { - box-sizing: border-box; - background-color: white; - -webkit-transition: background-color ease-in-out 0.15s; - transition: background-color ease-in-out 0.15s; -} -div.DTE_Field input:focus, -div.DTE_Field textarea:focus { - background-color: #ffffee; -} -div.DTE_Field input[type=color], -div.DTE_Field input[type=date], -div.DTE_Field input[type=datetime], -div.DTE_Field input[type=datetime-local], -div.DTE_Field input[type=email], -div.DTE_Field input[type=month], -div.DTE_Field input[type=number], -div.DTE_Field input[type=password], -div.DTE_Field input[type=search], -div.DTE_Field input[type=tel], -div.DTE_Field input[type=text], -div.DTE_Field input[type=time], -div.DTE_Field input[type=url], -div.DTE_Field input[type=week] { - padding: 5px 4px; - width: 100%; - border: 1px solid #aaa; - border-radius: 3px; -} -div.DTE_Field input[type=checkbox], -div.DTE_Field input[type=radio] { - vertical-align: middle; -} -div.DTE_Field select { - padding: 5px 4px; - border-radius: 3px; - border: 1px solid #aaa; - background: white; - max-width: 100%; -} -div.DTE_Field label div.DTE_Label_Info { - font-size: 0.85em; - margin-top: 0.25em; -} -div.DTE_Field label div.DTE_Label_Info:empty { - margin-top: 0; -} -div.DTE_Field div.DTE_Field_Info, -div.DTE_Field div.DTE_Field_Message, -div.DTE_Field div.DTE_Field_Error { - font-size: 11px; - line-height: 1em; - margin-top: 5px; -} -div.DTE_Field div.DTE_Field_Info:empty, -div.DTE_Field div.DTE_Field_Message:empty, -div.DTE_Field div.DTE_Field_Error:empty { - margin-top: 0; -} -div.DTE_Field div.DTE_Field_Error { - display: none; - color: #b11f1f; -} -div.DTE_Field div.multi-value { - display: none; - border: 1px dotted #666; - border-radius: 3px; - padding: 5px; - background-color: #fafafa; - cursor: pointer; -} -div.DTE_Field div.multi-value span { - font-size: 0.8em; - line-height: 1.25em; - display: block; - color: #666; -} -div.DTE_Field div.multi-value.multi-noEdit { - border: 1px solid #ccc; - cursor: auto; - background-color: #fcfcfc; -} -div.DTE_Field div.multi-value.multi-noEdit:hover { - background-color: #fcfcfc; -} -div.DTE_Field div.multi-value:hover { - background-color: #f1f1f1; -} -div.DTE_Field.disabled { - color: grey; -} -div.DTE_Field.disabled div.multi-value { - cursor: default; - border: 1px dotted #aaa; - background-color: transparent; -} -div.DTE_Field div.multi-restore { - display: none; - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; - color: #3879d9; -} -div.DTE_Field div.multi-restore:hover { - text-decoration: underline; - cursor: pointer; -} - -div.DTE_Field_Type_textarea textarea { - padding: 3px; - width: 100%; - height: 80px; - border: 1px solid #aaa; -} - -div.DTE_Field.DTE_Field_Type_date img { - vertical-align: middle; - cursor: pointer; -} - -div.DTE_Field_Type_checkbox div.DTE_Field_Input, -div.DTE_Field_Type_radio div.DTE_Field_Input { - padding-top: 1px; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div { - margin-bottom: 0.25em; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div:last-child, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div:last-child { - margin-bottom: 0; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div label, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div label { - margin-left: 0.75em; - vertical-align: middle; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dataTables_filter { - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dataTables_filter input { - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dt-buttons button { - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - padding-bottom: 0; -} -div.DTE_Field_Type_datatable div.dataTables_paginate { - float: none; - text-align: center; - font-size: 0.8em; -} -div.DTE_Field_Type_datatable table.dataTable.no-footer { - border-bottom: 1px solid #aaa !important; -} -div.DTE_Field_Type_datatable table.dataTable thead th, div.DTE_Field_Type_datatable table.dataTable thead td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-bottom: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tbody th:first-child, -div.DTE_Field_Type_datatable table.dataTable tbody td:first-child { - border-left: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tbody th:last-child, -div.DTE_Field_Type_datatable table.dataTable tbody td:last-child { - border-right: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tfoot th, div.DTE_Field_Type_datatable table.dataTable tfoot td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-top: 1px solid #aaa; -} -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable, -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th, -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td { - border-bottom: none !important; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody { - border: 1px solid #aaa !important; - border-radius: 3px; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable { - border-bottom: none !important; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child, -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child { - border-left: none; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child, -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child { - border-right: none; -} - -div.DTE_Body { - padding: 52px 0; -} -div.DTE_Body div.DTE_Body_Content { - position: relative; - overflow: auto; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info { - padding: 1em 1em 0 1em; - margin: 0; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field { - position: relative; - clear: both; - padding: 5px 10%; - border: 1px solid transparent; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover { - background-color: #f9f9f9; - border: 1px solid #f3f3f3; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: left; - width: 33%; - padding-top: 3px; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: right; - width: 66%; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0 5px 10%; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - float: none; - clear: both; - width: 100%; -} - -html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: right; -} -html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: left; -} -html[dir=rtl] div.DTE div.DTE_Form_Buttons button { - float: left; -} - -@media only screen and (max-width: 768px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - padding: 5px 10%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0 5px 10%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { - width: 35.5%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { - width: 64.5%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -@media only screen and (max-width: 640px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { - width: 40%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { - width: 60%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -@media only screen and (max-width: 580px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - position: relative; - clear: both; - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: none; - width: auto; - padding-top: 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: none; - width: auto; - margin-top: 4px; - margin-bottom: 6px; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block { - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label, - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > label, - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 50%; - margin-left: -390px; - width: 780px; - height: 100%; - z-index: 11; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container { - display: table; - height: 100%; - width: 100%; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper { - display: table-cell; - vertical-align: middle; - width: 100%; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content { - position: relative; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE { - background: white; - border-radius: 6px; - border: 1px solid #666; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header { - right: 0; - width: auto; - border-top-left-radius: 6px; - border-top-right-radius: 6px; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content { - box-sizing: border-box; - background: #fcfcfc; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer { - right: 0; - width: auto; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:hover:after { - color: black; -} - -div.DTED_Lightbox_Wrapper div.DTE_Footer { - display: flex; - justify-content: flex-end; -} -div.DTED_Lightbox_Wrapper div.DTE_Footer_Content { - display: none; -} -div.DTED_Lightbox_Wrapper div.DTE.inFormError div.DTE_Footer { - justify-content: space-between; -} - -div.DTED_Lightbox_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTED_Lightbox_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTED_Lightbox_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Background { - height: 0; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Shown { - display: none; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - width: auto; - height: auto; - margin-left: 0; - -webkit-overflow-scrolling: touch; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container { - display: block; - height: 100%; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper { - display: block; - height: 100%; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content { - border-radius: 0; - box-shadow: none; - height: 100% !important; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE { - border-radius: 0; - height: 100%; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content { - padding-bottom: 52px; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close { - top: 11px; - right: 15px; - background-color: transparent; - border: none; - box-shadow: none; -} - -@media only screen and (max-width: 780px) { - body div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 0; - width: 90%; - margin-left: 5%; - } -} -@media only screen and (max-width: 580px) { - body div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 0; - width: 100%; - margin-left: 0; - } -} -/* - * Namespace: DTED - DataTables Editor Display - Envelope - */ -div.DTED_Envelope_Wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 50%; - height: 100%; - z-index: 11; - display: none; - overflow: hidden; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { - position: absolute; - top: -10px; - left: 10px; - right: 10px; - height: 10px; - z-index: 10; - box-shadow: 0 0 20px black; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { - position: absolute; - top: 0; - left: 5%; - width: 90%; - border-left: 1px solid #777; - border-right: 1px solid #777; - border-bottom: 1px solid #777; - box-shadow: 3px 3px 10px #555; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - background-color: white; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { - right: 36px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { - color: black; -} - -div.DTED_Envelope_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTED_Envelope_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTED_Envelope_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -table.dataTable tbody tr.highlight { - background-color: #FFFBCC !important; -} -table.dataTable tbody tr.highlight, -table.dataTable tbody tr.noHighlight, -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} -table.dataTable.stripe tbody tr.odd.highlight, table.dataTable.display tbody tr.odd.highlight { - background-color: #f9f5c7; -} -table.dataTable.hover tbody tr:hover.highlight, -table.dataTable.hover tbody tr.odd:hover.highlight, -table.dataTable.hover tbody tr.even:hover.highlight, table.dataTable.display tbody tr:hover.highlight, -table.dataTable.display tbody tr.odd:hover.highlight, -table.dataTable.display tbody tr.even:hover.highlight { - background-color: #f6f2c5; -} -table.dataTable.order-column tbody tr.highlight > .sorting_1, -table.dataTable.order-column tbody tr.highlight > .sorting_2, -table.dataTable.order-column tbody tr.highlight > .sorting_3, table.dataTable.display tbody tr.highlight > .sorting_1, -table.dataTable.display tbody tr.highlight > .sorting_2, -table.dataTable.display tbody tr.highlight > .sorting_3 { - background-color: #faf6c8; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_1 { - background-color: #f1edc1; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_2 { - background-color: #f3efc2; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_3 { - background-color: #f5f1c4; -} -table.dataTable.display tbody tr.even.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_1 { - background-color: #faf6c8; -} -table.dataTable.display tbody tr.even.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_2 { - background-color: #fcf8ca; -} -table.dataTable.display tbody tr.even.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_3 { - background-color: #fefacb; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_1, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_1, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_1 { - background-color: #eae6bb; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_2, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_2, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_2 { - background-color: #ece8bd; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_3, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_3, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_3 { - background-color: #efebbf; -} -table.dataTable tr.dte-inlineAdd td, -table.dataTable tr.dte-inlineAdd th { - vertical-align: top; -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.min.css deleted file mode 100644 index 0d538bff..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.dataTables.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE{position:relative}div.DTE div.DTE_Header{position:absolute;top:0;left:0;height:52px;width:100%;background-color:#e8e9eb;border-bottom:1px solid rgba(0, 0, 0, 0.15);padding:16px 10px 2px 16px;font-size:1.3em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE div.DTE_Body{position:relative}div.DTE div.DTE_Footer{position:absolute;bottom:0;left:0;height:52px;width:100%;background-color:#e8e9eb;border-top:1px solid rgba(0, 0, 0, 0.15);padding:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE div.DTE_Form_Info{margin-bottom:.5em;display:none}div.DTE div.DTE_Form_Content{position:relative;padding:1em}div.DTE div.DTE_Form_Error{float:left;padding:5px;display:none;color:#b11f1f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE button.btn,div.DTE div.DTE_Form_Buttons button{position:relative;text-align:center;display:block;margin-top:0;padding:.5em 1em;cursor:pointer;margin-left:.75em;color:inherit;font-size:14px;white-space:nowrap;border:1px solid #999;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background-color:#dcdcdc;background-image:-webkit-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-moz-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-ms-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-o-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:linear-gradient(to bottom, #ffffff 0%, #dcdcdc 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#ffffff", EndColorStr="#dcdcdc")}div.DTE button.btn:hover,div.DTE div.DTE_Form_Buttons button:hover{border:1px solid #666;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background-color:#ccc;background-image:-webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-o-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:linear-gradient(to bottom, #eaeaea 0%, #cccccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#eaeaea", EndColorStr="#cccccc")}div.DTE button.btn:active,div.DTE div.DTE_Form_Buttons button:active{-webkit-box-shadow:inset 1px 1px 3px #999;-moz-box-shadow:inset 1px 1px 3px #999;box-shadow:inset 1px 1px 3px #999}div.DTE button.btn:focus,div.DTE div.DTE_Form_Buttons button:focus{border:1px solid #426c9e;text-shadow:0 1px 0 #c4def1;background-color:#79ace9;background-image:-webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-o-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:linear-gradient(to bottom, #bddef4 0%, #79ace9 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#bddef4", EndColorStr="#79ace9");outline:none}div.DTE button.btn:focus:after,div.DTE div.DTE_Form_Buttons button:focus:after{position:absolute;top:0;left:0;right:0;bottom:0;background:white;display:block;content:" ";-webkit-animation-duration:1s;-webkit-animation-name:buttonPulse;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-direction:alternate;-moz-animation-duration:1s;-moz-animation-name:buttonPulse;-moz-animation-fill-mode:forwards;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear;-moz-animation-direction:alternate;-o-animation-duration:1s;-o-animation-name:buttonPulse;-o-animation-fill-mode:forwards;-o-animation-iteration-count:infinite;-o-animation-timing-function:linear;-o-animation-direction:alternate;animation-duration:1s;animation-name:buttonPulse;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-timing-function:linear;animation-direction:alternate}div.DTE.DTE_Action_Remove div.DTE_Body_Content{text-align:center;padding:20px 0}@-webkit-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@-moz-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@-o-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}div.DTTT_container{float:left}div.DTE_Field input,div.DTE_Field textarea{box-sizing:border-box;background-color:white;-webkit-transition:background-color ease-in-out .15s;transition:background-color ease-in-out .15s}div.DTE_Field input:focus,div.DTE_Field textarea:focus{background-color:#ffe}div.DTE_Field input[type=color],div.DTE_Field input[type=date],div.DTE_Field input[type=datetime],div.DTE_Field input[type=datetime-local],div.DTE_Field input[type=email],div.DTE_Field input[type=month],div.DTE_Field input[type=number],div.DTE_Field input[type=password],div.DTE_Field input[type=search],div.DTE_Field input[type=tel],div.DTE_Field input[type=text],div.DTE_Field input[type=time],div.DTE_Field input[type=url],div.DTE_Field input[type=week]{padding:5px 4px;width:100%;border:1px solid #aaa;border-radius:3px}div.DTE_Field input[type=checkbox],div.DTE_Field input[type=radio]{vertical-align:middle}div.DTE_Field select{padding:5px 4px;border-radius:3px;border:1px solid #aaa;background:white;max-width:100%}div.DTE_Field label div.DTE_Label_Info{font-size:.85em;margin-top:.25em}div.DTE_Field label div.DTE_Label_Info:empty{margin-top:0}div.DTE_Field div.DTE_Field_Info,div.DTE_Field div.DTE_Field_Message,div.DTE_Field div.DTE_Field_Error{font-size:11px;line-height:1em;margin-top:5px}div.DTE_Field div.DTE_Field_Info:empty,div.DTE_Field div.DTE_Field_Message:empty,div.DTE_Field div.DTE_Field_Error:empty{margin-top:0}div.DTE_Field div.DTE_Field_Error{display:none;color:#b11f1f}div.DTE_Field div.multi-value{display:none;border:1px dotted #666;border-radius:3px;padding:5px;background-color:#fafafa;cursor:pointer}div.DTE_Field div.multi-value span{font-size:.8em;line-height:1.25em;display:block;color:#666}div.DTE_Field div.multi-value.multi-noEdit{border:1px solid #ccc;cursor:auto;background-color:#fcfcfc}div.DTE_Field div.multi-value.multi-noEdit:hover{background-color:#fcfcfc}div.DTE_Field div.multi-value:hover{background-color:#f1f1f1}div.DTE_Field.disabled{color:grey}div.DTE_Field.disabled div.multi-value{cursor:default;border:1px dotted #aaa;background-color:transparent}div.DTE_Field div.multi-restore{display:none;margin-top:.5em;font-size:.8em;line-height:1.25em;color:#3879d9}div.DTE_Field div.multi-restore:hover{text-decoration:underline;cursor:pointer}div.DTE_Field_Type_textarea textarea{padding:3px;width:100%;height:80px;border:1px solid #aaa}div.DTE_Field.DTE_Field_Type_date img{vertical-align:middle;cursor:pointer}div.DTE_Field_Type_checkbox div.DTE_Field_Input,div.DTE_Field_Type_radio div.DTE_Field_Input{padding-top:1px}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div{margin-bottom:.25em}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div:last-child,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div:last-child{margin-bottom:0}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div label,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div label{margin-left:.75em;vertical-align:middle}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_filter{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100%}div.DTE_Field_Type_datatable div.dt-buttons{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons button{width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{padding-bottom:0}div.DTE_Field_Type_datatable div.dataTables_paginate{float:none;text-align:center;font-size:.8em}div.DTE_Field_Type_datatable table.dataTable.no-footer{border-bottom:1px solid #aaa !important}div.DTE_Field_Type_datatable table.dataTable thead th,div.DTE_Field_Type_datatable table.dataTable thead td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-bottom:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable table.dataTable tbody td:first-child{border-left:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable table.dataTable tbody td:last-child{border-right:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tfoot th,div.DTE_Field_Type_datatable table.dataTable tfoot td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-top:1px solid #aaa}div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody{border:1px solid #aaa !important;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child{border-left:none}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child{border-right:none}div.DTE_Body{padding:52px 0}div.DTE_Body div.DTE_Body_Content{position:relative;overflow:auto}div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info{padding:1em 1em 0 1em;margin:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 10%;border:1px solid transparent}div.DTE_Body div.DTE_Body_Content div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover{background-color:#f9f9f9;border:1px solid #f3f3f3}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:left;width:33%;padding-top:3px}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:right;width:66%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{float:none;clear:both;width:100%}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:right}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:left}html[dir=rtl] div.DTE div.DTE_Form_Buttons button{float:left}@media only screen and (max-width: 768px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:35.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:64.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 640px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:40%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:60%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 580px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:none;width:auto;padding-top:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:none;width:auto;margin-top:4px;margin-bottom:6px}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:50%;margin-left:-390px;width:780px;height:100%;z-index:11}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container{display:table;height:100%;width:100%}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper{display:table-cell;vertical-align:middle;width:100%}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content{position:relative;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE{background:white;border-radius:6px;border:1px solid #666;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header{right:0;width:auto;border-top-left-radius:6px;border-top-right-radius:6px}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content{box-sizing:border-box;background:#fcfcfc}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer{right:0;width:auto;border-bottom-left-radius:6px;border-bottom-right-radius:6px}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:hover:after{color:black}div.DTED_Lightbox_Wrapper div.DTE_Footer{display:flex;justify-content:flex-end}div.DTED_Lightbox_Wrapper div.DTE_Footer_Content{display:none}div.DTED_Lightbox_Wrapper div.DTE.inFormError div.DTE_Footer{justify-content:space-between}div.DTED_Lightbox_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Lightbox_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Lightbox_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Background{height:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Shown{display:none}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper{position:fixed;top:0px;left:0px;right:0px;bottom:0px;width:auto;height:auto;margin-left:0;-webkit-overflow-scrolling:touch}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container{display:block;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper{display:block;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content{border-radius:0;box-shadow:none;height:100% !important}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE{border-radius:0;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header{border-top-left-radius:0;border-top-right-radius:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content{padding-bottom:52px}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer{border-bottom-left-radius:0;border-bottom-right-radius:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close{top:11px;right:15px;background-color:transparent;border:none;box-shadow:none}@media only screen and (max-width: 780px){body div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:0;width:90%;margin-left:5%}}@media only screen and (max-width: 580px){body div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:0;width:100%;margin-left:0}}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}table.dataTable tbody tr.highlight{background-color:#fffbcc !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}table.dataTable.stripe tbody tr.odd.highlight,table.dataTable.display tbody tr.odd.highlight{background-color:#f9f5c7}table.dataTable.hover tbody tr:hover.highlight,table.dataTable.hover tbody tr.odd:hover.highlight,table.dataTable.hover tbody tr.even:hover.highlight,table.dataTable.display tbody tr:hover.highlight,table.dataTable.display tbody tr.odd:hover.highlight,table.dataTable.display tbody tr.even:hover.highlight{background-color:#f6f2c5}table.dataTable.order-column tbody tr.highlight>.sorting_1,table.dataTable.order-column tbody tr.highlight>.sorting_2,table.dataTable.order-column tbody tr.highlight>.sorting_3,table.dataTable.display tbody tr.highlight>.sorting_1,table.dataTable.display tbody tr.highlight>.sorting_2,table.dataTable.display tbody tr.highlight>.sorting_3{background-color:#faf6c8}table.dataTable.display tbody tr.odd.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_1{background-color:#f1edc1}table.dataTable.display tbody tr.odd.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_2{background-color:#f3efc2}table.dataTable.display tbody tr.odd.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_3{background-color:#f5f1c4}table.dataTable.display tbody tr.even.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_1{background-color:#faf6c8}table.dataTable.display tbody tr.even.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_2{background-color:#fcf8ca}table.dataTable.display tbody tr.even.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_3{background-color:#fefacb}table.dataTable.display tbody tr:hover.highlight>.sorting_1,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.display tbody tr.even:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_1{background-color:#eae6bb}table.dataTable.display tbody tr:hover.highlight>.sorting_2,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.display tbody tr.even:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_2{background-color:#ece8bd}table.dataTable.display tbody tr:hover.highlight>.sorting_3,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.display tbody tr.even:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_3{background-color:#efebbf}table.dataTable tr.dte-inlineAdd td,table.dataTable tr.dte-inlineAdd th{vertical-align:top}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.css deleted file mode 100644 index 75ddc350..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.css +++ /dev/null @@ -1,590 +0,0 @@ -div.DTE div.DTE_Form_Error { - display: none; - color: #b11f1f; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE div.DTE_Form_Buttons button { - margin-left: 0.5em; -} - -div.DTE_Field div.multi-value, -div.DTE_Field div.multi-restore { - display: none; - cursor: pointer; - padding: 0.75rem; -} -div.DTE_Field div.multi-value span, -div.DTE_Field div.multi-restore span { - display: block; - color: #666; - font-size: 0.8em; - line-height: 1.25em; -} -div.DTE_Field div.multi-value:hover, -div.DTE_Field div.multi-restore:hover { - background-color: #e5e5e5; -} -div.DTE_Field div.multi-restore { - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; - padding: 0.5rem 0.75rem; -} -div.DTE_Field div.label { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} -div.DTE_Field div.label:empty { - padding: 0; - margin: 0; -} -div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} - -div.reveal-modal button.close { - position: absolute; - top: -1.5em; - right: -2.5em; -} -div.reveal-modal button.close.close-button { - right: 1rem; - top: 0.5rem; - z-index: 100; -} -div.reveal-modal div.DTE_Header { - position: relative; - top: -0.5em; - font-size: 2.05556rem; - line-height: 1.4; -} -div.reveal-modal div.DTE_Form_Content { - width: 75%; - margin: 0 auto; -} -div.reveal-modal div.DTE_Footer { - position: relative; - bottom: -0.5em; - float: right; -} -div.reveal-modal div.DTE_Footer button { - margin-bottom: 0; -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE_Inline div.DTE_Field > div { - width: 100%; - padding: 0; -} -div.DTE_Inline div.DTE_Field input { - height: 30px; - margin-bottom: 0; -} -div.DTE_Inline div.DTE_Field div.label:empty { - display: none; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Bubble div.DTE_Bubble_Liner { - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - border-radius: 6px; - border: 1px solid rgba(0, 0, 0, 0.2); -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - width: 100%; - float: none; - clear: both; - text-align: left; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { - padding-bottom: 4px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - margin-top: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - font-size: 14px; - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - margin-top: -2px; - display: block; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - border-color: rgba(0, 0, 0, 0.2); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 10; - background-color: rgba(0, 0, 0, 0.05); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.editor_upload button.button, -div.DTE div.editor_upload input[type=file] { - width: 100%; - font-size: 0.8em; - margin-bottom: 0; -} -div.DTE div.editor_upload ul li button { - width: 63px; -} - -div.DTE_Field_Type_datatable div.dataTables_filter input { - height: 1.75rem; - margin-bottom: 0.333rem; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-bottom: 0.5em; - width: 100%; - padding-right: 1em; - margin-bottom: 0; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { - float: none; - text-align: center; -} - -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -div.DTE div.DTE_Processing_Indicator { - top: 26px; - right: 95px; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.min.css deleted file mode 100644 index 846045c1..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.foundation.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE div.DTE_Form_Error{display:none;color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer;padding:.75rem}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666;font-size:.8em;line-height:1.25em}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#e5e5e5}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em;padding:.5rem .75rem}div.DTE_Field div.label{margin-top:.5rem;margin-bottom:.5rem}div.DTE_Field div.label:empty{padding:0;margin:0}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.reveal-modal button.close{position:absolute;top:-1.5em;right:-2.5em}div.reveal-modal button.close.close-button{right:1rem;top:.5rem;z-index:100}div.reveal-modal div.DTE_Header{position:relative;top:-0.5em;font-size:2.05556rem;line-height:1.4}div.reveal-modal div.DTE_Form_Content{width:75%;margin:0 auto}div.reveal-modal div.DTE_Footer{position:relative;bottom:-0.5em;float:right}div.reveal-modal div.DTE_Footer button{margin-bottom:0}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input{height:30px;margin-bottom:0}div.DTE_Inline div.DTE_Field div.label:empty{display:none}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;float:none;clear:both;text-align:left}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding-bottom:4px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-color:rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.button,div.DTE div.editor_upload input[type=file]{width:100%;font-size:.8em;margin-bottom:0}div.DTE div.editor_upload ul li button{width:63px}div.DTE_Field_Type_datatable div.dataTables_filter input{height:1.75rem;margin-bottom:.333rem}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%;padding-right:1em;margin-bottom:0}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{float:none;text-align:center}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.DTE div.DTE_Processing_Indicator{top:26px;right:95px} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.css deleted file mode 100644 index 9e123399..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.css +++ /dev/null @@ -1,865 +0,0 @@ -div.DTE_Field input, -div.DTE_Field textarea { - box-sizing: border-box; - background-color: white; - -webkit-transition: background-color ease-in-out 0.15s; - transition: background-color ease-in-out 0.15s; -} -div.DTE_Field input:focus, -div.DTE_Field textarea:focus { - background-color: #ffffee; -} -div.DTE_Field input[type=color], -div.DTE_Field input[type=date], -div.DTE_Field input[type=datetime], -div.DTE_Field input[type=datetime-local], -div.DTE_Field input[type=email], -div.DTE_Field input[type=month], -div.DTE_Field input[type=number], -div.DTE_Field input[type=password], -div.DTE_Field input[type=search], -div.DTE_Field input[type=tel], -div.DTE_Field input[type=text], -div.DTE_Field input[type=time], -div.DTE_Field input[type=url], -div.DTE_Field input[type=week] { - padding: 5px 4px; - width: 100%; - border: 1px solid #aaa; - border-radius: 3px; -} -div.DTE_Field input[type=checkbox], -div.DTE_Field input[type=radio] { - vertical-align: middle; -} -div.DTE_Field select { - padding: 5px 4px; - border-radius: 3px; - border: 1px solid #aaa; - background: white; - max-width: 100%; -} -div.DTE_Field label div.DTE_Label_Info { - font-size: 0.85em; - margin-top: 0.25em; -} -div.DTE_Field label div.DTE_Label_Info:empty { - margin-top: 0; -} -div.DTE_Field div.DTE_Field_Info, -div.DTE_Field div.DTE_Field_Message, -div.DTE_Field div.DTE_Field_Error { - font-size: 11px; - line-height: 1em; - margin-top: 5px; -} -div.DTE_Field div.DTE_Field_Info:empty, -div.DTE_Field div.DTE_Field_Message:empty, -div.DTE_Field div.DTE_Field_Error:empty { - margin-top: 0; -} -div.DTE_Field div.DTE_Field_Error { - display: none; - color: #b11f1f; -} -div.DTE_Field div.multi-value { - display: none; - border: 1px dotted #666; - border-radius: 3px; - padding: 5px; - background-color: #fafafa; - cursor: pointer; -} -div.DTE_Field div.multi-value span { - font-size: 0.8em; - line-height: 1.25em; - display: block; - color: #666; -} -div.DTE_Field div.multi-value.multi-noEdit { - border: 1px solid #ccc; - cursor: auto; - background-color: #fcfcfc; -} -div.DTE_Field div.multi-value.multi-noEdit:hover { - background-color: #fcfcfc; -} -div.DTE_Field div.multi-value:hover { - background-color: #f1f1f1; -} -div.DTE_Field.disabled { - color: grey; -} -div.DTE_Field.disabled div.multi-value { - cursor: default; - border: 1px dotted #aaa; - background-color: transparent; -} -div.DTE_Field div.multi-restore { - display: none; - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; - color: #3879d9; -} -div.DTE_Field div.multi-restore:hover { - text-decoration: underline; - cursor: pointer; -} - -div.DTE_Field_Type_textarea textarea { - padding: 3px; - width: 100%; - height: 80px; - border: 1px solid #aaa; -} - -div.DTE_Field.DTE_Field_Type_date img { - vertical-align: middle; - cursor: pointer; -} - -div.DTE_Field_Type_checkbox div.DTE_Field_Input, -div.DTE_Field_Type_radio div.DTE_Field_Input { - padding-top: 1px; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div { - margin-bottom: 0.25em; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div:last-child, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div:last-child { - margin-bottom: 0; -} -div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div label, -div.DTE_Field_Type_radio div.DTE_Field_Input > div > div label { - margin-left: 0.75em; - vertical-align: middle; -} - -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dataTables_filter { - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dataTables_filter input { - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons { - padding-right: 1em; - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dt-buttons button { - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - padding-bottom: 0; -} -div.DTE_Field_Type_datatable div.dataTables_paginate { - float: none; - text-align: center; - font-size: 0.8em; -} -div.DTE_Field_Type_datatable table.dataTable.no-footer { - border-bottom: 1px solid #aaa !important; -} -div.DTE_Field_Type_datatable table.dataTable thead th, div.DTE_Field_Type_datatable table.dataTable thead td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-bottom: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tbody th:first-child, -div.DTE_Field_Type_datatable table.dataTable tbody td:first-child { - border-left: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tbody th:last-child, -div.DTE_Field_Type_datatable table.dataTable tbody td:last-child { - border-right: 1px solid #aaa; -} -div.DTE_Field_Type_datatable table.dataTable tfoot th, div.DTE_Field_Type_datatable table.dataTable tfoot td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-top: 1px solid #aaa; -} -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable, -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th, -div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td { - border-bottom: none !important; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody { - border: 1px solid #aaa !important; - border-radius: 3px; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable { - border-bottom: none !important; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child, -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child { - border-left: none; -} -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child, -div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child { - border-right: none; -} - -div.DTE_Body { - padding: 52px 0; -} -div.DTE_Body div.DTE_Body_Content { - position: relative; - overflow: auto; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info { - padding: 1em 1em 0 1em; - margin: 0; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field { - position: relative; - clear: both; - padding: 5px 10%; - border: 1px solid transparent; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover { - background-color: #f9f9f9; - border: 1px solid #f3f3f3; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: left; - width: 33%; - padding-top: 3px; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: right; - width: 66%; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0 5px 10%; -} -div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - float: none; - clear: both; - width: 100%; -} - -html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: right; -} -html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: left; -} -html[dir=rtl] div.DTE div.DTE_Form_Buttons button { - float: left; -} - -@media only screen and (max-width: 768px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - padding: 5px 10%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0 5px 10%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { - width: 35.5%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { - width: 64.5%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -@media only screen and (max-width: 640px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { - padding: 5px 0%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { - width: 40%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { - width: 60%; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -@media only screen and (max-width: 580px) { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - position: relative; - clear: both; - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { - float: none; - width: auto; - padding-top: 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { - float: none; - width: auto; - margin-top: 4px; - margin-bottom: 6px; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block { - padding: 5px 0; - } - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label, - div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > label, - div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { - width: 100%; - } -} -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -table.dataTable tbody tr.highlight { - background-color: #FFFBCC !important; -} -table.dataTable tbody tr.highlight, -table.dataTable tbody tr.noHighlight, -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} -table.dataTable.stripe tbody tr.odd.highlight, table.dataTable.display tbody tr.odd.highlight { - background-color: #f9f5c7; -} -table.dataTable.hover tbody tr:hover.highlight, -table.dataTable.hover tbody tr.odd:hover.highlight, -table.dataTable.hover tbody tr.even:hover.highlight, table.dataTable.display tbody tr:hover.highlight, -table.dataTable.display tbody tr.odd:hover.highlight, -table.dataTable.display tbody tr.even:hover.highlight { - background-color: #f6f2c5; -} -table.dataTable.order-column tbody tr.highlight > .sorting_1, -table.dataTable.order-column tbody tr.highlight > .sorting_2, -table.dataTable.order-column tbody tr.highlight > .sorting_3, table.dataTable.display tbody tr.highlight > .sorting_1, -table.dataTable.display tbody tr.highlight > .sorting_2, -table.dataTable.display tbody tr.highlight > .sorting_3 { - background-color: #faf6c8; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_1 { - background-color: #f1edc1; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_2 { - background-color: #f3efc2; -} -table.dataTable.display tbody tr.odd.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_3 { - background-color: #f5f1c4; -} -table.dataTable.display tbody tr.even.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_1 { - background-color: #faf6c8; -} -table.dataTable.display tbody tr.even.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_2 { - background-color: #fcf8ca; -} -table.dataTable.display tbody tr.even.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_3 { - background-color: #fefacb; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_1, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_1, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_1 { - background-color: #eae6bb; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_2, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_2, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_2 { - background-color: #ece8bd; -} -table.dataTable.display tbody tr:hover.highlight > .sorting_3, -table.dataTable.display tbody tr.odd:hover.highlight > .sorting_3, -table.dataTable.display tbody tr.even:hover.highlight > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_3 { - background-color: #efebbf; -} -table.dataTable tr.dte-inlineAdd td, -table.dataTable tr.dte-inlineAdd th { - vertical-align: top; -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -div.DTE { - font-size: 0.91em; -} -div.DTE div.DTE_Header { - display: none; -} -div.DTE div.DTE_Body { - padding: 0; -} -div.DTE div.DTE_Body div.DTE_Body_Content { - overflow: hidden; -} -div.DTE div.DTE_Body div.DTE_Body_Content div.DTE_Field { - padding: 5px 5%; -} -div.DTE div.DTE_Footer { - display: none; -} -div.DTE div.DTE_Form_Error { - padding-top: 1em; - color: red; - display: none; - color: #b11f1f; -} -div.DTE div.DTE_Processing_Indicator { - top: 12px; - right: 2px; - font-size: 0.8em; -} -div.DTE div.DTE_Form_Buttons { - text-align: right; - padding: 0; - display: flex; - flex-direction: row-reverse; -} - -div.DTE_Field_Type_datatable div.dataTables_filter { - padding-bottom: 0.5em; -} -div.DTE_Field_Type_datatable div.dt-buttons { - float: none; -} -div.DTE_Field_Type_datatable div.dt-buttons button { - margin-bottom: 3px; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.min.css deleted file mode 100644 index bf12892a..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.jqueryui.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE_Field input,div.DTE_Field textarea{box-sizing:border-box;background-color:white;-webkit-transition:background-color ease-in-out .15s;transition:background-color ease-in-out .15s}div.DTE_Field input:focus,div.DTE_Field textarea:focus{background-color:#ffe}div.DTE_Field input[type=color],div.DTE_Field input[type=date],div.DTE_Field input[type=datetime],div.DTE_Field input[type=datetime-local],div.DTE_Field input[type=email],div.DTE_Field input[type=month],div.DTE_Field input[type=number],div.DTE_Field input[type=password],div.DTE_Field input[type=search],div.DTE_Field input[type=tel],div.DTE_Field input[type=text],div.DTE_Field input[type=time],div.DTE_Field input[type=url],div.DTE_Field input[type=week]{padding:5px 4px;width:100%;border:1px solid #aaa;border-radius:3px}div.DTE_Field input[type=checkbox],div.DTE_Field input[type=radio]{vertical-align:middle}div.DTE_Field select{padding:5px 4px;border-radius:3px;border:1px solid #aaa;background:white;max-width:100%}div.DTE_Field label div.DTE_Label_Info{font-size:.85em;margin-top:.25em}div.DTE_Field label div.DTE_Label_Info:empty{margin-top:0}div.DTE_Field div.DTE_Field_Info,div.DTE_Field div.DTE_Field_Message,div.DTE_Field div.DTE_Field_Error{font-size:11px;line-height:1em;margin-top:5px}div.DTE_Field div.DTE_Field_Info:empty,div.DTE_Field div.DTE_Field_Message:empty,div.DTE_Field div.DTE_Field_Error:empty{margin-top:0}div.DTE_Field div.DTE_Field_Error{display:none;color:#b11f1f}div.DTE_Field div.multi-value{display:none;border:1px dotted #666;border-radius:3px;padding:5px;background-color:#fafafa;cursor:pointer}div.DTE_Field div.multi-value span{font-size:.8em;line-height:1.25em;display:block;color:#666}div.DTE_Field div.multi-value.multi-noEdit{border:1px solid #ccc;cursor:auto;background-color:#fcfcfc}div.DTE_Field div.multi-value.multi-noEdit:hover{background-color:#fcfcfc}div.DTE_Field div.multi-value:hover{background-color:#f1f1f1}div.DTE_Field.disabled{color:grey}div.DTE_Field.disabled div.multi-value{cursor:default;border:1px dotted #aaa;background-color:transparent}div.DTE_Field div.multi-restore{display:none;margin-top:.5em;font-size:.8em;line-height:1.25em;color:#3879d9}div.DTE_Field div.multi-restore:hover{text-decoration:underline;cursor:pointer}div.DTE_Field_Type_textarea textarea{padding:3px;width:100%;height:80px;border:1px solid #aaa}div.DTE_Field.DTE_Field_Type_date img{vertical-align:middle;cursor:pointer}div.DTE_Field_Type_checkbox div.DTE_Field_Input,div.DTE_Field_Type_radio div.DTE_Field_Input{padding-top:1px}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div{margin-bottom:.25em}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div:last-child,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div:last-child{margin-bottom:0}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div label,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div label{margin-left:.75em;vertical-align:middle}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_filter{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100%}div.DTE_Field_Type_datatable div.dt-buttons{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons button{width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{padding-bottom:0}div.DTE_Field_Type_datatable div.dataTables_paginate{float:none;text-align:center;font-size:.8em}div.DTE_Field_Type_datatable table.dataTable.no-footer{border-bottom:1px solid #aaa !important}div.DTE_Field_Type_datatable table.dataTable thead th,div.DTE_Field_Type_datatable table.dataTable thead td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-bottom:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable table.dataTable tbody td:first-child{border-left:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable table.dataTable tbody td:last-child{border-right:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tfoot th,div.DTE_Field_Type_datatable table.dataTable tfoot td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-top:1px solid #aaa}div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody{border:1px solid #aaa !important;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child{border-left:none}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child{border-right:none}div.DTE_Body{padding:52px 0}div.DTE_Body div.DTE_Body_Content{position:relative;overflow:auto}div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info{padding:1em 1em 0 1em;margin:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 10%;border:1px solid transparent}div.DTE_Body div.DTE_Body_Content div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover{background-color:#f9f9f9;border:1px solid #f3f3f3}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:left;width:33%;padding-top:3px}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:right;width:66%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{float:none;clear:both;width:100%}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:right}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:left}html[dir=rtl] div.DTE div.DTE_Form_Buttons button{float:left}@media only screen and (max-width: 768px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:35.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:64.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 640px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:40%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:60%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 580px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:none;width:auto;padding-top:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:none;width:auto;margin-top:4px;margin-bottom:6px}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}table.dataTable tbody tr.highlight{background-color:#fffbcc !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}table.dataTable.stripe tbody tr.odd.highlight,table.dataTable.display tbody tr.odd.highlight{background-color:#f9f5c7}table.dataTable.hover tbody tr:hover.highlight,table.dataTable.hover tbody tr.odd:hover.highlight,table.dataTable.hover tbody tr.even:hover.highlight,table.dataTable.display tbody tr:hover.highlight,table.dataTable.display tbody tr.odd:hover.highlight,table.dataTable.display tbody tr.even:hover.highlight{background-color:#f6f2c5}table.dataTable.order-column tbody tr.highlight>.sorting_1,table.dataTable.order-column tbody tr.highlight>.sorting_2,table.dataTable.order-column tbody tr.highlight>.sorting_3,table.dataTable.display tbody tr.highlight>.sorting_1,table.dataTable.display tbody tr.highlight>.sorting_2,table.dataTable.display tbody tr.highlight>.sorting_3{background-color:#faf6c8}table.dataTable.display tbody tr.odd.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_1{background-color:#f1edc1}table.dataTable.display tbody tr.odd.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_2{background-color:#f3efc2}table.dataTable.display tbody tr.odd.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_3{background-color:#f5f1c4}table.dataTable.display tbody tr.even.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_1{background-color:#faf6c8}table.dataTable.display tbody tr.even.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_2{background-color:#fcf8ca}table.dataTable.display tbody tr.even.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_3{background-color:#fefacb}table.dataTable.display tbody tr:hover.highlight>.sorting_1,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.display tbody tr.even:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_1{background-color:#eae6bb}table.dataTable.display tbody tr:hover.highlight>.sorting_2,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.display tbody tr.even:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_2{background-color:#ece8bd}table.dataTable.display tbody tr:hover.highlight>.sorting_3,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.display tbody tr.even:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_3{background-color:#efebbf}table.dataTable tr.dte-inlineAdd td,table.dataTable tr.dte-inlineAdd th{vertical-align:top}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.DTE{font-size:.91em}div.DTE div.DTE_Header{display:none}div.DTE div.DTE_Body{padding:0}div.DTE div.DTE_Body div.DTE_Body_Content{overflow:hidden}div.DTE div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 5%}div.DTE div.DTE_Footer{display:none}div.DTE div.DTE_Form_Error{padding-top:1em;color:red;display:none;color:#b11f1f}div.DTE div.DTE_Processing_Indicator{top:12px;right:2px;font-size:.8em}div.DTE div.DTE_Form_Buttons{text-align:right;padding:0;display:flex;flex-direction:row-reverse}div.DTE_Field_Type_datatable div.dataTables_filter{padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons{float:none}div.DTE_Field_Type_datatable div.dt-buttons button{margin-bottom:3px} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.css deleted file mode 100644 index ad00ca84..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.css +++ /dev/null @@ -1,602 +0,0 @@ -div.DTE div.DTE_Form_Error { - display: none; - color: #b11f1f; -} -div.DTE div.DTE_Form_Buttons { - display: flex; - flex-direction: row-reverse; -} -div.DTE label { - padding-top: 9px !important; - align-self: flex-start; - justify-content: flex-end; -} -div.DTE div.eight.wide.field { - flex-direction: column; -} -div.DTE div.DTE_Field_InputControl { - width: 100%; - margin: 0 !important; -} -div.DTE div.ui.message:empty { - display: none; -} - -div.DTE_Field div.ui.message { - width: 100%; -} -div.DTE_Field div.multi-value, -div.DTE_Field div.multi-restore { - display: none; - cursor: pointer; - margin-top: 0; -} -div.DTE_Field div.multi-value span, -div.DTE_Field div.multi-restore span { - display: block; - color: #666; - font-size: 0.85em; - line-height: 1.35em; -} -div.DTE_Field div.multi-value:hover, -div.DTE_Field div.multi-restore:hover { - background-color: #f1f1f1; -} -div.DTE_Field div.multi-restore { - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; -} -div.DTE_Field:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; -} - -div.DTE_Inline { - position: relative; - display: table; - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field, -div.DTE_Inline div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { - padding: 0; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { - display: none; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { - width: 100%; -} -div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, -div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; -} -div.DTE_Inline div.DTE_Field input[type=color], -div.DTE_Inline div.DTE_Field input[type=date], -div.DTE_Inline div.DTE_Field input[type=datetime], -div.DTE_Inline div.DTE_Field input[type=datetime-local], -div.DTE_Inline div.DTE_Field input[type=email], -div.DTE_Inline div.DTE_Field input[type=month], -div.DTE_Inline div.DTE_Field input[type=number], -div.DTE_Inline div.DTE_Field input[type=password], -div.DTE_Inline div.DTE_Field input[type=search], -div.DTE_Inline div.DTE_Field input[type=tel], -div.DTE_Inline div.DTE_Field input[type=text], -div.DTE_Inline div.DTE_Field input[type=time], -div.DTE_Inline div.DTE_Field input[type=url], -div.DTE_Inline div.DTE_Field input[type=week] { - margin: -6px 0; -} -div.DTE_Inline div.DTE_Field_Error, -div.DTE_Inline div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; -} -div.DTE_Inline div.DTE_Field_Error:empty, -div.DTE_Inline div.DTE_Form_Error:empty { - margin-top: 0; -} - -span.dtr-data div.DTE_Inline { - display: inline-table; -} - -div.DTE.DTE_Inline.ui.form label { - display: none !important; -} -div.DTE.DTE_Inline.ui.form div.DTE_Field { - width: 100%; - margin: 0 !important; -} -div.DTE.DTE_Inline.ui.form div.DTE_Field div.DTE_Field_Input { - width: 100% !important; - box-sizing: border-box; -} -div.DTE.DTE_Inline.ui.form div.DTE_Field > div { - width: 100%; - padding: 0; -} -div.DTE.DTE_Inline.ui.form.DTE_Processing:after { - top: 5px; -} - -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { - width: 100%; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - position: relative; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { - padding-top: 0; - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { - margin: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { - margin-bottom: 0; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { - content: "×"; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: "Courier New", Courier, monospace; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { - color: black; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -div.DTE_Bubble.below div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; -} -div.DTE_Bubble.below div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); -} - -div.DTE_Bubble_Background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.7); /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ - z-index: 10; -} -div.DTE_Bubble_Background > div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; -} -div.DTE_Bubble_Background > div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); -} - -div.DTE_Bubble { - z-index: 1001; -} -div.DTE_Bubble div.DTE_Bubble_Liner { - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - border-radius: 6px; - padding: 1em; - border: 1px solid rgba(0, 0, 0, 0.2); -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { - flex-direction: column; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { - justify-content: flex-start; - width: 100% !important; - float: none; - clear: both; - text-align: left; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { - padding-bottom: 4px; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:first-child label { - padding-top: 0 !important; -} -div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { - text-align: right; - padding: 0; -} -div.DTE_Bubble div.DTE_Bubble_Triangle { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-left: 1px solid rgba(0, 0, 0, 0.2); -} - -div.DTE div.editor_upload { - padding-top: 4px; -} -div.DTE div.editor_upload div.eu_table { - display: table; - width: 100%; -} -div.DTE div.editor_upload div.row { - display: table-row; -} -div.DTE div.editor_upload div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; -} -div.DTE div.editor_upload div.cell + div.cell { - padding-left: 10px; -} -div.DTE div.editor_upload div.row + div.row div.cell { - padding-top: 10px; -} -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; -} -div.DTE div.editor_upload input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; -} -div.DTE div.editor_upload div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; -} -div.DTE div.editor_upload div.drop.over { - border: 3px dashed #111; - color: #111; -} -div.DTE div.editor_upload div.drop span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; -} -div.DTE div.editor_upload div.rendered img { - max-width: 8em; - margin: 0 auto; -} -div.DTE div.editor_upload.noDrop div.drop { - display: none; -} -div.DTE div.editor_upload.noDrop div.row.second { - display: none; -} -div.DTE div.editor_upload.noDrop div.rendered { - margin-top: 10px; -} -div.DTE div.editor_upload.noClear div.clearValue button { - display: none; -} -div.DTE div.editor_upload.multi div.cell { - display: block; - width: 100%; -} -div.DTE div.editor_upload.multi div.cell div.drop { - min-height: 0; -} -div.DTE div.editor_upload.multi div.clearValue { - display: none; -} -div.DTE div.editor_upload.multi ul { - list-style-type: none; - margin: 0; - padding: 0; -} -div.DTE div.editor_upload.multi ul li { - position: relative; - margin-top: 0.5em; -} -div.DTE div.editor_upload.multi ul li:first-child { - margin-top: 0; -} -div.DTE div.editor_upload.multi ul li img { - vertical-align: middle; -} -div.DTE div.editor_upload.multi ul li button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; -} - -div.DTE div.editor_upload button.btn, -div.DTE div.editor_upload input[type=file] { - height: auto; -} -div.DTE div.editor_upload ul li button { - padding-bottom: 8px; -} - -div.DTE_Field_Type_datatable label { - display: block !important; - text-align: right; -} -div.DTE_Field_Type_datatable div.dataTables_filter { - display: block !important; - text-align: left; - margin-bottom: 6px; -} -div.DTE_Field_Type_datatable div.dataTables_filter input { - width: 100% !important; -} -div.DTE_Field_Type_datatable div.dt-buttons { - margin-bottom: 6px; - width: 100%; -} -div.DTE_Field_Type_datatable div.dt-buttons:empty { - display: none; -} -div.DTE_Field_Type_datatable div.dataTables_info { - font-size: 0.8em; - font-weight: normal; - line-height: 1.3em; -} -div.DTE_Field_Type_datatable div.dataTables_info span.select-info { - display: block; -} -div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { - margin-top: 0.3em; - text-align: center; -} - -div.DTE div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -div.DTE.processing div.DTE_Processing_Indicator { - display: block; -} -div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { - display: none; -} -div.DTE div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; -} -div.DTE.DTE_Inline div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; -} -div.DTE.DTE_Bubble div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; -} -div.DTE div.DTE_Processing_Indicator span, -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba(0, 0, 0, 0.4); - background-color: rgba(0, 0, 0, 0.1); - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; -} -div.DTE div.DTE_Processing_Indicator:before, -div.DTE div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ""; -} -div.DTE div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; -} -div.DTE div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; -} -div.DTE div.DTE_Processing_Indicator:after { - left: 1em; -} -@-webkit-keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} -@keyframes editorProcessing { - 0%, 80%, 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } -} - -table.dataTable tbody tr.highlight th, -table.dataTable tbody tr.highlight td { - background-color: #2185D0 !important; -} -table.dataTable tbody tr.highlight td, -table.dataTable tbody tr.noHighlight td { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} - -div.DTE div.DTE_Processing_Indicator { - top: 22px; - right: 12px; -} - -div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, -div.DTE_Field_Type_radio div.DTE_Field_InputControl { - padding-top: 7px; -} -div.DTE_Field_Type_checkbox > div > div, -div.DTE_Field_Type_radio > div > div { - margin-bottom: 0.2em; -} -div.DTE_Field_Type_checkbox > div > div input, -div.DTE_Field_Type_radio > div > div input { - vertical-align: baseline !important; -} -div.DTE_Field_Type_checkbox > div > div label, -div.DTE_Field_Type_radio > div > div label { - margin-left: 0.75em; - padding-top: 11px !important; -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.min.css b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.min.css deleted file mode 100644 index cf19b5d6..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/editor.semanticui.min.css +++ /dev/null @@ -1 +0,0 @@ -div.DTE div.DTE_Form_Error{display:none;color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE label{padding-top:9px !important;align-self:flex-start;justify-content:flex-end}div.DTE div.eight.wide.field{flex-direction:column}div.DTE div.DTE_Field_InputControl{width:100%;margin:0 !important}div.DTE div.ui.message:empty{display:none}div.DTE_Field div.ui.message{width:100%}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer;margin-top:0}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666;font-size:.85em;line-height:1.35em}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE.DTE_Inline.ui.form label{display:none !important}div.DTE.DTE_Inline.ui.form div.DTE_Field{width:100%;margin:0 !important}div.DTE.DTE_Inline.ui.form div.DTE_Field div.DTE_Field_Input{width:100% !important;box-sizing:border-box}div.DTE.DTE_Inline.ui.form div.DTE_Field>div{width:100%;padding:0}div.DTE.DTE_Inline.ui.form.DTE_Processing:after{top:5px}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble{z-index:1001}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{flex-direction:column}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{justify-content:flex-start;width:100% !important;float:none;clear:both;text-align:left}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding-bottom:4px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:first-child label{padding-top:0 !important}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;padding:0}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable label{display:block !important;text-align:right}div.DTE_Field_Type_datatable div.dataTables_filter{display:block !important;text-align:left;margin-bottom:6px}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100% !important}div.DTE_Field_Type_datatable div.dt-buttons{margin-bottom:6px;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;font-weight:normal;line-height:1.3em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{margin-top:.3em;text-align:center}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight th,table.dataTable tbody tr.highlight td{background-color:#2185d0 !important}table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Processing_Indicator{top:22px;right:12px}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:7px}div.DTE_Field_Type_checkbox>div>div,div.DTE_Field_Type_radio>div>div{margin-bottom:.2em}div.DTE_Field_Type_checkbox>div>div input,div.DTE_Field_Type_radio>div>div input{vertical-align:baseline !important}div.DTE_Field_Type_checkbox>div>div label,div.DTE_Field_Type_radio>div>div label{margin-left:.75em;padding-top:11px !important} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/bubble.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/bubble.scss deleted file mode 100644 index 727deb1b..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/bubble.scss +++ /dev/null @@ -1,130 +0,0 @@ - -// Bubble form editing -// Very similar to the main form, but attached to a particular node and the -// form layout is slightly different with the fields container and buttons -// making up a table of a single row and two columns. This allows the buttons -// to be removed from the display and under this condition the fields will -// take up the full width available. -div.DTE_Bubble { - position: absolute; - z-index: 11; - margin-top: -6px; - opacity: 0; - transition: top 0.5s ease-in-out 0s; - - div.DTE_Bubble_Liner { - position: absolute; - bottom: 0; - border: 1px solid black; - width: 300px; - margin-left: -150px; - background-color: white; - box-shadow: 0 12px 30px 0 rgba(0,0,0,.5); - border-radius: 6px; - border: 1px solid #666; - padding: 1em; - background: #fcfcfc; - @include box-sizing(border-box); - - div.DTE_Bubble_Table { - width: 100%; - - > form { - div.DTE_Form_Content { - padding: 0; - - div.DTE_Field { - position: relative; - margin-bottom: 0.5em; - - &:last-child { - margin-bottom: 0; - } - - > label { - padding-top: 0; - margin-bottom: 0; - } - - > div { - padding: 0; - - input { - margin: 0; - } - } - } - } - } - - div.DTE_Form_Buttons { - text-align: right; - margin-top: 1em; - - button { - margin-bottom: 0; - } - } - } - - div.DTE_Header { - border-top-left-radius: 5px; - border-top-right-radius: 5px; - } - - div.DTE_Header + div.DTE_Form_Info, - div.DTE_Header + div.DTE_Bubble_Table { - padding-top: 42px; - } - - - div.DTE_Form_Error { - float: none; - display: none; - padding: 0; - margin-bottom: 0.5em; - } - - div.DTE_Bubble_Close { - @include close-icon(); - } - } - - div.DTE_Bubble_Triangle { - position: absolute; - height: 10px; - width: 10px; - top: -6px; - background-color: white; - border: 1px solid #666; - border-top: none; - border-right: none; - - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); - } - - &.below { - div.DTE_Bubble_Liner { - top: 10px; - bottom: auto; - } - - div.DTE_Bubble_Triangle { - top: 4px; - -webkit-transform: rotate(135deg); - -moz-transform: rotate(135deg); - -ms-transform: rotate(135deg); - -o-transform: rotate(135deg); - transform: rotate(135deg); - } - } -} - -div.DTE_Bubble_Background { - @include overlay-background(); -} - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/datatable.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/datatable.scss deleted file mode 100644 index 3b42c085..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/datatable.scss +++ /dev/null @@ -1,100 +0,0 @@ - -// Row highlighting on edit styles -// -// To change the colour of the highlight, simply modify the variable below and -// recompile the SCSS stylesheet (if you don't have SASS installed, you can use -// the online service at http://sassmeister.com/ . -// -// The DataTables styles below match the default DataTables stylesheet: -// http://next.datatables.net/manual/styling/classes so you can retain the full -// benefits of the DataTables styling options. - -$table-row-highlight: #FFFBCC; - -table.dataTable { - tbody { - tr.highlight { - background-color: $table-row-highlight !important; - } - - tr.highlight, - tr.noHighlight, - tr.highlight td, - tr.noHighlight td { - @include background-transision(); - } - } - - &.stripe tbody, - &.display tbody { - tr.odd { - &.highlight { - background-color: shade($table-row-highlight, 2.35%); - } - } - } - - // Hover classes - add "hover" class to the table to activate - &.hover tbody, - &.display tbody { - tr:hover, - tr.odd:hover, - tr.even:hover { - &.highlight { - background-color: shade($table-row-highlight, 3.6%); - } - } - } - - - // Sort column highlighting - add "hover" class to the table to activate - &.order-column, - &.display { - tbody { - tr.highlight>.sorting_1, - tr.highlight>.sorting_2, - tr.highlight>.sorting_3 { - background-color: shade($table-row-highlight, 2%); - } - } - } - - &.display tbody, - &.order-column.stripe tbody { - tr.odd { - &.highlight { - >.sorting_1 { background-color: shade($table-row-highlight, 5.4%);} - >.sorting_2 { background-color: shade($table-row-highlight, 4.7%);} - >.sorting_3 { background-color: shade($table-row-highlight, 3.9%);} - } - } - - tr.even { - &.highlight { - >.sorting_1 { background-color: shade($table-row-highlight, 2%); } - >.sorting_2 { background-color: shade($table-row-highlight, 1.2%); } - >.sorting_3 { background-color: shade($table-row-highlight, 0.4%); } - } - } - } - - &.display tbody, - &.order-column.hover tbody { - tr:hover, - tr.odd:hover, - tr.even:hover { - &.highlight { - >.sorting_1 { background-color: shade($table-row-highlight, 8.2%); } - >.sorting_2 { background-color: shade($table-row-highlight, 7.5%); } - >.sorting_3 { background-color: shade($table-row-highlight, 6.3%); } - } - } - } - - tr.dte-inlineAdd { - td, - th { - vertical-align: top; - } - } -} \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/envelope.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/envelope.scss deleted file mode 100644 index a4d234e3..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/envelope.scss +++ /dev/null @@ -1,63 +0,0 @@ - -/* - * Namespace: DTED - DataTables Editor Display - Envelope - */ - -div.DTED_Envelope_Wrapper { - position: absolute; - top: 0; - bottom: 0; - left: 50%; - height: 100%; - z-index: 11; - display: none; - overflow: hidden; - - // Create a shadow display at the top of the evelope to make it look like it has - // come from under the element that it is attached to/ Left and right to give a - // slight fade and the two ends - div.DTED_Envelope_Shadow { - position: absolute; - top: -10px; - left: 10px; - right: 10px; - height: 10px; - z-index: 10; - box-shadow: 0 0 20px black; - } - - div.DTED_Envelope_Container { - position: absolute; - top: 0; - left: 5%; - width: 90%; - - border-left: 1px solid #777; - border-right: 1px solid #777; - border-bottom: 1px solid #777; - box-shadow: 3px 3px 10px #555; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - background-color: white; - - div.DTE_Processing_Indicator { - right: 36px; - } - - div.DTE_Footer { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - } - - div.DTED_Envelope_Close { - @include close-icon(); - } - } -} - - -div.DTED_Envelope_Background { - @include overlay-background(); -} - - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/fields.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/fields.scss deleted file mode 100644 index 4dfa5286..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/fields.scss +++ /dev/null @@ -1,280 +0,0 @@ - -$input-border: 1px solid #aaa; - -$input-border: 1px solid #aaa; - -// Generic field styling -div.DTE_Field { - input, - textarea { - box-sizing: border-box; - background-color: white; - -webkit-transition: background-color ease-in-out .15s; - transition: background-color ease-in-out .15s; - } - - input:focus, - textarea:focus { - background-color: #ffffee; - } - - input[type="color"], - input[type="date"], - input[type="datetime"], - input[type="datetime-local"], - input[type="email"], - input[type="month"], - input[type="number"], - input[type="password"], - input[type="search"], - input[type="tel"], - input[type="text"], - input[type="time"], - input[type="url"], - input[type="week"] { - padding: 5px 4px; - width: 100%; - - // Chrome 83 introduces some really ugly borders - border: $input-border; - border-radius: 3px; - } - - input[type="checkbox"], - input[type="radio"] { - vertical-align: middle; - } - - select { - padding: 5px 4px; - border-radius: 3px; - border: $input-border; - background: white; - max-width: 100%; - } - - label div.DTE_Label_Info { - font-size: 0.85em; - margin-top: 0.25em; - - &:empty { - margin-top: 0; - } - } - - div.DTE_Field_Info, - div.DTE_Field_Message, - div.DTE_Field_Error { - font-size: 11px; - line-height: 1em; - margin-top: 5px; - - &:empty { - margin-top: 0; - } - } - - div.DTE_Field_Error { - display: none; - color: #b11f1f; - } - - div.multi-value { - display: none; - border: 1px dotted #666; - border-radius: 3px; - padding: 5px; - background-color: #fafafa; - cursor: pointer; - - span { - font-size: 0.8em; - line-height: 1.25em; - display: block; - color: #666; - } - - &.multi-noEdit { - border: 1px solid #ccc; - cursor: auto; - background-color: #fcfcfc; - - &:hover { - background-color: #fcfcfc; - } - } - - &:hover { - background-color: #f1f1f1; - } - } - - &.disabled { - color: grey; - - div.multi-value { - cursor: default; - border: 1px dotted #aaa; - background-color: transparent; - } - } - - div.multi-restore { - display: none; - margin-top: 0.5em; - font-size: 0.8em; - line-height: 1.25em; - color: #3879d9; - - &:hover { - text-decoration: underline; - cursor: pointer; - } - } -} - -// Specific field type styling -div.DTE_Field_Type_textarea { - textarea { - padding: 3px; - width: 100%; - height: 80px; - border: $input-border; - } -} - -div.DTE_Field.DTE_Field_Type_date { - img { - vertical-align: middle; - cursor: pointer; - } -} - -div.DTE_Field_Type_checkbox, -div.DTE_Field_Type_radio { - div.DTE_Field_Input { - padding-top: 1px; - - > div > div { - margin-bottom: 0.25em; - - &:last-child { - margin-bottom: 0; - } - - input { - } - - label { - margin-left: 0.75em; - vertical-align: middle; - } - } - } -} - -div.DTE_Field_Type_datatable { - div.dataTables_info { - font-size: 0.8em; - line-height: 1.3em; - padding-right: 1em; - padding-bottom: 0.5em; - - span.select-info { - display: block; - } - } - - div.dataTables_filter { - padding-right: 1em; - padding-bottom: 0.5em; - - input { - width: 100%; - } - } - - div.dt-buttons { - padding-right: 1em; - padding-bottom: 0.5em; - - button { - width: 100%; - } - - &:empty { - padding-bottom: 0; - } - } - - div.dataTables_paginate { - float: none; - text-align: center; - font-size: 0.8em; - } - - table.dataTable { - &.no-footer { - border-bottom: 1px solid #aaa !important; - } - - thead { - th, td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-bottom: 1px solid #aaa; - } - } - - tbody { - th:first-child, - td:first-child { - border-left: 1px solid #aaa; - } - - th:last-child, - td:last-child { - border-right: 1px solid #aaa; - } - } - - tfoot { - th, td { - font-weight: normal; - padding-top: 3px; - padding-bottom: 3px; - border-top: 1px solid #aaa; - } - } - } - - div.dataTables_scrollHead { - table.dataTable, - table.dataTable thead th, - table.dataTable thead td { - border-bottom: none !important; - } - } - - div.dataTables_scrollBody { - border: 1px solid #aaa !important; - border-radius: 3px;; - - table.dataTable { - border-bottom: none !important; - - tbody { - th:first-child, - td:first-child { - border-left: none; - } - - th:last-child, - td:last-child { - border-right: none; - } - } - } - } -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/inline.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/inline.scss deleted file mode 100644 index 8131a3a9..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/inline.scss +++ /dev/null @@ -1,79 +0,0 @@ - -// Inline form editing -// Hide the label and allow the field to take the full width -div.DTE_Inline { - position: relative; - display: table; - width: 100%; - - div.DTE_Inline_Field, - div.DTE_Inline_Buttons { - display: table-cell; - vertical-align: middle; - - div.DTE_Field { - padding: 0; - - >label { - display: none; - } - - input[type="color"], - input[type="date"], - input[type="datetime"], - input[type="datetime-local"], - input[type="email"], - input[type="month"], - input[type="number"], - input[type="password"], - input[type="search"], - input[type="tel"], - input[type="text"], - input[type="time"], - input[type="url"], - input[type="week"] { - width: 100%; - } - } - - div.DTE_Form_Buttons button { - margin: -6px 0 -6px 4px; - padding: 5px; - } - } - - // Have the input types take up full space, taking into account the cell padding - div.DTE_Field input[type="color"], - div.DTE_Field input[type="date"], - div.DTE_Field input[type="datetime"], - div.DTE_Field input[type="datetime-local"], - div.DTE_Field input[type="email"], - div.DTE_Field input[type="month"], - div.DTE_Field input[type="number"], - div.DTE_Field input[type="password"], - div.DTE_Field input[type="search"], - div.DTE_Field input[type="tel"], - div.DTE_Field input[type="text"], - div.DTE_Field input[type="time"], - div.DTE_Field input[type="url"], - div.DTE_Field input[type="week"] { - margin: -6px 0; - } - - div.DTE_Field_Error, - div.DTE_Form_Error { - font-size: 11px; - line-height: 1.2em; - padding: 0; - margin-top: 10px; - - &:empty { - margin-top: 0; - } - } -} - -// Responsive integration -span.dtr-data div.DTE_Inline { - display: inline-table; -} \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/lightbox.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/lightbox.scss deleted file mode 100644 index bbab24ea..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/lightbox.scss +++ /dev/null @@ -1,174 +0,0 @@ - - -div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 50%; - margin-left: -390px; - width: 780px; - height: 100%; - z-index: 11; - - div.DTED_Lightbox_Container { - display: table; - height: 100%; - width: 100%; - - div.DTED_Lightbox_Content_Wrapper { - display: table-cell; - vertical-align: middle; - width: 100%; - - div.DTED_Lightbox_Content { - position: relative; - box-shadow: 0 12px 30px 0 rgba(0,0,0,.5); - border-radius: 6px; - @include box-sizing(border-box); - - div.DTE { - background: white; - border-radius: 6px; - border: 1px solid #666; - background: #fcfcfc; - @include box-sizing(border-box); - - div.DTE_Header { - right: 0; - width: auto; - border-top-left-radius: 6px; - border-top-right-radius: 6px; - } - - div.DTE_Body_Content { - box-sizing: border-box; - background: #fcfcfc; - } - - div.DTE_Footer { - right: 0; - width: auto; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - } - } - - div.DTED_Lightbox_Close { - @include close-icon(); - } - } - } - } -} - -div.DTED_Lightbox_Wrapper { - div.DTE_Footer { - display: flex; - justify-content: flex-end; - } - - div.DTE_Footer_Content { - display: none; - } - - div.DTE.inFormError div.DTE_Footer { - justify-content: space-between; - } -} - - -div.DTED_Lightbox_Background { - @include overlay-background(); -} - - -body.DTED_Lightbox_Mobile { - div.DTED_Lightbox_Background { - height: 0; - } - - div.DTED_Lightbox_Shown { - display: none; - } - - div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - width: auto; - height: auto; - margin-left: 0; - -webkit-overflow-scrolling: touch; - - div.DTED_Lightbox_Container { - display: block; - height: 100%; - - div.DTED_Lightbox_Content_Wrapper { - display: block; - height: 100%; - - div.DTED_Lightbox_Content { - border-radius: 0; - box-shadow: none; - height: 100% !important; - - div.DTE { - border-radius: 0; - height: 100%; - - div.DTE_Header { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - div.DTE_Body_Content { - padding-bottom: 52px; - } - - div.DTE_Footer { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - } - - div.DTED_Lightbox_Close { - top: 11px; - right: 15px; - - background-color: transparent; - border: none; - box-shadow: none; - } - } - } - } - } -} - -@media only screen -and (max-width: 780px) { - body div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 0; - width: 90%; - margin-left: 5%; - } -} - -@media only screen -and (max-width: 580px) { - body div.DTED_Lightbox_Wrapper { - position: fixed; - top: 0; - left: 0; - width: 100%; - margin-left: 0; - } -} - - - - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/main.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/main.scss deleted file mode 100644 index 2e9d4dda..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/main.scss +++ /dev/null @@ -1,180 +0,0 @@ - - -// The main form. -// Most of the styles for display of the main form come from the display -// controller (lightbox and envelope are the two built in options). -div.DTE_Body { - padding: 52px 0; // space for hte header and footer which are position: absolute - - div.DTE_Body_Content { - position: relative; - overflow: auto; - - div.DTE_Form_Info { - padding: 1em 1em 0 1em; - margin: 0; - } - - div.DTE_Field { - position: relative; - - clear: both; - padding: 5px 10%; - border: 1px solid transparent; - - &:after { - display: block; - content: "."; - height: 0; - line-height: 0; - clear: both; - visibility: hidden; - } - - &:hover { - background-color: #f9f9f9; - border: 1px solid #f3f3f3; - } - - >label { - float: left; - width: 33%; - padding-top: 3px; - } - - >div.DTE_Field_Input { - float: right; - width: 66%; - } - - // Field in error state - &.DTE_Field_StateError { } - - &.full { - padding: 5px 0 5px 10%; - } - - &.block { - >div.DTE_Field_Input { - float: none; - clear: both; - width: 100%; - } - } - } - } -} - -html[dir="rtl"] { - div.DTE_Body div.DTE_Body_Content div.DTE_Field { - > label { - float: right; - } - - >div.DTE_Field_Input { - float: left; - } - } - - div.DTE div.DTE_Form_Buttons button { - float: left; - } -} - -// iPad in portrait -@media only screen -and (max-width : 768px) { - div.DTE_Body { - div.DTE_Body_Content { - div.DTE_Field { - padding: 5px 10%; - - &.full { - padding: 5px 0 5px 10%; - - >label { - width: 35.5%; - } - - >div.DTE_Field_Input { - width: 64.5%; - } - } - - &.block { - >div.DTE_Field_Input { - width: 100%; - } - } - } - } - } -} - -@media only screen -and (max-width : 640px) { - div.DTE_Body { - div.DTE_Body_Content { - div.DTE_Field { - padding: 5px 0; - - &.full { - padding: 5px 0%; - - >label { - width: 40%; - } - - >div.DTE_Field_Input { - width: 60%; - } - } - - &.block { - >div.DTE_Field_Input { - width: 100%; - } - } - } - } - } -} - -// For devices with smaller screens, the fields should be shown stacked -@media only screen -and (max-width : 580px) { - div.DTE_Body { - div.DTE_Body_Content { - div.DTE_Field { - position: relative; - - clear: both; - padding: 5px 0; - - >label { - float: none; - width: auto; - padding-top: 0; - } - - >div.DTE_Field_Input { - float: none; - width: auto; - margin-top: 4px; - margin-bottom: 6px; - } - - &.full, - &.block { - padding: 5px 0; - - >label, - >div.DTE_Field_Input { - width: 100%; - } - } - } - } - } -} - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/mixins.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/mixins.scss deleted file mode 100644 index 8338541b..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/mixins.scss +++ /dev/null @@ -1,178 +0,0 @@ - - -@function tint( $color, $percent ) { - @return mix(white, $color, $percent); -} - -@function shade( $color, $percent ) { - @return mix(black, $color, $percent); -} - - -@mixin border-radius ( $radius ) { - -webkit-border-radius: $radius; - -moz-border-radius: $radius; - -ms-border-radius: $radius; - -o-border-radius: $radius; - border-radius: $radius; -} - -@mixin box-sizing($box-model) { - -webkit-box-sizing: $box-model; // Safari <= 5 - -moz-box-sizing: $box-model; // Firefox <= 19 - box-sizing: $box-model; -} - -@mixin box-shadow($top, $left, $blur, $color, $inset: false) { - @if $inset { - -webkit-box-shadow:inset $top $left $blur $color; - -moz-box-shadow:inset $top $left $blur $color; - box-shadow:inset $top $left $blur $color; - } @else { - -webkit-box-shadow: $top $left $blur $color; - -moz-box-shadow: $top $left $blur $color; - box-shadow: $top $left $blur $color; - } -} - -@mixin two-stop-gradient($fromColor, $toColor) { - background-color: $toColor; /* Fallback */ - background-image: -webkit-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, $fromColor 0%, $toColor 100%); /* FF3.6 */ - background-image: -ms-linear-gradient(top, $fromColor 0%, $toColor 100%); /* IE10 */ - background-image: -o-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Opera 11.10+ */ - background-image: linear-gradient(to bottom, $fromColor 0%, $toColor 100%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}'); -} - -@mixin three-stop-gradient($fromColor, $middleColor, $toColor) { - background-color: $toColor; /* Fallback */ - background-image: -webkit-linear-gradient(top, $fromColor, $middleColor, $toColor); /* Chrome 10+, Saf5.1+, iOS 5+ */ - background-image: -moz-linear-gradient(top, $fromColor, $middleColor, $toColor); /* FF3.6 */ - background-image: -ms-linear-gradient(top, $fromColor, $middleColor, $toColor); /* IE10 */ - background-image: -o-linear-gradient(top, $fromColor, $middleColor, $toColor); /* Opera 11.10+ */ - background-image: linear-gradient(to bottom, $fromColor, $middleColor, $toColor); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}'); -} - -@mixin radial-gradient ($fromColor, $toColor ) { - background: $toColor; /* Fallback */ - background: -ms-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* IE10 Consumer Preview */ - background: -moz-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Firefox */ - background: -o-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Opera */ - background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, $fromColor), color-stop(1, $toColor)); /* Webkit (Safari/Chrome 10) */ - background: -webkit-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Webkit (Chrome 11+) */ - background: radial-gradient(ellipse farthest-corner at center, $fromColor 0%, $toColor 100%); /* W3C Markup, IE10 Release Preview */ -} - -@mixin keyframe ($animation_name) { - @-webkit-keyframes #{$animation_name} { - @content; - } - - @-moz-keyframes #{$animation_name} { - @content; - } - - @-o-keyframes #{$animation_name} { - @content; - } - - @keyframes #{$animation_name} { - @content; - } -} - -@mixin animation ($duration, $animation) { - -webkit-animation-duration: $duration; - -webkit-animation-name: $animation; - -webkit-animation-fill-mode: forwards; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - -webkit-animation-direction: alternate; - - -moz-animation-duration: $duration; - -moz-animation-name: $animation; - -moz-animation-fill-mode: forwards; - -moz-animation-iteration-count: infinite; - -moz-animation-timing-function: linear; - -moz-animation-direction: alternate; - - -o-animation-duration: $duration; - -o-animation-name: $animation; - -o-animation-fill-mode: forwards; - -o-animation-iteration-count: infinite; - -o-animation-timing-function: linear; - -o-animation-direction: alternate; - - animation-duration: $duration; - animation-name: $animation; - animation-fill-mode: forwards; - animation-iteration-count: infinite; - animation-timing-function: linear; - animation-direction: alternate; -} - -@mixin close-icon () { - position: absolute; - top: 19px; - right: 19px; - cursor: pointer; - z-index: 12; - - &:after { - content: '\00d7'; - color: rgba(0, 0, 0, 0.5); - font-weight: bold; - font-size: 22px; - font-family: 'Courier New', Courier, monospace; - } - - &:hover { - &:after { - color: black; - } - } -} - -@mixin overlay-background () { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - - @include radial-gradient( rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.7) ); - - z-index: 10; - - // IE8- doesn't support RGBA and jQuery uses `filter:` for the fade-in - // animation, so we need a child element that is used just for the display - >div { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - - // IE7- - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); - - // IE8 - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; - } - - // IE9 has both filter and rgba support, so we need a hack to disable the filter - >div:not([dummy]) { - filter: progid:DXImageTransform.Microsoft.gradient(enabled='false'); - } -} - -@mixin background-transision () { - -webkit-transition: background-color 500ms linear; - -moz-transition: background-color 500ms linear; - -ms-transition: background-color 500ms linear; - -o-transition: background-color 500ms linear; - transition: background-color 500ms linear; -} - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/processing.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/processing.scss deleted file mode 100644 index f63538eb..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/processing.scss +++ /dev/null @@ -1,106 +0,0 @@ - -div.DTE { - div.DTE_Processing_Indicator { - position: absolute; - top: 17px; - right: 42px; - height: 2em; - width: 2em; - z-index: 20; - font-size: 12px; - display: none; - - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - } - - &.processing { - div.DTE_Processing_Indicator { - display: block; - } - - div.DTE_Field div.DTE_Processing_Indicator { - display: none; - } - } - - div.DTE_Field div.DTE_Processing_Indicator { - top: 13px; - right: 0; - font-size: 8px; - } - - &.DTE_Inline { - div.DTE_Processing_Indicator { - top: 5px; - right: 6px; - font-size: 6px; - } - } - - &.DTE_Bubble { - div.DTE_Processing_Indicator { - top: 10px; - right: 14px; - font-size: 8px; - } - } - - div.DTE_Processing_Indicator span, - div.DTE_Processing_Indicator:before, - div.DTE_Processing_Indicator:after { - display: block; - background: black; - width: 0.5em; - height: 1.5em; - border: 1px solid rgba( 0, 0, 0, 0.4 ); - background-color: rgba( 0, 0, 0, 0.1 ); - - -webkit-animation: editorProcessing 0.9s infinite ease-in-out; - animation: editorProcessing 0.9s infinite ease-in-out; - } - - div.DTE_Processing_Indicator:before, - div.DTE_Processing_Indicator:after { - position: absolute; - top: 0; - content: ''; - } - - div.DTE_Processing_Indicator:before { - left: -1em; - -webkit-animation-delay: -0.3s; - animation-delay: -0.3s; - } - - div.DTE_Processing_Indicator span { - -webkit-animation-delay: -0.15s; - animation-delay: -0.15s; - } - - div.DTE_Processing_Indicator:after { - left: 1em; - } - - @-webkit-keyframes editorProcessing { - 0%, - 80%, - 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } - } - @keyframes editorProcessing { - 0%, - 80%, - 100% { - transform: scale(1, 1); - } - 40% { - transform: scale(1, 1.5); - } - } -} diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/upload.scss b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/upload.scss deleted file mode 100644 index 9255e98f..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/ccs/scss/upload.scss +++ /dev/null @@ -1,143 +0,0 @@ - -div.DTE div.editor_upload { - padding-top: 4px; - - div.eu_table { - display: table; - width: 100%; - } - - div.row { - display: table-row; - } - - div.cell { - display: table-cell; - position: relative; - width: 50%; - vertical-align: top; - } - - div.cell + div.cell { - padding-left: 10px; - } - - div.row + div.row { - div.cell { - padding-top: 10px; - } - } - - button.btn, - input[type=file] { - width: 100%; - height: 2.3em; - font-size: 0.8em; - text-align: center; - line-height: 1em; - margin: 0; - } - - input[type=file] { - position: absolute; - top: 0; - left: 0; - width: 100%; - opacity: 0; - } - - div.drop { - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - border: 3px dashed #ccc; - border-radius: 6px; - min-height: 4em; - color: #999; - text-align: center; - padding: 1em 2em; - line-height: 1.1em; - - &.over { - border: 3px dashed #111; - color: #111; - } - - span { - max-width: 75%; - font-size: 0.85em; - line-height: 1em; - } - } - - div.rendered { - img { - max-width: 8em; - margin: 0 auto; - } - } - - &.noDrop { - div.drop { - display: none; - } - - div.row.second { - display: none; - } - - div.rendered { - margin-top: 10px; - } - } - - &.noClear { - div.clearValue button { - display: none; - } - } - - &.multi { - div.cell { - display: block; - width: 100%; - - div.drop { - min-height: 0; - } - } - - div.clearValue { - display: none; - } - - ul { - list-style-type: none; - margin: 0; - padding: 0; - - li { - position: relative; - margin-top: 0.5em; - - &:first-child { - margin-top: 0; - } - - img { - vertical-align: middle; - } - - button { - position: absolute; - width: 40px; - right: 0; - top: 50%; - margin-top: -1.5em; - } - } - } - } -} - diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.js deleted file mode 100644 index 8c4343a8..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.js +++ /dev/null @@ -1,6830 +0,0 @@ -/*! DataTables Editor v2.1.3 - * - * ©2012-2023 SpryMedia Ltd, all rights reserved. - * License: editor.datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - var jq = require('jquery'); - var cjsRequires = function (root, $) { - if ( ! $.fn.dataTable ) { - require('datatables.net')(root, $); - } - }; - - if (typeof window === 'undefined') { - module.exports = function (root, $) { - if ( ! root ) { - // CommonJS environments without a window global must pass a - // root. This will give an error otherwise - root = window; - } - - if ( ! $ ) { - $ = jq( root ); - } - - cjsRequires( root, $ ); - return factory( $, root, root.document ); - }; - } - else { - cjsRequires( window, jq ); - module.exports = factory( jq, window, window.document ); - } - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - -var formOptions = { - buttons: true, - drawType: false, - focus: 0, - message: true, - nest: false, - onBackground: 'blur', - onBlur: 'close', - onComplete: 'close', - onEsc: 'close', - onFieldError: 'focus', - onReturn: 'submit', - scope: 'row', - submit: 'all', - submitHtml: '▶', - submitTrigger: null, - title: true -}; - -var defaults$1 = { - /** - * Parameter name to use to submit data to the server. - * - * @type string - */ - actionName: 'action', - /** - * Control how the Ajax call to update data on the server. - * - * This option matches the `dt-init ajax` option in that is can be provided - * in one of three different ways: - * - * * string - As a string, the value given is used as the url to target - * the Ajax request to, using the default Editor Ajax options. Note that - * for backwards compatibility you can use the form "METHOD URL" - for - * example: `"PUT api/users"`, although it is recommended you use the - * object form described below. - * * object - As an object, the `ajax` property has two forms: - * * Used to extend and override the default Ajax options that Editor - * uses. This can be very useful for adding extra data for example, or - * changing the HTTP request type. - * * With `create`, `edit` and `remove` properties, Editor will use the - * option for the action that it is taking, which can be useful for - * REST style interfaces. The value of each property can be a string, - * object or function, using exactly the same options as the main `ajax` - * option. All three options must be defined if this form is to be used. - * * function - As a function this gives complete control over the method - * used to update the server (if indeed a server is being used!). For - * example, you could use a different data store such as localStorage, - * Firebase or route the data through a web-socket. - * - * @example - * // As a string - all actions are submitted to this URI as POST requests - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": 'php/index.php', - * "table": "#example" - * } ); - * } ); - * - * @example - * // As an object - using GET rather than POST - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": { - * "type": 'GET', - * "url": 'php/index.php - * }, - * "table": "#example" - * } ); - * } ); - * - * @example - * // As an object - each action is submitted to a different URI as POST requests - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": { - * "create": "/rest/user/create", - * "edit": "/rest/user/_id_/edit", - * "remove": "/rest/user/_id_/delete" - * }, - * "table": "#example" - * } ); - * } ); - * - * @example - * // As an object - with different HTTP methods for each action - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": { - * "create": { - * type: 'POST', - * url: '/rest/user/create' - * }, - * "edit": { - * type: 'PUT', - * url: '/rest/user/edit/_id_' - * }, - * "remove": { - * type: 'DELETE', - * url: '/rest/user/delete' - * } - * }, - * "table": "#example" - * } ); - * } ); - * - * // As a function - Making a custom `$.ajax` call - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "table": "#example", - * "ajax": function ( method, url, data, successCallback, errorCallback ) { - * $.ajax( { - * "type": method, - * "url": url, - * "data": data, - * "dataType": "json", - * "success": function (json) { - * successCallback( json ); - * }, - * "error": function (xhr, error, thrown) { - * errorCallback( xhr, error, thrown ); - * } - * } ); - * } - * } ); - * } ); - */ - ajax: null, - /** - * The display controller for the form. The form itself is just a collection of - * DOM elements which require a display container. This display controller allows - * the visual appearance of the form to be significantly altered without major - * alterations to the Editor code. There are two display controllers built into - * Editor *lightbox* and *envelope*. The value of this property will - * be used to access the display controller defined in {@link Editor.display} - * for the given name. Additional display controllers can be added by adding objects - * to that object, through extending the displayController model: - * {@link Editor.models.displayController}. - * - * @type string - * @default lightbox - * - * @example - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example", - * "display": 'envelope' - * } ); - * } ); - */ - display: 'lightbox', - /** - * Events / callbacks - event handlers can be assigned as an individual function - * during initialisation using the parameters in this name space. The names, and - * the parameters passed to each callback match their event equivalent in the - * {@link Editor} object. - * - * @namespace - * @deprecated Since 1.3. Use the `on()` API method instead. Note that events - * passed in do still operate as they did in 1.2- but are no longer - * individually documented. - */ - events: {}, - /** - * Fields to initialise the form with - see {@link Editor.models.field} for - * a full list of the options available to each field. Note that if fields are not - * added to the form at initialisation time using this option, they can be added using - * the {@link Editor#add} API method. - * - * @type array - * @default [] - * - * @example - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example", - * "fields": [ { - * "label": "User name:", - * "name": "username" - * } - * // More fields would typically be added here! - * } ] - * } ); - * } ); - */ - fields: [], - formOptions: { - bubble: $.extend({}, formOptions, { - buttons: '_basic', - message: false, - submit: 'changed', - title: false - }), - inline: $.extend({}, formOptions, { - buttons: false, - submit: 'changed' - }), - main: $.extend({}, formOptions) - }, - /** - * Internationalisation options for Editor. All client-side strings that the - * end user can see in the interface presented by Editor can be modified here. - * - * You may also wish to refer to the - * DataTables internationalisation options to provide a fully language - * customised table interface. - * - * @namespace - * - * @example - * // Set the 'create' button text. All other strings used are the - * // default values. - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "create": { - * "button": "New user" - * } - * } - * } ); - * - * @example - * // Set the submit text for all three actions - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "create": { - * "submit": "Create new user" - * }, - * "edit": { - * "submit": "Update user" - * }, - * "remove": { - * "submit": "Remove user" - * } - * } - * } ); - */ - i18n: { - /** - * Close button title text - * - * @type string - * @default Close - */ - close: 'Close', - /** - * Strings used when working with the Editor 'create' action (creating new - * records). - * - * @namespace - */ - create: { - /** - * Buttons button text - * - * @type string - * @default New - */ - button: 'New', - /** - * Submit button text - * - * @type string - * @default Create - */ - submit: 'Create', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Create new entry - */ - title: 'Create new entry' - }, - datetime: { - amPm: ['am', 'pm'], - hours: 'Hour', - minutes: 'Minute', - months: [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' - ], - next: 'Next', - previous: 'Previous', - seconds: 'Second', - unknown: '-', - weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - }, - /** - * Strings used when working with the Editor 'edit' action (editing existing - * records). - * - * @namespace - */ - edit: { - /** - * Buttons button text - * - * @type string - * @default Edit - */ - button: 'Edit', - /** - * Submit button text - * - * @type string - * @default Update - */ - submit: 'Update', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Edit entry - */ - title: 'Edit entry' - }, - /** - * Strings used for error conditions. - * - * @namespace - */ - error: { - /** - * Generic server error message - * - * @type string - * @default - * A system error has occurred (More information) - */ - system: 'A system error has occurred (More information).' - }, - /** - * Strings used for multi-value editing - * - * @namespace - */ - multi: { - /** - * Shown below the multi title text, although only the first - * instance of this text is shown in the form to reduce redundancy - */ - info: 'The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.', - /** - * Disabled for multi-row editing - */ - noMulti: 'This input can be edited individually, but not part of a group.', - /** - * Shown below the field input when group editing a value to allow - * the user to return to the original multiple values - */ - restore: 'Undo changes', - /** - * Shown in place of the field value when a field has multiple values - */ - title: 'Multiple values' - }, - /** - * Strings used when working with the Editor 'delete' action (deleting - * existing records). - * - * @namespace - */ - remove: { - /** - * Buttons button text - * - * @type string - * @default Delete - */ - button: 'Delete', - /** - * Deletion confirmation message. - * - * As Editor has the ability to delete either a single or multiple rows - * at a time, this option can be given as either a string (which will be - * used regardless of how many records are selected) or as an object - * where the property "_" will be used (with %d substituted for the number - * of records to be deleted) as the delete message, unless there is a - * key with the number of records to be deleted. This allows Editor - * to consider the different pluralisation characteristics of different - * languages. - * - * @type object|string - * @default Are you sure you wish to delete %d rows? - * - * @example - * // String - no plural consideration - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": "Are you sure you wish to delete %d record(s)?" - * } - * } - * } ); - * - * @example - * // Basic 1 (singular) or _ (plural) - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": { - * "_": "Confirm deletion of %d records.", - * "1": "Confirm deletion of record." - * } - * } - * } ); - * - * @example - * // Singular, dual and plural - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": { - * "_": "Confirm deletion of %d records.", - * "1": "Confirm deletion of record.", - * "2": "Confirm deletion of both record." - * } - * } - * } ); - * - */ - confirm: { - 1: 'Are you sure you wish to delete 1 row?', - _: 'Are you sure you wish to delete %d rows?' - }, - /** - * Submit button text - * - * @type string - * @default Delete - */ - submit: 'Delete', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Delete - */ - title: 'Delete', - } - }, - /** - * JSON property from which to read / write the row's ID property (i.e. its - * unique column index that identifies the row to the database). By default - * Editor will use the `DT_RowId` property from the data source object - * (DataTable's magic property to set the DOM id for the row). - * - * If you want to read a parameter from the data source object instead of - * using `DT_RowId`, set this option to the property name to use. - * - * Like other data source options the `srcId` option can be given in dotted - * object notation to read nested objects. - * - * @type null|string - * @default DT_RowId - * - * @example - * // Using a data source such as: - * // { "id":12, "browser":"Chrome", ... } - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example", - * "idSrc": "id" - * } ); - * } ); - */ - idSrc: 'DT_RowId', - /** - * jQuery selector that can be used to identify the table you wish to apply - * this editor instance to. - * - * In previous versions of Editor (1.2 and earlier), this parameter was - * called `table`. The name has been altered in 1.3+ to simplify the - * initialisation. This is a backwards compatible change - if you pass in - * a `table` option it will be used. - * - * @type string - * @default Empty string - * - * @example - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example" - * } ); - * } ); - */ - table: null, -}; - -var settings = { - action: null, - actionName: 'action', - ajax: null, - bubbleNodes: [], - bubbleBottom: false, - closeCb: null, - closeIcb: null, - dataSource: null, - displayController: null, - displayed: false, - editCount: 0, - editData: {}, - editFields: {}, - editOpts: {}, - fields: {}, - formOptions: { - bubble: $.extend({}, formOptions), - inline: $.extend({}, formOptions), - main: $.extend({}, formOptions), - }, - globalError: '', - id: -1, - idSrc: null, - includeFields: [], - mode: null, - modifier: null, - opts: null, - order: [], - processing: false, - setFocus: null, - table: null, - template: null, - unique: 0 -}; - -var DataTable$6 = $.fn.dataTable; -var DtInternalApi = DataTable$6.ext.oApi; -function objectKeys(o) { - var out = []; - for (var key in o) { - if (o.hasOwnProperty(key)) { - out.push(key); - } - } - return out; -} -function el(tag, ctx) { - if (ctx === undefined) { - ctx = document; - } - return $('*[data-dte-e="' + tag + '"]', ctx); -} -function safeDomId(id, prefix) { - if (prefix === void 0) { prefix = '#'; } - return typeof id === 'string' ? - prefix + id.replace(/\./g, '-') : - prefix + id; -} -function safeQueryId(id, prefix) { - if (prefix === void 0) { prefix = '#'; } - return typeof id === 'string' ? - prefix + id.replace(/(:|\.|\[|\]|,)/g, '\\$1') : - prefix + id; -} -function dataGet(src) { - return DtInternalApi._fnGetObjectDataFn(src); -} -function dataSet(src) { - return DtInternalApi._fnSetObjectDataFn(src); -} -var extend = DtInternalApi._fnExtend; -function pluck(a, prop) { - var out = []; - $.each(a, function (idx, elIn) { - out.push(elIn[prop]); - }); - return out; -} -/** - * Compare parameters for difference - diving into arrays and objects if - * needed, allowing the object reference to be different, but the contents to - * match. - * - * Please note that LOOSE type checking is used - */ -function deepCompare(o1, o2) { - if (typeof o1 !== 'object' || typeof o2 !== 'object') { - return o1 == o2; - } - var o1Props = objectKeys(o1); - var o2Props = objectKeys(o2); - if (o1Props.length !== o2Props.length) { - return false; - } - for (var i = 0, ien = o1Props.length; i < ien; i++) { - var propName = o1Props[i]; - if (typeof o1[propName] === 'object') { - if (!deepCompare(o1[propName], o2[propName])) { - return false; - } - } - else if (o1[propName] != o2[propName]) { - return false; - } - } - return true; -} - -/* - - - - - - - - - - - * DataTables editor interface - */ -var _dtIsSsp = function (dt, editor) { - // If the draw type is `none`, then we still need to use the DT API to - // update the display with the new data - return dt.settings()[0].oFeatures.bServerSide && - editor.s.editOpts.drawType !== 'none'; -}; -var _dtApi = function (table) { - return table instanceof $.fn.dataTable.Api - ? table - : $(table).DataTable(); -}; -var _dtHighlight = function (node) { - // Highlight a row using CSS transitions. The timeouts need to match the - // transition duration from the CSS - node = $(node); - setTimeout(function () { - node.addClass('highlight'); - setTimeout(function () { - node - .addClass('noHighlight') - .removeClass('highlight'); - setTimeout(function () { - node.removeClass('noHighlight'); - }, 550); - }, 500); - }, 20); -}; -var _dtRowSelector = function (out, dt, identifier, fields, idFn) { - dt.rows(identifier).indexes().each(function (idx) { - var row = dt.row(idx); - var data = row.data(); - var idSrc = idFn(data); - if (idSrc === undefined) { - Editor.error('Unable to find row identifier', 14); - } - out[idSrc] = { - data: data, - fields: fields, - idSrc: idSrc, - node: row.node(), - type: 'row' - }; - }); -}; -var _dtFieldsFromIdx = function (dt, fields, idx, ignoreUnknown) { - var col = dt.settings()[0].aoColumns[idx]; - var dataSrc = col.editField !== undefined ? - col.editField : - col.mData; - var resolvedFields = {}; - var run = function (field, dataSrcIn) { - if (field.name() === dataSrcIn) { - resolvedFields[field.name()] = field; - } - }; - $.each(fields, function (name, fieldInst) { - if (Array.isArray(dataSrc)) { - for (var _i = 0, dataSrc_1 = dataSrc; _i < dataSrc_1.length; _i++) { - var data = dataSrc_1[_i]; - run(fieldInst, data); - } - } - else { - run(fieldInst, dataSrc); - } - }); - if ($.isEmptyObject(resolvedFields) && !ignoreUnknown) { - Editor.error('Unable to automatically determine field from source. Please specify the field name.', 11); - } - return resolvedFields; -}; -var _dtCellSelector = function (out, dt, identifier, allFields, idFn, forceFields) { - if (forceFields === void 0) { forceFields = null; } - var cells = dt.cells(identifier); - cells.indexes().each(function (idx) { - var cell = dt.cell(idx); - var row = dt.row(idx.row); - var data = row.data(); - var idSrc = idFn(data); - var fields = forceFields || _dtFieldsFromIdx(dt, allFields, idx.column, cells.count() > 1); - var isNode = (typeof identifier === 'object' && identifier.nodeName) || identifier instanceof $; - var prevDisplayFields; - var prevAttach; - var prevAttachFields; - // Only add if a field was found to edit - if (Object.keys(fields).length) { - // The row selector will create a new `out` object for the identifier, and the - // cell selector might be called multiple times for a row, so we need to save - // our specific items - if (out[idSrc]) { - prevAttach = out[idSrc].attach; - prevAttachFields = out[idSrc].attachFields; - prevDisplayFields = out[idSrc].displayFields; - } - // Use the row selector to get the row information - _dtRowSelector(out, dt, idx.row, allFields, idFn); - out[idSrc].attachFields = prevAttachFields || []; - out[idSrc].attachFields.push(Object.keys(fields)); - out[idSrc].attach = prevAttach || []; - out[idSrc].attach.push(isNode ? - $(identifier).get(0) : - cell.fixedNode ? // If its under a fixed column, get the floating node - cell.fixedNode() : - cell.node()); - out[idSrc].displayFields = prevDisplayFields || {}; - $.extend(out[idSrc].displayFields, fields); - } - }); -}; -var _dtColumnSelector = function (out, dt, identifier, fields, idFn) { - dt.cells(null, identifier).indexes().each(function (idx) { - _dtCellSelector(out, dt, idx, fields, idFn); - }); -}; -var dataSource$1 = { - commit: function (action, identifier, data, store) { - // Updates complete - redraw - var that = this; - var dt = _dtApi(this.s.table); - var ssp = dt.settings()[0].oFeatures.bServerSide; - var ids = store.rowIds; - // On edit, if there are any rows left in the `store.rowIds`, then they - // were not returned by the server and should be removed (they might not - // meet filtering requirements any more for example) - if (!_dtIsSsp(dt, this) && action === 'edit' && store.rowIds.length) { - var row = void 0; - var compare = function (id) { - return function (rowIdx, rowData, rowNode) { - return id == dataSource$1.id.call(that, rowData); - }; - }; - for (var i = 0, ien = ids.length; i < ien; i++) { - // Find the row to edit - attempt to do an id look up first for speed - try { - row = dt.row(safeQueryId(ids[i])); - } - catch (e) { - row = dt; - } - // If not found, then we need to do it the slow way - if (!row.any()) { - row = dt.row(compare(ids[i])); - } - if (row.any() && !ssp) { - row.remove(); - } - } - } - var drawType = this.s.editOpts.drawType; - if (drawType !== 'none') { - var dtAny = dt; - // SSP highlighting has to go after the draw, but this can't be - // merged with client-side processing highlight as we want that - // to work even when there isn't a draw happening. - if (ssp && ids && ids.length) { - dt.one('draw', function () { - for (var i = 0, ien = ids.length; i < ien; i++) { - var row = dt.row(safeQueryId(ids[i])); - if (row.any()) { - _dtHighlight(row.node()); - } - } - }); - } - dt.draw(drawType); - // Responsive needs to take account of new data column widths - if (dtAny.responsive) { - dtAny.responsive.recalc(); - } - // Rebuild searchpanes - if (typeof dtAny.searchPanes === 'function' && !ssp) { - dtAny.searchPanes.rebuildPane(undefined, true); - } - // Rebuild searchbuilder - if (dtAny.searchBuilder !== undefined && typeof dtAny.searchBuilder.rebuild === 'function' && !ssp) { - dtAny.searchBuilder.rebuild(dtAny.searchBuilder.getDetails()); - } - } - }, - create: function (fields, data) { - var dt = _dtApi(this.s.table); - if (!_dtIsSsp(dt, this)) { - var row = dt.row.add(data); - _dtHighlight(row.node()); - } - }, - edit: function (identifier, fields, data, store) { - var that = this; - var dt = _dtApi(this.s.table); - // No point in doing anything when server-side processing - the commit - // will redraw the table - if (!_dtIsSsp(dt, this) || this.s.editOpts.drawType === 'none') { - // The identifier can select one or more rows, but the data will - // refer to just a single row. We need to determine which row from - // the set is the one to operator on. - var rowId_1 = dataSource$1.id.call(this, data); - var row = void 0; - // Find the row to edit - attempt to do an id look up first for speed - try { - row = dt.row(safeQueryId(rowId_1)); - } - catch (e) { - row = dt; - } - // If not found, then we need to do it the slow way - if (!row.any()) { - row = dt.row(function (rowIdx, rowData, rowNode) { - return rowId_1 == dataSource$1.id.call(that, rowData); - }); - } - if (row.any()) { - // Merge data to allow for a sub-set to be returned - var toSave = extend({}, row.data(), true); - toSave = extend(toSave, data, true); - row.data(toSave); - // Remove the item from the list of indexes now that is has been - // updated - var idx = $.inArray(rowId_1, store.rowIds); - store.rowIds.splice(idx, 1); - } - else { - // If not found, then its a new row (change in pkey possibly) - row = dt.row.add(data); - } - _dtHighlight(row.node()); - } - }, - fakeRow: function (insertPoint) { - var dt = _dtApi(this.s.table); - var tr = $(''); - var attachFields = []; - var attach = []; - var displayFields = {}; - var tbody = dt.table(undefined).body(); - for (var i = 0, ien = dt.columns(':visible').count(); i < ien; i++) { - var visIdx = dt.column(i + ':visible').index(); - var td = $('').appendTo(tr); - var fields = _dtFieldsFromIdx(dt, this.s.fields, visIdx, true); - var settings = dt.settings()[0]; - var className = settings.aoColumns[visIdx].sClass; - if (className) { - td.addClass(className); - } - if (Object.keys(fields).length) { - attachFields.push(Object.keys(fields)); - attach.push(td[0]); - $.extend(displayFields, fields); - } - } - var append = function () { - // Remove the data empty message - if (dt.page.info().recordsDisplay === 0) { - $(tbody).empty(); - } - var action = insertPoint === 'end' - ? 'appendTo' - : 'prependTo'; - tr[action](tbody); - }; - this.__dtFakeRow = tr; - // Insert into the table - append(); - dt.on('draw.dte-createInline', function () { - append(); - }); - return { - 0: { - attach: attach, - attachFields: attachFields, - displayFields: displayFields, - fields: this.s.fields, - type: 'row' - } - }; - }, - fakeRowEnd: function () { - var dt = _dtApi(this.s.table); - dt.off('draw.dte-createInline'); - this.__dtFakeRow.remove(); - this.__dtFakeRow = null; - // Restore data empty row - if (dt.page.info().recordsDisplay === 0) { - dt.draw(false); - } - }, - // get idSrc, fields to edit, data and node for each item - fields: function (identifier) { - var idFn = dataGet(this.s.idSrc); - var dt = _dtApi(this.s.table); - var fields = this.s.fields; - var out = {}; - if ($.isPlainObject(identifier) && - (identifier.rows !== undefined || identifier.columns !== undefined || identifier.cells !== undefined)) { - // Multi-item type selector - if (identifier.rows !== undefined) { - _dtRowSelector(out, dt, identifier.rows, fields, idFn); - } - if (identifier.columns !== undefined) { - _dtColumnSelector(out, dt, identifier.columns, fields, idFn); - } - if (identifier.cells !== undefined) { - _dtCellSelector(out, dt, identifier.cells, fields, idFn); - } - } - else { - // Just a rows selector - _dtRowSelector(out, dt, identifier, fields, idFn); - } - return out; - }, - id: function (data) { - var idFn = dataGet(this.s.idSrc); - return idFn(data); - }, - individual: function (identifier, fieldNames) { - var idFn = dataGet(this.s.idSrc); - var dt = _dtApi(this.s.table); - var fields = this.s.fields; - var out = {}; - var forceFields; - if (fieldNames) { - if (!Array.isArray(fieldNames)) { - fieldNames = [fieldNames]; - } - forceFields = {}; - $.each(fieldNames, function (i, name) { - forceFields[name] = fields[name]; - }); - } - _dtCellSelector(out, dt, identifier, fields, idFn, forceFields); - return out; - }, - prep: function (action, identifier, submit, json, store) { - var _this = this; - // Get the id of the rows created / edited - if (action === 'create') { - store.rowIds = $.map(json.data, function (row) { return dataSource$1.id.call(_this, row); }); - } - if (action === 'edit') { - var cancelled_1 = json.cancelled || []; - store.rowIds = $.map(submit.data, function (val, key) { - return !$.isEmptyObject(submit.data[key]) && // was submitted - $.inArray(key, cancelled_1) === -1 ? // was not cancelled on the server-side - key : - undefined; - }); - } - else if (action === 'remove') { - store.cancelled = json.cancelled || []; - } - }, - refresh: function () { - // Reload a table's data - used when nested data is changed - var dt = _dtApi(this.s.table); - dt.ajax.reload(null, false); - }, - remove: function (identifier, fields, store) { - // No confirmation from the server - var that = this; - var dt = _dtApi(this.s.table); - var cancelled = store.cancelled; - if (cancelled.length === 0) { - // No rows were cancelled on the server-side, remove them all - dt.rows(identifier).remove(); - } - else { - // One or more rows were cancelled, so we need to identify them - // and not remove those rows - var indexes_1 = []; - dt.rows(identifier).every(function () { - var id = dataSource$1.id.call(that, this.data()); - if ($.inArray(id, cancelled) === -1) { - // Don't use `remove` here - it messes up the indexes - indexes_1.push(this.index()); - } - }); - dt.rows(indexes_1).remove(); - } - } -}; - -/* - - - - - - - - - * HTML editor interface - */ -function _htmlId(identifier) { - if (identifier === 'keyless') { - return $(document); - } - var specific = $('[data-editor-id="' + identifier + '"]'); - if (specific.length === 0) { - specific = typeof identifier === 'string' ? - $(safeQueryId(identifier)) : - $(identifier); - } - if (specific.length === 0) { - throw new Error('Could not find an element with `data-editor-id` or `id` of: ' + identifier); - } - return specific; -} -function _htmlEl(identifier, name) { - var context = _htmlId(identifier); - return $('[data-editor-field="' + name + '"]', context); -} -function _htmlEls(identifier, names) { - var out = $(); - for (var i = 0, ien = names.length; i < ien; i++) { - out = out.add(_htmlEl(identifier, names[i])); - } - return out; -} -function _htmlGet(identifier, dataSrc) { - var el = _htmlEl(identifier, dataSrc); - return el.filter('[data-editor-value]').length ? - el.attr('data-editor-value') : - el.html(); -} -function _htmlSet(identifier, fields, data) { - $.each(fields, function (name, field) { - var val = field.valFromData(data); - if (val !== undefined) { - var el = _htmlEl(identifier, field.dataSrc()); - if (el.filter('[data-editor-value]').length) { - el.attr('data-editor-value', val); - } - else { - el.each(function () { - // This is very frustrating, but in IE if you just write directly - // to innerHTML, and elements that are overwritten are GC'ed, - // even if there is a reference to them elsewhere - while (this.childNodes.length) { - this.removeChild(this.firstChild); - } - }) - .html(val); - } - } - }); -} -var dataSource = { - create: function (fields, data) { - // If there is an element with the id that has been created, then use it - // to assign the values - if (data) { - var id = dataSource.id.call(this, data); - try { - if (_htmlId(id).length) { - _htmlSet(id, fields, data); - } - } - catch (e) { - // noop - use `postCreate` to add items to the DOM - } - } - }, - edit: function (identifier, fields, data) { - // Get the ids from the returned data or `keyless` if not found - var id = dataSource.id.call(this, data) || 'keyless'; - _htmlSet(id, fields, data); - }, - // get idSrc, fields to edit, data and node for each item - fields: function (identifier) { - var out = {}; - // Allow multi-point editing - if (Array.isArray(identifier)) { - for (var i = 0, ien = identifier.length; i < ien; i++) { - var res = dataSource.fields.call(this, identifier[i]); - out[identifier[i]] = res[identifier[i]]; - } - return out; - } - // else - var data = {}; - var fields = this.s.fields; - if (!identifier) { - identifier = 'keyless'; - } - $.each(fields, function (name, field) { - var val = _htmlGet(identifier, field.dataSrc()); - // If no HTML element is present, jQuery returns null. We want undefined - field.valToData(data, val === null ? undefined : val); - }); - out[identifier] = { - data: data, - fields: fields, - idSrc: identifier, - node: document, - type: 'row' - }; - return out; - }, - id: function (data) { - var idFn = dataGet(this.s.idSrc); - return idFn(data); - }, - individual: function (identifier, fieldNames) { - var attachEl; - // Auto detection of the field name and id - if (identifier instanceof $ || identifier.nodeName) { - attachEl = identifier; - if (!fieldNames) { - fieldNames = [$(identifier).attr('data-editor-field')]; - } - var back = $.fn.addBack ? 'addBack' : 'andSelf'; - identifier = $(identifier).parents('[data-editor-id]')[back]().data('editor-id'); - } - // no id given and none found - if (!identifier) { - identifier = 'keyless'; - } - // no field name - cannot continue - if (fieldNames && !Array.isArray(fieldNames)) { - fieldNames = [fieldNames]; - } - if (!fieldNames || fieldNames.length === 0) { - throw new Error('Cannot automatically determine field name from data source'); - } - var out = dataSource.fields.call(this, identifier); - var fields = this.s.fields; - var forceFields = {}; - $.each(fieldNames, function (i, name) { - forceFields[name] = fields[name]; - }); - $.each(out, function (id, set) { - set.type = 'cell'; - set.attachFields = [fieldNames]; - set.attach = attachEl ? - $(attachEl) : - _htmlEls(identifier, fieldNames).toArray(); - set.fields = fields; - set.displayFields = forceFields; - }); - return out; - }, - initField: function (cfg) { - // This is before the field has been initialised so can't use it API - var label = $('[data-editor-label="' + (cfg.data || cfg.name) + '"]'); - if (!cfg.label && label.length) { - cfg.label = label.html(); - } - }, - remove: function (identifier, fields) { - // If there is an element with an ID property matching the identifier, - // remove it - if (identifier !== 'keyless') { - _htmlId(identifier).remove(); - } - } -}; - -/** - * Class names that are used by Editor for its various display components. - * A copy of this object is taken when an Editor instance is initialised, thus - * allowing different classes to be used in different instances if required. - * Class name changes can be useful for easy integration with CSS frameworks, - * for example Twitter Bootstrap. - * - * @namespace - */ -var classNames = { - /** - * Action classes - these are added to the Editor base element ("wrapper") - * and allows styling based on the type of form view that is being employed. - * - * @namespace - */ - actions: { - /** - * Editor is in 'create' state - */ - create: 'DTE_Action_Create', - /** - * Editor is in 'edit' state - */ - edit: 'DTE_Action_Edit', - /** - * Editor is in 'remove' state - */ - remove: 'DTE_Action_Remove' - }, - /** - * Display body classes - * - * @namespace - */ - body: { - /** - * Liner for the body content - */ - content: 'DTE_Body_Content', - /** - * Container for the body elements - */ - wrapper: 'DTE_Body' - }, - /** - * Bubble editing classes - these are used to display the bubble editor - * - * @namespace - */ - bubble: { - /** - * Fixed background - */ - bg: 'DTE_Bubble_Background', - /** - * Close button - */ - close: 'icon close', - /** - * Bubble content liner - */ - liner: 'DTE_Bubble_Liner', - /** - * Pointer shown which node is being edited - */ - pointer: 'DTE_Bubble_Triangle', - /** - * Bubble table display wrapper, so the buttons and form can be shown - * as table cells (via css) - */ - table: 'DTE_Bubble_Table', - /** - * Bubble container element - */ - wrapper: 'DTE DTE_Bubble' - }, - /** - * Field classes - * - * @namespace - */ - field: { - /** - * Field is disabled - */ - 'disabled': 'disabled', - /** - * Field error state (added to the field.wrapper element when in error state - */ - 'error': 'DTE_Field_StateError', - /** - * Field input container - */ - 'input': 'DTE_Field_Input', - /** - * Input elements wrapper - */ - 'inputControl': 'DTE_Field_InputControl', - /** - * Field label - */ - 'label': 'DTE_Label', - /** - * Error information text - */ - 'msg-error': 'DTE_Field_Error', - /** - * General information text - */ - 'msg-info': 'DTE_Field_Info', - /** - * Label information text - */ - 'msg-label': 'DTE_Label_Info', - /** - * Live messaging (API) information text - */ - 'msg-message': 'DTE_Field_Message', - /** - * Multi-value information descriptive text - */ - 'multiInfo': 'multi-info', - /** - * Multi-value not editable (field.multiEditable) - */ - 'multiNoEdit': 'multi-noEdit', - /** - * Multi-value information display - */ - 'multiRestore': 'multi-restore', - /** - * Multi-value information display wrapper - */ - 'multiValue': 'multi-value', - /** - * Class prefix for the field name - field name is added to the end allowing - * styling based on field name. - */ - 'namePrefix': 'DTE_Field_Name_', - /** - * Field's processing element - */ - 'processing': 'DTE_Processing_Indicator', - /** - * Class prefix for the field type - field type is added to the end allowing - * styling based on field type. - */ - 'typePrefix': 'DTE_Field_Type_', - /** - * Container for each field - */ - 'wrapper': 'DTE_Field' - }, - /** - * Display footer classes - * - * @namespace - */ - footer: { - /** - * Liner for the footer content - */ - content: 'DTE_Footer_Content', - /** - * Container for the footer elements - */ - wrapper: 'DTE_Footer' - }, - /** - * Form classes - * - * @namespace - */ - form: { - /** - * Button - */ - button: 'btn', - /** - * Button inside the form - */ - buttonInternal: 'btn', - /** - * Buttons container - */ - buttons: 'DTE_Form_Buttons', - /** - * Liner for the form content - */ - content: 'DTE_Form_Content', - /** - * Global error imformation - */ - error: 'DTE_Form_Error', - /** - * Global form information - */ - info: 'DTE_Form_Info', - /** - * Applied to the
tag - */ - tag: '', - /** - * Container for the form elements - */ - wrapper: 'DTE_Form' - }, - /** - * Display header classes - * - * @namespace - */ - header: { - /** - * Liner for the header content - */ - content: 'DTE_Header_Content', - /** - * Title tag - */ - title: { - tag: null, - class: '' - }, - /** - * Container for the header elements - */ - wrapper: 'DTE_Header' - }, - /** - * Inline editing classes - these are used to display the inline editor - * - * @namespace - */ - inline: { - buttons: 'DTE_Inline_Buttons', - liner: 'DTE_Inline_Field', - wrapper: 'DTE DTE_Inline', - }, - /** - * Processing classes - * - * @namespace - */ - processing: { - /** - * Added to the base element ("wrapper") when the form is "processing" - */ - active: 'processing', - /** - * Processing indicator element - */ - indicator: 'DTE_Processing_Indicator' - }, - /** - * Applied to the base DIV element that contains all other Editor elements - */ - wrapper: 'DTE' -}; - -var displayed$2 = false; -var cssBackgroundOpacity = 1; -var dom$1 = { - background: $('
')[0], - close: $('
')[0], - content: null, - wrapper: $('
' + - '
' + - '
' + - '
')[0] -}; -function findAttachRow(editor, attach) { - var dt = new $.fn.dataTable.Api(editor.s.table); - // Figure out where we want to put the form display - if (attach === 'head') { - return dt.table(undefined).header(); // typing error in DT type file - } - else if (editor.s.action === 'create') { - return dt.table(undefined).header(); - } - else { - return dt.row(editor.s.modifier).node(); - } -} -function heightCalc$1(dte) { - // Set the max-height for the form content - var header = $('div.DTE_Header', dom$1.wrapper).outerHeight(); - var footer = $('div.DTE_Footer', dom$1.wrapper).outerHeight(); - var maxHeight = $(window).height() - (envelope.conf.windowPadding * 2) - - header - footer; - $('div.DTE_Body_Content', dom$1.wrapper).css('maxHeight', maxHeight); - return $(dte.dom.wrapper).outerHeight(); -} -function hide$2(dte, callback) { - if (!callback) { - callback = function () { }; - } - if (displayed$2) { - $(dom$1.content).animate({ - top: -(dom$1.content.offsetHeight + 50) - }, 600, function () { - $([dom$1.wrapper, dom$1.background]).fadeOut('normal', function () { - $(this).detach(); - callback(); - }); - }); - displayed$2 = false; - } -} -function init$1() { - dom$1.content = $('div.DTED_Envelope_Container', dom$1.wrapper)[0]; - cssBackgroundOpacity = $(dom$1.background).css('opacity'); -} -function show$2(dte, callback) { - if (!callback) { - callback = function () { }; - } - $('body') - .append(dom$1.background) - .append(dom$1.wrapper); - // Adjust size for the content - dom$1.content.style.height = 'auto'; - if (!displayed$2) { - var style = dom$1.wrapper.style; - style.opacity = '0'; - style.display = 'block'; - var height = heightCalc$1(dte); - var targetRow = findAttachRow(dte, envelope.conf.attach); - var width = targetRow.offsetWidth; - style.display = 'none'; - style.opacity = '1'; - // Prep the display - dom$1.wrapper.style.width = width + 'px'; - dom$1.wrapper.style.marginLeft = -(width / 2) + 'px'; - dom$1.wrapper.style.top = ($(targetRow).offset().top + targetRow.offsetHeight) + 'px'; - dom$1.content.style.top = ((-1 * height) - 20) + 'px'; - // Start animating in the background - dom$1.background.style.opacity = '0'; - dom$1.background.style.display = 'block'; - $(dom$1.background).animate({ - opacity: cssBackgroundOpacity - }, 'normal'); - // Animate in the display - $(dom$1.wrapper).fadeIn(); - $(dom$1.content).animate({ top: 0 }, 600, callback); - } - // Event handlers - $(dom$1.close) - .attr('title', dte.i18n.close) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - dte.close(); - }); - $(dom$1.background) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - dte.background(); - }); - $('div.DTED_Lightbox_Content_Wrapper', dom$1.wrapper) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - if ($(e.target).hasClass('DTED_Envelope_Content_Wrapper')) { - dte.background(); - } - }); - $(window) - .off('resize.DTED_Envelope') - .on('resize.DTED_Envelope', function () { - heightCalc$1(dte); - }); - displayed$2 = true; -} -var envelope = { - close: function (dte, callback) { - hide$2(dte, callback); - }, - conf: { - attach: 'row', - windowPadding: 50 - }, - destroy: function (dte) { - hide$2(); - }, - init: function (dte) { - init$1(); - return envelope; - }, - node: function (dte) { - return dom$1.wrapper[0]; - }, - open: function (dte, append, callback) { - $(dom$1.content).children().detach(); - dom$1.content.appendChild(append); - dom$1.content.appendChild(dom$1.close); - show$2(dte, callback); - } -}; - -function isMobile() { - return typeof window.orientation !== 'undefined' && window.outerWidth <= 576 - ? true - : false; -} -var displayed$1 = false; -var ready = false; -var scrollTop = 0; -var dom = { - background: $('
'), - close: $('
'), - content: null, - wrapper: $('
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
') -}; -function heightCalc() { - var headerFooter = $('div.DTE_Header', dom.wrapper).outerHeight() + - $('div.DTE_Footer', dom.wrapper).outerHeight(); - if (isMobile()) { - $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', 'calc(100vh - ' + headerFooter + 'px)'); - } - else { - // Set the max-height for the form content - var maxHeight = $(window).height() - (self.conf.windowPadding * 2) - headerFooter; - $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', maxHeight); - } -} -function hide$1(dte, callback) { - if (!callback) { - callback = function () { }; - } - // Restore scroll state - $('body').scrollTop(scrollTop); - dte._animate(dom.wrapper, { - opacity: 0, - top: self.conf.offsetAni - }, function () { - $(this).detach(); - callback(); - }); - dte._animate(dom.background, { - opacity: 0 - }, function () { - $(this).detach(); - }); - displayed$1 = false; - $(window).off('resize.DTED_Lightbox'); -} -function init() { - if (ready) { - return; - } - dom.content = $('div.DTED_Lightbox_Content', dom.wrapper); - dom.wrapper.css('opacity', 0); - dom.background.css('opacity', 0); - ready = true; -} -function show$1(dte, callback) { - // Mobiles have very poor position fixed abilities, so we need to know - // when using mobile A media query isn't good enough - if (isMobile()) { - $('body').addClass('DTED_Lightbox_Mobile'); - } - $('body') - .append(dom.background) - .append(dom.wrapper); - heightCalc(); - if (!displayed$1) { - displayed$1 = true; - dom.content.css('height', 'auto'); - dom.wrapper.css({ - top: -self.conf.offsetAni - }); - dte._animate(dom.wrapper, { - opacity: 1, - top: 0 - }, callback); - dte._animate(dom.background, { - opacity: 1 - }); - $(window).on('resize.DTED_Lightbox', function () { - heightCalc(); - }); - scrollTop = $('body').scrollTop(); - } - // Event handlers - assign on show, premoving previous bindings - dom.close - .attr('title', dte.i18n.close) - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - dte.close(); - }); - dom.background - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - e.stopImmediatePropagation(); - dte.background(); - }); - $('div.DTED_Lightbox_Content_Wrapper', dom.wrapper) - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - if ($(e.target).hasClass('DTED_Lightbox_Content_Wrapper')) { - e.stopImmediatePropagation(); - dte.background(); - } - }); -} -var self = { - close: function (dte, callback) { - hide$1(dte, callback); - }, - conf: { - offsetAni: 25, - windowPadding: 25 - }, - destroy: function (dte) { - if (displayed$1) { - hide$1(dte); - } - }, - init: function (dte) { - init(); - return self; - }, - node: function (dte) { - return dom.wrapper[0]; - }, - open: function (dte, append, callback) { - var content = dom.content; - content.children().detach(); - content - .append(append) - .append(dom.close); - show$1(dte, callback); - }, -}; - -var DataTable$5 = $.fn.dataTable; -/** - * Add a new field to the from. This is the method that is called automatically when - * fields are given in the initialisation objects as `Editor.defaults.fields`. - * - * @param this Editor instance - * @param cfg The object that describes the field (the full - * object is described by `Editor.model.field`. Note that multiple - * fields can be given by passing in an array of field definitions. - * @param after Existing field to insert the new field after. This - * can be `undefined` (insert at end), `null` (insert at start) or `string` - * the field name to insert after. - * @param reorder INTERNAL for array adding performance only - * @returns Editor instance - */ -function add(cfg, after, reorder) { - if (reorder === void 0) { reorder = true; } - // Allow multiple fields to be added at the same time - if (Array.isArray(cfg)) { - // Do it in reverse to allow fields to appear in the same order given, otherwise, - // the would appear in reverse if given an `after` - if (after !== undefined) { - cfg.reverse(); - } - for (var _i = 0, cfg_1 = cfg; _i < cfg_1.length; _i++) { - var cfgDp = cfg_1[_i]; - this.add(cfgDp, after, false); - } - this._displayReorder(this.order()); - return this; - } - var name = cfg.name; - if (name === undefined) { - throw new Error('Error adding field. The field requires a `name` option'); - } - if (this.s.fields[name]) { - throw new Error('Error adding field \'' + name + '\'. A field already exists with this name'); - } - // Allow the data source to add / modify the field properties - // Dev: would this be better as an event `preAddField`? And have the - // data sources init only once, but can listen for such events? More - // complexity, but probably more flexible... - this._dataSource('initField', cfg); - var editorField = new Editor.Field(cfg, this.classes.field, this); - // If in an editing mode, we need to set the field up for the data - if (this.s.mode) { - var editFields = this.s.editFields; - editorField.multiReset(); - $.each(editFields, function (idSrc, editIn) { - var value; - if (editIn.data) { - value = editorField.valFromData(editIn.data); - } - editorField.multiSet(idSrc, value !== undefined ? - value : - editorField.def()); - }); - } - this.s.fields[name] = editorField; - if (after === undefined) { - this.s.order.push(name); - } - else if (after === null) { - this.s.order.unshift(name); - } - else { - var idx = $.inArray(after, this.s.order); - this.s.order.splice(idx + 1, 0, name); - } - if (reorder !== false) { - this._displayReorder(this.order()); - } - return this; -} -function ajax(newAjax) { - if (newAjax) { - this.s.ajax = newAjax; - return this; - } - return this.s.ajax; -} -/** - * Perform background activation tasks. - * - * This is NOT publicly documented on the Editor web-site, but rather can be - * used by display controller plug-ins to perform the required task on - * background activation. - * - * @param this Editor instance - * @returns Editor instance - */ -function background() { - var onBackground = this.s.editOpts.onBackground; - if (typeof onBackground === 'function') { - onBackground(this); - } - else if (onBackground === 'blur') { - this.blur(); - } - else if (onBackground === 'close') { - this.close(); - } - else if (onBackground === 'submit') { - this.submit(); - } - return this; -} -/** - * Blur the currently displayed editor. - * - * A blur is different from a `close()` in that it might cause either a close or - * the form to be submitted. A typical example of a blur would be clicking on - * the background of the bubble or main editing forms - i.e. it might be a - * close, or it might submit depending upon the configuration, while a click on - * the close box is a very definite close. - * - * @returns Editor instance - */ -function blur() { - this._blur(); - return this; -} -function bubble(cells, fieldNames, showIn, opts) { - var _this = this; - if (showIn === void 0) { showIn = true; } - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.bubble(cells, fieldNames, opts); - })) { - return this; - } - // Argument shifting - if ($.isPlainObject(fieldNames)) { - opts = fieldNames; - fieldNames = undefined; - showIn = true; - } - else if (typeof fieldNames === 'boolean') { - showIn = fieldNames; - fieldNames = undefined; - opts = undefined; - } - if ($.isPlainObject(showIn)) { - opts = showIn; - showIn = true; - } - if (showIn === undefined) { - showIn = true; - } - opts = $.extend({}, this.s.formOptions.bubble, opts); - var editFields = this._dataSource('individual', cells, fieldNames); - this._edit(cells, editFields, 'bubble', opts, function () { - var namespace = _this._formOptions(opts); - var ret = _this._preopen('bubble'); - if (!ret) { - return _this; - } - // Keep the bubble in position on resize - $(window).on('resize.' + namespace + ' scroll.' + namespace, function () { - _this.bubblePosition(); - }); - // Store the nodes this are being used so the bubble can be positioned - var nodes = []; - _this.s.bubbleNodes = nodes.concat.apply(nodes, pluck(editFields, 'attach')); - // Create container display - var classes = _this.classes.bubble; - var backgroundNode = $('
'); - var container = $('
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
'); - if (showIn) { - container.appendTo('body'); - backgroundNode.appendTo('body'); - } - var liner = container.children().eq(0); - var tableNode = liner.children(); - var closeNode = tableNode.children(); - liner.append(_this.dom.formError); - tableNode.prepend(_this.dom.form); - if (opts.message) { - liner.prepend(_this.dom.formInfo); - } - if (opts.title) { - liner.prepend(_this.dom.header); - } - if (opts.buttons) { - tableNode.append(_this.dom.buttons); - } - // Need to use a small anon function here as the animate callback is the scope - // of the element being animated and TS won't allow access to the private methods - var finish = function () { - _this._clearDynamicInfo(); - _this._event('closed', ['bubble']); - }; - var pair = $().add(container).add(backgroundNode); - _this._closeReg(function (submitComplete) { - _this._animate(pair, { opacity: 0 }, function () { - if (this === container[0]) { - pair.detach(); - $(window).off('resize.' + namespace + ' scroll.' + namespace); - finish(); - } - }); - }); - // Close event handlers - backgroundNode.on('click', function () { - _this.blur(); - }); - closeNode.on('click', function () { - _this._close(); - }); - _this.bubblePosition(); - _this._postopen('bubble', false); - var opened = function () { - _this._focus(_this.s.includeFields, opts.focus); - _this._event('opened', ['bubble', _this.s.action]); - }; - _this._animate(pair, { opacity: 1 }, function () { - // Otherwise the callback will happen on both elements - if (this === container[0]) { - opened(); - } - }); - }); - return this; -} -/** - * Reposition the editing bubble (`bubble()`) when it is visible. This can be - * used to update the bubble position if other elements on the page change - * position. Editor will automatically call this method on window resize. - * - * @returns Editor instance - */ -function bubblePosition() { - var wrapper = $('div.DTE_Bubble'); - var liner = $('div.DTE_Bubble_Liner'); - var nodes = this.s.bubbleNodes; - // Average the node positions to insert the container - var position = { bottom: 0, left: 0, right: 0, top: 0 }; - $.each(nodes, function (i, nodeIn) { - var pos = $(nodeIn).offset(); - nodeIn = $(nodeIn).get(0); - position.top += pos.top; - position.left += pos.left; - position.right += pos.left + nodeIn.offsetWidth; - position.bottom += pos.top + nodeIn.offsetHeight; - }); - position.top /= nodes.length; - position.left /= nodes.length; - position.right /= nodes.length; - position.bottom /= nodes.length; - var top = position.top; - var left = (position.left + position.right) / 2; - var width = liner.outerWidth(); - var height = liner.outerHeight(); - var visLeft = left - (width / 2); - var visRight = visLeft + width; - var docWidth = $(window).width(); - var viewportTop = $(window).scrollTop(); - var padding = 15; - // Show above or below depending on bubbleBottom - wrapper.css({ - left: left, - top: this.s.bubbleBottom ? position.bottom : top - }); - if (this.s.bubbleBottom) { - wrapper.addClass('below'); - } - var curPosition = wrapper.position(); - // Correct for overflow below the fold - if (liner.length && curPosition.top + height > viewportTop + window.innerHeight) { - wrapper - .css('top', top) - .removeClass('below'); - this.s.bubbleBottom = false; - } - else if (liner.length && curPosition.top - height < viewportTop) { - // Correct for overflow from the top of the document by positioning below - // the field if needed - wrapper - .css('top', position.bottom) - .addClass('below'); - this.s.bubbleBottom = true; - } - // Attempt to correct for overflow to the right of the document - if (visRight + padding > docWidth) { - var diff = visRight - docWidth; - // If left overflowing, that takes priority - liner.css('left', visLeft < padding ? - -(visLeft - padding) : - -(diff + padding)); - } - else { - // Correct overflow to the left - liner.css('left', visLeft < padding ? -(visLeft - padding) : 0); - } - return this; -} -/** - * Setup the buttons that will be shown in the footer of the form - calling this - * method will replace any buttons which are currently shown in the form. - * - * @param this Editor instance - * @param buttonsIn A single button definition to add to the form or - * an array of objects with the button definitions to add more than one button. - * The options for the button definitions are fully defined by the - * @returns Editor instance - */ -function buttons(buttonsIn) { - var _this = this; - if (buttonsIn === '_basic') { - // Special string to create a basic button - undocumented - buttonsIn = [{ - action: function () { - this.submit(); - }, - text: this.i18n[this.s.action].submit - }]; - } - else if (!Array.isArray(buttonsIn)) { - // Allow a single button to be passed in as an object with an array - buttonsIn = [buttonsIn]; - } - $(this.dom.buttons).empty(); - $.each(buttonsIn, function (i, btn) { - if (typeof btn === 'string') { - btn = { - action: function () { - this.submit(); - }, - text: btn - }; - } - var text = btn.text || btn.label; // legacy support - var action = btn.action || btn.fn; // legacy support - var attr = btn.attr || {}; - $('', { - class: _this.classes.form.button + (btn.className ? ' ' + btn.className : '') - }) - .html(typeof text === 'function' ? - text(_this) : - text || '') - .attr('tabindex', btn.tabIndex !== undefined ? btn.tabIndex : 0) - .attr(attr) - .on('keyup', function (e) { - if (e.which === 13 && action) { - action.call(_this); - } - }) - .on('keypress', function (e) { - // Stop the browser activating the click event - if we don't - // have this and the Ajax return is fast, the keyup in - // `_formOptions()` might trigger another submit - if (e.which === 13) { - e.preventDefault(); - } - }) - .on('click', function (e) { - e.preventDefault(); - if (action) { - action.call(_this, e); - } - }) - .appendTo(_this.dom.buttons); - }); - return this; -} -/** - * Remove fields from the form. - * - * @param this Editor instance - * @param fieldName Field to remove - * @returns Editor instance - */ -function clear(fieldName) { - var that = this; - var sFields = this.s.fields; - if (typeof fieldName === 'string') { - // Remove an individual form element - that.field(fieldName).destroy(); - delete sFields[fieldName]; - var orderIdx = $.inArray(fieldName, this.s.order); - this.s.order.splice(orderIdx, 1); - var includeIdx = $.inArray(fieldName, this.s.includeFields); - if (includeIdx !== -1) { - this.s.includeFields.splice(includeIdx, 1); - } - } - else { - $.each(this._fieldNames(fieldName), function (i, name) { - that.clear(name); - }); - } - return this; -} -/** - * Close the form display. - * - * @param this Editor instance - * @returns Editor instance - */ -function close() { - this._close(false); - return this; -} -function create(arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - var sFields = this.s.fields; - var count = 1; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.create(arg1, arg2, arg3, arg4); - })) { - return this; - } - // Multi-row creation support (only supported by the 1.3+ style of calling - // this method, so a max of three arguments - if (typeof arg1 === 'number') { - count = arg1; - arg1 = arg2; - arg2 = arg3; - } - // Set up the edit fields for submission - this.s.editFields = {}; - for (var i = 0; i < count; i++) { - this.s.editFields[i] = { - fields: this.s.fields - }; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - this.s.mode = 'main'; - this.s.action = 'create'; - this.s.modifier = null; - this.dom.form.style.display = 'block'; - this._actionClass(); - // Allow all fields to be displayed for the create form - this._displayReorder(this.fields()); - // Set the default for the fields - $.each(sFields, function (name, fieldIn) { - var def = fieldIn.def(); - fieldIn.multiReset(); - // Set a value marker for each multi, so the field - // knows what the id's are (ints in this case) - for (var i = 0; i < count; i++) { - fieldIn.multiSet(i, def); - } - fieldIn.set(def); - }); - this._event('initCreate', null, function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - }); - return this; -} -/** - * Remove dependent links from a field - * - * @param this Editor instance - * @param parent The name of the field to remove the existing dependencies - * @returns Editor instance - */ -function undependent(parent) { - if (Array.isArray(parent)) { - for (var i = 0, ien = parent.length; i < ien; i++) { - this.undependent(parent[i]); - } - return this; - } - $(this.field(parent).node()).off('.edep'); - return this; -} -/** - * Create a dependent link between two or more fields. This method is used to - * listen for a change in a field's value which will trigger updating of the - * form. This update can consist of updating an options list, changing values - * or making fields hidden / visible. - * - * @param this Editor instance - * @param parent Field(s) to attach a dependency to - * @param url Action to perform on data change - * @param optsIn Configuration options - * @returns Editor instance - */ -function dependent(parent, url, optsIn) { - var _this = this; - if (Array.isArray(parent)) { - for (var i = 0, ien = parent.length; i < ien; i++) { - this.dependent(parent[i], url, optsIn); - } - return this; - } - var that = this; - var parentField = this.field(parent); - var ajaxOpts = { - dataType: 'json', - type: 'POST' - }; - var opts = $.extend({}, { - data: null, - event: 'change', - postUpdate: null, - preUpdate: null - }, optsIn); - var update = function (json) { - if (opts.preUpdate) { - opts.preUpdate(json); - } - // Field specific - $.each({ - errors: 'error', - labels: 'label', - messages: 'message', - options: 'update', - values: 'val' - }, function (jsonProp, fieldFn) { - if (json[jsonProp]) { - $.each(json[jsonProp], function (fieldIn, valIn) { - that.field(fieldIn)[fieldFn](valIn); - }); - } - }); - // Form level - $.each(['hide', 'show', 'enable', 'disable'], function (i, key) { - if (json[key]) { - that[key](json[key], json.animate); - } - }); - if (opts.postUpdate) { - opts.postUpdate(json); - } - parentField.processing(false); - }; - // Use a delegate handler to account for field elements which are added and - // removed after `depenedent` has been called - $(parentField.node()).on(opts.event + '.edep', function (e) { - // Make sure that it was one of the field's elements that triggered the ev - if ($(parentField.node()).find(e.target).length === 0) { - return; - } - parentField.processing(true); - var data = {}; - data.rows = _this.s.editFields ? - pluck(_this.s.editFields, 'data') : - null; - data.row = data.rows ? - data.rows[0] : - null; - data.values = _this.val(); - if (opts.data) { - var ret = opts.data(data); - if (ret) { - data = ret; - } - } - if (typeof url === 'function') { - var o = url.call(_this, parentField.val(), data, update, e); - if (o) { - if (typeof o === 'object' && typeof o.then === 'function') { - o.then(function (resolved) { - if (resolved) { - update(resolved); - } - }); - } - else { - update(o); - } - } - } - else { - if ($.isPlainObject(url)) { - $.extend(ajaxOpts, url); - } - else { - ajaxOpts.url = url; - } - $.ajax($.extend(ajaxOpts, { - data: data, - success: update - })); - } - }); - return this; -} -/** - * Destroy the Editor instance, cleaning up fields, display and event handlers - */ -function destroy() { - if (this.s.displayed) { - this.close(); - } - this.clear(); - // Stick the template back into the document so it can be reused - if (this.s.template) { - $('body').append(this.s.template); - } - var controller = this.s.displayController; - if (controller.destroy) { - controller.destroy(this); - } - $(document).off('.dte' + this.s.unique); - this.dom = null; - this.s = null; -} -/** - * Disable one or more field inputs, disallowing subsequent user interaction with the - * fields until they are re-enabled. - * - * @param this Editor instance - * @param name Field(s) to disable. Disables all if not given. - * @returns Editor instance - */ -function disable(name) { - var that = this; - $.each(this._fieldNames(name), function (i, n) { - that.field(n).disable(); - }); - return this; -} -function display(showIn) { - if (showIn === undefined) { - return this.s.displayed; - } - return this[showIn ? 'open' : 'close'](); -} -/** - * Get a list of the fields that are currently shown in the Editor form. - * - * @param this Editor instance - * @returns Array of field names - */ -function displayed() { - return $.map(this.s.fields, function (fieldIn, name) { - return fieldIn.displayed() ? name : null; - }); -} -/** - * Get display controller node - * - * @returns Display controller host element - */ -function displayNode() { - return this.s.displayController.node(this); -} -function edit(items, arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.edit(items, arg1, arg2, arg3, arg4); - })) { - return this; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - this._edit(items, this._dataSource('fields', items), 'main', argOpts.opts, function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - }); - return this; -} -/** - * Enable one or more field inputs, restoring user interaction with the fields. - * - * @param this Editor instance - * @param name Field(s) to enable. If not given, all fields in the form are enabled - * @returns Editor instance - */ -function enable(name) { - var that = this; - $.each(this._fieldNames(name), function (i, n) { - that.field(n).enable(); - }); - return this; -} -function error$1(name, msg) { - var wrapper = $(this.dom.wrapper); - if (msg === undefined) { - // Global error - this._message(this.dom.formError, name, true, function () { - wrapper.toggleClass('inFormError', name !== undefined && name !== ''); - }); - // Store the error message so `inError` can check if there is an - // error or not without considering animation - this.s.globalError = name; - } - else { - // Field error - this.field(name).error(msg); - } - return this; -} -/** - * Get a field object, configured for a named field, which can then be - * manipulated through its API. - * - * @param this Editor instance - * @param name Field to get - * @returns Field instance - */ -function field(name) { - var sFields = this.s.fields; - if (!sFields[name]) { - throw new Error('Unknown field name - ' + name); - } - return sFields[name]; -} -/** - * Get a list of the fields that are used by the Editor instance. - * - * @param this Editor instance - * @returns Editor instance - */ -function fields() { - return $.map(this.s.fields, function (fieldIn, name) { - return name; - }); -} -/** - * Get data object for a file from a table and id - * - * @param name Table name - * @param id Primary key identifier - * @returns File information - */ -function file(name, id) { - var tableFromFile = this.files(name); // can throw. `this` will be Editor or - var fileFromTable = tableFromFile[id]; // DataTables.Api context. Both work. - if (!fileFromTable) { - throw new Error('Unknown file id ' + id + ' in table ' + name); - } - return tableFromFile[id]; -} -function files(name) { - if (!name) { - return Editor.files; - } - var editorTable = Editor.files[name]; - if (!editorTable) { - throw new Error('Unknown file table name: ' + name); - } - return editorTable; -} -function get(name) { - var that = this; - if (!name) { - name = this.fields(); - } - if (Array.isArray(name)) { - var out_1 = {}; - $.each(name, function (i, n) { - out_1[n] = that.field(n).get(); - }); - return out_1; - } - return this.field(name).get(); -} -/** - * Hide one or more fields from the form display. - * - * @param this Editor instance - * @param names Fields to hide. Will hide all if not given - * @param animate Animate (default true) - * @returns Editor instance - */ -function hide(names, animate) { - var that = this; - $.each(this._fieldNames(names), function (i, n) { - that.field(n).hide(animate); - }); - return this; -} -/** - * Get the ids of the rows being edited - * - * @param includeHash Include a prefixed `#`, useful if to be used as a selector - */ -function ids(includeHash) { - if (includeHash === void 0) { includeHash = false; } - return $.map(this.s.editFields, function (editIn, idSrc) { - return includeHash === true ? - '#' + idSrc : - idSrc; - }); -} -/** - * Determine if there is an error state in the form, either the form's global - * error message, or one or more fields. - * - * @param this Editor instance - * @param inNames Fields to check. All checked if not given - * @returns true if in error, false otherwise - */ -function inError(inNames) { - $(this.dom.formError); - // Is there a global error? - if (this.s.globalError) { - return true; - } - // Field specific - var names = this._fieldNames(inNames); - for (var i = 0, ien = names.length; i < ien; i++) { - if (this.field(names[i]).inError()) { - return true; - } - } - return false; -} -function inline(cell, fieldName, opts) { - var _this = this; - var that = this; - // Argument shifting - if ($.isPlainObject(fieldName)) { - opts = fieldName; - fieldName = undefined; - } - opts = $.extend({}, this.s.formOptions.inline, opts); - var editFields = this._dataSource('individual', cell, fieldName); - var keys = Object.keys(editFields); - // Only a single row - if (keys.length > 1) { - throw new Error('Cannot edit more than one row inline at a time'); - } - var editRow = editFields[keys[0]]; - // Remap so easier to use - var hosts = []; - for (var _i = 0, _a = editRow.attach; _i < _a.length; _i++) { - var row = _a[_i]; - hosts.push(row); - } - // Already in edit mode for this cell? - if ($('div.DTE_Field', hosts).length) { - return this; - } - // Some other field in inline edit mode? - if (this._tidy(function () { - that.inline(cell, fieldName, opts); - })) { - return this; - } - // Start a full row edit, but don't display - we will be showing the field - this._edit(cell, editFields, 'inline', opts, function () { - _this._inline(editFields, opts); - }); - return this; -} -/** - * Inline creation of data. - * - * @param this Editor instance - * @param insertPoint Where to insert the create row - * @param opts Form options - * @returns Editor instance - */ -function inlineCreate(insertPoint, opts) { - var _this = this; - // Argument juggling - allow no insert point, just options - if ($.isPlainObject(insertPoint)) { - opts = insertPoint; - insertPoint = null; - } - if (this._tidy(function () { - _this.inlineCreate(insertPoint, opts); - })) { - return this; - } - // Set the default for the fields - $.each(this.s.fields, function (name, fieldIn) { - fieldIn.multiReset(); - fieldIn.multiSet(0, fieldIn.def()); - fieldIn.set(fieldIn.def()); - }); - this.s.mode = 'main'; - this.s.action = 'create'; - this.s.modifier = null; - this.s.editFields = this._dataSource('fakeRow', insertPoint); - opts = $.extend({}, this.s.formOptions.inline, opts); - this._actionClass(); - this._inline(this.s.editFields, opts, function () { - // When the form is closed (cancelled or submitted) we need to remove the - // fake row - _this._dataSource('fakeRowEnd'); - }); - this._event('initCreate', null); - return this; -} -function message(name, msg) { - if (msg === undefined) { - // Global message - this._message(this.dom.formInfo, name); - } - else { - // Field message - this.field(name).message(msg); - } - return this; -} -function mode(modeIn) { - if (!modeIn) { - return this.s.action; - } - if (!this.s.action) { - throw new Error('Not currently in an editing mode'); - } - else if (this.s.action === 'create' && modeIn !== 'create') { - throw new Error('Changing from create mode is not supported'); - } - this.s.action = modeIn; - return this; -} -/** - * Get the modifier that was used to trigger the edit or delete action. - * - * @returns The identifier that was used for the editing / remove method - * called. - */ -function modifier() { - return this.s.modifier; -} -/** - * Get the values for one or more fields (multi-row editing aware). - * - * @param this Editor instance - * @param fieldNames Fields to get values for, or all fields if not given - * @returns Editor instance - */ -function multiGet(fieldNames) { - var that = this; - if (fieldNames === undefined) { - fieldNames = this.fields(); - } - if (Array.isArray(fieldNames)) { - var out_2 = {}; - $.each(fieldNames, function (i, name) { - out_2[name] = that.field(name).multiGet(); - }); - return out_2; - } - // String - return this.field(fieldNames).multiGet(); -} -function multiSet(fieldNames, valIn) { - var that = this; - if ($.isPlainObject(fieldNames) && valIn === undefined) { - $.each(fieldNames, function (name, value) { - that.field(name).multiSet(value); - }); - } - else { - this.field(fieldNames).multiSet(valIn); - } - return this; -} -function node(name) { - var that = this; - if (!name) { - name = this.order(); - } - return Array.isArray(name) ? - $.map(name, function (n) { - return that.field(n).node(); - }) : - this.field(name).node(); -} -/** - * Remove a bound event listener to the editor instance. - * - * @param this Editor instance - * @param name Event name to remove - * @param fn Handler to remove, or all if not specified - * @returns Editor instance - */ -function off(name, fn) { - $(this).off(this._eventName(name), fn); - return this; -} -/** - * Listen for an event which is fired off by Editor when it performs certain - * actions. - * - * @param this Editor instance - * @param name Event to listen for - * @param fn Event handler to apply - * @returns Editor instance - */ -function on(name, fn) { - $(this).on(this._eventName(name), fn); - return this; -} -/** - * Listen for a single event event which is fired off by Editor when it performs - * certain actions - * - * @param this Editor instance - * @param name Event to listen for - * @param fn Event handler to apply - * @returns Editor instance - */ -function one(name, fn) { - $(this).one(this._eventName(name), fn); - return this; -} -/** - * Display the main form editor to the end user in the web-browser. - * - * @param this Editor instance - * @returns Editor instance - */ -function open() { - var _this = this; - // Insert the display elements in order - this._displayReorder(); - // Define how to do a close - this._closeReg(function () { - _this._nestedClose(function () { - _this._clearDynamicInfo(); - _this._event('closed', ['main']); - }); - }); - // Run the standard open with common events - var ret = this._preopen('main'); - if (!ret) { - return this; - } - this._nestedOpen(function () { - _this._focus($.map(_this.s.order, function (name) { return _this.s.fields[name]; }), _this.s.editOpts.focus); - _this._event('opened', ['main', _this.s.action]); - }, this.s.editOpts.nest); - this._postopen('main', false); - return this; -} -function order(setIn /* , ... */) { - if (!setIn) { - return this.s.order; - } - // Allow new layout to be passed in as arguments - if (arguments.length && !Array.isArray(setIn)) { - setIn = Array.prototype.slice.call(arguments); - } - // Sanity check - array must exactly match the fields we have available - if (this.s.order.slice().sort().join('-') !== setIn.slice().sort().join('-')) { - throw new Error('All fields, and no additional fields, must be provided for ordering.'); - } - // Copy the new array into the order (so the reference is maintained) - $.extend(this.s.order, setIn); - this._displayReorder(); - return this; -} -function remove(items, arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.remove(items, arg1, arg2, arg3, arg4); - })) { - return this; - } - if (!items && !this.s.table) { - items = 'keyless'; - } - // Allow a single row node to be passed in to remove, Can't use Array.isArray - // as we also allow array like objects to be passed in (API, jQuery) - if (items.length === undefined) { - items = [items]; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - var editFields = this._dataSource('fields', items); - this.s.action = 'remove'; - this.s.modifier = items; - this.s.editFields = editFields; - this.dom.form.style.display = 'none'; - this._actionClass(); - this._event('initRemove', [ - pluck(editFields, 'node'), - pluck(editFields, 'data'), - items - ], function () { - _this._event('initMultiRemove', // undocumented and to be removed in v2 - [editFields, items], function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - var opts = _this.s.editOpts; - if (opts.focus !== null) { - $('button', _this.dom.buttons).eq(opts.focus).focus(); - } - }); - }); - return this; -} -function set(setIn, valIn) { - var that = this; - if (!$.isPlainObject(setIn)) { - var o = {}; - o[setIn] = valIn; - setIn = o; - } - $.each(setIn, function (n, v) { - that.field(n).set(v); - }); - return this; -} -/** - * Show fields in the display that were previously hidden. - * - * @param this Editor instance - * @param names Field(s) to show. All if not given. - * @param animate Animate the visual change or not - * @returns Editor instance - */ -function show(names, animate) { - var that = this; - $.each(this._fieldNames(names), function (i, n) { - that.field(n).show(animate); - }); - return this; -} -/** - * Submit a form for processing. - * - * @param this Editor instance - * @param successCallback Function executed when submit is completed - * @param errorCallback Function executed on error - * @param formatdata Data formatting function - * @param hideIn Disable default close action by passing in false - * @returns Editor instance - */ -function submit(successCallback, errorCallback, formatdata, hideIn) { - var _this = this; - var fields = this.s.fields; - var errorFields = []; - var errorReady = 0; - var sent = false; - if (this.s.processing || !this.s.action) { - return this; - } - this._processing(true); - // If there are fields in error, we want to wait for the error notification - // to be cleared before the form is submitted - errorFields tracks the - // fields which are in the error state, while errorReady tracks those which - // are ready to submit - var send = function () { - if (errorFields.length !== errorReady || sent) { - return; - } - _this._event('initSubmit', [_this.s.action], function (result) { - if (result === false) { - _this._processing(false); - return; - } - sent = true; - _this._submit(successCallback, errorCallback, formatdata, hideIn); - }); - }; - // Blur the current focus if it is a form input element - this allows any - // actions on change event (e.g. dpendent) to happen - var active = document.activeElement; - if ($(active).closest('div.DTE_Field').length !== 0) { - active.blur(); - } - // Remove the global error (don't know if the form is still in an error - // state!) - this.error(); - // Count how many fields are in error - $.each(fields, function (name, fieldIn) { - if (fieldIn.inError()) { - errorFields.push(name); - } - }); - // Remove the error display - $.each(errorFields, function (i, name) { - fields[name].error('', function () { - errorReady++; - send(); - }); - }); - send(); - return this; -} -function table(setIn) { - if (setIn === undefined) { - return this.s.table; - } - this.s.table = setIn; - return this; -} -function template(setIn) { - if (setIn === undefined) { - return this.s.template; - } - this.s.template = setIn === null ? - null : - $(setIn); - return this; -} -function title(titleIn) { - var header = $(this.dom.header).children('div.' + this.classes.header.content); - var titleClass = this.classes.header.title; - if (titleIn === undefined) { - return header.data('title'); - } - if (typeof titleIn === 'function') { - titleIn = titleIn(this, new DataTable$5.Api(this.s.table)); - } - var set = titleClass.tag - ? $("<" + titleClass.tag + ">Uploading file'); - reader.onload = function (e) { - var data = new FormData(); - var ajax; - data.append('action', 'upload'); - data.append('uploadField', conf.name); - data.append('upload', files[counter]); - if (conf.ajaxData) { - conf.ajaxData(data, files[counter], counter); - } - if (conf.ajax) { - ajax = conf.ajax; - } - else if ($.isPlainObject(editor.s.ajax)) { - ajax = editor.s.ajax.upload ? - editor.s.ajax.upload : - editor.s.ajax; - } - else if (typeof editor.s.ajax === 'string') { - ajax = editor.s.ajax; - } - if (!ajax) { - throw new Error('No Ajax option specified for upload plug-in'); - } - if (typeof ajax === 'string') { - ajax = { url: ajax }; - } - // Handle the case when the ajax data is given as a function - if (typeof ajax.data === 'function') { - var d = {}; - var ret = ajax.data(d); - // Allow the return to be used, or the object passed in - if (ret !== undefined && typeof ret !== 'string') { - d = ret; - } - $.each(d, function (key, value) { - data.append(key, value); - }); - } - else if ($.isPlainObject(ajax.data)) { - throw new Error('Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.'); - } - // Dev cancellable event - editor._event('preUpload', [conf.name, files[counter], data], function (preRet) { - // Upload was cancelled - if (preRet === false) { - // If there are other files still to read, spin through them - if (counter < files.length - 1) { - counter++; - reader.readAsDataURL(files[counter]); - } - else { - completeCallback.call(editor, ids); - } - return; - } - // Use preSubmit to stop form submission during an upload, since the - // value won't be known until that point. - var submit = false; - editor - .on('preSubmit.DTE_Upload', function () { - submit = true; - return false; - }); - $.ajax($.extend({}, ajax, { - contentType: false, - data: data, - dataType: 'json', - error: function (xhr) { - var errors = conf.errors; - editor.off('preSubmit.DTE_Upload'); - editor.error(conf.name, errors && errors[xhr.status] - ? errors[xhr.status] - : generalError); - editor._event('uploadXhrError', [conf.name, xhr]); - progressCallback(conf); - }, - processData: false, - success: function (json) { - editor.off('preSubmit.DTE_Upload'); - editor._event('uploadXhrSuccess', [conf.name, json]); - if (json.fieldErrors && json.fieldErrors.length) { - var errors = json.fieldErrors; - for (var i = 0, ien = errors.length; i < ien; i++) { - editor.error(errors[i].name, errors[i].status); - } - completeCallback.call(editor, ids, true); - } - else if (json.error) { - editor.error(json.error); - completeCallback.call(editor, ids, true); - } - else if (!json.upload || !json.upload.id) { - editor.error(conf.name, generalError); - completeCallback.call(editor, ids, true); - } - else { - if (json.files) { - // Loop over the tables that are defined - $.each(json.files, function (table, filesIn) { - if (!Editor.files[table]) { - Editor.files[table] = {}; - } - $.extend(Editor.files[table], filesIn); - }); - } - ids.push(json.upload.id); - if (counter < files.length - 1) { - counter++; - reader.readAsDataURL(files[counter]); - } - else { - completeCallback.call(editor, ids); - if (submit) { - editor.submit(); - } - } - } - progressCallback(conf); - }, - type: 'post', - xhr: function () { - var xhr = $.ajaxSettings.xhr(); - if (xhr.upload) { - xhr.upload.onprogress = function (e) { - if (e.lengthComputable) { - var percent = (e.loaded / e.total * 100).toFixed(0) + '%'; - progressCallback(conf, files.length === 1 ? - percent : - counter + ':' + files.length + ' ' + percent); - } - }; - xhr.upload.onloadend = function () { - progressCallback(conf, conf.processingText || 'Processing'); - }; - } - return xhr; - } - })); - }); - }; - // Convert to a plain array - files = $.map(files, function (val) { - return val; - }); - // Truncate the selected files if needed - if (conf._limitLeft !== undefined) { - files.splice(conf._limitLeft, files.length); - } - reader.readAsDataURL(files[0]); -} -/** - * CommonJS factory function pass through. Matches DataTables. - * @param {*} root Window - * @param {*} jq jQUery - * @returns {boolean} Indicator - */ -function factory(root, jq) { - var is = false; - // Test if the first parameter is a window object - if (root && root.document) { - window = root; - document = root.document; - } - // Test if the second parameter is a jQuery object - if (jq && jq.fn && jq.fn.jquery) { - $ = jq; - is = true; - } - return is; -} - -var DataTable$4 = $.fn.dataTable; -var _inlineCounter = 0; -/** - * Set the class on the form to relate to the action that is being performed. - * This allows styling to be applied to the form to reflect the state that - * it is in. - * - * @private - */ -function _actionClass() { - var classesActions = this.classes.actions; - var action = this.s.action; - var wrapper = $(this.dom.wrapper); - wrapper.removeClass([classesActions.create, classesActions.edit, classesActions.remove].join(' ')); - if (action === 'create') { - wrapper.addClass(classesActions.create); - } - else if (action === 'edit') { - wrapper.addClass(classesActions.edit); - } - else if (action === 'remove') { - wrapper.addClass(classesActions.remove); - } -} -/** - * Create an Ajax request in the same style as DataTables 1.10, with full - * backwards compatibility for Editor 1.2. - * - * @param {object} data Data to submit - * @param {function} success Success callback - * @param {function} error Error callback - * @param {object} submitParams Submitted data - * @private - */ -function _ajax(data, success, error, submitParams) { - var action = this.s.action; - var thrown; - var opts = { - complete: [function (xhr, text) { - // Use `complete` rather than `success` so that all status codes are - // caught and can return valid JSON (useful when working with REST - // services). - var json = null; - if (xhr.status === 204 || xhr.responseText === 'null') { - json = {}; - } - else { - try { - // jQuery 1.12 or newer for responseJSON, but its the only - // way to get the JSON from a JSONP. So if you want to use - // JSONP with Editor you have to use jQuery 1.12+. - json = xhr.responseJSON ? - xhr.responseJSON : - JSON.parse(xhr.responseText); - } - catch (e) { } - } - if ($.isPlainObject(json) || Array.isArray(json)) { - success(json, xhr.status >= 400, xhr); - } - else { - error(xhr, text, thrown); - } - }], - data: null, - dataType: 'json', - error: [function (xhr, text, err) { - thrown = err; - }], - success: [], - type: 'POST' - }; - var a; - var ajaxSrc = this.s.ajax; - var id = action === 'edit' || action === 'remove' ? - pluck(this.s.editFields, 'idSrc').join(',') : - null; - // Get the correct object for rest style - if ($.isPlainObject(ajaxSrc) && ajaxSrc[action]) { - ajaxSrc = ajaxSrc[action]; - } - if (typeof ajaxSrc === 'function') { - // As a function, execute it, passing in the required parameters - ajaxSrc.call(this, null, null, data, success, error); - return; - } - else if (typeof ajaxSrc === 'string') { - // As a string it gives the URL. For backwards compatibility it can also - // give the method. - if (ajaxSrc.indexOf(' ') !== -1) { - a = ajaxSrc.split(' '); - opts.type = a[0]; - opts.url = a[1]; - } - else { - opts.url = ajaxSrc; - } - } - else { - // As an object, we extend the Editor defaults - with the exception of - // the error and complete functions which get added in so the user can - // specify their own in addition to ours - var optsCopy = $.extend({}, ajaxSrc || {}); - if (optsCopy.complete) { - opts.complete.unshift(optsCopy.complete); - delete optsCopy.complete; - } - if (optsCopy.error) { - opts.error.unshift(optsCopy.error); - delete optsCopy.error; - } - opts = $.extend({}, opts, optsCopy); - } - // URL macros - if (opts.replacements) { - $.each(opts.replacements, function (key, repl) { - opts.url = opts.url.replace('{' + key + '}', repl.call(this, key, id, action, data)); - }); - } - opts.url = opts.url - .replace(/_id_/, id) - .replace(/{id}/, id); - // Data processing option like in DataTables - if (opts.data) { - var isFn = typeof opts.data === 'function'; - var newData = isFn ? - opts.data(data) : // fn can manipulate data or return an object - opts.data; // object or array to merge - // If the function returned something, use that alone - data = isFn && newData ? - newData : - $.extend(true, data, newData); - } - opts.data = data; - // If a DELETE method is used there are a number of servers which will - // reject the request if it has a body. So we need to append to the URL. - // - // http://stackoverflow.com/questions/15088955 - // http://bugs.jquery.com/ticket/11586 - if (opts.type === 'DELETE' && (opts.deleteBody === undefined || opts.deleteBody === true)) { - var params = $.param(opts.data); - opts.url += opts.url.indexOf('?') === -1 ? - '?' + params : - '&' + params; - delete opts.data; - } - // Finally, make the ajax call - $.ajax(opts); -} -/** - * Abstraction for jQuery's animate method, to support jQuery slim which doesn't - * include the animate module - * - * @private - */ -function _animate(target, style, time, callback) { - if ($.fn.animate) { - target - .stop() - .animate(style, time, callback); - } - else { - target.css(style); - var scope = target.length && target.length > 1 - ? target[0] - : target; - if (typeof time === 'function') { - time.call(scope); - } - else if (callback) { - callback.call(scope); - } - } -} -/** - * Create the DOM structure from the source elements for the main form. - * This is required since the elements can be moved around for other form types - * (bubble). - * - * @private - */ -function _assembleMain() { - var dom = this.dom; - $(dom.wrapper) - .prepend(dom.header); - $(dom.footer) - .append(dom.formError) - .append(dom.buttons); - $(dom.bodyContent) - .append(dom.formInfo) - .append(dom.form); -} -/** - * Blur the editing window. A blur is different from a close in that it might - * cause either a close or the form to be submitted. A typical example of a - * blur would be clicking on the background of the bubble or main editing forms - * - i.e. it might be a close, or it might submit depending upon the - * configuration, while a click on the close box is a very definite close. - * - * @private - */ -function _blur() { - var opts = this.s.editOpts; - var onBlur = opts.onBlur; - if (this._event('preBlur') === false) { - return; - } - if (typeof onBlur === 'function') { - onBlur(this); - } - else if (onBlur === 'submit') { - this.submit(); - } - else if (onBlur === 'close') { - this._close(); - } -} -/** - * Clear all of the information that might have been dynamically set while - * the form was visible - specifically errors and dynamic messages - * - * @private - */ -function _clearDynamicInfo(errorsOnly) { - if (errorsOnly === void 0) { errorsOnly = false; } - // Can be triggered due to a destroy if the editor is open - if (!this.s) { - return; - } - var errorClass = this.classes.field.error; - var fields = this.s.fields; - $('div.' + errorClass, this.dom.wrapper).removeClass(errorClass); - $.each(fields, function (name, field) { - field.error(''); - if (!errorsOnly) { - field.message(''); - } - }); - this.error(''); - if (!errorsOnly) { - this.message(''); - } -} -/** - * Close an editing display, firing callbacks and events as needed - * - * @param {function} submitComplete Function to call after the preClose event - * @param {string} mode Editing mode that is just finished - * @private - */ -function _close(submitComplete, mode) { - var closed; - // Allow preClose event to cancel the opening of the display - if (this._event('preClose') === false) { - return; - } - if (this.s.closeCb) { - closed = this.s.closeCb(submitComplete, mode); - this.s.closeCb = null; - } - if (this.s.closeIcb) { - this.s.closeIcb(); - this.s.closeIcb = null; - } - // Remove focus control - $('body').off('focus.editor-focus'); - this.s.displayed = false; - this._event('close'); - if (closed) { - // Note that `bubble` will call this itself due to the animation - this._event('closed', [closed]); - } -} -/** - * Register a function to be called when the editing display is closed. This is - * used by function that create the editing display to tidy up the display on - * close - for example removing event handlers to prevent memory leaks. - * - * @param {function} fn Function to call on close - * @private - */ -function _closeReg(fn) { - this.s.closeCb = fn; -} -/** - * Argument shifting for the create(), edit() and remove() methods. In Editor - * 1.3 the preferred form of calling those three methods is with just two - * parameters (one in the case of create() - the id and the show flag), while in - * previous versions four / three parameters could be passed in, including the - * buttons and title options. In 1.3 the chaining API is preferred, but we want - * to support the old form as well, so this function is provided to perform - * that argument shifting, common to all three. - * - * @private - */ -function _crudArgs(arg1, arg2, arg3, arg4) { - var that = this; - var title; - var buttons; - var show; - var opts; - if ($.isPlainObject(arg1)) { - // Form options passed in as the first option - opts = arg1; - } - else if (typeof arg1 === 'boolean') { - // Show / hide passed in as the first option - form options second - show = arg1; - opts = arg2; // can be undefined - } - else { - // Old style arguments - title = arg1; // can be undefined - buttons = arg2; // can be undefined - show = arg3; // can be undefined - opts = arg4; // can be undefined - } - // If all undefined, then fall into here - if (show === undefined) { - show = true; - } - if (title) { - that.title(title); - } - if (buttons) { - that.buttons(buttons); - } - return { - maybeOpen: function () { - if (show) { - that.open(); - } - }, - opts: $.extend({}, this.s.formOptions.main, opts) - }; -} -/** - * Execute the data source abstraction layer functions. This is simply a case - * of executing the function with the Editor scope, passing in the remaining - * parameters. - * - * @param {string} name Function name to execute - * @private - */ -function _dataSource(name) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var dataSource = this.s.table - ? Editor.dataSources.dataTable - : Editor.dataSources.html; - var fn = dataSource[name]; - if (fn) { - return fn.apply(this, args); - } -} -/** - * Insert the fields into the DOM, in the correct order - * - * @private - */ -function _displayReorder(includeFields) { - var _this = this; - var formContent = $(this.dom.formContent); - var fields = this.s.fields; - var order = this.s.order; - var template = this.s.template; - var mode = this.s.mode || 'main'; - if (includeFields) { - this.s.includeFields = includeFields; - } - else { - includeFields = this.s.includeFields; - } - // Empty before adding in the required fields - formContent.children().detach(); - $.each(order, function (i, name) { - if (_this._weakInArray(name, includeFields) !== -1) { - if (template && mode === 'main') { - template.find('editor-field[name="' + name + '"]').after(fields[name].node()); - template.find('[data-editor-template="' + name + '"]').append(fields[name].node()); - } - else { - formContent.append(fields[name].node()); - } - } - }); - if (template && mode === 'main') { - template.appendTo(formContent); - } - this._event('displayOrder', [ - this.s.displayed, - this.s.action, - formContent - ]); -} -/** - * Generic editing handler. This can be called by the three editing modes (main, - * bubble and inline) to configure Editor for a row edit, and fire the required - * events to ensure that the editing interfaces all provide a common API. - * - * @param {*} rows Identifier for the item(s) to be edited - * @param {string} type Editing type - for the initEdit event - * @private - */ -function _edit(items, editFields, type, formOptions, setupDone) { - var _this = this; - var fields = this.s.fields; - var usedFields = []; - var includeInOrder; - var editData = {}; - this.s.editFields = editFields; - this.s.editData = editData; - this.s.modifier = items; - this.s.action = 'edit'; - this.dom.form.style.display = 'block'; - this.s.mode = type; - this._actionClass(); - // Setup the field values for editing - $.each(fields, function (name, field) { - field.multiReset(); - includeInOrder = false; - editData[name] = {}; - $.each(editFields, function (idSrc, edit) { - if (edit.fields[name]) { - var val = field.valFromData(edit.data); - var nullDefault = field.nullDefault(); - // Save the set data values so we can decided in submit if data has changed - // Note that `null` is stored as an empty string since fields do not currently - // have the ability to store a null value - when they are read back (in the - // submit) they would be an empty string. When null handling is added to - // fields, this will need to be removed. - editData[name][idSrc] = val === null ? - '' : - Array.isArray(val) ? - val.slice() : - val; - // If scoped to edit the whole row, then set all of the fields - if (!formOptions || formOptions.scope === 'row') { - field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? - field.def() : - val, false); - if (!edit.displayFields || edit.displayFields[name]) { - includeInOrder = true; - } - } - else { - // Limit editing to only those fields selected if any are selected - if (!edit.displayFields || edit.displayFields[name]) { - field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? - field.def() : - val, false); - includeInOrder = true; - } - } - } - }); - // Loop finished - can do a multi-value check for display of the field now - field._multiValueCheck(); - // If the field is used, then add it to the fields to be shown - if (field.multiIds().length !== 0 && includeInOrder) { - usedFields.push(name); - } - }); - // Remove the fields that are not required from the display - var currOrder = this.order().slice(); - for (var i = currOrder.length - 1; i >= 0; i--) { - // Use `toString()` to convert numbers to strings, since usedFields - // contains strings (object property names) - if ($.inArray(currOrder[i].toString(), usedFields) === -1) { - currOrder.splice(i, 1); - } - } - this._displayReorder(currOrder); - // Events - this._event('initEdit', [ - pluck(editFields, 'node')[0], - pluck(editFields, 'data')[0], - items, - type - ], function () { - _this._event('initMultiEdit', // undocumented and to be removed in v2 - [editFields, items, type], function () { - setupDone(); - }); - }); -} -/** - * Fire callback functions and trigger events. - * - * @param {string|array} trigger Name(s) of the jQuery custom event to trigger - * @param {array} args Array of arguments to pass to the triggered event - * @return {*} Return from the event - * @private - */ -function _event(trigger, args, promiseComplete) { - if (args === void 0) { args = []; } - if (promiseComplete === void 0) { promiseComplete = undefined; } - // Allow an array to be passed in for the trigger to fire multiple events - if (Array.isArray(trigger)) { - for (var i = 0, ien = trigger.length; i < ien; i++) { - this._event(trigger[i], args); - } - } - else { - var e = $.Event(trigger); - $(this).triggerHandler(e, args); - var result = e.result; - // Automatically trigger a cancelled event if a `pre` event handler - // was cancelled by the callback - if (trigger.indexOf('pre') === 0 && result === false) { - $(this).triggerHandler($.Event(trigger + 'Cancelled'), args); - } - // Allow for a promise to be returned and execute a callback - if (promiseComplete) { - if (result && typeof result === 'object' && result.then) { - // jQuery and "real" promises both provide "then" - result.then(promiseComplete); - } - else { - // If there wasn't a promise returned, then execute immediately - promiseComplete(result); - } - } - return result; - } -} -/** - * 'Modernise' event names, from the old style `on[A-Z]` names to camelCase. - * This is done to provide backwards compatibility with Editor 1.2- event names. - * The names themselves were updated for consistency with DataTables. - * - * @param {string} Event name to modernise - * @return {string} String with new event name structure - * @private - */ -function _eventName(input) { - var name; - var names = input.split(' '); - for (var i = 0, ien = names.length; i < ien; i++) { - name = names[i]; - // Strip the 'on' part and lowercase the first character - var onStyle = name.match(/^on([A-Z])/); - if (onStyle) { - name = onStyle[1].toLowerCase() + name.substring(3); - } - names[i] = name; - } - return names.join(' '); -} -/** - * Find a field from a DOM node. All children are searched. - * - * @param {node} node DOM node to search for - * @return {Field} Field instance - */ -function _fieldFromNode(node) { - var foundField = null; - $.each(this.s.fields, function (name, field) { - if ($(field.node()).find(node).length) { - foundField = field; - } - }); - return foundField; -} -/** - * Convert a field name input parameter to an array of field names. - * - * Many of the API methods provide the ability to pass `undefined` a string or - * array of strings to identify fields. This method harmonises that. - * - * @param {array|string} [fieldNames] Field names to get - * @return {array} Field names - * @private - */ -function _fieldNames(fieldNames) { - if (fieldNames === undefined) { - return this.fields(); - } - else if (!Array.isArray(fieldNames)) { - return [fieldNames]; - } - return fieldNames; -} -/** - * Focus on a field. Providing the logic to allow complex focus expressions - * - * @param {array} fields Array of Field instances or field names for the fields - * that are shown - * @param {null|string|integer} focus Field identifier to focus on - * @private - */ -function _focus(fieldsIn, focus) { - var _this = this; - // Can't focus on a field when in remove mode (they aren't shown). - if (this.s.action === 'remove') { - return; - } - var field; - var fields = $.map(fieldsIn, function (fieldOrName) { return typeof fieldOrName === 'string' ? - _this.s.fields[fieldOrName] : - fieldOrName; }); - if (typeof focus === 'number') { - field = fields[focus]; - } - else if (focus) { - if (focus.indexOf('jq:') === 0) { - field = $('div.DTE ' + focus.replace(/^jq:/, '')); - } - else { - field = this.s.fields[focus]; - } - } - else { - document.activeElement.blur(); - } - this.s.setFocus = field; - if (field) { - field.focus(); - } -} -/** - * Form options - common function so all editing methods can provide the same - * basic options, DRY. - * - * @param {object} opts Editing options. See model.formOptions - * @private - */ -function _formOptions(opts) { - var _this = this; - var that = this; - var inlineCount = _inlineCounter++; - var namespace = '.dteInline' + inlineCount; - // Backwards compatibility with 1.4 - // if ( opts.closeOnComplete !== undefined ) { - // opts.onComplete = opts.closeOnComplete ? 'close' : 'none'; - // } - // if ( opts.submitOnBlur !== undefined ) { - // opts.onBlur = opts.submitOnBlur ? 'submit' : 'close'; - // } - // if ( opts.submitOnReturn !== undefined ) { - // opts.onReturn = opts.submitOnReturn ? 'submit' : 'none'; - // } - // if ( opts.blurOnBackground !== undefined ) { - // opts.onBackground = opts.blurOnBackground ? 'blur' : 'none'; - // } - this.s.editOpts = opts; - // When submitting by Ajax we don't want to close a form that has been - // opened during the ajax request, so we keep a count of the form opening - this.s.editCount = inlineCount; - if (typeof opts.title === 'string' || typeof opts.title === 'function') { - this.title(opts.title); - opts.title = true; - } - if (typeof opts.message === 'string' || typeof opts.message === 'function') { - this.message(opts.message); - opts.message = true; - } - if (typeof opts.buttons !== 'boolean') { - this.buttons(opts.buttons); - opts.buttons = true; - } - // Prevent submit by a host `` - $(document).on('keydown' + namespace, function (e) { - if (e.which === 13 && _this.s.displayed) { // return - var el = $(document.activeElement); - if (el) { - var field = _this._fieldFromNode(el); - if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { - e.preventDefault(); - } - } - } - }); - $(document).on('keyup' + namespace, function (e) { - var el = $(document.activeElement); - if (e.which === 13 && _this.s.displayed) { // return - var field = _this._fieldFromNode(el); - // Allow the field plug-in to say if we can submit or not - if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { - if (opts.onReturn === 'submit') { - e.preventDefault(); - _this.submit(); - } - else if (typeof opts.onReturn === 'function') { - e.preventDefault(); - opts.onReturn(_this, e); - } - } - } - else if (e.which === 27) { // esc - e.preventDefault(); - if (typeof opts.onEsc === 'function') { - opts.onEsc(that, e); - } - else if (opts.onEsc === 'blur') { - that.blur(); - } - else if (opts.onEsc === 'close') { - that.close(); - } - else if (opts.onEsc === 'submit') { - that.submit(); - } - } - else if (el.parents('.DTE_Form_Buttons').length) { - if (e.which === 37) { // left - el.prev('button').trigger('focus'); - } - else if (e.which === 39) { // right - el.next('button').trigger('focus'); - } - } - }); - this.s.closeIcb = function () { - $(document).off('keydown' + namespace); - $(document).off('keyup' + namespace); - }; - return namespace; -} -/** - * Inline editing insertion of fields - */ -function _inline(editFields, opts, closeCb) { - var _this = this; - if (closeCb === void 0) { closeCb = null; } - var closed = false; - var classes = this.classes.inline; - var keys = Object.keys(editFields); - var editRow = editFields[keys[0]]; - var lastAttachPoint; - var elements = []; - for (var i = 0; i < editRow.attach.length; i++) { - var name_1 = editRow.attachFields[i][0]; - elements.push({ - field: this.s.fields[name_1], - name: name_1, - node: $(editRow.attach[i]), - }); - } - var namespace = this._formOptions(opts); - var ret = this._preopen('inline'); - if (!ret) { - return this; - } - for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { - var el = elements_1[_i]; - var node = el.node; - el.children = node.contents().detach(); - // Note the wdith setting shouldn't be required, but Edge increases the column's - // width if a % width is used (even 1%). This is the workaround - var style = navigator.userAgent.indexOf('Edge/') !== -1 ? - 'style="width:' + node.width() + 'px"' : - ''; - node.append($('
' + - '
' + - '
' + - '
' + - '
' + - '
')); - node.find('div.' + classes.liner.replace(/ /g, '.')) - .append(el.field.node()) - .append(this.dom.formError); - // Need the last insert point to allow for number submitTrigger - lastAttachPoint = el.field.node(); - if (opts.buttons) { - // Use prepend for the CSS, so we can float the buttons right - node.find('div.' + classes.buttons.replace(/ /g, '.')).append(this.dom.buttons); - } - } - // If there is a submit trigger target, we need to modify the document to allow submission - var submitClose = this._inputTrigger('submit', opts, lastAttachPoint); - var cancelClose = this._inputTrigger('cancel', opts, lastAttachPoint); - this._closeReg(function (submitComplete, action) { - // Mark that this specific inline edit has closed - closed = true; - $(document).off('click' + namespace); - // If there was no submit, we need to put the DOM back as it was. If - // there was a submit, the write of the new value will set the DOM to - // how it should be. Note also, check if it was an edit action, if not - // a create will create new row so we tidy this one up - if (!submitComplete || action !== 'edit') { - elements.forEach(function (el) { - el.node.contents().detach(); - el.node.append(el.children); - }); - } - submitClose(); - cancelClose(); - // Clear error messages "offline" - _this._clearDynamicInfo(); - if (closeCb) { - closeCb(); - } - return 'inline'; // trigger `closed` - }); - // Submit and blur actions - setTimeout(function () { - // If already closed, possibly due to some other aspect of the event - // that triggered the inline call, don't add the event listener - it - // isn't needed (and is dangerous) - if (closed) { - return; - } - // andSelf is deprecated in jQ1.8, but we want 1.7 compat - var back = $.fn.addBack ? 'addBack' : 'andSelf'; - // Chrome uses the target as the element where the mouse up happens, - // but we want the target being where the mouse down is, to allow for - // text selection in an input - so listen on mousedown as well. - var target; - $(document) - .on('mousedown' + namespace, function (e) { - target = e.target; - }) - .on('keydown' + namespace, function (e) { - target = e.target; - }) - .on('click' + namespace, function (e) { - // Was the click inside or owned by one of the editing nodes? If - // not, then come out of editing mode. - var isIn = false; - for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { - var el = elements_2[_i]; - if (el.field._typeFn('owns', target) || - $.inArray(el.node[0], $(target).parents()[back]()) !== -1) { - isIn = true; - } - } - if (!isIn) { - _this.blur(); - } - }); - }, 0); - this._focus($.map(elements, function (el) { return el.field; }), opts.focus); - this._postopen('inline', true); -} -/** - * Add a triggering action for inline editing, with a return function that - * will tidy up the events. - * - * @param type Action - * @param opts Form options object - * @param insertPoint Insert point in the DOM - * @private - */ -function _inputTrigger(type, opts, insertPoint) { - var _this = this; - var trigger = opts[type + 'Trigger']; - var html = opts[type + 'Html']; - var event = 'click.dte-' + type; - var tr = $(insertPoint).closest('tr'); - if (trigger === undefined) { - return function () { }; - } - // Allow the input to be a column index, including a negative to count from right - if (typeof trigger === 'number') { - var kids = tr.children(); - trigger = trigger < 0 - ? kids[kids.length + trigger] - : kids[trigger]; - } - // Use childNodes to get text nodes as well - var children = $(trigger, tr).length - ? Array.prototype.slice.call($(trigger, tr)[0].childNodes) - : []; - $(children).detach(); - // Event handler to submit the form and do nothing else - var triggerEl = $(trigger, tr) - .on(event, function (e) { - e.stopImmediatePropagation(); - if (type === 'cancel') { - _this.close(); - } - else { - _this.submit(); - } - }) - .append(html); - return function () { - triggerEl - .off(event) - .empty() - .append(children); - }; -} -/** - * Update the field options from a JSON data source - * - * @param {object} json JSON object from the server - * @private - */ -function _optionsUpdate(json) { - var that = this; - if (json && json.options) { - $.each(this.s.fields, function (name, field) { - if (json.options[name] !== undefined) { - var fieldInst = that.field(name); - if (fieldInst && fieldInst.update) { - fieldInst.update(json.options[name]); - } - } - }); - } -} -/** - * Show a message in the form. This can be used for error messages or dynamic - * messages (information display) as the structure for each is basically the - * same. This method will take into account if the form is visible or not - if - * so then the message is shown with an effect for the end user, otherwise - * it is just set immediately. - * - * @param {element} el The field display node to use - * @param {string|function} msg The message to show - * @private - */ -function _message(el, msg, title, fn) { - // Allow for jQuery slim - var canAnimate = $.fn.animate ? true : false; - if (title === undefined) { - title = false; - } - if (!fn) { - fn = function () { }; - } - if (typeof msg === 'function') { - msg = msg(this, new DataTable$4.Api(this.s.table)); - } - el = $(el); - if (canAnimate) { - el.stop(); - } - if (!msg) { - if (this.s.displayed && canAnimate) { - // Clear the message with visual effect since the form is visible - el - .fadeOut(function () { - el.html(''); - fn(); - }); - } - else { - // Clear the message without visual effect - el - .html('') - .css('display', 'none'); - fn(); - } - if (title) { - el.removeAttr('title'); - } - } - else { - fn(); - if (this.s.displayed && canAnimate) { - // Show the message with visual effect - el - .html(msg) - .fadeIn(); - } - else { - // Show the message without visual effect - el - .html(msg) - .css('display', 'block'); - } - if (title) { - el.attr('title', msg); - } - } -} -/** - * Update the multi-value information display to not show redundant information - * - * @private - */ -function _multiInfo() { - var fields = this.s.fields; - var include = this.s.includeFields; - var show = true; - var state; - if (!include) { - return; - } - for (var i = 0, ien = include.length; i < ien; i++) { - var field = fields[include[i]]; - var multiEditable = field.multiEditable(); - if (field.isMultiValue() && multiEditable && show) { - // Multi-row editable. Only show first message - state = true; - show = false; - } - else if (field.isMultiValue() && !multiEditable) { - // Not multi-row editable. Always show message - state = true; - } - else { - state = false; - } - fields[include[i]].multiInfoShown(state); - } -} -/** - * Close the current form, which can result in the display controller - * hiding its display, or showing a form from a level up if nesting - */ -function _nestedClose(cb) { - var disCtrl = this.s.displayController; - var show = disCtrl._show; - if (!show || !show.length) { - // Nothing shown just now - if (cb) { - cb(); - } - } - else if (show.length > 1) { - // Got nested forms - remove current and go one layer up - show.pop(); - // Get the one to show - var last = show[show.length - 1]; - if (cb) { - cb(); - } - this.s.displayController.open(last.dte, last.append, last.callback); - } - else { - this.s.displayController.close(this, cb); - show.length = 0; - } -} -/** - * Display a form, adding it to the display stack for nesting - */ -function _nestedOpen(cb, nest) { - var disCtrl = this.s.displayController; - // This needs to be per display controller, but the controller - // itself doesn't know anything about the nesting, so we add a - // "hidden" property to it, used here, but not by the controller - // itself. - if (!disCtrl._show) { - disCtrl._show = []; - } - if (!nest) { - disCtrl._show.length = 0; - } - disCtrl._show.push({ - append: this.dom.wrapper, - callback: cb, - dte: this, - }); - this.s.displayController.open(this, this.dom.wrapper, cb); -} -/** - * Common display editing form method called by all editing methods after the - * form has been configured and displayed. This is to ensure all fire the same - * events. - * - * @param {string} type Editing type - * @param {boolean} immediate indicate if the open is immediate (in which case - * `opened` is also triggered). - * @return {boolean} `true` - * @private - */ -function _postopen(type, immediate) { - var _this = this; - var focusCapture = this.s.displayController.captureFocus; - if (focusCapture === undefined) { - focusCapture = true; - } - $(this.dom.form) - .off('submit.editor-internal') - .on('submit.editor-internal', function (e) { - e.preventDefault(); - }); - // Focus capture - when the Editor form is shown we capture the browser's - // focus action. Without doing this is would result in the user being able - // to control items under the Editor display - triggering actions that - // shouldn't be possible while the editing is shown. - if (focusCapture && (type === 'main' || type === 'bubble')) { - $('body').on('focus.editor-focus', function () { - if ($(document.activeElement).parents('.DTE').length === 0 && - $(document.activeElement).parents('.DTED').length === 0) { - if (_this.s.setFocus) { - _this.s.setFocus.focus(); - } - } - }); - } - this._multiInfo(); - this._event('open', [type, this.s.action]); - if (immediate) { - this._event('opened', [type, this.s.action]); - } - return true; -} -/** - * Common display editing form method called by all editing methods before the - * form has been configured and displayed. This is to ensure all fire the same - * events. - * - * @param {string} Editing type - * @return {boolean} `false` if the open is cancelled by the preOpen event, - * otherwise `true` - * @private - */ -function _preopen(type) { - // Allow preOpen event to cancel the opening of the display - if (this._event('preOpen', [type, this.s.action]) === false) { - // Tidy- this would normally be done on close, but we never get that far - this._clearDynamicInfo(); - this._event('cancelOpen', [type, this.s.action]); - // inline and bubble methods cannot be opened using `open()`, they - // have to be called again, so we need to clean up the event - // listener added by _formOptions - if ((this.s.mode === 'inline' || this.s.mode === 'bubble') && this.s.closeIcb) { - this.s.closeIcb(); - } - this.s.closeIcb = null; - return false; - } - this._clearDynamicInfo(true); - this.s.displayed = type; - return true; -} -/** - * Set the form into processing mode or take it out of processing mode. In - * processing mode a processing indicator is shown and user interaction with the - * form buttons is blocked - * - * @param {boolean} processing true if to go into processing mode and false if - * to come out of processing mode - * @private - */ -function _processing(processing) { - var procClass = this.classes.processing.active; - $(['div.DTE', this.dom.wrapper]).toggleClass(procClass, processing); - this.s.processing = processing; - this._event('processing', [processing]); -} -/** - * Check if any of the fields are processing for the submit to carry on. It - * can recurse. - * - * @private - */ -function _noProcessing(args) { - var processing = false; - $.each(this.s.fields, function (name, field) { - if (field.processing()) { - processing = true; - } - }); - if (processing) { - this.one('processing-field', function () { - // Are any other fields in a processing state? - Might need to wait again - if (this._noProcessing(args) === true) { - this._submit.apply(this, args); - } - }); - } - return !processing; -} -/** - * Submit a form to the server for processing. This is the private method that is used - * by the 'submit' API method, which should always be called in preference to calling - * this method directly. - * - * @param {function} [successCallback] Callback function that is executed once the - * form has been successfully submitted to the server and no errors occurred. - * @param {function} [errorCallback] Callback function that is executed if the - * server reports an error due to the submission (this includes a JSON formatting - * error should the error return invalid JSON). - * @param {function} [formatdata] Callback function that is passed in the data - * that will be submitted to the server, allowing pre-formatting of the data, - * removal of data or adding of extra fields. - * @param {boolean} [hide=true] When the form is successfully submitted, by default - * the form display will be hidden - this option allows that to be overridden. - * @private - */ -function _submit(successCallback, errorCallback, formatdata, hide) { - var _this = this; - var changed = false; - var allData = {}; - var changedData = {}; - var setBuilder = dataSet; - var fields = this.s.fields; - var editCount = this.s.editCount; - var editFields = this.s.editFields; - var editData = this.s.editData; - var opts = this.s.editOpts; - var changedSubmit = opts.submit; - var submitParamsLocal; - // First - are any of the fields currently "processing"? If so, then we - // want to let them complete before submitting - if (this._noProcessing(arguments) === false) { - Editor.error('Field is still processing', 16, false); - return; - } - // After initSubmit to allow `mode()` to be used as a setter - var action = this.s.action; - var submitParams = { - data: {} - }; - submitParams[this.s.actionName] = action; - // Gather the data that is to be submitted - if (action === 'create' || action === 'edit') { - $.each(editFields, function (idSrc, edit) { - var allRowData = {}; - var changedRowData = {}; - $.each(fields, function (name, field) { - if (edit.fields[name] && field.submittable()) { - var multiGet = field.multiGet(); - var builder = setBuilder(name); - // If it wasn't an edit field, we still need to get the original - // data, so we can submit it if `all` or `allIfChanged` - if (multiGet[idSrc] === undefined) { - var originalVal = field.valFromData(edit.data); - builder(allRowData, originalVal); - return; - } - var value = multiGet[idSrc]; - var manyBuilder = Array.isArray(value) && typeof name === 'string' && name.indexOf('[]') !== -1 ? - setBuilder(name.replace(/\[.*$/, '') + '-many-count') : - null; - builder(allRowData, value); - // We need to tell the server-side if an array submission - // actually has no elements so it knows if the array was - // being submitted or not (since otherwise it doesn't know - // if the array was empty, or just not being submitted) - if (manyBuilder) { - manyBuilder(allRowData, value.length); - } - // Build a changed object for if that is the selected data - // type - if (action === 'edit' && (!editData[name] || !field.compare(value, editData[name][idSrc]))) { - builder(changedRowData, value); - changed = true; - if (manyBuilder) { - manyBuilder(changedRowData, value.length); - } - } - } - }); - if (!$.isEmptyObject(allRowData)) { - allData[idSrc] = allRowData; - } - if (!$.isEmptyObject(changedRowData)) { - changedData[idSrc] = changedRowData; - } - }); - // Decide what data to submit to the server for edit (create is all, always) - if (action === 'create' || changedSubmit === 'all' || (changedSubmit === 'allIfChanged' && changed)) { - submitParams.data = allData; - } - else if (changedSubmit === 'changed' && changed) { - submitParams.data = changedData; - } - else { - // Nothing to submit - this.s.action = null; - if (opts.onComplete === 'close' && (hide === undefined || hide)) { - this._close(false); - } - else if (typeof opts.onComplete === 'function') { - opts.onComplete(this); - } - if (successCallback) { - successCallback.call(this); - } - this._processing(false); - this._event('submitComplete'); - return; - } - } - else if (action === 'remove') { - $.each(editFields, function (idSrc, edit) { - submitParams.data[idSrc] = edit.data; - }); - } - // Local copy of the submit parameters, needed for the data lib prep since - // the preSubmit can modify the format and we need to know what the format is - submitParamsLocal = $.extend(true, {}, submitParams); - // Allow the data to be submitted to the server to be preprocessed by callback - // and event functions - if (formatdata) { - formatdata(submitParams); - } - this._event('preSubmit', [submitParams, action], function (result) { - if (result === false) { - _this._processing(false); - } - else { - // Submit to the server (or whatever method is defined in the settings) - var submitWire = _this.s.ajax ? - _this._ajax : - _this._submitTable; - submitWire.call(_this, submitParams, function (json, notGood, xhr) { - _this._submitSuccess(json, notGood, submitParams, submitParamsLocal, _this.s.action, editCount, hide, successCallback, errorCallback, xhr); - }, function (xhr, err, thrown) { - _this._submitError(xhr, err, thrown, errorCallback, submitParams, _this.s.action); - }, submitParams); - } - }); -} -/** - * Save submitted data without an Ajax request. This will write to a local - * table only - not saving it permanently, but rather using the DataTable itself - * as a data store. - * - * @param {object} data Data to submit - * @param {function} success Success callback - * @param {function} error Error callback - * @param {object} submitParams Submitted data - * @private - */ -function _submitTable(data, success, error, submitParams) { - var action = data.action; - var out = { data: [] }; - var idGet = dataGet(this.s.idSrc); - var idSet = dataSet(this.s.idSrc); - // Nothing required for remove - create and edit get a copy of the data - if (action !== 'remove') { - var originalData_1 = this.s.mode === 'main' ? - this._dataSource('fields', this.modifier()) : - this._dataSource('individual', this.modifier()); - $.each(data.data, function (key, vals) { - var toSave; - var extender = extend; - // Get the original row's data, so we can modify it with new values. - // This allows Editor to not need to submit all fields - if (action === 'edit') { - var rowData = originalData_1[key].data; - toSave = extender({}, rowData, true); - toSave = extender(toSave, vals, true); - } - else { - toSave = extender({}, vals, true); - } - // If create and there isn't an id for the new row, create - // one. An id could be creased by `preSubmit` - var overrideId = idGet(toSave); - if (action === 'create' && overrideId === undefined) { - idSet(toSave, +new Date() + key.toString()); - } - else { - idSet(toSave, overrideId); - } - out.data.push(toSave); - }); - } - success(out); -} -/** - * Submit success callback function - * - * @param {object} json Payload - * @param {bool} notGood True if the returned status code was - * >=400 (i.e. processing failed). This is called `notGood` rather than - * `success` since the request was successfully processed, just not written to - * the db. It is also inverted from "good" to make it optional when overriding - * the `ajax` function. - * @param {object} submitParams Submitted data - * @param {object} submitParamsLocal Unmodified copy of submitted data - * (before it could be modified by the user) - * @param {string} action CRUD action being taken - * @param {int} editCount Protection against async errors - * @param {bool} hide Hide the form flag - * @param {function} successCallback Success callback - * @param {function} errorCallback Error callback - * @private - */ -function _submitSuccess(json, notGood, submitParams, submitParamsLocal, action, editCount, hide, successCallback, errorCallback, xhr) { - var _this = this; - var that = this; - var setData; - var fields = this.s.fields; - var opts = this.s.editOpts; - var modifier = this.s.modifier; - this._event('postSubmit', [json, submitParams, action, xhr]); - if (!json.error) { - json.error = ''; - } - if (!json.fieldErrors) { - json.fieldErrors = []; - } - if (notGood || json.error || json.fieldErrors.length) { - // Global form error - var globalError_1 = []; - if (json.error) { - globalError_1.push(json.error); - } - // Field specific errors - $.each(json.fieldErrors, function (i, err) { - var field = fields[err.name]; - if (!field) { - throw new Error('Unknown field: ' + err.name); - } - else if (field.displayed()) { - field.error(err.status || 'Error'); - if (i === 0) { - if (opts.onFieldError === 'focus') { - // Scroll the display to the first error and focus - _this._animate($(_this.dom.bodyContent), { scrollTop: $(field.node()).position().top }, 500); - field.focus(); - } - else if (typeof opts.onFieldError === 'function') { - opts.onFieldError(_this, err); - } - } - } - else { - // If the field isn't visible, we need to make it display as a global error - // This _shouldn't_ happen - it means there is invalid data if it does - globalError_1.push(field.name() + ': ' + (err.status || 'Error')); - } - }); - this.error(globalError_1.join('
')); - this._event('submitUnsuccessful', [json]); - if (errorCallback) { - errorCallback.call(that, json); - } - } - else { - // Create a data store that the data source can use, which is - // unique to this action - var store = {}; - if (json.data && (action === 'create' || action === 'edit')) { - this._dataSource('prep', action, modifier, submitParamsLocal, json, store); - for (var _i = 0, _a = json.data; _i < _a.length; _i++) { - var data = _a[_i]; - setData = data; - var id = this._dataSource('id', data); - this._event('setData', [json, data, action]); // legacy - if (action === 'create') { - // New row was created to add it to the DT - this._event('preCreate', [json, data, id]); - this._dataSource('create', fields, data, store); - this._event(['create', 'postCreate'], [json, data, id]); - } - else if (action === 'edit') { - // Row was updated, so tell the DT - this._event('preEdit', [json, data, id]); - this._dataSource('edit', modifier, fields, data, store); - this._event(['edit', 'postEdit'], [json, data, id]); - } - } - this._dataSource('commit', action, modifier, json.data, store); - } - else if (action === 'remove') { - this._dataSource('prep', action, modifier, submitParamsLocal, json, store); - // Remove the rows given and then redraw the table - this._event('preRemove', [json, this.ids()]); - this._dataSource('remove', modifier, fields, store); - this._event(['remove', 'postRemove'], [json, this.ids()]); - this._dataSource('commit', action, modifier, json.data, store); - } - // Submission complete - if (editCount === this.s.editCount) { - var sAction = this.s.action; - this.s.action = null; // Must do before close, in case close starts a new edit - if (opts.onComplete === 'close' && (hide === undefined || hide)) { - // If no data returned, then treat as not complete - this._close(json.data ? true : false, sAction); - } - else if (typeof opts.onComplete === 'function') { - opts.onComplete(this); - } - } - // All done - fire off the callbacks and events - if (successCallback) { - successCallback.call(that, json); - } - this._event('submitSuccess', [json, setData, action]); - } - this._processing(false); - this._event('submitComplete', [json, setData, action]); -} -/** - * Submit error callback function - * - * @private - */ -function _submitError(xhr, err, thrown, errorCallback, submitParams, action) { - this._event('postSubmit', [null, submitParams, action, xhr]); - this.error(this.i18n.error.system); - this._processing(false); - if (errorCallback) { - errorCallback.call(this, xhr, err, thrown); - } - this._event(['submitError', 'submitComplete'], [xhr, err, thrown, submitParams]); -} -/** - * Check to see if the form needs to be tidied before a new action can be performed. - * This includes if the from is currently processing an old action and if it - * is inline editing. - * - * @param {function} fn Callback function - * @returns {boolean} `true` if was in inline mode, `false` otherwise - * @private - */ -function _tidy(fn) { - var _this = this; - var dt = this.s.table ? - new $.fn.dataTable.Api(this.s.table) : - null; - var ssp = false; - if (dt) { - ssp = dt.settings()[0].oFeatures.bServerSide; - } - if (this.s.processing) { - // If currently processing, wait until the action is complete - this.one('submitComplete', function () { - // If server-side processing is being used in DataTables, first - // check that we are still processing (might not be if nothing was - // submitted) and then wait for the draw to finished - if (ssp) { - dt.one('draw', fn); - } - else { - setTimeout(function () { - fn(); - }, 10); - } - }); - return true; - } - else if (this.display() === 'inline' || this.display() === 'bubble') { - // If there is an inline edit box, it needs to be tidied - this - .one('close', function () { - // On close if processing then we need to wait for the submit to - // complete before running the callback as onBlur was set to - // submit - if (!_this.s.processing) { - // IE needs a small timeout, otherwise it may not focus on a - // field if one already has focus - setTimeout(function () { - // Check this Editor wasn't destroyed - if (_this.s) { - fn(); - } - }, 10); - } - else { - // Need to wait for the submit to finish - _this.one('submitComplete', function (e, json) { - // If SSP then need to wait for the draw - if (ssp && json) { - dt.one('draw', fn); - } - else { - setTimeout(function () { - if (_this.s) { - fn(); - } - }, 10); - } - }); - } - }) - .blur(); - return true; - } - return false; -} -/** - * Same as $.inArray but with weak type checking - * - * @param {any} name Value to look for in the array - * @param {array} arr Array to scan through - * @returns {number} -1 if not found, index otherwise - */ -function _weakInArray(name, arr) { - for (var i = 0, ien = arr.length; i < ien; i++) { - if (name == arr[i]) { - return i; - } - } - return -1; -} - -var fieldType = { - create: function () { }, - disable: function () { }, - enable: function () { }, - get: function () { }, - set: function () { } -}; - -var DataTable$3 = $.fn.dataTable; -// Upload private helper method -function _buttonText(conf, textIn) { - if (textIn === null || textIn === undefined) { - textIn = conf.uploadText || 'Choose file...'; - } - conf._input.find('div.upload button').html(textIn); -} -function _commonUpload(editor, conf, dropCallback, multiple) { - if (multiple === void 0) { multiple = false; } - var btnClass = editor.classes.form.buttonInternal; - var container = $('
' + - '
' + - '
' + - '
' + - '' + - '' + - '
' + - '
' + - '' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
'); - conf._input = container; - conf._enabled = true; - if (conf.id) { - container.find('input[type=file]').attr('id', Editor.safeId(conf.id)); - } - if (conf.attr) { - container.find('input[type=file]').attr(conf.attr); - } - _buttonText(conf); - if (window.FileReader && conf.dragDrop !== false) { - container.find('div.drop span').text(conf.dragDropText || 'Drag and drop a file here to upload'); - var dragDrop_1 = container.find('div.drop'); - dragDrop_1 - .on('drop', function (e) { - if (conf._enabled) { - Editor.upload(editor, conf, e.originalEvent.dataTransfer.files, _buttonText, dropCallback); - dragDrop_1.removeClass('over'); - } - return false; - }) - .on('dragleave dragexit', function (e) { - if (conf._enabled) { - dragDrop_1.removeClass('over'); - } - return false; - }) - .on('dragover', function (e) { - if (conf._enabled) { - dragDrop_1.addClass('over'); - } - return false; - }); - // When an Editor is open with a file upload input there is a - // reasonable chance that the user will miss the drop point when - // dragging and dropping. Rather than loading the file in the browser, - // we want nothing to happen, otherwise the form will be lost. - editor - .on('open', function () { - $('body').on('dragover.DTE_Upload drop.DTE_Upload', function (e) { - return false; - }); - }) - .on('close', function () { - $('body').off('dragover.DTE_Upload drop.DTE_Upload'); - }); - } - else { - container.addClass('noDrop'); - container.append(container.find('div.rendered')); - } - container.find('div.clearValue button').on('click', function (e) { - e.preventDefault(); - if (conf._enabled) { - upload.set.call(editor, conf, ''); - } - }); - container.find('input[type=file]').on('input', function () { - Editor.upload(editor, conf, this.files, _buttonText, function (ids, error) { - if (!error) { - dropCallback.call(editor, ids); - } - container.find('input[type=file]')[0].value = ''; - }); - }); - return container; -} -// Typically a change event caused by the end user will be added to a queue that -// the browser will handle when no other script is running. However, using -// `$().trigger()` will cause it to happen immediately, so in order to simulate -// the standard browser behaviour we use setTimeout. This also means that -// `dependent()` and other change event listeners will trigger when the field -// values have all been set, rather than as they are being set - 31594 -function _triggerChange(input) { - setTimeout(function () { - input.trigger('change', { editor: true, editorSet: true }); // editorSet legacy - }, 0); -} -// A number of the fields in this file use the same get, set, enable and disable -// methods (specifically the text based controls), so in order to reduce the code -// size, we just define them once here in our own local base model for the field -// types. -var baseFieldType = $.extend(true, {}, fieldType, { - canReturnSubmit: function (conf, node) { - return true; - }, - disable: function (conf) { - conf._input.prop('disabled', true); - }, - enable: function (conf) { - conf._input.prop('disabled', false); - }, - get: function (conf) { - return conf._input.val(); - }, - set: function (conf, val) { - conf._input.val(val); - _triggerChange(conf._input); - } -}); -var hidden = { - create: function (conf) { - conf._input = $(''); - conf._val = conf.value; - return null; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - var oldVal = conf._val; - conf._val = val; - conf._input.val(val); - if (oldVal !== val) { - _triggerChange(conf._input); - } - } -}; -var readonly = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - readonly: 'readonly', - type: 'text' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var text = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - type: 'text' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var password = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - type: 'password' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var textarea = $.extend(true, {}, baseFieldType, { - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id) - }, conf.attr || {})); - return conf._input[0]; - } -}); -var select = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var elOpts = conf._input[0].options; - var countOffset = 0; - if (!append) { - elOpts.length = 0; - if (conf.placeholder !== undefined) { - var placeholderValue = conf.placeholderValue !== undefined ? - conf.placeholderValue : - ''; - countOffset += 1; - elOpts[0] = new Option(conf.placeholder, placeholderValue); - var disabled = conf.placeholderDisabled !== undefined ? - conf.placeholderDisabled : - true; - elOpts[0].hidden = disabled; // can't be hidden if not disabled! - elOpts[0].disabled = disabled; - elOpts[0]._editor_val = placeholderValue; - } - } - else { - countOffset = elOpts.length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - var option = new Option(label, val); - option._editor_val = val; - if (attr) { - $(option).attr(attr); - } - elOpts[i + countOffset] = option; - }); - } - }, - create: function (conf) { - conf._input = $('') - .attr($.extend({ - id: Editor.safeId(conf.id), - multiple: conf.multiple === true - }, conf.attr || {})) - .on('change.dte', function (e, d) { - // On change, get the user selected value and store it as the - // last set, so `update` can reflect it. This way `_lastSet` - // always gives the intended value, be it set via the API or by - // the end user. - if (!d || !d.editor) { - conf._lastSet = select.get(conf); - } - }); - select._addOptions(conf, conf.options || conf.ipOpts); - return conf._input[0]; - }, - destroy: function (conf) { - conf._input.off('change.dte'); - }, - get: function (conf) { - var val = conf._input.find('option:selected').map(function () { - return this._editor_val; - }).toArray(); - if (conf.multiple) { - return conf.separator ? - val.join(conf.separator) : - val; - } - return val.length ? val[0] : null; - }, - set: function (conf, val, localUpdate) { - if (!localUpdate) { - conf._lastSet = val; - } - // Can't just use `$().val()` because it won't work with strong types - if (conf.multiple && conf.separator && !Array.isArray(val)) { - val = typeof val === 'string' ? - val.split(conf.separator) : - []; - } - else if (!Array.isArray(val)) { - val = [val]; - } - var i; - var len = val.length; - var found; - var allFound = false; - var options = conf._input.find('option'); - conf._input.find('option').each(function () { - found = false; - for (i = 0; i < len; i++) { - // Weak typing - if (this._editor_val == val[i]) { - found = true; - allFound = true; - break; - } - } - this.selected = found; - }); - // If there is a placeholder, we might need to select it if nothing else - // was selected. It doesn't make sense to select when multi is enabled - if (conf.placeholder && !allFound && !conf.multiple && options.length) { - options[0].selected = true; - } - // Update will call change itself, otherwise multiple might be called - if (!localUpdate) { - _triggerChange(conf._input); - } - return allFound; - }, - update: function (conf, options, append) { - select._addOptions(conf, options, append); - // Attempt to set the last selected value (set by the API or the end - // user, they get equal priority) - var lastSet = conf._lastSet; - if (lastSet !== undefined) { - select.set(conf, lastSet, true); - } - _triggerChange(conf._input); - } -}); -var checkbox = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var jqInput = conf._input; - var offset = 0; - if (!append) { - jqInput.empty(); - } - else { - offset = $('input', jqInput).length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - jqInput.append('
' + - '' + - '' + - '
'); - $('input:last', jqInput).attr('value', val)[0]._editor_val = val; - if (attr) { - $('input:last', jqInput).attr(attr); - } - }); - } - }, - create: function (conf) { - conf._input = $('
'); - checkbox._addOptions(conf, conf.options || conf.ipOpts); - return conf._input[0]; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - }, - get: function (conf) { - var out = []; - var selected = conf._input.find('input:checked'); - if (selected.length) { - selected.each(function () { - out.push(this._editor_val); - }); - } - else if (conf.unselectedValue !== undefined) { - out.push(conf.unselectedValue); - } - return conf.separator === undefined || conf.separator === null ? - out : - out.join(conf.separator); - }, - set: function (conf, val) { - var jqInputs = conf._input.find('input'); - if (!Array.isArray(val) && typeof val === 'string') { - val = val.split(conf.separator || '|'); - } - else if (!Array.isArray(val)) { - val = [val]; - } - var i; - var len = val.length; - var found; - jqInputs.each(function () { - found = false; - for (i = 0; i < len; i++) { - if (this._editor_val == val[i]) { - found = true; - break; - } - } - this.checked = found; - }); - _triggerChange(jqInputs); - }, - update: function (conf, options, append) { - // Get the current value - var currVal = checkbox.get(conf); - checkbox._addOptions(conf, options, append); - checkbox.set(conf, currVal); - } -}); -var radio = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var jqInput = conf._input; - var offset = 0; - if (!append) { - jqInput.empty(); - } - else { - offset = $('input', jqInput).length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - jqInput.append('
' + - '' + - '' + - '
'); - $('input:last', jqInput).attr('value', val)[0]._editor_val = val; - if (attr) { - $('input:last', jqInput).attr(attr); - } - }); - } - }, - create: function (conf) { - conf._input = $('
'); - radio._addOptions(conf, conf.options || conf.ipOpts); - // this is ugly, but IE6/7 has a problem with radio elements that are created - // and checked before being added to the DOM! Basically it doesn't check them. As - // such we use the _preChecked property to set cache the checked button and then - // check it again when the display is shown. This has no effect on other browsers - // other than to cook a few clock cycles. - this.on('open', function () { - conf._input.find('input').each(function () { - if (this._preChecked) { - this.checked = true; - } - }); - }); - return conf._input[0]; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - }, - get: function (conf) { - var el = conf._input.find('input:checked'); - if (el.length) { - return el[0]._editor_val; - } - return conf.unselectedValue !== undefined ? - conf.unselectedValue : - undefined; - }, - set: function (conf, val) { - conf._input.find('input').each(function () { - this._preChecked = false; - if (this._editor_val == val) { - this.checked = true; - this._preChecked = true; - } - else { - // In a detached DOM tree, there is no relationship between the - // input elements, so we need to uncheck any element that does - // not match the value - this.checked = false; - this._preChecked = false; - } - }); - _triggerChange(conf._input.find('input:checked')); - }, - update: function (conf, options, append) { - var currVal = radio.get(conf); - radio._addOptions(conf, options, append); - // Select the current value if it exists in the new data set, otherwise - // select the first radio input so there is always a value selected - var inputs = conf._input.find('input'); - radio.set(conf, inputs.filter('[value="' + currVal + '"]').length ? - currVal : - inputs.eq(0).attr('value')); - } -}); -var datetime = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend(true, { - id: Editor.safeId(conf.id), - type: 'text' - }, conf.attr)); - if (!DataTable$3.DateTime) { - Editor.error('DateTime library is required', 15); - } - // Legacy support for 2.0- parameters - if (conf.momentLocale && !conf.opts.locale) { - conf.opts.locale = conf.momentLocale; - } - if (conf.momentStrict && !conf.opts.strict) { - conf.opts.strict = conf.momentStrict; - } - conf._picker = new DataTable$3.DateTime(conf._input, $.extend({ - format: conf.displayFormat || conf.format, - i18n: this.i18n.datetime, - }, conf.opts)); - conf._closeFn = function () { - conf._picker.hide(); - }; - if (conf.keyInput === false) { - conf._input.on('keydown', function (e) { - e.preventDefault(); - }); - } - this.on('close', conf._closeFn); - return conf._input[0]; - }, - destroy: function (conf) { - this.off('close', conf._closeFn); - conf._input.off('keydown'); - conf._picker.destroy(); - }, - errorMessage: function (conf, msg) { - conf._picker.errorMsg(msg); - }, - get: function (conf) { - return conf.wireFormat - ? conf._picker.valFormat(conf.wireFormat) - : conf._input.val(); - }, - maxDate: function (conf, max) { - conf._picker.max(max); - }, - minDate: function (conf, min) { - conf._picker.min(min); - }, - // default disable and enable options are okay - owns: function (conf, node) { - return conf._picker.owns(node); - }, - set: function (conf, val) { - // If there is a wire format, convert it to the display format - // Note that special values (e.g. `--now` and empty) do not get formatted - if (typeof val === 'string' && val && val.indexOf('--') !== 0 && conf.wireFormat) { - conf._picker.valFormat(conf.wireFormat, val); - } - else { - conf._picker.val(val); - } - _triggerChange(conf._input); - } -}); -var upload = $.extend(true, {}, baseFieldType, { - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - var editor = this; - var container = _commonUpload(editor, conf, function (val) { - upload.set.call(editor, conf, val[0]); - editor._event('postUpload', [conf.name, val[0]]); - }); - return container; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - conf._enabled = false; - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - conf._enabled = true; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - conf._val = val; - conf._input.val(''); - var container = conf._input; - if (conf.display) { - var rendered = container.find('div.rendered'); - if (conf._val) { - rendered.html(conf.display(conf._val)); - } - else { - rendered - .empty() - .append('' + (conf.noFileText || 'No file') + ''); - } - } - var button = container.find('div.clearValue button'); - if (val && conf.clearText) { - button.html(conf.clearText); - container.removeClass('noClear'); - } - else { - container.addClass('noClear'); - } - conf._input.find('input').triggerHandler('upload.editor', [conf._val]); - } -}); -var uploadMany = $.extend(true, {}, baseFieldType, { - _showHide: function (conf) { - if (!conf.limit) { - return; - } - conf._container.find('div.limitHide').css('display', conf._val.length >= conf.limit ? - 'none' : - 'block'); - // Used by the Editor.upload static function to truncate if too many - // files are selected for upload - conf._limitLeft = conf.limit - conf._val.length; - }, - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - var editor = this; - var container = _commonUpload(editor, conf, function (val) { - conf._val = conf._val.concat(val); - uploadMany.set.call(editor, conf, conf._val); - editor._event('postUpload', [conf.name, conf._val]); - }, true); - container - .addClass('multi') - .on('click', 'button.remove', function (e) { - e.stopPropagation(); - if (conf._enabled) { - var idx = $(this).data('idx'); - conf._val.splice(idx, 1); - uploadMany.set.call(editor, conf, conf._val); - } - }); - conf._container = container; - return container; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - conf._enabled = false; - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - conf._enabled = true; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - // Default value for fields is an empty string, whereas we want [] - if (!val) { - val = []; - } - if (!Array.isArray(val)) { - throw new Error('Upload collections must have an array as a value'); - } - conf._val = val; - conf._input.val(''); - var that = this; - var container = conf._input; - if (conf.display) { - var rendered = container.find('div.rendered').empty(); - if (val.length) { - var list_1 = $('
    ').appendTo(rendered); - $.each(val, function (i, file) { - var display = conf.display(file, i); - if (display !== null) { - list_1.append('
  • ' + - display + - ' ' + - '
  • '); - } - }); - } - else { - rendered.append('' + (conf.noFileText || 'No files') + ''); - } - } - uploadMany._showHide(conf); - conf._input.find('input').triggerHandler('upload.editor', [conf._val]); - } -}); -var datatable = $.extend(true, {}, baseFieldType, { - _addOptions: function (conf, options, append) { - if (append === void 0) { append = false; } - var dt = conf.dt; - if (!append) { - dt.clear(); - } - dt.rows.add(options).draw(); - }, - _jumpToFirst: function (conf, editor) { - var dt = conf.dt; - // Find which page in the table the first selected row is - var idx = dt.row({ order: 'applied', selected: true }).index(); - var page = 0; - if (typeof idx === 'number') { - var pageLen = dt.page.info().length; - var pos = dt.rows({ order: 'applied' }).indexes().indexOf(idx); - page = pageLen > 0 - ? Math.floor(pos / pageLen) - : 0; - } - dt.page(page).draw(false); - // If scrolling is enabled, scroll down to first selected - var container = $('div.dataTables_scrollBody', dt.table().container()); - var scrollTo = function () { - var node = dt.row({ order: 'applied', selected: true }).node(); - if (node) { - var height = container.height(); - var top_1 = $(node).position().top; - if (top_1 > height - 10) { - container.scrollTop(top_1); - } - } - }; - if (container.length) { - // Check that the form has actually been displayed. If not need - // to wait for Editor's open event - if (container.parents('body').length) { - scrollTo(); - } - else { - editor.one('open', function () { - scrollTo(); - }); - } - } - }, - create: function (conf) { - var _this = this; - conf.optionsPair = $.extend({ - label: 'label', - value: 'value' - }, conf.optionsPair); - var table = $(''); - var container = $('
    ').append(table); - var side = $('
    '); - if (conf.footer) { - $('
    ') - .append(Array.isArray(conf.footer) - ? $('').append($.map(conf.footer, function (str) { return $('").append(Array.isArray(r.footer)?w("").append(w.map(r.footer,function(t){return w("").append(Array.isArray(a.footer)?$("").append($.map(a.footer,function(t){return $("'); - var attachFields = []; - var attach = []; - var displayFields = {}; - var tbody = dt.table(undefined).body(); - for (var i = 0, ien = dt.columns(':visible').count(); i < ien; i++) { - var visIdx = dt.column(i + ':visible').index(); - var td = $(''); + var attachFields = []; + var attach = []; + var displayFields = {}; + var tbody = dt.table(undefined).body(); + for (var i = 0, ien = dt.columns(':visible').count(); i < ien; i++) { + var visIdx = dt.column(i + ':visible').index(); + var td = $('
    ').html(str); })) - : conf.footer) - .appendTo(table); - } - var dt = table - .addClass(datatable.tableClass) - .width('100%') - .on('init.dt', function (e, settings) { - if (settings.nTable !== table[0]) { - return; - } - var api = new DataTable$3.Api(settings); - var containerNode = $(api.table(undefined).container()); - // Select init - DataTable$3.select.init(api); - // Append side button controls - side - .append(containerNode.find('div.dataTables_filter')) - .append(containerNode.find('div.dt-buttons')) - .append(containerNode.find('div.dataTables_info')); - }) - .DataTable($.extend({ - buttons: [], - columns: [ - { - data: conf.optionsPair.label, - title: 'Label' - } - ], - deferRender: true, - dom: 'fiBtp', - language: { - paginate: { - next: '>', - previous: '<', - }, - search: '', - searchPlaceholder: 'Search' - }, - lengthChange: false, - select: { - style: conf.multiple ? 'os' : 'single' - }, - }, conf.config)); - this.on('open', function () { - if (dt.search()) { - dt.search('').draw(); - } - dt.columns.adjust(); - }); - // Change event for when the user does a select - `set` will do its own - // triggering of the change for the api - dt.on('user-select', function () { - _triggerChange($(conf.dt.table().container())); - }); - if (conf.editor) { - conf.editor.table(dt); - conf.editor.on('submitComplete', function (e, json, data, action) { - if (action === 'create') { - var _loop_1 = function (dp) { - dt - .rows(function (idx, d) { return d === dp; }) - .select(); - }; - // Automatically select the new data - for (var _i = 0, _a = json.data; _i < _a.length; _i++) { - var dp = _a[_i]; - _loop_1(dp); - } - } - else if (action === 'edit' || action === 'remove') { - _this._dataSource('refresh'); - } - datatable._jumpToFirst(conf, _this); - }); - } - conf.dt = dt; - datatable._addOptions(conf, conf.options || []); - return { - input: container, - side: side, - }; - }, - disable: function (conf) { - conf.dt.select.style('api'); - conf.dt.buttons().container().css('display', 'none'); - }, - dt: function (conf) { - return conf.dt; - }, - enable: function (conf) { - conf.dt.select.style(conf.multiple ? 'os' : 'single'); - conf.dt.buttons().container().css('display', 'block'); - }, - get: function (conf) { - var rows = conf.dt - .rows({ selected: true }) - .data() - .pluck(conf.optionsPair.value) - .toArray(); - return conf.separator || !conf.multiple - ? rows.join(conf.separator || ',') - : rows; - }, - set: function (conf, val, localUpdate) { - // Convert to an array of values - works for both single and multiple - if (conf.multiple && conf.separator && !Array.isArray(val)) { - val = typeof val === 'string' ? - val.split(conf.separator) : - []; - } - else if (!Array.isArray(val)) { - val = [val]; - } - // if ( ! localUpdate ) { - // conf._lastSet = val; - // } - var valueFn = dataGet(conf.optionsPair.value); - conf.dt.rows({ selected: true }).deselect(); - conf.dt.rows(function (idx, data, node) { return val.indexOf(valueFn(data)) !== -1; }).select(); - // Jump to the first page with a selected row (if there are any) - datatable._jumpToFirst(conf, this); - // Update will call change itself, otherwise multiple might be called - if (!localUpdate) { - _triggerChange($(conf.dt.table().container())); - } - }, - tableClass: '', - update: function (conf, options, append) { - datatable._addOptions(conf, options, append); - // Attempt to set the last selected value (set by the API or the end - // user, they get equal priority) - var lastSet = conf._lastSet; - if (lastSet !== undefined) { - datatable.set(conf, lastSet, true); - } - _triggerChange($(conf.dt.table().container())); - } -}); - -var defaults = { - className: '', - compare: null, - data: '', - def: '', - entityDecode: true, - fieldInfo: '', - getFormatter: null, - id: '', - label: '', - labelInfo: '', - message: '', - multiEditable: true, - name: null, - nullDefault: false, - setFormatter: null, - submit: true, - type: 'text' -}; - -var DataTable$2 = $.fn.dataTable; -var Field = /** @class */ (function () { - function Field(options, classes, host) { - var that = this; - var multiI18n = host.internalI18n().multi; - var opts = $.extend(true, {}, Field.defaults, options); - if (!Editor.fieldTypes[opts.type]) { - throw new Error('Error adding field - unknown field type ' + opts.type); - } - this.s = { - classes: classes, - host: host, - multiIds: [], - multiValue: false, - multiValues: {}, - name: opts.name, - opts: opts, - processing: false, - type: Editor.fieldTypes[opts.type], - }; - // No id, so assign one to have the label reference work - if (!opts.id) { - opts.id = 'DTE_Field_' + opts.name; - } - // If no `data` option is given, then we use the name from the field as the - // data prop to read data for the field from DataTables - if (opts.data === '') { - opts.data = opts.name; - } - // Get and set functions in the data object for the record - this.valFromData = function (d) { - // wrapper to automatically pass `editor` as the type - return dataGet(opts.data)(d, 'editor'); - }; - this.valToData = dataSet(opts.data); // set val to data - // Field HTML structure - var template = $('
    ' + - '' + - '
    ' + - // Field specific HTML is added here if there is any - '
    ' + - '
    ' + - multiI18n.title + - '' + - multiI18n.info + - '' + - '
    ' + - '
    ' + - multiI18n.restore + - '
    ' + - '
    ' + - '
    ' + opts.message + '
    ' + - '
    ' + opts.fieldInfo + '
    ' + - '
    ' + - '
    ' + - '
    '); - var input = this._typeFn('create', opts); - var side = null; - if (input && input.side) { - side = input.side; - input = input.input; - } - if (input !== null) { - el('input-control', template).prepend(input); - } - else { - template.css('display', 'none'); - } - this.dom = { - container: template, - fieldError: el('msg-error', template), - fieldInfo: el('msg-info', template), - fieldMessage: el('msg-message', template), - inputControl: el('input-control', template), - label: el('label', template).append(side), - labelInfo: el('msg-label', template), - multi: el('multi-value', template), - multiInfo: el('multi-info', template), - multiReturn: el('msg-multi', template), - processing: el('field-processing', template) - }; - // On click - set a common value for the field - this.dom.multi.on('click', function () { - if (that.s.opts.multiEditable && !template.hasClass(classes.disabled) && opts.type !== 'readonly') { - that.val(''); - that.focus(); - } - }); - this.dom.multiReturn.on('click', function () { - that.multiRestore(); - }); - // Field type extension methods - add a method to the field for the public - // methods that each field type defines beyond the default ones that already - // exist as part of this instance - $.each(this.s.type, function (name, fn) { - if (typeof fn === 'function' && that[name] === undefined) { - that[name] = function () { - var args = Array.prototype.slice.call(arguments); - args.unshift(name); - var ret = that._typeFn.apply(that, args); - // Return the given value if there is one, or the field instance - // for chaining if there is no value - return ret === undefined ? - that : - ret; - }; - } - }); - } - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public - */ - Field.prototype.def = function (set) { - var opts = this.s.opts; - if (set === undefined) { - // Backwards compat - var def = opts['default'] !== undefined ? - opts['default'] : - opts.def; - return typeof def === 'function' ? - def() : - def; - } - opts.def = set; - return this; - }; - Field.prototype.disable = function () { - this.dom.container.addClass(this.s.classes.disabled); - this._typeFn('disable'); - return this; - }; - Field.prototype.displayed = function () { - var container = this.dom.container; - return container.parents('body').length && container.css('display') !== 'none' ? - true : - false; - }; - Field.prototype.enable = function (toggle) { - if (toggle === void 0) { toggle = true; } - if (toggle === false) { - return this.disable(); - } - this.dom.container.removeClass(this.s.classes.disabled); - this._typeFn('enable'); - return this; - }; - Field.prototype.enabled = function () { - return this.dom.container.hasClass(this.s.classes.disabled) === false; - }; - Field.prototype.error = function (msg, fn) { - var classes = this.s.classes; - // Add or remove the error class - if (msg) { - this.dom.container.addClass(classes.error); - } - else { - this.dom.container.removeClass(classes.error); - } - this._typeFn('errorMessage', msg); - return this._msg(this.dom.fieldError, msg, fn); - }; - Field.prototype.fieldInfo = function (msg) { - return this._msg(this.dom.fieldInfo, msg); - }; - Field.prototype.isMultiValue = function () { - return this.s.multiValue && this.s.multiIds.length !== 1; - }; - Field.prototype.inError = function () { - return this.dom.container.hasClass(this.s.classes.error); - }; - Field.prototype.input = function () { - return this.s.type.input ? - this._typeFn('input') : - $('input, select, textarea', this.dom.container); - }; - Field.prototype.focus = function () { - if (this.s.type.focus) { - this._typeFn('focus'); - } - else { - $('input, select, textarea', this.dom.container).focus(); - } - return this; - }; - Field.prototype.get = function () { - // When multi-value a single get is undefined - if (this.isMultiValue()) { - return undefined; - } - return this._format(this._typeFn('get'), this.s.opts.getFormatter); - }; - Field.prototype.hide = function (animate) { - var el = this.dom.container; - if (animate === undefined) { - animate = true; - } - if (this.s.host.display() && animate && $.fn.slideUp) { - el.slideUp(); - } - else { - el.css('display', 'none'); - } - return this; - }; - Field.prototype.label = function (str) { - var label = this.dom.label; - var labelInfo = this.dom.labelInfo.detach(); - if (str === undefined) { - return label.html(); - } - label.html(str); - label.append(labelInfo); - return this; - }; - Field.prototype.labelInfo = function (msg) { - return this._msg(this.dom.labelInfo, msg); - }; - Field.prototype.message = function (msg, fn) { - return this._msg(this.dom.fieldMessage, msg, fn); - }; - // There is no `multiVal()` as its arguments could be ambiguous - // id is an idSrc value _only_ - Field.prototype.multiGet = function (id) { - var value; - var multiValues = this.s.multiValues; - var multiIds = this.s.multiIds; - var isMultiValue = this.isMultiValue(); - if (id === undefined) { - var fieldVal = this.val(); - // Get an object with the values for each item being edited - value = {}; - for (var _i = 0, multiIds_1 = multiIds; _i < multiIds_1.length; _i++) { - var multiId = multiIds_1[_i]; - value[multiId] = isMultiValue ? - multiValues[multiId] : - fieldVal; - } - } - else if (isMultiValue) { - // Individual value - value = multiValues[id]; - } - else { - // Common value - value = this.val(); - } - return value; - }; - Field.prototype.multiRestore = function () { - this.s.multiValue = true; - this._multiValueCheck(); - }; - Field.prototype.multiSet = function (id, val, recalc) { - if (recalc === void 0) { recalc = true; } - var that = this; - var multiValues = this.s.multiValues; - var multiIds = this.s.multiIds; - if (val === undefined) { - val = id; - id = undefined; - } - // Set - var set = function (idSrc, valIn) { - // Get an individual item's value - add the id to the edit ids if - // it isn't already in the set. - if ($.inArray(idSrc, multiIds) === -1) { - multiIds.push(idSrc); - } - multiValues[idSrc] = that._format(valIn, that.s.opts.setFormatter); - }; - if ($.isPlainObject(val) && id === undefined) { - // idSrc / value pairs passed in - $.each(val, function (idSrc, innerVal) { - set(idSrc, innerVal); - }); - } - else if (id === undefined) { - // Set same value for all existing ids - $.each(multiIds, function (i, idSrc) { - set(idSrc, val); - }); - } - else { - // Setting an individual property - set(id, val); - } - this.s.multiValue = true; - if (recalc) { - this._multiValueCheck(); - } - return this; - }; - Field.prototype.name = function () { - return this.s.opts.name; - }; - Field.prototype.node = function () { - return this.dom.container[0]; - }; - Field.prototype.nullDefault = function () { - return this.s.opts.nullDefault; - }; - Field.prototype.processing = function (set) { - if (set === undefined) { - return this.s.processing; - } - this.dom.processing.css('display', set ? 'block' : 'none'); - this.s.processing = set; - this.s.host.internalEvent('processing-field', [set]); - return this; - }; - // multiCheck is not publicly documented - Field.prototype.set = function (val, multiCheck) { - if (multiCheck === void 0) { multiCheck = true; } - var decodeFn = function (d) { - return typeof d !== 'string' ? - d : - d - .replace(/>/g, '>') - .replace(/</g, '<') - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/£/g, '£') - .replace(/�?39;/g, '\'') - .replace(/�?10;/g, '\n'); - }; - this.s.multiValue = false; - var decode = this.s.opts.entityDecode; - if (decode === undefined || decode === true) { - if (Array.isArray(val)) { - for (var i = 0, ien = val.length; i < ien; i++) { - val[i] = decodeFn(val[i]); - } - } - else { - val = decodeFn(val); - } - } - // If triggered from multi check we don't want to do formatting or multi checking again - if (multiCheck === true) { - val = this._format(val, this.s.opts.setFormatter); - this._typeFn('set', val); - this._multiValueCheck(); - } - else { - this._typeFn('set', val); - } - return this; - }; - Field.prototype.show = function (animate, toggle) { - if (animate === void 0) { animate = true; } - if (toggle === void 0) { toggle = true; } - if (toggle === false) { - return this.hide(animate); - } - var el = this.dom.container; - if (this.s.host.display() && animate && $.fn.slideDown) { - el.slideDown(); - } - else { - el.css('display', ''); // empty to restore css default (flex or block) - } - return this; - }; - Field.prototype.update = function (options, append) { - if (append === void 0) { append = false; } - if (this.s.type.update) { - this._typeFn('update', options, append); - } - return this; - }; - Field.prototype.val = function (val) { - return val === undefined ? - this.get() : - this.set(val); - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Internal - Called from Editor only and are not publicly documented - - * these APIs can change! - */ - Field.prototype.compare = function (value, original) { - var compare = this.s.opts.compare || deepCompare; - return compare(value, original); - }; - Field.prototype.dataSrc = function () { - return this.s.opts.data; - }; - Field.prototype.destroy = function () { - // remove element - this.dom.container.remove(); - // field's own destroy method if there is one - this._typeFn('destroy'); - return this; - }; - Field.prototype.multiEditable = function () { - return this.s.opts.multiEditable; - }; - Field.prototype.multiIds = function () { - return this.s.multiIds; - }; - Field.prototype.multiInfoShown = function (show) { - this.dom.multiInfo.css({ display: show ? 'block' : 'none' }); - }; - Field.prototype.multiReset = function () { - this.s.multiIds = []; - this.s.multiValues = {}; - }; - Field.prototype.submittable = function () { - return this.s.opts.submit; - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Internal - */ - Field.prototype._msg = function (el, msg, fn) { - if (msg === undefined) { - return el.html(); - } - if (typeof msg === 'function') { - var editor = this.s.host; - msg = msg(editor, new DataTable$2.Api(editor.internalSettings().table)); - } - if (el.parent().is(':visible') && $.fn.animate) { - el.html(msg); - if (msg) { - el.slideDown(fn); // fn can be undefined - so jQuery won't execute it - } - else { - el.slideUp(fn); - } - } - else { - // Not visible, so immediately set, or blank out the element - el - .html(msg || '') - .css('display', msg ? 'block' : 'none'); - if (fn) { - fn(); - } - } - return this; - }; - Field.prototype._multiValueCheck = function () { - var last; - var ids = this.s.multiIds; - var values = this.s.multiValues; - var isMultiValue = this.s.multiValue; - var isMultiEditable = this.s.opts.multiEditable; - var val; - var different = false; - if (ids) { - for (var i = 0; i < ids.length; i++) { - val = values[ids[i]]; - if (i > 0 && !deepCompare(val, last)) { - different = true; - break; - } - last = val; - } - } - if ((different && isMultiValue) || (!isMultiEditable && this.isMultiValue())) { - // Different values or same values, but not multiple editable - this.dom.inputControl.css({ display: 'none' }); - this.dom.multi.css({ display: 'block' }); - } - else { - // All the same value - this.dom.inputControl.css({ display: 'block' }); - this.dom.multi.css({ display: 'none' }); - if (isMultiValue && !different) { - this.set(last, false); - } - } - this.dom.multiReturn.css({ - display: ids && ids.length > 1 && different && !isMultiValue ? - 'block' : - 'none' - }); - // Update information label - var i18n = this.s.host.internalI18n().multi; - this.dom.multiInfo.html(isMultiEditable ? i18n.info : i18n.noMulti); - this.dom.multi.toggleClass(this.s.classes.multiNoEdit, !isMultiEditable); - this.s.host.internalMultiInfo(); - return true; - }; - Field.prototype._typeFn = function (name) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - // Insert the options as the first parameter - all field type methods - // take the field's configuration object as the first parameter - args.unshift(this.s.opts); - var fn = this.s.type[name]; - if (fn) { - return fn.apply(this.s.host, args); - } - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private - */ - Field.prototype._errorNode = function () { - return this.dom.fieldError; - }; - Field.prototype._format = function (val, formatter) { - if (formatter) { - if (Array.isArray(formatter)) { - var args = formatter.slice(); - var name_1 = args.shift(); - formatter = Field.formatters[name_1].apply(this, args); - } - return formatter.call(this.s.host, val, this); - } - return val; - }; - Field.defaults = defaults; - Field.formatters = {}; - return Field; -}()); - -var button = { - action: null, - className: null, - tabIndex: 0, - text: null, -}; - -var displayController = { - close: function () { }, - init: function () { }, - node: function () { }, - open: function () { } -}; - -var DataTable$1 = $.fn.dataTable; -/* - * DataTables 1.10 API integration. Provides the ability to control basic Editor - * aspects from the DataTables API. Full control does of course require use of - * the Editor API though. - */ -var apiRegister = DataTable$1.Api.register; -function _getInst(api) { - var ctx = api.context[0]; - return ctx.oInit.editor || ctx._editor; -} -// Set sensible defaults for the editing options -function _setBasic(inst, opts, type, plural) { - if (!opts) { - opts = {}; - } - if (opts.buttons === undefined) { - opts.buttons = '_basic'; - } - if (opts.title === undefined) { - opts.title = inst.i18n[type].title; - } - if (opts.message === undefined) { - if (type === 'remove') { - var confirm_1 = inst.i18n[type].confirm; - opts.message = plural !== 1 ? confirm_1._.replace(/%d/, plural) : confirm_1['1']; - } - else { - opts.message = ''; - } - } - return opts; -} -apiRegister('editor()', function () { - return _getInst(this); -}); -// Row editing -apiRegister('row.create()', function (opts) { - // main - var inst = _getInst(this); - inst.create(_setBasic(inst, opts, 'create')); - return this; -}); -apiRegister('row().edit()', function (opts) { - // main - var inst = _getInst(this); - inst.edit(this[0][0], _setBasic(inst, opts, 'edit')); - return this; -}); -apiRegister('rows().edit()', function (opts) { - // main - var inst = _getInst(this); - inst.edit(this[0], _setBasic(inst, opts, 'edit')); - return this; -}); -apiRegister('row().delete()', function (opts) { - // main - var inst = _getInst(this); - inst.remove(this[0][0], _setBasic(inst, opts, 'remove', 1)); - return this; -}); -apiRegister('rows().delete()', function (opts) { - // main - var inst = _getInst(this); - inst.remove(this[0], _setBasic(inst, opts, 'remove', this[0].length)); - return this; -}); -apiRegister('cell().edit()', function (type, opts) { - // inline or bubble - if (!type) { - type = 'inline'; - } - else if ($.isPlainObject(type)) { - opts = type; - type = 'inline'; - } - _getInst(this)[type](this[0][0], opts); - return this; -}); -apiRegister('cells().edit()', function (opts) { - // bubble only at the moment - _getInst(this).bubble(this[0], opts); - return this; -}); -apiRegister('file()', file); -apiRegister('files()', files); -// Global listener for file information updates via DataTables' Ajax JSON -$(document).on('xhr.dt', function (e, ctx, json) { - if (e.namespace !== 'dt') { - return; - } - if (json && json.files) { - $.each(json.files, function (name, filesIn) { - if (!Editor.files[name]) { - Editor.files[name] = {}; - } - $.extend(Editor.files[name], filesIn); - }); - } -}); - -/* - * Add helpful buttons to make life easier - * - * Note that the values that require a string to make any sense (the button text - * for example) are set by Editor when Editor is initialised through the i18n - * options. - */ -var _buttons = $.fn.dataTable.ext.buttons; -$.extend(_buttons, { - create: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .create($.extend({ - buttons: config.formButtons, - message: config.formMessage || editor.i18n.create.message, - nest: true, - title: config.formTitle || editor.i18n.create.title - }, config.formOptions)); - }, - className: 'buttons-create', - editor: null, - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.create.submit; - } - }, - formMessage: null, - formOptions: {}, - formTitle: null, - text: function (dt, node, config) { - return dt.i18n('buttons.create', config.editor.i18n.create.button); - }, - }, - createInline: { - action: function (e, dt, node, config) { - config.editor.inlineCreate(config.position, config.formOptions); - }, - className: 'buttons-create', - editor: null, - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.create.submit; - } - }, - formOptions: {}, - position: 'start', - text: function (dt, node, config) { - return dt.i18n('buttons.create', config.editor.i18n.create.button); - }, - }, - edit: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - var rows = dt.rows({ selected: true }).indexes(); - var columns = dt.columns({ selected: true }).indexes(); - var cells = dt.cells({ selected: true }).indexes(); - var items = columns.length || cells.length ? - { - cells: cells, - columns: columns, - rows: rows - } : - rows; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .edit(items, $.extend({ - buttons: config.formButtons, - message: config.formMessage || editor.i18n.edit.message, - nest: true, - title: config.formTitle || editor.i18n.edit.title - }, config.formOptions)); - }, - className: 'buttons-edit', - editor: null, - extend: 'selected', - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.edit.submit; - }, - }, - formMessage: null, - formOptions: {}, - formTitle: null, - text: function (dt, node, config) { - return dt.i18n('buttons.edit', config.editor.i18n.edit.button); - }, - }, - remove: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .remove(dt.rows({ selected: true }).indexes(), $.extend({ - buttons: config.formButtons, - message: config.formMessage, - nest: true, - title: config.formTitle || editor.i18n.remove.title - }, config.formOptions)); - }, - className: 'buttons-remove', - editor: null, - extend: 'selected', - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.remove.submit; - }, - }, - formMessage: function (editor, dt) { - var rows = dt.rows({ selected: true }).indexes(); - var i18n = editor.i18n.remove; - var question = typeof i18n.confirm === 'string' ? - i18n.confirm : - i18n.confirm[rows.length] ? - i18n.confirm[rows.length] : i18n.confirm._; - return question.replace(/%d/g, rows.length); - }, - formOptions: {}, - formTitle: null, - limitTo: ['rows'], - text: function (dt, node, config) { - return dt.i18n('buttons.remove', config.editor.i18n.remove.button); - }, - } -}); -// Reuse the standard edit and remove buttons for their singular equivalent, -// but set it to extend the single selected button only -_buttons.editSingle = $.extend({}, _buttons.edit); -_buttons.editSingle.extend = 'selectedSingle'; -_buttons.removeSingle = $.extend({}, _buttons.remove); -_buttons.removeSingle.extend = 'selectedSingle'; - - -if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.20')) { - throw new Error('Editor requires DataTables 1.10.20 or newer'); -} -var Editor = /** @class */ (function () { - function Editor(init, cjsJq) { - var _this = this; - this.add = add; - this.ajax = ajax; - this.background = background; - this.blur = blur; - this.bubble = bubble; - this.bubblePosition = bubblePosition; - this.buttons = buttons; - this.clear = clear; - this.close = close; - this.create = create; - this.undependent = undependent; - this.dependent = dependent; - this.destroy = destroy; - this.disable = disable; - this.display = display; - this.displayed = displayed; - this.displayNode = displayNode; - this.edit = edit; - this.enable = enable; - this.error = error$1; - this.field = field; - this.fields = fields; - this.file = file; - this.files = files; - this.get = get; - this.hide = hide; - this.ids = ids; - this.inError = inError; - this.inline = inline; - this.inlineCreate = inlineCreate; - this.message = message; - this.mode = mode; - this.modifier = modifier; - this.multiGet = multiGet; - this.multiSet = multiSet; - this.node = node; - this.off = off; - this.on = on; - this.one = one; - this.open = open; - this.order = order; - this.remove = remove; - this.set = set; - this.show = show; - this.submit = submit; - this.table = table; - this.template = template; - this.title = title; - this.val = val; - this._actionClass = _actionClass; - this._ajax = _ajax; - this._animate = _animate; - this._assembleMain = _assembleMain; - this._blur = _blur; - this._clearDynamicInfo = _clearDynamicInfo; - this._close = _close; - this._closeReg = _closeReg; - this._crudArgs = _crudArgs; - this._dataSource = _dataSource; - this._displayReorder = _displayReorder; - this._edit = _edit; - this._event = _event; - this._eventName = _eventName; - this._fieldFromNode = _fieldFromNode; - this._fieldNames = _fieldNames; - this._focus = _focus; - this._formOptions = _formOptions; - this._inline = _inline; - this._inputTrigger = _inputTrigger; - this._optionsUpdate = _optionsUpdate; - this._message = _message; - this._multiInfo = _multiInfo; - this._nestedClose = _nestedClose; - this._nestedOpen = _nestedOpen; - this._postopen = _postopen; - this._preopen = _preopen; - this._processing = _processing; - this._noProcessing = _noProcessing; - this._submit = _submit; - this._submitTable = _submitTable; - this._submitSuccess = _submitSuccess; - this._submitError = _submitError; - this._tidy = _tidy; - this._weakInArray = _weakInArray; - // Check if called with a window or jQuery object for DOM less applications - // This is for backwards compatibility with CommonJS loader - if (Editor.factory(init, cjsJq)) { - return Editor; - } - if (!(this instanceof Editor)) { - alert('DataTables Editor must be initialised as a \'new\' instance'); - } - init = $.extend(true, {}, Editor.defaults, init); - this.c = init; - this.s = $.extend(true, {}, Editor.models.settings, { - actionName: init.actionName, - ajax: init.ajax, - formOptions: init.formOptions, - idSrc: init.idSrc, - table: init.domTable || init.table, - template: init.template ? - $(init.template).detach() : null - }); - this.classes = $.extend(true, {}, Editor.classes); - this.i18n = init.i18n; - // Increment the unique counter for the next instance - Editor.models.settings.unique++; - var that = this; - var classes = this.classes; - var wrapper = $('
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    '); - var form = $('' + - '
    ' + - ''); - this.dom = { - body: el('body', wrapper)[0], - bodyContent: el('body_content', wrapper)[0], - buttons: $('
    ')[0], - footer: el('foot', wrapper)[0], - form: form[0], - formContent: el('form_content', form)[0], - formError: $('
    ')[0], - formInfo: $('
    ')[0], - header: $('
    ')[0], - processing: el('processing', wrapper)[0], - wrapper: wrapper[0], - }; - // Bind callback methods - $.each(init.events, function (evt, fn) { - that.on(evt, function () { - var argsIn = []; - for (var _i = 0; _i < arguments.length; _i++) { - argsIn[_i] = arguments[_i]; - } - // When giving events in the constructor the event argument was not - // given in 1.2-, so we remove it here. This is solely for - // backwards compatibility as the events in the initialisation are - // not documented in 1.3+. - fn.apply(that, argsIn); - }); - }); - // Cache the DOM nodes - this.dom; - // Add any fields which are given on initialisation - if (init.fields) { - this.add(init.fields); - } - $(document) - .on('init.dt.dte' + this.s.unique, function (e, settings, json) { - // Resolve this reference in the event handlers so the - // table() API method can be used to change it and the - // change still be operated on here. - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Attempt to attach to a DataTable automatically when the table is - // initialised - settings._editor = _this; - } - } - }) - .on('i18n.dt.dte' + this.s.unique, function (e, settings) { - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Use loaded language options - if (settings.oLanguage.editor) { - $.extend(true, _this.i18n, settings.oLanguage.editor); - } - } - } - }) - .on('xhr.dt.dte' + this.s.unique, function (e, settings, json) { - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Automatically update fields which have a field name defined in - // the returned json - saves an `initComplete` for the user - _this._optionsUpdate(json); - } - } - }); - // Prep the display controller - if (!Editor.display[init.display]) { - throw new Error('Cannot find display controller ' + init.display); - } - this.s.displayController = Editor.display[init.display].init(this); - this._event('initComplete', []); - $(document).trigger('initEditor', [this]); - } - // Expose internal methods and options for the Field class to use - // These are not publicly documented. - /** @internal */ - Editor.prototype.internalEvent = function (name, args) { - this._event(name, args); - }; - /** @internal */ - Editor.prototype.internalI18n = function () { - return this.i18n; - }; - /** @internal */ - Editor.prototype.internalMultiInfo = function () { - return this._multiInfo(); - }; - /** @internal */ - Editor.prototype.internalSettings = function () { - return this.s; - }; - Editor.fieldTypes = { - checkbox: checkbox, - datatable: datatable, - datetime: datetime, - hidden: hidden, - password: password, - radio: radio, - readonly: readonly, - select: select, - text: text, - textarea: textarea, - upload: upload, - uploadMany: uploadMany - }; - Editor.files = {}; - Editor.version = '2.1.3'; - Editor.classes = classNames; - Editor.Field = Field; - Editor.DateTime = null; - Editor.error = error; - Editor.pairs = pairs; - Editor.factory = factory; - Editor.upload = upload$1; - Editor.defaults = defaults$1; - Editor.models = { - button: button, - displayController: displayController, - fieldType: fieldType, - formOptions: formOptions, - settings: settings, - }; - Editor.dataSources = { - dataTable: dataSource$1, - html: dataSource, - }; - Editor.display = { - envelope: envelope, - lightbox: self, - }; - Editor.safeId = function (id) { - return safeDomId(id, ''); - }; - return Editor; -}()); -DataTable.Editor = Editor; -$.fn.DataTable.Editor = Editor; -if (DataTable.DateTime) { - Editor.DateTime = DataTable.DateTime; -} -// If there are field types available on DataTables we copy them in (after the -// built in ones to allow overrides) and then expose the field types object. -if (DataTable.ext.editorFields) { - $.extend(Editor.fieldTypes, DataTable.ext.editorFields); -} -DataTable.ext.editorFields = Editor.fieldTypes; - - - -return Editor; -})); diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.min.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.min.js deleted file mode 100644 index 227abd83..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/dataTables.editor.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! DataTables Editor v2.1.3 - * - * ©2012-2023 SpryMedia Ltd, all rights reserved. - * License: editor.datatables.net/license - */ -!function(i){var n,s;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return i(t,window,document)}):"object"==typeof exports?(n=require("jquery"),s=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||n(t),s(t,e),i(e,t,t.document)}:(s(window,n),module.exports=i(n,window,window.document))):i(jQuery,window,document)}(function(w,c,y,E){"use strict";var r=w.fn.dataTable,t={buttons:!0,drawType:!1,focus:0,message:!0,nest:!1,onBackground:"blur",onBlur:"close",onComplete:"close",onEsc:"close",onFieldError:"focus",onReturn:"submit",scope:"row",submit:"all",submitHtml:"▶",submitTrigger:null,title:!0},N={actionName:"action",ajax:null,display:"lightbox",events:{},fields:[],formOptions:{bubble:w.extend({},t,{buttons:"_basic",message:!1,submit:"changed",title:!1}),inline:w.extend({},t,{buttons:!1,submit:"changed"}),main:w.extend({},t)},i18n:{close:"Close",create:{button:"New",submit:"Create",title:"Create new entry"},datetime:{amPm:["am","pm"],hours:"Hour",minutes:"Minute",months:["January","February","March","April","May","June","July","August","September","October","November","December"],next:"Next",previous:"Previous",seconds:"Second",unknown:"-",weekdays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},edit:{button:"Edit",submit:"Update",title:"Edit entry"},error:{system:'A system error has occurred (More information).'},multi:{info:"The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.",noMulti:"This input can be edited individually, but not part of a group.",restore:"Undo changes",title:"Multiple values"},remove:{button:"Delete",confirm:{1:"Are you sure you wish to delete 1 row?",_:"Are you sure you wish to delete %d rows?"},submit:"Delete",title:"Delete"}},idSrc:"DT_RowId",table:null},B={action:null,actionName:"action",ajax:null,bubbleNodes:[],bubbleBottom:!1,closeCb:null,closeIcb:null,dataSource:null,displayController:null,displayed:!1,editCount:0,editData:{},editFields:{},editOpts:{},fields:{},formOptions:{bubble:w.extend({},t),inline:w.extend({},t),main:w.extend({},t)},globalError:"",id:-1,idSrc:null,includeFields:[],mode:null,modifier:null,opts:null,order:[],processing:!1,setFocus:null,table:null,template:null,unique:0},e=w.fn.dataTable.ext.oApi;function L(t){var e,i=[];for(e in t)t.hasOwnProperty(e)&&i.push(e);return i}function a(t,e){return w('*[data-dte-e="'+t+'"]',e=e===E?y:e)}function f(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/(:|\.|\[|\]|,)/g,"\\$1"):e+t}function u(t){return e._fnGetObjectDataFn(t)}function _(t){return e._fnSetObjectDataFn(t)}var d=e._fnExtend;function p(t,i){var n=[];return w.each(t,function(t,e){n.push(e[i])}),n}function M(t,e){if("object"!=typeof t||"object"!=typeof e)return t==e;var i=L(t),n=L(e);if(i.length!==n.length)return!1;for(var s=0,o=i.length;s'),n=[],s=[],o={},r=e.table(E).body(),a=0,l=e.columns(":visible").count();a").appendTo(i),c=W(e,this.s.fields,d,!0),d=e.settings()[0].aoColumns[d].sClass;d&&u.addClass(d),Object.keys(c).length&&(n.push(Object.keys(c)),s.push(u[0]),w.extend(o,c))}function f(){0===e.page.info().recordsDisplay&&w(r).empty(),i["end"===t?"appendTo":"prependTo"](r)}return this.__dtFakeRow=i,f(),e.on("draw.dte-createInline",function(){f()}),{0:{attach:s,attachFields:n,displayFields:o,fields:this.s.fields,type:"row"}}},fakeRowEnd:function(){var t=h(this.s.table);t.off("draw.dte-createInline"),this.__dtFakeRow.remove(),this.__dtFakeRow=null,0===t.page.info().recordsDisplay&&t.draw(!1)},fields:function(t){var e,i,n,s,o,r=u(this.s.idSrc),a=h(this.s.table),l=this.s.fields,d={};return!w.isPlainObject(t)||t.rows===E&&t.columns===E&&t.cells===E?q(d,a,t,l,r):(t.rows!==E&&q(d,a,t.rows,l,r),t.columns!==E&&(e=d,i=a,n=t.columns,s=l,o=r,i.cells(null,n).indexes().each(function(t){H(e,i,t,s,o)})),t.cells!==E&&H(d,a,t.cells,l,r)),d},id:function(t){return u(this.s.idSrc)(t)},individual:function(t,e){var i,n=u(this.s.idSrc),s=h(this.s.table),o=this.s.fields,r={};return e&&(Array.isArray(e)||(e=[e]),i={},w.each(e,function(t,e){i[e]=o[e]})),H(r,s,t,o,n,i),r},prep:function(t,e,i,n,s){var o,r=this;"create"===t&&(s.rowIds=w.map(n.data,function(t){return m.id.call(r,t)})),"edit"===t?(o=n.cancelled||[],s.rowIds=w.map(i.data,function(t,e){return w.isEmptyObject(i.data[e])||-1!==w.inArray(e,o)?E:e})):"remove"===t&&(s.cancelled=n.cancelled||[])},refresh:function(){h(this.s.table).ajax.reload(null,!1)},remove:function(t,e,i){var n,s=this,o=h(this.s.table),r=i.cancelled;(0===r.length?o.rows(t):(n=[],o.rows(t).every(function(){var t=m.id.call(s,this.data());-1===w.inArray(t,r)&&n.push(this.index())}),o.rows(n))).remove()}};function z(t){if("keyless"===t)return w(y);var e=w('[data-editor-id="'+t+'"]');if(0===(e=0===e.length?w("string"==typeof t?f(t):t):e).length)throw new Error("Could not find an element with `data-editor-id` or `id` of: "+t);return e}function G(t,e){t=z(t);return w('[data-editor-field="'+e+'"]',t)}function J(n,t,s){w.each(t,function(t,e){var i=e.valFromData(s);i!==E&&((e=G(n,e.dataSrc())).filter("[data-editor-value]").length?e.attr("data-editor-value",i):e.each(function(){for(;this.childNodes.length;)this.removeChild(this.firstChild)}).html(i))})}var l={create:function(t,e){if(e){var i=l.id.call(this,e);try{z(i).length&&J(i,t,e)}catch(t){}}},edit:function(t,e,i){J(l.id.call(this,i)||"keyless",e,i)},fields:function(s){var t={};if(Array.isArray(s))for(var e=0,i=s.length;e
    ')[0],close:w('
    ')[0],content:null,wrapper:w('
    ')[0]};function Q(t){var e=w("div.DTE_Header",b.wrapper).outerHeight(),i=w("div.DTE_Footer",b.wrapper).outerHeight(),e=w(c).height()-2*g.conf.windowPadding-e-i;return w("div.DTE_Body_Content",b.wrapper).css("maxHeight",e),w(t.dom.wrapper).outerHeight()}function Z(t,e){e=e||function(){},v&&(w(b.content).animate({top:-(b.content.offsetHeight+50)},600,function(){w([b.wrapper,b.background]).fadeOut("normal",function(){w(this).detach(),e()})}),v=!1)}function K(e,t){var i,n,s,o,r;t=t||function(){},w("body").append(b.background).append(b.wrapper),b.content.style.height="auto",v||((i=b.wrapper.style).opacity="0",i.display="block",n=Q(e),s=e,o=g.conf.attach,r=new w.fn.dataTable.Api(s.s.table),r=(o="head"===o||"create"===s.s.action?r.table(E).header():r.row(s.s.modifier).node()).offsetWidth,i.display="none",i.opacity="1",b.wrapper.style.width=r+"px",b.wrapper.style.marginLeft=-r/2+"px",b.wrapper.style.top=w(o).offset().top+o.offsetHeight+"px",b.content.style.top=-1*n-20+"px",b.background.style.opacity="0",b.background.style.display="block",w(b.background).animate({opacity:$},"normal"),w(b.wrapper).fadeIn(),w(b.content).animate({top:0},600,t)),w(b.close).attr("title",e.i18n.close).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.close()}),w(b.background).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.background()}),w("div.DTED_Lightbox_Content_Wrapper",b.wrapper).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){w(t.target).hasClass("DTED_Envelope_Content_Wrapper")&&e.background()}),w(c).off("resize.DTED_Envelope").on("resize.DTED_Envelope",function(){Q(e)}),v=!0}var g={close:function(t,e){Z(0,e)},conf:{attach:"row",windowPadding:50},destroy:function(t){Z()},init:function(t){return b.content=w("div.DTED_Envelope_Container",b.wrapper)[0],$=w(b.background).css("opacity"),g},node:function(t){return b.wrapper[0]},open:function(t,e,i){w(b.content).children().detach(),b.content.appendChild(e),b.content.appendChild(b.close),K(t,i)}};function Y(){return void 0!==c.orientation&&c.outerWidth<=576}var o=!1,tt=!1,et=0,T={background:w('
    '),close:w('
    '),content:null,wrapper:w('
    ')};function it(){var t=w("div.DTE_Header",T.wrapper).outerHeight()+w("div.DTE_Footer",T.wrapper).outerHeight();Y()?w("div.DTE_Body_Content",T.wrapper).css("maxHeight","calc(100vh - "+t+"px)"):(t=w(c).height()-2*D.conf.windowPadding-t,w("div.DTE_Body_Content",T.wrapper).css("maxHeight",t))}function nt(t,e){e=e||function(){},w("body").scrollTop(et),t._animate(T.wrapper,{opacity:0,top:D.conf.offsetAni},function(){w(this).detach(),e()}),t._animate(T.background,{opacity:0},function(){w(this).detach()}),o=!1,w(c).off("resize.DTED_Lightbox")}var D={close:function(t,e){nt(t,e)},conf:{offsetAni:25,windowPadding:25},destroy:function(t){o&&nt(t)},init:function(t){return tt||(T.content=w("div.DTED_Lightbox_Content",T.wrapper),T.wrapper.css("opacity",0),T.background.css("opacity",0),tt=!0),D},node:function(t){return T.wrapper[0]},open:function(t,e,i){var n,s=T.content;s.children().detach(),s.append(e).append(T.close),n=t,s=i,Y()&&w("body").addClass("DTED_Lightbox_Mobile"),w("body").append(T.background).append(T.wrapper),it(),o||(o=!0,T.content.css("height","auto"),T.wrapper.css({top:-D.conf.offsetAni}),n._animate(T.wrapper,{opacity:1,top:0},s),n._animate(T.background,{opacity:1}),w(c).on("resize.DTED_Lightbox",function(){it()}),et=w("body").scrollTop()),T.close.attr("title",n.i18n.close).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){n.close()}),T.background.off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){t.stopImmediatePropagation(),n.background()}),w("div.DTED_Lightbox_Content_Wrapper",T.wrapper).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){w(t.target).hasClass("DTED_Lightbox_Content_Wrapper")&&(t.stopImmediatePropagation(),n.background())})}},st=w.fn.dataTable;function ot(t,e,i){if(void 0===i&&(i=!0),Array.isArray(t)){e!==E&&t.reverse();for(var n=0,s=t;n
    '),n=w('
    '),t=(a&&(n.appendTo("body"),i.appendTo("body")),n.children().eq(0)),s=t.children(),o=s.children(),r=(t.append(u.dom.formError),s.prepend(u.dom.form),l.message&&t.prepend(u.dom.formInfo),l.title&&t.prepend(u.dom.header),l.buttons&&s.append(u.dom.buttons),w().add(n).add(i));u._closeReg(function(t){u._animate(r,{opacity:0},function(){this===n[0]&&(r.detach(),w(c).off("resize."+e+" scroll."+e),u._clearDynamicInfo(),u._event("closed",["bubble"]))})}),i.on("click",function(){u.blur()}),o.on("click",function(){u._close()}),u.bubblePosition(),u._postopen("bubble",!1);u._animate(r,{opacity:1},function(){this===n[0]&&(u._focus(u.s.includeFields,l.focus),u._event("opened",["bubble",u.s.action]))})})),this}function ut(){var t=w("div.DTE_Bubble"),e=w("div.DTE_Bubble_Liner"),i=this.s.bubbleNodes,n={bottom:0,left:0,right:0,top:0},i=(w.each(i,function(t,e){var i=w(e).offset();e=w(e).get(0),n.top+=i.top,n.left+=i.left,n.right+=i.left+e.offsetWidth,n.bottom+=i.top+e.offsetHeight}),n.top/=i.length,n.left/=i.length,n.right/=i.length,n.bottom/=i.length,n.top),s=(n.left+n.right)/2,o=e.outerWidth(),r=e.outerHeight(),a=s-o/2,o=a+o,l=w(c).width(),d=w(c).scrollTop(),s=(t.css({left:s,top:this.s.bubbleBottom?n.bottom:i}),this.s.bubbleBottom&&t.addClass("below"),t.position());return e.length&&s.top+r>d+c.innerHeight?(t.css("top",i).removeClass("below"),this.s.bubbleBottom=!1):e.length&&s.top-r",{class:o.classes.form.button+(e.className?" "+e.className:"")}).html("function"==typeof i?i(o):i||"").attr("tabindex",e.tabIndex!==E?e.tabIndex:0).attr(s).on("keyup",function(t){13===t.which&&n&&n.call(o)}).on("keypress",function(t){13===t.which&&t.preventDefault()}).on("click",function(t){t.preventDefault(),n&&n.call(o,t)}).appendTo(o.dom.buttons)}),this}function ft(t){var i=this,e=this.s.fields;return"string"==typeof t?(i.field(t).destroy(),delete e[t],e=w.inArray(t,this.s.order),this.s.order.splice(e,1),-1!==(e=w.inArray(t,this.s.includeFields))&&this.s.includeFields.splice(e,1)):w.each(this._fieldNames(t),function(t,e){i.clear(e)}),this}function pt(){return this._close(!1),this}function ht(t,e,i,n){var s=this,o=this,r=this.s.fields,a=1;if(!this._tidy(function(){o.create(t,e,i,n)})){"number"==typeof t&&(a=t,t=e,e=i),this.s.editFields={};for(var l=0;lUploading file"),u.onload=function(t){var e,i=new FormData;if(i.append("action","upload"),i.append("uploadField",r.name),i.append("upload",a[c]),r.ajaxData&&r.ajaxData(i,a[c],c),r.ajax?e=r.ajax:w.isPlainObject(o.s.ajax)?e=o.s.ajax.upload||o.s.ajax:"string"==typeof o.s.ajax&&(e=o.s.ajax),!e)throw new Error("No Ajax option specified for upload plug-in");if("function"==typeof(e="string"==typeof e?{url:e}:e).data){var n={},s=e.data(n);w.each(n=s!==E&&"string"!=typeof s?s:n,function(t,e){i.append(t,e)})}else if(w.isPlainObject(e.data))throw new Error("Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.");o._event("preUpload",[r.name,a[c],i],function(t){var s;!1===t?c
    ')),m.find("div."+o.liner.replace(/ /g,".")).append(h.field.node()).append(this.dom.formError),n=h.field.node(),e.buttons&&m.find("div."+o.buttons.replace(/ /g,".")).append(this.dom.buttons)}var b=this._inputTrigger("submit",e,n),_=this._inputTrigger("cancel",e,n);this._closeReg(function(t,e){return s=!0,w(y).off("click"+c),t&&"edit"===e||l.forEach(function(t){t.node.contents().detach(),t.node.append(t.children)}),b(),_(),a._clearDynamicInfo(),i&&i(),"inline"}),setTimeout(function(){var o,r;s||(o=w.fn.addBack?"addBack":"andSelf",w(y).on("mousedown"+c,function(t){r=t.target}).on("keydown"+c,function(t){r=t.target}).on("click"+c,function(t){for(var e=!1,i=0,n=l;i")),this._event("submitUnsuccessful",[t]),l&&l.call(this,t)}else{var m={};if(!t.data||"create"!==s&&"edit"!==s)"remove"===s&&(this._dataSource("prep",s,p,n,t,m),this._event("preRemove",[t,this.ids()]),this._dataSource("remove",p,c,m),this._event(["remove","postRemove"],[t,this.ids()]),this._dataSource("commit",s,p,t.data,m));else{this._dataSource("prep",s,p,n,t,m);for(var v=0,b=t.data;v
    ');return e._input=r,e._enabled=!0,e.id&&r.find("input[type=file]").attr("id",P.safeId(e.id)),e.attr&&r.find("input[type=file]").attr(e.attr),He(e),c.FileReader&&!1!==e.dragDrop?(r.find("div.drop span").text(e.dragDropText||"Drag and drop a file here to upload"),(s=r.find("div.drop")).on("drop",function(t){return e._enabled&&(P.upload(i,e,t.originalEvent.dataTransfer.files,He,n),s.removeClass("over")),!1}).on("dragleave dragexit",function(t){return e._enabled&&s.removeClass("over"),!1}).on("dragover",function(t){return e._enabled&&s.addClass("over"),!1}),i.on("open",function(){w("body").on("dragover.DTE_Upload drop.DTE_Upload",function(t){return!1})}).on("close",function(){w("body").off("dragover.DTE_Upload drop.DTE_Upload")})):(r.addClass("noDrop"),r.append(r.find("div.rendered"))),r.find("div.clearValue button").on("click",function(t){t.preventDefault(),e._enabled&&Qe.set.call(i,e,"")}),r.find("input[type=file]").on("input",function(){P.upload(i,e,this.files,He,function(t,e){e||n.call(i,t),r.find("input[type=file]")[0].value=""})}),r}function C(t){setTimeout(function(){t.trigger("change",{editor:!0,editorSet:!0})},0)}var i=w.extend(!0,{},Ve,{canReturnSubmit:function(t,e){return!0},disable:function(t){t._input.prop("disabled",!0)},enable:function(t){t._input.prop("disabled",!1)},get:function(t){return t._input.val()},set:function(t,e){t._input.val(e),C(t._input)}}),We={create:function(t){return t._input=w(""),t._val=t.value,null},get:function(t){return t._val},set:function(t,e){var i=t._val;t._val=e,t._input.val(e),i!==e&&C(t._input)}},ze=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),readonly:"readonly",type:"text"},t.attr||{})),t._input[0]}}),Ge=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),type:"text"},t.attr||{})),t._input[0]}}),Je=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),type:"password"},t.attr||{})),t._input[0]}}),Xe=w.extend(!0,{},i,{canReturnSubmit:function(t,e){return!1},create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id)},t.attr||{})),t._input[0]}}),n=w.extend(!0,{},i,{_addOptions:function(t,e,i){var n,s=t._input[0].options,o=0;(i=void 0===i?!1:i)?o=s.length:(s.length=0,t.placeholder!==E&&(i=t.placeholderValue!==E?t.placeholderValue:"",o+=1,s[0]=new Option(t.placeholder,i),n=t.placeholderDisabled===E||t.placeholderDisabled,s[0].hidden=n,s[0].disabled=n,s[0]._editor_val=i)),e&&P.pairs(e,t.optionsPair,function(t,e,i,n){e=new Option(e,t);e._editor_val=t,n&&w(e).attr(n),s[i+o]=e})},create:function(i){return i._input=w("").attr(w.extend({id:P.safeId(i.id),multiple:!0===i.multiple},i.attr||{})).on("change.dte",function(t,e){e&&e.editor||(i._lastSet=n.get(i))}),n._addOptions(i,i.options||i.ipOpts),i._input[0]},destroy:function(t){t._input.off("change.dte")},get:function(t){var e=t._input.find("option:selected").map(function(){return this._editor_val}).toArray();return t.multiple?t.separator?e.join(t.separator):e:e.length?e[0]:null},set:function(t,e,i){i||(t._lastSet=e),t.multiple&&t.separator&&!Array.isArray(e)?e="string"==typeof e?e.split(t.separator):[]:Array.isArray(e)||(e=[e]);var n,s,o=e.length,r=!1,a=t._input.find("option");return t._input.find("option").each(function(){for(s=!1,n=0;n"),w("input:last",o).attr("value",t)[0]._editor_val=t,n&&w("input:last",o).attr(n)})},create:function(t){return t._input=w("
    "),s._addOptions(t,t.options||t.ipOpts),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=[],i=t._input.find("input:checked");return i.length?i.each(function(){e.push(this._editor_val)}):t.unselectedValue!==E&&e.push(t.unselectedValue),t.separator===E||null===t.separator?e:e.join(t.separator)},set:function(t,e){var i,n,s=t._input.find("input"),o=(Array.isArray(e)||"string"!=typeof e?Array.isArray(e)||(e=[e]):e=e.split(t.separator||"|"),e.length);s.each(function(){for(n=!1,i=0;i"),w("input:last",o).attr("value",t)[0]._editor_val=t,n&&w("input:last",o).attr(n)})},create:function(t){return t._input=w("
    "),k._addOptions(t,t.options||t.ipOpts),this.on("open",function(){t._input.find("input").each(function(){this._preChecked&&(this.checked=!0)})}),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=t._input.find("input:checked");return e.length?e[0]._editor_val:t.unselectedValue!==E?t.unselectedValue:E},set:function(t,e){t._input.find("input").each(function(){this._preChecked=!1,this._editor_val==e?(this.checked=!0,this._preChecked=!0):(this.checked=!1,this._preChecked=!1)}),C(t._input.find("input:checked"))},update:function(t,e,i){var n=k.get(t),e=(k._addOptions(t,e,i),t._input.find("input"));k.set(t,e.filter('[value="'+n+'"]').length?n:e.eq(0).attr("value"))}}),$e=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend(!0,{id:P.safeId(t.id),type:"text"},t.attr)),x.DateTime||P.error("DateTime library is required",15),t.momentLocale&&!t.opts.locale&&(t.opts.locale=t.momentLocale),t.momentStrict&&!t.opts.strict&&(t.opts.strict=t.momentStrict),t._picker=new x.DateTime(t._input,w.extend({format:t.displayFormat||t.format,i18n:this.i18n.datetime},t.opts)),!(t._closeFn=function(){t._picker.hide()})===t.keyInput&&t._input.on("keydown",function(t){t.preventDefault()}),this.on("close",t._closeFn),t._input[0]},destroy:function(t){this.off("close",t._closeFn),t._input.off("keydown"),t._picker.destroy()},errorMessage:function(t,e){t._picker.errorMsg(e)},get:function(t){return t.wireFormat?t._picker.valFormat(t.wireFormat):t._input.val()},maxDate:function(t,e){t._picker.max(e)},minDate:function(t,e){t._picker.min(e)},owns:function(t,e){return t._picker.owns(e)},set:function(t,e){"string"==typeof e&&e&&0!==e.indexOf("--")&&t.wireFormat?t._picker.valFormat(t.wireFormat,e):t._picker.val(e),C(t._input)}}),Qe=w.extend(!0,{},i,{canReturnSubmit:function(t,e){return!1},create:function(e){var i=this;return qe(i,e,function(t){Qe.set.call(i,e,t[0]),i._event("postUpload",[e.name,t[0]])})},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(t,e){t._val=e,t._input.val("");var i=t._input,n=(t.display&&(n=i.find("div.rendered"),t._val?n.html(t.display(t._val)):n.empty().append(""+(t.noFileText||"No file")+"")),i.find("div.clearValue button"));e&&t.clearText?(n.html(t.clearText),i.removeClass("noClear")):i.addClass("noClear"),t._input.find("input").triggerHandler("upload.editor",[t._val])}}),F=w.extend(!0,{},i,{_showHide:function(t){t.limit&&(t._container.find("div.limitHide").css("display",t._val.length>=t.limit?"none":"block"),t._limitLeft=t.limit-t._val.length)},canReturnSubmit:function(t,e){return!1},create:function(e){var i=this,t=qe(i,e,function(t){e._val=e._val.concat(t),F.set.call(i,e,e._val),i._event("postUpload",[e.name,e._val])},!0);return t.addClass("multi").on("click","button.remove",function(t){t.stopPropagation(),e._enabled&&(t=w(this).data("idx"),e._val.splice(t,1),F.set.call(i,e,e._val))}),e._container=t},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(i,t){if(t=t||[],!Array.isArray(t))throw new Error("Upload collections must have an array as a value");i._val=t,i._input.val("");var n,s=this,e=i._input;i.display&&(e=e.find("div.rendered").empty(),t.length?(n=w("
      ").appendTo(e),w.each(t,function(t,e){e=i.display(e,t);null!==e&&n.append("
    • "+e+'
    • ')})):e.append(""+(i.noFileText||"No files")+"")),F._showHide(i),i._input.find("input").triggerHandler("upload.editor",[i._val])}}),A=w.extend(!0,{},i,{_addOptions:function(t,e,i){t=t.dt;(i=void 0===i?!1:i)||t.clear(),t.rows.add(e).draw()},_jumpToFirst:function(t,e){function i(){var t=s.row({order:"applied",selected:!0}).node();t&&r.height()-10<(t=w(t).position().top)&&r.scrollTop(t)}var n,s=t.dt,t=s.row({order:"applied",selected:!0}).index(),o=0,r=("number"==typeof t&&(n=s.page.info().length,t=s.rows({order:"applied"}).indexes().indexOf(t),o=0")),t=w("
      ").append(n),s=w('
      '),l=(r.footer&&w("
      ").html(t)})):r.footer).appendTo(n),n.addClass(A.tableClass).width("100%").on("init.dt",function(t,e){var i;e.nTable===n[0]&&(e=new x.Api(e),i=w(e.table(E).container()),x.select.init(e),s.append(i.find("div.dataTables_filter")).append(i.find("div.dt-buttons")).append(i.find("div.dataTables_info")))}).DataTable(w.extend({buttons:[],columns:[{data:r.optionsPair.label,title:"Label"}],deferRender:!0,dom:"fiBtp",language:{paginate:{next:">",previous:"<"},search:"",searchPlaceholder:"Search"},lengthChange:!1,select:{style:r.multiple?"os":"single"}},r.config)));return this.on("open",function(){l.search()&&l.search("").draw(),l.columns.adjust()}),l.on("user-select",function(){C(w(r.dt.table().container()))}),r.editor&&(r.editor.table(l),r.editor.on("submitComplete",function(t,e,i,n){if("create"===n)for(var s=0,o=e.data;s").replace(/</g,"<").replace(/&/g,"&").replace(/"/g,'"').replace(/£/g,"£").replace(/�?39;/g,"'").replace(/�?10;/g,"\n")}this.s.multiValue=!1;var n=this.s.opts.entityDecode;if(n===E||!0===n)if(Array.isArray(t))for(var s=0,o=t.length;s
      '+s.title+''+s.info+'
      '+s.restore+'
      '+o.message+'
      '+o.fieldInfo+'
      '),t=this._typeFn("create",o),i=null;t&&t.side&&(i=t.side,t=t.input),null!==t?a("input-control",r).prepend(t):r.css("display","none"),this.dom={container:r,fieldError:a("msg-error",r),fieldInfo:a("msg-info",r),fieldMessage:a("msg-message",r),inputControl:a("input-control",r),label:a("label",r).append(i),labelInfo:a("msg-label",r),multi:a("multi-value",r),multiInfo:a("multi-info",r),multiReturn:a("msg-multi",r),processing:a("field-processing",r)},this.dom.multi.on("click",function(){n.s.opts.multiEditable&&!r.hasClass(e.disabled)&&"readonly"!==o.type&&(n.val(""),n.focus())}),this.dom.multiReturn.on("click",function(){n.multiRestore()}),w.each(this.s.type,function(e,t){"function"==typeof t&&n[e]===E&&(n[e]=function(){var t=Array.prototype.slice.call(arguments),t=(t.unshift(e),n._typeFn.apply(n,t));return t===E?n:t})})}var Ke={action:null,className:null,tabIndex:0,text:null},Ye={close:function(){},init:function(){},node:function(){},open:function(){}},S=w.fn.dataTable.Api.register;function I(t){t=t.context[0];return t.oInit.editor||t._editor}function j(t,e,i,n){return(e=e||{}).buttons===E&&(e.buttons="_basic"),e.title===E&&(e.title=t.i18n[i].title),e.message===E&&("remove"===i?(t=t.i18n[i].confirm,e.message=1!==n?t._.replace(/%d/,n):t[1]):e.message=""),e}S("editor()",function(){return I(this)}),S("row.create()",function(t){var e=I(this);return e.create(j(e,t,"create")),this}),S("row().edit()",function(t){var e=I(this);return e.edit(this[0][0],j(e,t,"edit")),this}),S("rows().edit()",function(t){var e=I(this);return e.edit(this[0],j(e,t,"edit")),this}),S("row().delete()",function(t){var e=I(this);return e.remove(this[0][0],j(e,t,"remove",1)),this}),S("rows().delete()",function(t){var e=I(this);return e.remove(this[0],j(e,t,"remove",this[0].length)),this}),S("cell().edit()",function(t,e){return t?w.isPlainObject(t)&&(e=t,t="inline"):t="inline",I(this)[t](this[0][0],e),this}),S("cells().edit()",function(t){return I(this).bubble(this[0],t),this}),S("file()",kt),S("files()",Ft),w(y).on("xhr.dt",function(t,e,i){"dt"===t.namespace&&i&&i.files&&w.each(i.files,function(t,e){P.files[t]||(P.files[t]={}),w.extend(P.files[t],e)})});var P,S=w.fn.dataTable.ext.buttons;if(w.extend(S,{create:{action:function(t,e,i,n){var s=this,o=n.editor;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).create(w.extend({buttons:n.formButtons,message:n.formMessage||o.i18n.create.message,nest:!0,title:n.formTitle||o.i18n.create.title},n.formOptions))},className:"buttons-create",editor:null,formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.create.submit}},formMessage:null,formOptions:{},formTitle:null,text:function(t,e,i){return t.i18n("buttons.create",i.editor.i18n.create.button)}},createInline:{action:function(t,e,i,n){n.editor.inlineCreate(n.position,n.formOptions)},className:"buttons-create",editor:null,formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.create.submit}},formOptions:{},position:"start",text:function(t,e,i){return t.i18n("buttons.create",i.editor.i18n.create.button)}},edit:{action:function(t,e,i,n){var s=this,o=n.editor,r=e.rows({selected:!0}).indexes(),a=e.columns({selected:!0}).indexes(),e=e.cells({selected:!0}).indexes(),e=a.length||e.length?{cells:e,columns:a,rows:r}:r;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).edit(e,w.extend({buttons:n.formButtons,message:n.formMessage||o.i18n.edit.message,nest:!0,title:n.formTitle||o.i18n.edit.title},n.formOptions))},className:"buttons-edit",editor:null,extend:"selected",formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.edit.submit}},formMessage:null,formOptions:{},formTitle:null,text:function(t,e,i){return t.i18n("buttons.edit",i.editor.i18n.edit.button)}},remove:{action:function(t,e,i,n){var s=this,o=n.editor;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).remove(e.rows({selected:!0}).indexes(),w.extend({buttons:n.formButtons,message:n.formMessage,nest:!0,title:n.formTitle||o.i18n.remove.title},n.formOptions))},className:"buttons-remove",editor:null,extend:"selected",formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.remove.submit}},formMessage:function(t,e){e=e.rows({selected:!0}).indexes(),t=t.i18n.remove;return("string"==typeof t.confirm?t.confirm:t.confirm[e.length]||t.confirm._).replace(/%d/g,e.length)},formOptions:{},formTitle:null,limitTo:["rows"],text:function(t,e,i){return t.i18n("buttons.remove",i.editor.i18n.remove.button)}}}),S.editSingle=w.extend({},S.edit),S.editSingle.extend="selectedSingle",S.removeSingle=w.extend({},S.remove),S.removeSingle.extend="selectedSingle",r&&r.versionCheck&&r.versionCheck("1.10.20"))return R.prototype.internalEvent=function(t,e){this._event(t,e)},R.prototype.internalI18n=function(){return this.i18n},R.prototype.internalMultiInfo=function(){return this._multiInfo()},R.prototype.internalSettings=function(){return this.s},R.fieldTypes={checkbox:s,datatable:A,datetime:$e,hidden:We,password:Je,radio:k,readonly:ze,select:n,text:Ge,textarea:Xe,upload:Qe,uploadMany:F},R.files={},R.version="2.1.3",R.classes=X,R.Field=i,R.DateTime=null,R.error=te,R.pairs=ee,R.factory=ne,R.upload=ie,R.defaults=N,R.models={button:Ke,displayController:Ye,fieldType:Ve,formOptions:t,settings:B},R.dataSources={dataTable:m,html:l},R.display={envelope:g,lightbox:D},R.safeId=function(t){return void 0===(e="")&&(e="#"),"string"==typeof(t=t)?e+t.replace(/\./g,"-"):e+t;var e},P=R,r.Editor=P,w.fn.DataTable.Editor=P,r.DateTime&&(P.DateTime=r.DateTime),r.ext.editorFields&&w.extend(P.fieldTypes,r.ext.editorFields),r.ext.editorFields=P.fieldTypes,P;throw new Error("Editor requires DataTables 1.10.20 or newer");function R(t,e){var s=this;if(this.add=ot,this.ajax=rt,this.background=at,this.blur=lt,this.bubble=dt,this.bubblePosition=ut,this.buttons=ct,this.clear=ft,this.close=pt,this.create=ht,this.undependent=mt,this.dependent=vt,this.destroy=bt,this.disable=_t,this.display=yt,this.displayed=gt,this.displayNode=wt,this.edit=Et,this.enable=Tt,this.error=Dt,this.field=xt,this.fields=Ct,this.file=kt,this.files=Ft,this.get=At,this.hide=Ot,this.ids=St,this.inError=It,this.inline=jt,this.inlineCreate=Pt,this.message=Rt,this.mode=Nt,this.modifier=Bt,this.multiGet=Lt,this.multiSet=Mt,this.node=Ut,this.off=Vt,this.on=Ht,this.one=qt,this.open=Wt,this.order=zt,this.remove=Gt,this.set=Jt,this.show=Xt,this.submit=$t,this.table=Qt,this.template=Zt,this.title=Kt,this.val=Yt,this._actionClass=re,this._ajax=ae,this._animate=le,this._assembleMain=de,this._blur=ue,this._clearDynamicInfo=ce,this._close=fe,this._closeReg=pe,this._crudArgs=he,this._dataSource=me,this._displayReorder=ve,this._edit=be,this._event=_e,this._eventName=ye,this._fieldFromNode=ge,this._fieldNames=we,this._focus=Ee,this._formOptions=Te,this._inline=De,this._inputTrigger=xe,this._optionsUpdate=Ce,this._message=ke,this._multiInfo=Fe,this._nestedClose=Ae,this._nestedOpen=Oe,this._postopen=Se,this._preopen=Ie,this._processing=je,this._noProcessing=Pe,this._submit=Re,this._submitTable=Ne,this._submitSuccess=Be,this._submitError=Le,this._tidy=Me,this._weakInArray=Ue,R.factory(t,e))return R;this instanceof R||alert("DataTables Editor must be initialised as a 'new' instance"),t=w.extend(!0,{},R.defaults,t),this.c=t,this.s=w.extend(!0,{},R.models.settings,{actionName:t.actionName,ajax:t.ajax,formOptions:t.formOptions,idSrc:t.idSrc,table:t.domTable||t.table,template:t.template?w(t.template).detach():null}),this.classes=w.extend(!0,{},R.classes),this.i18n=t.i18n,R.models.settings.unique++;var n=this,e=this.classes,i=w('
      '),o=w('
      ');if(this.dom={body:a("body",i)[0],bodyContent:a("body_content",i)[0],buttons:w('
      ')[0],footer:a("foot",i)[0],form:o[0],formContent:a("form_content",o)[0],formError:w('
      ')[0],formInfo:w('
      ')[0],header:w('
      ')[0],processing:a("processing",i)[0],wrapper:i[0]},w.each(t.events,function(t,i){n.on(t,function(){for(var t=[],e=0;eMore information).'},multi:{info:"The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.",noMulti:"This input can be edited individually, but not part of a group.",restore:"Undo changes",title:"Multiple values"},remove:{button:"Delete",confirm:{1:"Are you sure you wish to delete 1 row?",_:"Are you sure you wish to delete %d rows?"},submit:"Delete",title:"Delete"}},idSrc:"DT_RowId",table:null},settings={action:null,actionName:"action",ajax:null,bubbleNodes:[],bubbleBottom:!1,closeCb:null,closeIcb:null,dataSource:null,displayController:null,displayed:!1,editCount:0,editData:{},editFields:{},editOpts:{},fields:{},formOptions:{bubble:$.extend({},formOptions),inline:$.extend({},formOptions),main:$.extend({},formOptions)},globalError:"",id:-1,idSrc:null,includeFields:[],mode:null,modifier:null,opts:null,order:[],processing:!1,setFocus:null,table:null,template:null,unique:0},DataTable$6=$.fn.dataTable,DtInternalApi=DataTable$6.ext.oApi;function objectKeys(t){var e,i=[];for(e in t)t.hasOwnProperty(e)&&i.push(e);return i}function el(t,e){return void 0===e&&(e=document),$('*[data-dte-e="'+t+'"]',e)}function safeDomId(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/\./g,"-"):e+t}function safeQueryId(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/(:|\.|\[|\]|,)/g,"\\$1"):e+t}function dataGet(t){return DtInternalApi._fnGetObjectDataFn(t)}function dataSet(t){return DtInternalApi._fnSetObjectDataFn(t)}var extend=DtInternalApi._fnExtend;function pluck(t,i){var n=[];return $.each(t,function(t,e){n.push(e[i])}),n}function deepCompare(t,e){if("object"!=typeof t||"object"!=typeof e)return t==e;var i=objectKeys(t),n=objectKeys(e);if(i.length!==n.length)return!1;for(var o=0,s=i.length;o'),n=[],o=[],s={},a=e.table(void 0).body(),r=0,l=e.columns(":visible").count();r").appendTo(i),c=_dtFieldsFromIdx(e,this.s.fields,d,!0),d=e.settings()[0].aoColumns[d].sClass;d&&u.addClass(d),Object.keys(c).length&&(n.push(Object.keys(c)),o.push(u[0]),$.extend(s,c))}function p(){0===e.page.info().recordsDisplay&&$(a).empty(),i["end"===t?"appendTo":"prependTo"](a)}return this.__dtFakeRow=i,p(),e.on("draw.dte-createInline",function(){p()}),{0:{attach:o,attachFields:n,displayFields:s,fields:this.s.fields,type:"row"}}},fakeRowEnd:function(){var t=_dtApi(this.s.table);t.off("draw.dte-createInline"),this.__dtFakeRow.remove(),this.__dtFakeRow=null,0===t.page.info().recordsDisplay&&t.draw(!1)},fields:function(t){var e=dataGet(this.s.idSrc),i=_dtApi(this.s.table),n=this.s.fields,o={};return!$.isPlainObject(t)||void 0===t.rows&&void 0===t.columns&&void 0===t.cells?_dtRowSelector(o,i,t,n,e):(void 0!==t.rows&&_dtRowSelector(o,i,t.rows,n,e),void 0!==t.columns&&_dtColumnSelector(o,i,t.columns,n,e),void 0!==t.cells&&_dtCellSelector(o,i,t.cells,n,e)),o},id:function(t){return dataGet(this.s.idSrc)(t)},individual:function(t,e){var i,n=dataGet(this.s.idSrc),o=_dtApi(this.s.table),s=this.s.fields,a={};return e&&(Array.isArray(e)||(e=[e]),i={},$.each(e,function(t,e){i[e]=s[e]})),_dtCellSelector(a,o,t,s,n,i),a},prep:function(t,e,i,n,o){var s,a=this;"create"===t&&(o.rowIds=$.map(n.data,function(t){return dataSource$1.id.call(a,t)})),"edit"===t?(s=n.cancelled||[],o.rowIds=$.map(i.data,function(t,e){return $.isEmptyObject(i.data[e])||-1!==$.inArray(e,s)?void 0:e})):"remove"===t&&(o.cancelled=n.cancelled||[])},refresh:function(){_dtApi(this.s.table).ajax.reload(null,!1)},remove:function(t,e,i){var n,o=this,s=_dtApi(this.s.table),a=i.cancelled;(0===a.length?s.rows(t):(n=[],s.rows(t).every(function(){var t=dataSource$1.id.call(o,this.data());-1===$.inArray(t,a)&&n.push(this.index())}),s.rows(n))).remove()}};function _htmlId(t){if("keyless"===t)return $(document);var e=$('[data-editor-id="'+t+'"]');if(0===(e=0===e.length?"string"==typeof t?$(safeQueryId(t)):$(t):e).length)throw new Error("Could not find an element with `data-editor-id` or `id` of: "+t);return e}function _htmlEl(t,e){t=_htmlId(t);return $('[data-editor-field="'+e+'"]',t)}function _htmlEls(t,e){for(var i=$(),n=0,o=e.length;n
      ')[0],close:$('
      ')[0],content:null,wrapper:$('
      ')[0]};function findAttachRow(t,e){var i=new $.fn.dataTable.Api(t.s.table);return"head"===e||"create"===t.s.action?i.table(void 0).header():i.row(t.s.modifier).node()}function heightCalc$1(t){var e=$("div.DTE_Header",dom$1.wrapper).outerHeight(),i=$("div.DTE_Footer",dom$1.wrapper).outerHeight(),e=$(window).height()-2*envelope.conf.windowPadding-e-i;return $("div.DTE_Body_Content",dom$1.wrapper).css("maxHeight",e),$(t.dom.wrapper).outerHeight()}function hide$2(t,e){e=e||function(){},displayed$2&&($(dom$1.content).animate({top:-(dom$1.content.offsetHeight+50)},600,function(){$([dom$1.wrapper,dom$1.background]).fadeOut("normal",function(){$(this).detach(),e()})}),displayed$2=!1)}function init$1(){dom$1.content=$("div.DTED_Envelope_Container",dom$1.wrapper)[0],cssBackgroundOpacity=$(dom$1.background).css("opacity")}function show$2(e,t){var i,n,o,s;t=t||function(){},$("body").append(dom$1.background).append(dom$1.wrapper),dom$1.content.style.height="auto",displayed$2||((i=dom$1.wrapper.style).opacity="0",i.display="block",n=heightCalc$1(e),s=(o=findAttachRow(e,envelope.conf.attach)).offsetWidth,i.display="none",i.opacity="1",dom$1.wrapper.style.width=s+"px",dom$1.wrapper.style.marginLeft=-s/2+"px",dom$1.wrapper.style.top=$(o).offset().top+o.offsetHeight+"px",dom$1.content.style.top=-1*n-20+"px",dom$1.background.style.opacity="0",dom$1.background.style.display="block",$(dom$1.background).animate({opacity:cssBackgroundOpacity},"normal"),$(dom$1.wrapper).fadeIn(),$(dom$1.content).animate({top:0},600,t)),$(dom$1.close).attr("title",e.i18n.close).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.close()}),$(dom$1.background).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.background()}),$("div.DTED_Lightbox_Content_Wrapper",dom$1.wrapper).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){$(t.target).hasClass("DTED_Envelope_Content_Wrapper")&&e.background()}),$(window).off("resize.DTED_Envelope").on("resize.DTED_Envelope",function(){heightCalc$1(e)}),displayed$2=!0}var envelope={close:function(t,e){hide$2(t,e)},conf:{attach:"row",windowPadding:50},destroy:function(t){hide$2()},init:function(t){return init$1(),envelope},node:function(t){return dom$1.wrapper[0]},open:function(t,e,i){$(dom$1.content).children().detach(),dom$1.content.appendChild(e),dom$1.content.appendChild(dom$1.close),show$2(t,i)}};function isMobile(){return void 0!==window.orientation&&window.outerWidth<=576}var displayed$1=!1,ready=!1,scrollTop=0,dom={background:$('
      '),close:$('
      '),content:null,wrapper:$('
      ')};function heightCalc(){var t=$("div.DTE_Header",dom.wrapper).outerHeight()+$("div.DTE_Footer",dom.wrapper).outerHeight();isMobile()?$("div.DTE_Body_Content",dom.wrapper).css("maxHeight","calc(100vh - "+t+"px)"):(t=$(window).height()-2*self.conf.windowPadding-t,$("div.DTE_Body_Content",dom.wrapper).css("maxHeight",t))}function hide$1(t,e){e=e||function(){},$("body").scrollTop(scrollTop),t._animate(dom.wrapper,{opacity:0,top:self.conf.offsetAni},function(){$(this).detach(),e()}),t._animate(dom.background,{opacity:0},function(){$(this).detach()}),displayed$1=!1,$(window).off("resize.DTED_Lightbox")}function init(){ready||(dom.content=$("div.DTED_Lightbox_Content",dom.wrapper),dom.wrapper.css("opacity",0),dom.background.css("opacity",0),ready=!0)}function show$1(e,t){isMobile()&&$("body").addClass("DTED_Lightbox_Mobile"),$("body").append(dom.background).append(dom.wrapper),heightCalc(),displayed$1||(displayed$1=!0,dom.content.css("height","auto"),dom.wrapper.css({top:-self.conf.offsetAni}),e._animate(dom.wrapper,{opacity:1,top:0},t),e._animate(dom.background,{opacity:1}),$(window).on("resize.DTED_Lightbox",function(){heightCalc()}),scrollTop=$("body").scrollTop()),dom.close.attr("title",e.i18n.close).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){e.close()}),dom.background.off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){t.stopImmediatePropagation(),e.background()}),$("div.DTED_Lightbox_Content_Wrapper",dom.wrapper).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){$(t.target).hasClass("DTED_Lightbox_Content_Wrapper")&&(t.stopImmediatePropagation(),e.background())})}var self={close:function(t,e){hide$1(t,e)},conf:{offsetAni:25,windowPadding:25},destroy:function(t){displayed$1&&hide$1(t)},init:function(t){return init(),self},node:function(t){return dom.wrapper[0]},open:function(t,e,i){var n=dom.content;n.children().detach(),n.append(e).append(dom.close),show$1(t,i)}},DataTable$5=$.fn.dataTable;function add(t,e,i){if(void 0===i&&(i=!0),Array.isArray(t)){void 0!==e&&t.reverse();for(var n=0,o=t;n
      '),n=$('
      '),t=(r&&(n.appendTo("body"),i.appendTo("body")),n.children().eq(0)),o=t.children(),s=o.children(),a=(t.append(u.dom.formError),o.prepend(u.dom.form),l.message&&t.prepend(u.dom.formInfo),l.title&&t.prepend(u.dom.header),l.buttons&&o.append(u.dom.buttons),$().add(n).add(i));u._closeReg(function(t){u._animate(a,{opacity:0},function(){this===n[0]&&(a.detach(),$(window).off("resize."+e+" scroll."+e),u._clearDynamicInfo(),u._event("closed",["bubble"]))})}),i.on("click",function(){u.blur()}),s.on("click",function(){u._close()}),u.bubblePosition(),u._postopen("bubble",!1);u._animate(a,{opacity:1},function(){this===n[0]&&(u._focus(u.s.includeFields,l.focus),u._event("opened",["bubble",u.s.action]))})})),this}function bubblePosition(){var t=$("div.DTE_Bubble"),e=$("div.DTE_Bubble_Liner"),i=this.s.bubbleNodes,n={bottom:0,left:0,right:0,top:0},i=($.each(i,function(t,e){var i=$(e).offset();e=$(e).get(0),n.top+=i.top,n.left+=i.left,n.right+=i.left+e.offsetWidth,n.bottom+=i.top+e.offsetHeight}),n.top/=i.length,n.left/=i.length,n.right/=i.length,n.bottom/=i.length,n.top),o=(n.left+n.right)/2,s=e.outerWidth(),a=e.outerHeight(),r=o-s/2,s=r+s,l=$(window).width(),d=$(window).scrollTop(),o=(t.css({left:o,top:this.s.bubbleBottom?n.bottom:i}),this.s.bubbleBottom&&t.addClass("below"),t.position());return e.length&&o.top+a>d+window.innerHeight?(t.css("top",i).removeClass("below"),this.s.bubbleBottom=!1):e.length&&o.top-a",{class:s.classes.form.button+(e.className?" "+e.className:"")}).html("function"==typeof i?i(s):i||"").attr("tabindex",void 0!==e.tabIndex?e.tabIndex:0).attr(o).on("keyup",function(t){13===t.which&&n&&n.call(s)}).on("keypress",function(t){13===t.which&&t.preventDefault()}).on("click",function(t){t.preventDefault(),n&&n.call(s,t)}).appendTo(s.dom.buttons)}),this}function clear(t){var i=this,e=this.s.fields;return"string"==typeof t?(i.field(t).destroy(),delete e[t],e=$.inArray(t,this.s.order),this.s.order.splice(e,1),-1!==(e=$.inArray(t,this.s.includeFields))&&this.s.includeFields.splice(e,1)):$.each(this._fieldNames(t),function(t,e){i.clear(e)}),this}function close(){return this._close(!1),this}function create(t,e,i,n){var o=this,s=this,a=this.s.fields,r=1;if(!this._tidy(function(){s.create(t,e,i,n)})){"number"==typeof t&&(r=t,t=e,e=i),this.s.editFields={};for(var l=0;lUploading file"),u.onload=function(t){var e,i=new FormData;if(i.append("action","upload"),i.append("uploadField",a.name),i.append("upload",r[c]),a.ajaxData&&a.ajaxData(i,r[c],c),a.ajax?e=a.ajax:$.isPlainObject(s.s.ajax)?e=s.s.ajax.upload||s.s.ajax:"string"==typeof s.s.ajax&&(e=s.s.ajax),!e)throw new Error("No Ajax option specified for upload plug-in");if("function"==typeof(e="string"==typeof e?{url:e}:e).data){var n={},o=e.data(n);void 0!==o&&"string"!=typeof o&&(n=o),$.each(n,function(t,e){i.append(t,e)})}else if($.isPlainObject(e.data))throw new Error("Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.");s._event("preUpload",[a.name,r[c],i],function(t){var o;!1===t?c
      ')),m.find("div."+s.liner.replace(/ /g,".")).append(h.field.node()).append(this.dom.formError),n=h.field.node(),e.buttons&&m.find("div."+s.buttons.replace(/ /g,".")).append(this.dom.buttons)}var b=this._inputTrigger("submit",e,n),_=this._inputTrigger("cancel",e,n);this._closeReg(function(t,e){return o=!0,$(document).off("click"+c),t&&"edit"===e||l.forEach(function(t){t.node.contents().detach(),t.node.append(t.children)}),b(),_(),r._clearDynamicInfo(),i&&i(),"inline"}),setTimeout(function(){var s,a;o||(s=$.fn.addBack?"addBack":"andSelf",$(document).on("mousedown"+c,function(t){a=t.target}).on("keydown"+c,function(t){a=t.target}).on("click"+c,function(t){for(var e=!1,i=0,n=l;i")),this._event("submitUnsuccessful",[t]),l&&l.call(this,t)}else{var m={};if(!t.data||"create"!==o&&"edit"!==o)"remove"===o&&(this._dataSource("prep",o,f,n,t,m),this._event("preRemove",[t,this.ids()]),this._dataSource("remove",f,c,m),this._event(["remove","postRemove"],[t,this.ids()]),this._dataSource("commit",o,f,t.data,m));else{this._dataSource("prep",o,f,n,t,m);for(var v=0,b=t.data;v
      ');return e._input=a,e._enabled=!0,e.id&&a.find("input[type=file]").attr("id",Editor.safeId(e.id)),e.attr&&a.find("input[type=file]").attr(e.attr),_buttonText(e),window.FileReader&&!1!==e.dragDrop?(a.find("div.drop span").text(e.dragDropText||"Drag and drop a file here to upload"),(o=a.find("div.drop")).on("drop",function(t){return e._enabled&&(Editor.upload(i,e,t.originalEvent.dataTransfer.files,_buttonText,n),o.removeClass("over")),!1}).on("dragleave dragexit",function(t){return e._enabled&&o.removeClass("over"),!1}).on("dragover",function(t){return e._enabled&&o.addClass("over"),!1}),i.on("open",function(){$("body").on("dragover.DTE_Upload drop.DTE_Upload",function(t){return!1})}).on("close",function(){$("body").off("dragover.DTE_Upload drop.DTE_Upload")})):(a.addClass("noDrop"),a.append(a.find("div.rendered"))),a.find("div.clearValue button").on("click",function(t){t.preventDefault(),e._enabled&&upload.set.call(i,e,"")}),a.find("input[type=file]").on("input",function(){Editor.upload(i,e,this.files,_buttonText,function(t,e){e||n.call(i,t),a.find("input[type=file]")[0].value=""})}),a}function _triggerChange(t){setTimeout(function(){t.trigger("change",{editor:!0,editorSet:!0})},0)}var baseFieldType=$.extend(!0,{},fieldType,{canReturnSubmit:function(t,e){return!0},disable:function(t){t._input.prop("disabled",!0)},enable:function(t){t._input.prop("disabled",!1)},get:function(t){return t._input.val()},set:function(t,e){t._input.val(e),_triggerChange(t._input)}}),hidden={create:function(t){return t._input=$(""),t._val=t.value,null},get:function(t){return t._val},set:function(t,e){var i=t._val;t._val=e,t._input.val(e),i!==e&&_triggerChange(t._input)}},readonly=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),readonly:"readonly",type:"text"},t.attr||{})),t._input[0]}}),text=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),type:"text"},t.attr||{})),t._input[0]}}),password=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),type:"password"},t.attr||{})),t._input[0]}}),textarea=$.extend(!0,{},baseFieldType,{canReturnSubmit:function(t,e){return!1},create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id)},t.attr||{})),t._input[0]}}),select=$.extend(!0,{},baseFieldType,{_addOptions:function(t,e,i){var n,o=t._input[0].options,s=0;(i=void 0===i?!1:i)?s=o.length:void(o.length=0)!==t.placeholder&&(i=void 0!==t.placeholderValue?t.placeholderValue:"",s+=1,o[0]=new Option(t.placeholder,i),n=void 0===t.placeholderDisabled||t.placeholderDisabled,o[0].hidden=n,o[0].disabled=n,o[0]._editor_val=i),e&&Editor.pairs(e,t.optionsPair,function(t,e,i,n){e=new Option(e,t);e._editor_val=t,n&&$(e).attr(n),o[i+s]=e})},create:function(i){return i._input=$("").attr($.extend({id:Editor.safeId(i.id),multiple:!0===i.multiple},i.attr||{})).on("change.dte",function(t,e){e&&e.editor||(i._lastSet=select.get(i))}),select._addOptions(i,i.options||i.ipOpts),i._input[0]},destroy:function(t){t._input.off("change.dte")},get:function(t){var e=t._input.find("option:selected").map(function(){return this._editor_val}).toArray();return t.multiple?t.separator?e.join(t.separator):e:e.length?e[0]:null},set:function(t,e,i){i||(t._lastSet=e),t.multiple&&t.separator&&!Array.isArray(e)?e="string"==typeof e?e.split(t.separator):[]:Array.isArray(e)||(e=[e]);var n,o,s=e.length,a=!1,r=t._input.find("option");return t._input.find("option").each(function(){for(o=!1,n=0;n"),$("input:last",s).attr("value",t)[0]._editor_val=t,n&&$("input:last",s).attr(n)})},create:function(t){return t._input=$("
      "),checkbox._addOptions(t,t.options||t.ipOpts),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=[],i=t._input.find("input:checked");return i.length?i.each(function(){e.push(this._editor_val)}):void 0!==t.unselectedValue&&e.push(t.unselectedValue),void 0===t.separator||null===t.separator?e:e.join(t.separator)},set:function(t,e){var i,n,o=t._input.find("input"),s=(Array.isArray(e)||"string"!=typeof e?Array.isArray(e)||(e=[e]):e=e.split(t.separator||"|"),e.length);o.each(function(){for(n=!1,i=0;i"),$("input:last",s).attr("value",t)[0]._editor_val=t,n&&$("input:last",s).attr(n)})},create:function(t){return t._input=$("
      "),radio._addOptions(t,t.options||t.ipOpts),this.on("open",function(){t._input.find("input").each(function(){this._preChecked&&(this.checked=!0)})}),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=t._input.find("input:checked");return e.length?e[0]._editor_val:void 0!==t.unselectedValue?t.unselectedValue:void 0},set:function(t,e){t._input.find("input").each(function(){this._preChecked=!1,this._editor_val==e?(this.checked=!0,this._preChecked=!0):(this.checked=!1,this._preChecked=!1)}),_triggerChange(t._input.find("input:checked"))},update:function(t,e,i){var n=radio.get(t),e=(radio._addOptions(t,e,i),t._input.find("input"));radio.set(t,e.filter('[value="'+n+'"]').length?n:e.eq(0).attr("value"))}}),datetime=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend(!0,{id:Editor.safeId(t.id),type:"text"},t.attr)),DataTable$3.DateTime||Editor.error("DateTime library is required",15),t.momentLocale&&!t.opts.locale&&(t.opts.locale=t.momentLocale),t.momentStrict&&!t.opts.strict&&(t.opts.strict=t.momentStrict),t._picker=new DataTable$3.DateTime(t._input,$.extend({format:t.displayFormat||t.format,i18n:this.i18n.datetime},t.opts)),!(t._closeFn=function(){t._picker.hide()})===t.keyInput&&t._input.on("keydown",function(t){t.preventDefault()}),this.on("close",t._closeFn),t._input[0]},destroy:function(t){this.off("close",t._closeFn),t._input.off("keydown"),t._picker.destroy()},errorMessage:function(t,e){t._picker.errorMsg(e)},get:function(t){return t.wireFormat?t._picker.valFormat(t.wireFormat):t._input.val()},maxDate:function(t,e){t._picker.max(e)},minDate:function(t,e){t._picker.min(e)},owns:function(t,e){return t._picker.owns(e)},set:function(t,e){"string"==typeof e&&e&&0!==e.indexOf("--")&&t.wireFormat?t._picker.valFormat(t.wireFormat,e):t._picker.val(e),_triggerChange(t._input)}}),upload=$.extend(!0,{},baseFieldType,{canReturnSubmit:function(t,e){return!1},create:function(e){var i=this;return _commonUpload(i,e,function(t){upload.set.call(i,e,t[0]),i._event("postUpload",[e.name,t[0]])})},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(t,e){t._val=e,t._input.val("");var i=t._input,n=(t.display&&(n=i.find("div.rendered"),t._val?n.html(t.display(t._val)):n.empty().append(""+(t.noFileText||"No file")+"")),i.find("div.clearValue button"));e&&t.clearText?(n.html(t.clearText),i.removeClass("noClear")):i.addClass("noClear"),t._input.find("input").triggerHandler("upload.editor",[t._val])}}),uploadMany=$.extend(!0,{},baseFieldType,{_showHide:function(t){t.limit&&(t._container.find("div.limitHide").css("display",t._val.length>=t.limit?"none":"block"),t._limitLeft=t.limit-t._val.length)},canReturnSubmit:function(t,e){return!1},create:function(e){var i=this,t=_commonUpload(i,e,function(t){e._val=e._val.concat(t),uploadMany.set.call(i,e,e._val),i._event("postUpload",[e.name,e._val])},!0);return t.addClass("multi").on("click","button.remove",function(t){t.stopPropagation(),e._enabled&&(t=$(this).data("idx"),e._val.splice(t,1),uploadMany.set.call(i,e,e._val))}),e._container=t},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(i,t){if(t=t||[],!Array.isArray(t))throw new Error("Upload collections must have an array as a value");i._val=t,i._input.val("");var n,o=this,e=i._input;i.display&&(e=e.find("div.rendered").empty(),t.length?(n=$("
        ").appendTo(e),$.each(t,function(t,e){e=i.display(e,t);null!==e&&n.append("
      • "+e+'
      • ')})):e.append(""+(i.noFileText||"No files")+"")),uploadMany._showHide(i),i._input.find("input").triggerHandler("upload.editor",[i._val])}}),datatable=$.extend(!0,{},baseFieldType,{_addOptions:function(t,e,i){t=t.dt;(i=void 0===i?!1:i)||t.clear(),t.rows.add(e).draw()},_jumpToFirst:function(t,e){function i(){var t=o.row({order:"applied",selected:!0}).node();t&&a.height()-10<(t=$(t).position().top)&&a.scrollTop(t)}var n,o=t.dt,t=o.row({order:"applied",selected:!0}).index(),s=0,a=("number"==typeof t&&(n=o.page.info().length,t=o.rows({order:"applied"}).indexes().indexOf(t),s=0")),t=$("
        ").append(n),o=$('
        '),l=(a.footer&&$("
        ").html(t)})):a.footer).appendTo(n),n.addClass(datatable.tableClass).width("100%").on("init.dt",function(t,e){var i;e.nTable===n[0]&&(e=new DataTable$3.Api(e),i=$(e.table(void 0).container()),DataTable$3.select.init(e),o.append(i.find("div.dataTables_filter")).append(i.find("div.dt-buttons")).append(i.find("div.dataTables_info")))}).DataTable($.extend({buttons:[],columns:[{data:a.optionsPair.label,title:"Label"}],deferRender:!0,dom:"fiBtp",language:{paginate:{next:">",previous:"<"},search:"",searchPlaceholder:"Search"},lengthChange:!1,select:{style:a.multiple?"os":"single"}},a.config)));return this.on("open",function(){l.search()&&l.search("").draw(),l.columns.adjust()}),l.on("user-select",function(){_triggerChange($(a.dt.table().container()))}),a.editor&&(a.editor.table(l),a.editor.on("submitComplete",function(t,e,i,n){if("create"===n)for(var o=0,s=e.data;o
        '+o.title+''+o.info+'
        '+o.restore+'
        '+s.message+'
        '+s.fieldInfo+'
        '),t=this._typeFn("create",s),i=null;t&&t.side&&(i=t.side,t=t.input),null!==t?el("input-control",a).prepend(t):a.css("display","none"),this.dom={container:a,fieldError:el("msg-error",a),fieldInfo:el("msg-info",a),fieldMessage:el("msg-message",a),inputControl:el("input-control",a),label:el("label",a).append(i),labelInfo:el("msg-label",a),multi:el("multi-value",a),multiInfo:el("multi-info",a),multiReturn:el("msg-multi",a),processing:el("field-processing",a)},this.dom.multi.on("click",function(){n.s.opts.multiEditable&&!a.hasClass(e.disabled)&&"readonly"!==s.type&&(n.val(""),n.focus())}),this.dom.multiReturn.on("click",function(){n.multiRestore()}),$.each(this.s.type,function(e,t){"function"==typeof t&&void 0===n[e]&&(n[e]=function(){var t=Array.prototype.slice.call(arguments),t=(t.unshift(e),n._typeFn.apply(n,t));return void 0===t?n:t})})}return r.prototype.def=function(t){var e,i=this.s.opts;return void 0===t?"function"==typeof(e=void 0!==i.default?i.default:i.def)?e():e:(i.def=t,this)},r.prototype.disable=function(){return this.dom.container.addClass(this.s.classes.disabled),this._typeFn("disable"),this},r.prototype.displayed=function(){var t=this.dom.container;return!(!t.parents("body").length||"none"===t.css("display"))},r.prototype.enable=function(t){return!1===(t=void 0===t?!0:t)?this.disable():(this.dom.container.removeClass(this.s.classes.disabled),this._typeFn("enable"),this)},r.prototype.enabled=function(){return!1===this.dom.container.hasClass(this.s.classes.disabled)},r.prototype.error=function(t,e){var i=this.s.classes;return t?this.dom.container.addClass(i.error):this.dom.container.removeClass(i.error),this._typeFn("errorMessage",t),this._msg(this.dom.fieldError,t,e)},r.prototype.fieldInfo=function(t){return this._msg(this.dom.fieldInfo,t)},r.prototype.isMultiValue=function(){return this.s.multiValue&&1!==this.s.multiIds.length},r.prototype.inError=function(){return this.dom.container.hasClass(this.s.classes.error)},r.prototype.input=function(){return this.s.type.input?this._typeFn("input"):$("input, select, textarea",this.dom.container)},r.prototype.focus=function(){return this.s.type.focus?this._typeFn("focus"):$("input, select, textarea",this.dom.container).focus(),this},r.prototype.get=function(){if(!this.isMultiValue())return this._format(this._typeFn("get"),this.s.opts.getFormatter)},r.prototype.hide=function(t){var e=this.dom.container;return void 0===t&&(t=!0),this.s.host.display()&&t&&$.fn.slideUp?e.slideUp():e.css("display","none"),this},r.prototype.label=function(t){var e=this.dom.label,i=this.dom.labelInfo.detach();return void 0===t?e.html():(e.html(t),e.append(i),this)},r.prototype.labelInfo=function(t){return this._msg(this.dom.labelInfo,t)},r.prototype.message=function(t,e){return this._msg(this.dom.fieldMessage,t,e)},r.prototype.multiGet=function(t){var e=this.s.multiValues,i=this.s.multiIds,n=this.isMultiValue();if(void 0===t)for(var o=this.val(),s={},a=0,r=i;a").replace(/</g,"<").replace(/&/g,"&").replace(/"/g,'"').replace(/£/g,"£").replace(/�?39;/g,"'").replace(/�?10;/g,"\n")}this.s.multiValue=!1;var n=this.s.opts.entityDecode;if(void 0===n||!0===n)if(Array.isArray(t))for(var o=0,s=t.length;o
        '),s=$('
        ');if(this.dom={body:el("body",i)[0],bodyContent:el("body_content",i)[0],buttons:$('
        ')[0],footer:el("foot",i)[0],form:s[0],formContent:el("form_content",s)[0],formError:$('
        ')[0],formInfo:$('
        ')[0],header:$('
        ')[0],processing:el("processing",i)[0],wrapper:i[0]},$.each(t.events,function(t,i){n.on(t,function(){for(var t=[],e=0;e - * DataTables internationalisation options to provide a fully language - * customised table interface. - * - * @namespace - * - * @example - * // Set the 'create' button text. All other strings used are the - * // default values. - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "create": { - * "button": "New user" - * } - * } - * } ); - * - * @example - * // Set the submit text for all three actions - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "create": { - * "submit": "Create new user" - * }, - * "edit": { - * "submit": "Update user" - * }, - * "remove": { - * "submit": "Remove user" - * } - * } - * } ); - */ - i18n: { - /** - * Close button title text - * - * @type string - * @default Close - */ - close: 'Close', - /** - * Strings used when working with the Editor 'create' action (creating new - * records). - * - * @namespace - */ - create: { - /** - * Buttons button text - * - * @type string - * @default New - */ - button: 'New', - /** - * Submit button text - * - * @type string - * @default Create - */ - submit: 'Create', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Create new entry - */ - title: 'Create new entry' - }, - datetime: { - amPm: ['am', 'pm'], - hours: 'Hour', - minutes: 'Minute', - months: [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' - ], - next: 'Next', - previous: 'Previous', - seconds: 'Second', - unknown: '-', - weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - }, - /** - * Strings used when working with the Editor 'edit' action (editing existing - * records). - * - * @namespace - */ - edit: { - /** - * Buttons button text - * - * @type string - * @default Edit - */ - button: 'Edit', - /** - * Submit button text - * - * @type string - * @default Update - */ - submit: 'Update', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Edit entry - */ - title: 'Edit entry' - }, - /** - * Strings used for error conditions. - * - * @namespace - */ - error: { - /** - * Generic server error message - * - * @type string - * @default - * A system error has occurred (More information) - */ - system: 'A system error has occurred (More information).' - }, - /** - * Strings used for multi-value editing - * - * @namespace - */ - multi: { - /** - * Shown below the multi title text, although only the first - * instance of this text is shown in the form to reduce redundancy - */ - info: 'The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.', - /** - * Disabled for multi-row editing - */ - noMulti: 'This input can be edited individually, but not part of a group.', - /** - * Shown below the field input when group editing a value to allow - * the user to return to the original multiple values - */ - restore: 'Undo changes', - /** - * Shown in place of the field value when a field has multiple values - */ - title: 'Multiple values' - }, - /** - * Strings used when working with the Editor 'delete' action (deleting - * existing records). - * - * @namespace - */ - remove: { - /** - * Buttons button text - * - * @type string - * @default Delete - */ - button: 'Delete', - /** - * Deletion confirmation message. - * - * As Editor has the ability to delete either a single or multiple rows - * at a time, this option can be given as either a string (which will be - * used regardless of how many records are selected) or as an object - * where the property "_" will be used (with %d substituted for the number - * of records to be deleted) as the delete message, unless there is a - * key with the number of records to be deleted. This allows Editor - * to consider the different pluralisation characteristics of different - * languages. - * - * @type object|string - * @default Are you sure you wish to delete %d rows? - * - * @example - * // String - no plural consideration - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": "Are you sure you wish to delete %d record(s)?" - * } - * } - * } ); - * - * @example - * // Basic 1 (singular) or _ (plural) - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": { - * "_": "Confirm deletion of %d records.", - * "1": "Confirm deletion of record." - * } - * } - * } ); - * - * @example - * // Singular, dual and plural - * var editor = new $.fn.Editor( { - * "ajax": "data/source", - * "table": "#example", - * "i18n": { - * "remove": { - * "confirm": { - * "_": "Confirm deletion of %d records.", - * "1": "Confirm deletion of record.", - * "2": "Confirm deletion of both record." - * } - * } - * } ); - * - */ - confirm: { - 1: 'Are you sure you wish to delete 1 row?', - _: 'Are you sure you wish to delete %d rows?' - }, - /** - * Submit button text - * - * @type string - * @default Delete - */ - submit: 'Delete', - /** - * Display container title (when showing the editor display) - * - * @type string - * @default Delete - */ - title: 'Delete', - } - }, - /** - * JSON property from which to read / write the row's ID property (i.e. its - * unique column index that identifies the row to the database). By default - * Editor will use the `DT_RowId` property from the data source object - * (DataTable's magic property to set the DOM id for the row). - * - * If you want to read a parameter from the data source object instead of - * using `DT_RowId`, set this option to the property name to use. - * - * Like other data source options the `srcId` option can be given in dotted - * object notation to read nested objects. - * - * @type null|string - * @default DT_RowId - * - * @example - * // Using a data source such as: - * // { "id":12, "browser":"Chrome", ... } - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example", - * "idSrc": "id" - * } ); - * } ); - */ - idSrc: 'DT_RowId', - /** - * jQuery selector that can be used to identify the table you wish to apply - * this editor instance to. - * - * In previous versions of Editor (1.2 and earlier), this parameter was - * called `table`. The name has been altered in 1.3+ to simplify the - * initialisation. This is a backwards compatible change - if you pass in - * a `table` option it will be used. - * - * @type string - * @default Empty string - * - * @example - * $(document).ready(function() { - * var editor = new $.fn.Editor( { - * "ajax": "php/index.php", - * "table": "#example" - * } ); - * } ); - */ - table: null, -}; - -var settings = { - action: null, - actionName: 'action', - ajax: null, - bubbleNodes: [], - bubbleBottom: false, - closeCb: null, - closeIcb: null, - dataSource: null, - displayController: null, - displayed: false, - editCount: 0, - editData: {}, - editFields: {}, - editOpts: {}, - fields: {}, - formOptions: { - bubble: $.extend({}, formOptions), - inline: $.extend({}, formOptions), - main: $.extend({}, formOptions), - }, - globalError: '', - id: -1, - idSrc: null, - includeFields: [], - mode: null, - modifier: null, - opts: null, - order: [], - processing: false, - setFocus: null, - table: null, - template: null, - unique: 0 -}; - -var DataTable$6 = $.fn.dataTable; -var DtInternalApi = DataTable$6.ext.oApi; -function objectKeys(o) { - var out = []; - for (var key in o) { - if (o.hasOwnProperty(key)) { - out.push(key); - } - } - return out; -} -function el(tag, ctx) { - if (ctx === undefined) { - ctx = document; - } - return $('*[data-dte-e="' + tag + '"]', ctx); -} -function safeDomId(id, prefix) { - if (prefix === void 0) { prefix = '#'; } - return typeof id === 'string' ? - prefix + id.replace(/\./g, '-') : - prefix + id; -} -function safeQueryId(id, prefix) { - if (prefix === void 0) { prefix = '#'; } - return typeof id === 'string' ? - prefix + id.replace(/(:|\.|\[|\]|,)/g, '\\$1') : - prefix + id; -} -function dataGet(src) { - return DtInternalApi._fnGetObjectDataFn(src); -} -function dataSet(src) { - return DtInternalApi._fnSetObjectDataFn(src); -} -var extend = DtInternalApi._fnExtend; -function pluck(a, prop) { - var out = []; - $.each(a, function (idx, elIn) { - out.push(elIn[prop]); - }); - return out; -} -/** - * Compare parameters for difference - diving into arrays and objects if - * needed, allowing the object reference to be different, but the contents to - * match. - * - * Please note that LOOSE type checking is used - */ -function deepCompare(o1, o2) { - if (typeof o1 !== 'object' || typeof o2 !== 'object') { - return o1 == o2; - } - var o1Props = objectKeys(o1); - var o2Props = objectKeys(o2); - if (o1Props.length !== o2Props.length) { - return false; - } - for (var i = 0, ien = o1Props.length; i < ien; i++) { - var propName = o1Props[i]; - if (typeof o1[propName] === 'object') { - if (!deepCompare(o1[propName], o2[propName])) { - return false; - } - } - else if (o1[propName] != o2[propName]) { - return false; - } - } - return true; -} - -/* - - - - - - - - - - - * DataTables editor interface - */ -var _dtIsSsp = function (dt, editor) { - // If the draw type is `none`, then we still need to use the DT API to - // update the display with the new data - return dt.settings()[0].oFeatures.bServerSide && - editor.s.editOpts.drawType !== 'none'; -}; -var _dtApi = function (table) { - return table instanceof $.fn.dataTable.Api - ? table - : $(table).DataTable(); -}; -var _dtHighlight = function (node) { - // Highlight a row using CSS transitions. The timeouts need to match the - // transition duration from the CSS - node = $(node); - setTimeout(function () { - node.addClass('highlight'); - setTimeout(function () { - node - .addClass('noHighlight') - .removeClass('highlight'); - setTimeout(function () { - node.removeClass('noHighlight'); - }, 550); - }, 500); - }, 20); -}; -var _dtRowSelector = function (out, dt, identifier, fields, idFn) { - dt.rows(identifier).indexes().each(function (idx) { - var row = dt.row(idx); - var data = row.data(); - var idSrc = idFn(data); - if (idSrc === undefined) { - Editor.error('Unable to find row identifier', 14); - } - out[idSrc] = { - data: data, - fields: fields, - idSrc: idSrc, - node: row.node(), - type: 'row' - }; - }); -}; -var _dtFieldsFromIdx = function (dt, fields, idx, ignoreUnknown) { - var col = dt.settings()[0].aoColumns[idx]; - var dataSrc = col.editField !== undefined ? - col.editField : - col.mData; - var resolvedFields = {}; - var run = function (field, dataSrcIn) { - if (field.name() === dataSrcIn) { - resolvedFields[field.name()] = field; - } - }; - $.each(fields, function (name, fieldInst) { - if (Array.isArray(dataSrc)) { - for (var _i = 0, dataSrc_1 = dataSrc; _i < dataSrc_1.length; _i++) { - var data = dataSrc_1[_i]; - run(fieldInst, data); - } - } - else { - run(fieldInst, dataSrc); - } - }); - if ($.isEmptyObject(resolvedFields) && !ignoreUnknown) { - Editor.error('Unable to automatically determine field from source. Please specify the field name.', 11); - } - return resolvedFields; -}; -var _dtCellSelector = function (out, dt, identifier, allFields, idFn, forceFields) { - if (forceFields === void 0) { forceFields = null; } - var cells = dt.cells(identifier); - cells.indexes().each(function (idx) { - var cell = dt.cell(idx); - var row = dt.row(idx.row); - var data = row.data(); - var idSrc = idFn(data); - var fields = forceFields || _dtFieldsFromIdx(dt, allFields, idx.column, cells.count() > 1); - var isNode = (typeof identifier === 'object' && identifier.nodeName) || identifier instanceof $; - var prevDisplayFields; - var prevAttach; - var prevAttachFields; - // Only add if a field was found to edit - if (Object.keys(fields).length) { - // The row selector will create a new `out` object for the identifier, and the - // cell selector might be called multiple times for a row, so we need to save - // our specific items - if (out[idSrc]) { - prevAttach = out[idSrc].attach; - prevAttachFields = out[idSrc].attachFields; - prevDisplayFields = out[idSrc].displayFields; - } - // Use the row selector to get the row information - _dtRowSelector(out, dt, idx.row, allFields, idFn); - out[idSrc].attachFields = prevAttachFields || []; - out[idSrc].attachFields.push(Object.keys(fields)); - out[idSrc].attach = prevAttach || []; - out[idSrc].attach.push(isNode ? - $(identifier).get(0) : - cell.fixedNode ? // If its under a fixed column, get the floating node - cell.fixedNode() : - cell.node()); - out[idSrc].displayFields = prevDisplayFields || {}; - $.extend(out[idSrc].displayFields, fields); - } - }); -}; -var _dtColumnSelector = function (out, dt, identifier, fields, idFn) { - dt.cells(null, identifier).indexes().each(function (idx) { - _dtCellSelector(out, dt, idx, fields, idFn); - }); -}; -var dataSource$1 = { - commit: function (action, identifier, data, store) { - // Updates complete - redraw - var that = this; - var dt = _dtApi(this.s.table); - var ssp = dt.settings()[0].oFeatures.bServerSide; - var ids = store.rowIds; - // On edit, if there are any rows left in the `store.rowIds`, then they - // were not returned by the server and should be removed (they might not - // meet filtering requirements any more for example) - if (!_dtIsSsp(dt, this) && action === 'edit' && store.rowIds.length) { - var row = void 0; - var compare = function (id) { - return function (rowIdx, rowData, rowNode) { - return id == dataSource$1.id.call(that, rowData); - }; - }; - for (var i = 0, ien = ids.length; i < ien; i++) { - // Find the row to edit - attempt to do an id look up first for speed - try { - row = dt.row(safeQueryId(ids[i])); - } - catch (e) { - row = dt; - } - // If not found, then we need to do it the slow way - if (!row.any()) { - row = dt.row(compare(ids[i])); - } - if (row.any() && !ssp) { - row.remove(); - } - } - } - var drawType = this.s.editOpts.drawType; - if (drawType !== 'none') { - var dtAny = dt; - // SSP highlighting has to go after the draw, but this can't be - // merged with client-side processing highlight as we want that - // to work even when there isn't a draw happening. - if (ssp && ids && ids.length) { - dt.one('draw', function () { - for (var i = 0, ien = ids.length; i < ien; i++) { - var row = dt.row(safeQueryId(ids[i])); - if (row.any()) { - _dtHighlight(row.node()); - } - } - }); - } - dt.draw(drawType); - // Responsive needs to take account of new data column widths - if (dtAny.responsive) { - dtAny.responsive.recalc(); - } - // Rebuild searchpanes - if (typeof dtAny.searchPanes === 'function' && !ssp) { - dtAny.searchPanes.rebuildPane(undefined, true); - } - // Rebuild searchbuilder - if (dtAny.searchBuilder !== undefined && typeof dtAny.searchBuilder.rebuild === 'function' && !ssp) { - dtAny.searchBuilder.rebuild(dtAny.searchBuilder.getDetails()); - } - } - }, - create: function (fields, data) { - var dt = _dtApi(this.s.table); - if (!_dtIsSsp(dt, this)) { - var row = dt.row.add(data); - _dtHighlight(row.node()); - } - }, - edit: function (identifier, fields, data, store) { - var that = this; - var dt = _dtApi(this.s.table); - // No point in doing anything when server-side processing - the commit - // will redraw the table - if (!_dtIsSsp(dt, this) || this.s.editOpts.drawType === 'none') { - // The identifier can select one or more rows, but the data will - // refer to just a single row. We need to determine which row from - // the set is the one to operator on. - var rowId_1 = dataSource$1.id.call(this, data); - var row = void 0; - // Find the row to edit - attempt to do an id look up first for speed - try { - row = dt.row(safeQueryId(rowId_1)); - } - catch (e) { - row = dt; - } - // If not found, then we need to do it the slow way - if (!row.any()) { - row = dt.row(function (rowIdx, rowData, rowNode) { - return rowId_1 == dataSource$1.id.call(that, rowData); - }); - } - if (row.any()) { - // Merge data to allow for a sub-set to be returned - var toSave = extend({}, row.data(), true); - toSave = extend(toSave, data, true); - row.data(toSave); - // Remove the item from the list of indexes now that is has been - // updated - var idx = $.inArray(rowId_1, store.rowIds); - store.rowIds.splice(idx, 1); - } - else { - // If not found, then its a new row (change in pkey possibly) - row = dt.row.add(data); - } - _dtHighlight(row.node()); - } - }, - fakeRow: function (insertPoint) { - var dt = _dtApi(this.s.table); - var tr = $('
        ').appendTo(tr); - var fields = _dtFieldsFromIdx(dt, this.s.fields, visIdx, true); - var settings = dt.settings()[0]; - var className = settings.aoColumns[visIdx].sClass; - if (className) { - td.addClass(className); - } - if (Object.keys(fields).length) { - attachFields.push(Object.keys(fields)); - attach.push(td[0]); - $.extend(displayFields, fields); - } - } - var append = function () { - // Remove the data empty message - if (dt.page.info().recordsDisplay === 0) { - $(tbody).empty(); - } - var action = insertPoint === 'end' - ? 'appendTo' - : 'prependTo'; - tr[action](tbody); - }; - this.__dtFakeRow = tr; - // Insert into the table - append(); - dt.on('draw.dte-createInline', function () { - append(); - }); - return { - 0: { - attach: attach, - attachFields: attachFields, - displayFields: displayFields, - fields: this.s.fields, - type: 'row' - } - }; - }, - fakeRowEnd: function () { - var dt = _dtApi(this.s.table); - dt.off('draw.dte-createInline'); - this.__dtFakeRow.remove(); - this.__dtFakeRow = null; - // Restore data empty row - if (dt.page.info().recordsDisplay === 0) { - dt.draw(false); - } - }, - // get idSrc, fields to edit, data and node for each item - fields: function (identifier) { - var idFn = dataGet(this.s.idSrc); - var dt = _dtApi(this.s.table); - var fields = this.s.fields; - var out = {}; - if ($.isPlainObject(identifier) && - (identifier.rows !== undefined || identifier.columns !== undefined || identifier.cells !== undefined)) { - // Multi-item type selector - if (identifier.rows !== undefined) { - _dtRowSelector(out, dt, identifier.rows, fields, idFn); - } - if (identifier.columns !== undefined) { - _dtColumnSelector(out, dt, identifier.columns, fields, idFn); - } - if (identifier.cells !== undefined) { - _dtCellSelector(out, dt, identifier.cells, fields, idFn); - } - } - else { - // Just a rows selector - _dtRowSelector(out, dt, identifier, fields, idFn); - } - return out; - }, - id: function (data) { - var idFn = dataGet(this.s.idSrc); - return idFn(data); - }, - individual: function (identifier, fieldNames) { - var idFn = dataGet(this.s.idSrc); - var dt = _dtApi(this.s.table); - var fields = this.s.fields; - var out = {}; - var forceFields; - if (fieldNames) { - if (!Array.isArray(fieldNames)) { - fieldNames = [fieldNames]; - } - forceFields = {}; - $.each(fieldNames, function (i, name) { - forceFields[name] = fields[name]; - }); - } - _dtCellSelector(out, dt, identifier, fields, idFn, forceFields); - return out; - }, - prep: function (action, identifier, submit, json, store) { - var _this = this; - // Get the id of the rows created / edited - if (action === 'create') { - store.rowIds = $.map(json.data, function (row) { return dataSource$1.id.call(_this, row); }); - } - if (action === 'edit') { - var cancelled_1 = json.cancelled || []; - store.rowIds = $.map(submit.data, function (val, key) { - return !$.isEmptyObject(submit.data[key]) && // was submitted - $.inArray(key, cancelled_1) === -1 ? // was not cancelled on the server-side - key : - undefined; - }); - } - else if (action === 'remove') { - store.cancelled = json.cancelled || []; - } - }, - refresh: function () { - // Reload a table's data - used when nested data is changed - var dt = _dtApi(this.s.table); - dt.ajax.reload(null, false); - }, - remove: function (identifier, fields, store) { - // No confirmation from the server - var that = this; - var dt = _dtApi(this.s.table); - var cancelled = store.cancelled; - if (cancelled.length === 0) { - // No rows were cancelled on the server-side, remove them all - dt.rows(identifier).remove(); - } - else { - // One or more rows were cancelled, so we need to identify them - // and not remove those rows - var indexes_1 = []; - dt.rows(identifier).every(function () { - var id = dataSource$1.id.call(that, this.data()); - if ($.inArray(id, cancelled) === -1) { - // Don't use `remove` here - it messes up the indexes - indexes_1.push(this.index()); - } - }); - dt.rows(indexes_1).remove(); - } - } -}; - -/* - - - - - - - - - * HTML editor interface - */ -function _htmlId(identifier) { - if (identifier === 'keyless') { - return $(document); - } - var specific = $('[data-editor-id="' + identifier + '"]'); - if (specific.length === 0) { - specific = typeof identifier === 'string' ? - $(safeQueryId(identifier)) : - $(identifier); - } - if (specific.length === 0) { - throw new Error('Could not find an element with `data-editor-id` or `id` of: ' + identifier); - } - return specific; -} -function _htmlEl(identifier, name) { - var context = _htmlId(identifier); - return $('[data-editor-field="' + name + '"]', context); -} -function _htmlEls(identifier, names) { - var out = $(); - for (var i = 0, ien = names.length; i < ien; i++) { - out = out.add(_htmlEl(identifier, names[i])); - } - return out; -} -function _htmlGet(identifier, dataSrc) { - var el = _htmlEl(identifier, dataSrc); - return el.filter('[data-editor-value]').length ? - el.attr('data-editor-value') : - el.html(); -} -function _htmlSet(identifier, fields, data) { - $.each(fields, function (name, field) { - var val = field.valFromData(data); - if (val !== undefined) { - var el = _htmlEl(identifier, field.dataSrc()); - if (el.filter('[data-editor-value]').length) { - el.attr('data-editor-value', val); - } - else { - el.each(function () { - // This is very frustrating, but in IE if you just write directly - // to innerHTML, and elements that are overwritten are GC'ed, - // even if there is a reference to them elsewhere - while (this.childNodes.length) { - this.removeChild(this.firstChild); - } - }) - .html(val); - } - } - }); -} -var dataSource = { - create: function (fields, data) { - // If there is an element with the id that has been created, then use it - // to assign the values - if (data) { - var id = dataSource.id.call(this, data); - try { - if (_htmlId(id).length) { - _htmlSet(id, fields, data); - } - } - catch (e) { - // noop - use `postCreate` to add items to the DOM - } - } - }, - edit: function (identifier, fields, data) { - // Get the ids from the returned data or `keyless` if not found - var id = dataSource.id.call(this, data) || 'keyless'; - _htmlSet(id, fields, data); - }, - // get idSrc, fields to edit, data and node for each item - fields: function (identifier) { - var out = {}; - // Allow multi-point editing - if (Array.isArray(identifier)) { - for (var i = 0, ien = identifier.length; i < ien; i++) { - var res = dataSource.fields.call(this, identifier[i]); - out[identifier[i]] = res[identifier[i]]; - } - return out; - } - // else - var data = {}; - var fields = this.s.fields; - if (!identifier) { - identifier = 'keyless'; - } - $.each(fields, function (name, field) { - var val = _htmlGet(identifier, field.dataSrc()); - // If no HTML element is present, jQuery returns null. We want undefined - field.valToData(data, val === null ? undefined : val); - }); - out[identifier] = { - data: data, - fields: fields, - idSrc: identifier, - node: document, - type: 'row' - }; - return out; - }, - id: function (data) { - var idFn = dataGet(this.s.idSrc); - return idFn(data); - }, - individual: function (identifier, fieldNames) { - var attachEl; - // Auto detection of the field name and id - if (identifier instanceof $ || identifier.nodeName) { - attachEl = identifier; - if (!fieldNames) { - fieldNames = [$(identifier).attr('data-editor-field')]; - } - var back = $.fn.addBack ? 'addBack' : 'andSelf'; - identifier = $(identifier).parents('[data-editor-id]')[back]().data('editor-id'); - } - // no id given and none found - if (!identifier) { - identifier = 'keyless'; - } - // no field name - cannot continue - if (fieldNames && !Array.isArray(fieldNames)) { - fieldNames = [fieldNames]; - } - if (!fieldNames || fieldNames.length === 0) { - throw new Error('Cannot automatically determine field name from data source'); - } - var out = dataSource.fields.call(this, identifier); - var fields = this.s.fields; - var forceFields = {}; - $.each(fieldNames, function (i, name) { - forceFields[name] = fields[name]; - }); - $.each(out, function (id, set) { - set.type = 'cell'; - set.attachFields = [fieldNames]; - set.attach = attachEl ? - $(attachEl) : - _htmlEls(identifier, fieldNames).toArray(); - set.fields = fields; - set.displayFields = forceFields; - }); - return out; - }, - initField: function (cfg) { - // This is before the field has been initialised so can't use it API - var label = $('[data-editor-label="' + (cfg.data || cfg.name) + '"]'); - if (!cfg.label && label.length) { - cfg.label = label.html(); - } - }, - remove: function (identifier, fields) { - // If there is an element with an ID property matching the identifier, - // remove it - if (identifier !== 'keyless') { - _htmlId(identifier).remove(); - } - } -}; - -/** - * Class names that are used by Editor for its various display components. - * A copy of this object is taken when an Editor instance is initialised, thus - * allowing different classes to be used in different instances if required. - * Class name changes can be useful for easy integration with CSS frameworks, - * for example Twitter Bootstrap. - * - * @namespace - */ -var classNames = { - /** - * Action classes - these are added to the Editor base element ("wrapper") - * and allows styling based on the type of form view that is being employed. - * - * @namespace - */ - actions: { - /** - * Editor is in 'create' state - */ - create: 'DTE_Action_Create', - /** - * Editor is in 'edit' state - */ - edit: 'DTE_Action_Edit', - /** - * Editor is in 'remove' state - */ - remove: 'DTE_Action_Remove' - }, - /** - * Display body classes - * - * @namespace - */ - body: { - /** - * Liner for the body content - */ - content: 'DTE_Body_Content', - /** - * Container for the body elements - */ - wrapper: 'DTE_Body' - }, - /** - * Bubble editing classes - these are used to display the bubble editor - * - * @namespace - */ - bubble: { - /** - * Fixed background - */ - bg: 'DTE_Bubble_Background', - /** - * Close button - */ - close: 'icon close', - /** - * Bubble content liner - */ - liner: 'DTE_Bubble_Liner', - /** - * Pointer shown which node is being edited - */ - pointer: 'DTE_Bubble_Triangle', - /** - * Bubble table display wrapper, so the buttons and form can be shown - * as table cells (via css) - */ - table: 'DTE_Bubble_Table', - /** - * Bubble container element - */ - wrapper: 'DTE DTE_Bubble' - }, - /** - * Field classes - * - * @namespace - */ - field: { - /** - * Field is disabled - */ - 'disabled': 'disabled', - /** - * Field error state (added to the field.wrapper element when in error state - */ - 'error': 'DTE_Field_StateError', - /** - * Field input container - */ - 'input': 'DTE_Field_Input', - /** - * Input elements wrapper - */ - 'inputControl': 'DTE_Field_InputControl', - /** - * Field label - */ - 'label': 'DTE_Label', - /** - * Error information text - */ - 'msg-error': 'DTE_Field_Error', - /** - * General information text - */ - 'msg-info': 'DTE_Field_Info', - /** - * Label information text - */ - 'msg-label': 'DTE_Label_Info', - /** - * Live messaging (API) information text - */ - 'msg-message': 'DTE_Field_Message', - /** - * Multi-value information descriptive text - */ - 'multiInfo': 'multi-info', - /** - * Multi-value not editable (field.multiEditable) - */ - 'multiNoEdit': 'multi-noEdit', - /** - * Multi-value information display - */ - 'multiRestore': 'multi-restore', - /** - * Multi-value information display wrapper - */ - 'multiValue': 'multi-value', - /** - * Class prefix for the field name - field name is added to the end allowing - * styling based on field name. - */ - 'namePrefix': 'DTE_Field_Name_', - /** - * Field's processing element - */ - 'processing': 'DTE_Processing_Indicator', - /** - * Class prefix for the field type - field type is added to the end allowing - * styling based on field type. - */ - 'typePrefix': 'DTE_Field_Type_', - /** - * Container for each field - */ - 'wrapper': 'DTE_Field' - }, - /** - * Display footer classes - * - * @namespace - */ - footer: { - /** - * Liner for the footer content - */ - content: 'DTE_Footer_Content', - /** - * Container for the footer elements - */ - wrapper: 'DTE_Footer' - }, - /** - * Form classes - * - * @namespace - */ - form: { - /** - * Button - */ - button: 'btn', - /** - * Button inside the form - */ - buttonInternal: 'btn', - /** - * Buttons container - */ - buttons: 'DTE_Form_Buttons', - /** - * Liner for the form content - */ - content: 'DTE_Form_Content', - /** - * Global error imformation - */ - error: 'DTE_Form_Error', - /** - * Global form information - */ - info: 'DTE_Form_Info', - /** - * Applied to the
        tag - */ - tag: '', - /** - * Container for the form elements - */ - wrapper: 'DTE_Form' - }, - /** - * Display header classes - * - * @namespace - */ - header: { - /** - * Liner for the header content - */ - content: 'DTE_Header_Content', - /** - * Title tag - */ - title: { - tag: null, - class: '' - }, - /** - * Container for the header elements - */ - wrapper: 'DTE_Header' - }, - /** - * Inline editing classes - these are used to display the inline editor - * - * @namespace - */ - inline: { - buttons: 'DTE_Inline_Buttons', - liner: 'DTE_Inline_Field', - wrapper: 'DTE DTE_Inline', - }, - /** - * Processing classes - * - * @namespace - */ - processing: { - /** - * Added to the base element ("wrapper") when the form is "processing" - */ - active: 'processing', - /** - * Processing indicator element - */ - indicator: 'DTE_Processing_Indicator' - }, - /** - * Applied to the base DIV element that contains all other Editor elements - */ - wrapper: 'DTE' -}; - -var displayed$2 = false; -var cssBackgroundOpacity = 1; -var dom$1 = { - background: $('
        ')[0], - close: $('
        ')[0], - content: null, - wrapper: $('
        ' + - '
        ' + - '
        ' + - '
        ')[0] -}; -function findAttachRow(editor, attach) { - var dt = new $.fn.dataTable.Api(editor.s.table); - // Figure out where we want to put the form display - if (attach === 'head') { - return dt.table(undefined).header(); // typing error in DT type file - } - else if (editor.s.action === 'create') { - return dt.table(undefined).header(); - } - else { - return dt.row(editor.s.modifier).node(); - } -} -function heightCalc$1(dte) { - // Set the max-height for the form content - var header = $('div.DTE_Header', dom$1.wrapper).outerHeight(); - var footer = $('div.DTE_Footer', dom$1.wrapper).outerHeight(); - var maxHeight = $(window).height() - (envelope.conf.windowPadding * 2) - - header - footer; - $('div.DTE_Body_Content', dom$1.wrapper).css('maxHeight', maxHeight); - return $(dte.dom.wrapper).outerHeight(); -} -function hide$2(dte, callback) { - if (!callback) { - callback = function () { }; - } - if (displayed$2) { - $(dom$1.content).animate({ - top: -(dom$1.content.offsetHeight + 50) - }, 600, function () { - $([dom$1.wrapper, dom$1.background]).fadeOut('normal', function () { - $(this).detach(); - callback(); - }); - }); - displayed$2 = false; - } -} -function init$1() { - dom$1.content = $('div.DTED_Envelope_Container', dom$1.wrapper)[0]; - cssBackgroundOpacity = $(dom$1.background).css('opacity'); -} -function show$2(dte, callback) { - if (!callback) { - callback = function () { }; - } - $('body') - .append(dom$1.background) - .append(dom$1.wrapper); - // Adjust size for the content - dom$1.content.style.height = 'auto'; - if (!displayed$2) { - var style = dom$1.wrapper.style; - style.opacity = '0'; - style.display = 'block'; - var height = heightCalc$1(dte); - var targetRow = findAttachRow(dte, envelope.conf.attach); - var width = targetRow.offsetWidth; - style.display = 'none'; - style.opacity = '1'; - // Prep the display - dom$1.wrapper.style.width = width + 'px'; - dom$1.wrapper.style.marginLeft = -(width / 2) + 'px'; - dom$1.wrapper.style.top = ($(targetRow).offset().top + targetRow.offsetHeight) + 'px'; - dom$1.content.style.top = ((-1 * height) - 20) + 'px'; - // Start animating in the background - dom$1.background.style.opacity = '0'; - dom$1.background.style.display = 'block'; - $(dom$1.background).animate({ - opacity: cssBackgroundOpacity - }, 'normal'); - // Animate in the display - $(dom$1.wrapper).fadeIn(); - $(dom$1.content).animate({ top: 0 }, 600, callback); - } - // Event handlers - $(dom$1.close) - .attr('title', dte.i18n.close) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - dte.close(); - }); - $(dom$1.background) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - dte.background(); - }); - $('div.DTED_Lightbox_Content_Wrapper', dom$1.wrapper) - .off('click.DTED_Envelope') - .on('click.DTED_Envelope', function (e) { - if ($(e.target).hasClass('DTED_Envelope_Content_Wrapper')) { - dte.background(); - } - }); - $(window) - .off('resize.DTED_Envelope') - .on('resize.DTED_Envelope', function () { - heightCalc$1(dte); - }); - displayed$2 = true; -} -var envelope = { - close: function (dte, callback) { - hide$2(dte, callback); - }, - conf: { - attach: 'row', - windowPadding: 50 - }, - destroy: function (dte) { - hide$2(); - }, - init: function (dte) { - init$1(); - return envelope; - }, - node: function (dte) { - return dom$1.wrapper[0]; - }, - open: function (dte, append, callback) { - $(dom$1.content).children().detach(); - dom$1.content.appendChild(append); - dom$1.content.appendChild(dom$1.close); - show$2(dte, callback); - } -}; - -function isMobile() { - return typeof window.orientation !== 'undefined' && window.outerWidth <= 576 - ? true - : false; -} -var displayed$1 = false; -var ready = false; -var scrollTop = 0; -var dom = { - background: $('
        '), - close: $('
        '), - content: null, - wrapper: $('
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ') -}; -function heightCalc() { - var headerFooter = $('div.DTE_Header', dom.wrapper).outerHeight() + - $('div.DTE_Footer', dom.wrapper).outerHeight(); - if (isMobile()) { - $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', 'calc(100vh - ' + headerFooter + 'px)'); - } - else { - // Set the max-height for the form content - var maxHeight = $(window).height() - (self.conf.windowPadding * 2) - headerFooter; - $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', maxHeight); - } -} -function hide$1(dte, callback) { - if (!callback) { - callback = function () { }; - } - // Restore scroll state - $('body').scrollTop(scrollTop); - dte._animate(dom.wrapper, { - opacity: 0, - top: self.conf.offsetAni - }, function () { - $(this).detach(); - callback(); - }); - dte._animate(dom.background, { - opacity: 0 - }, function () { - $(this).detach(); - }); - displayed$1 = false; - $(window).off('resize.DTED_Lightbox'); -} -function init() { - if (ready) { - return; - } - dom.content = $('div.DTED_Lightbox_Content', dom.wrapper); - dom.wrapper.css('opacity', 0); - dom.background.css('opacity', 0); - ready = true; -} -function show$1(dte, callback) { - // Mobiles have very poor position fixed abilities, so we need to know - // when using mobile A media query isn't good enough - if (isMobile()) { - $('body').addClass('DTED_Lightbox_Mobile'); - } - $('body') - .append(dom.background) - .append(dom.wrapper); - heightCalc(); - if (!displayed$1) { - displayed$1 = true; - dom.content.css('height', 'auto'); - dom.wrapper.css({ - top: -self.conf.offsetAni - }); - dte._animate(dom.wrapper, { - opacity: 1, - top: 0 - }, callback); - dte._animate(dom.background, { - opacity: 1 - }); - $(window).on('resize.DTED_Lightbox', function () { - heightCalc(); - }); - scrollTop = $('body').scrollTop(); - } - // Event handlers - assign on show, premoving previous bindings - dom.close - .attr('title', dte.i18n.close) - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - dte.close(); - }); - dom.background - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - e.stopImmediatePropagation(); - dte.background(); - }); - $('div.DTED_Lightbox_Content_Wrapper', dom.wrapper) - .off('click.DTED_Lightbox') - .on('click.DTED_Lightbox', function (e) { - if ($(e.target).hasClass('DTED_Lightbox_Content_Wrapper')) { - e.stopImmediatePropagation(); - dte.background(); - } - }); -} -var self = { - close: function (dte, callback) { - hide$1(dte, callback); - }, - conf: { - offsetAni: 25, - windowPadding: 25 - }, - destroy: function (dte) { - if (displayed$1) { - hide$1(dte); - } - }, - init: function (dte) { - init(); - return self; - }, - node: function (dte) { - return dom.wrapper[0]; - }, - open: function (dte, append, callback) { - var content = dom.content; - content.children().detach(); - content - .append(append) - .append(dom.close); - show$1(dte, callback); - }, -}; - -var DataTable$5 = $.fn.dataTable; -/** - * Add a new field to the from. This is the method that is called automatically when - * fields are given in the initialisation objects as `Editor.defaults.fields`. - * - * @param this Editor instance - * @param cfg The object that describes the field (the full - * object is described by `Editor.model.field`. Note that multiple - * fields can be given by passing in an array of field definitions. - * @param after Existing field to insert the new field after. This - * can be `undefined` (insert at end), `null` (insert at start) or `string` - * the field name to insert after. - * @param reorder INTERNAL for array adding performance only - * @returns Editor instance - */ -function add(cfg, after, reorder) { - if (reorder === void 0) { reorder = true; } - // Allow multiple fields to be added at the same time - if (Array.isArray(cfg)) { - // Do it in reverse to allow fields to appear in the same order given, otherwise, - // the would appear in reverse if given an `after` - if (after !== undefined) { - cfg.reverse(); - } - for (var _i = 0, cfg_1 = cfg; _i < cfg_1.length; _i++) { - var cfgDp = cfg_1[_i]; - this.add(cfgDp, after, false); - } - this._displayReorder(this.order()); - return this; - } - var name = cfg.name; - if (name === undefined) { - throw new Error('Error adding field. The field requires a `name` option'); - } - if (this.s.fields[name]) { - throw new Error('Error adding field \'' + name + '\'. A field already exists with this name'); - } - // Allow the data source to add / modify the field properties - // Dev: would this be better as an event `preAddField`? And have the - // data sources init only once, but can listen for such events? More - // complexity, but probably more flexible... - this._dataSource('initField', cfg); - var editorField = new Editor.Field(cfg, this.classes.field, this); - // If in an editing mode, we need to set the field up for the data - if (this.s.mode) { - var editFields = this.s.editFields; - editorField.multiReset(); - $.each(editFields, function (idSrc, editIn) { - var value; - if (editIn.data) { - value = editorField.valFromData(editIn.data); - } - editorField.multiSet(idSrc, value !== undefined ? - value : - editorField.def()); - }); - } - this.s.fields[name] = editorField; - if (after === undefined) { - this.s.order.push(name); - } - else if (after === null) { - this.s.order.unshift(name); - } - else { - var idx = $.inArray(after, this.s.order); - this.s.order.splice(idx + 1, 0, name); - } - if (reorder !== false) { - this._displayReorder(this.order()); - } - return this; -} -function ajax(newAjax) { - if (newAjax) { - this.s.ajax = newAjax; - return this; - } - return this.s.ajax; -} -/** - * Perform background activation tasks. - * - * This is NOT publicly documented on the Editor web-site, but rather can be - * used by display controller plug-ins to perform the required task on - * background activation. - * - * @param this Editor instance - * @returns Editor instance - */ -function background() { - var onBackground = this.s.editOpts.onBackground; - if (typeof onBackground === 'function') { - onBackground(this); - } - else if (onBackground === 'blur') { - this.blur(); - } - else if (onBackground === 'close') { - this.close(); - } - else if (onBackground === 'submit') { - this.submit(); - } - return this; -} -/** - * Blur the currently displayed editor. - * - * A blur is different from a `close()` in that it might cause either a close or - * the form to be submitted. A typical example of a blur would be clicking on - * the background of the bubble or main editing forms - i.e. it might be a - * close, or it might submit depending upon the configuration, while a click on - * the close box is a very definite close. - * - * @returns Editor instance - */ -function blur() { - this._blur(); - return this; -} -function bubble(cells, fieldNames, showIn, opts) { - var _this = this; - if (showIn === void 0) { showIn = true; } - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.bubble(cells, fieldNames, opts); - })) { - return this; - } - // Argument shifting - if ($.isPlainObject(fieldNames)) { - opts = fieldNames; - fieldNames = undefined; - showIn = true; - } - else if (typeof fieldNames === 'boolean') { - showIn = fieldNames; - fieldNames = undefined; - opts = undefined; - } - if ($.isPlainObject(showIn)) { - opts = showIn; - showIn = true; - } - if (showIn === undefined) { - showIn = true; - } - opts = $.extend({}, this.s.formOptions.bubble, opts); - var editFields = this._dataSource('individual', cells, fieldNames); - this._edit(cells, editFields, 'bubble', opts, function () { - var namespace = _this._formOptions(opts); - var ret = _this._preopen('bubble'); - if (!ret) { - return _this; - } - // Keep the bubble in position on resize - $(window).on('resize.' + namespace + ' scroll.' + namespace, function () { - _this.bubblePosition(); - }); - // Store the nodes this are being used so the bubble can be positioned - var nodes = []; - _this.s.bubbleNodes = nodes.concat.apply(nodes, pluck(editFields, 'attach')); - // Create container display - var classes = _this.classes.bubble; - var backgroundNode = $('
        '); - var container = $('
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        '); - if (showIn) { - container.appendTo('body'); - backgroundNode.appendTo('body'); - } - var liner = container.children().eq(0); - var tableNode = liner.children(); - var closeNode = tableNode.children(); - liner.append(_this.dom.formError); - tableNode.prepend(_this.dom.form); - if (opts.message) { - liner.prepend(_this.dom.formInfo); - } - if (opts.title) { - liner.prepend(_this.dom.header); - } - if (opts.buttons) { - tableNode.append(_this.dom.buttons); - } - // Need to use a small anon function here as the animate callback is the scope - // of the element being animated and TS won't allow access to the private methods - var finish = function () { - _this._clearDynamicInfo(); - _this._event('closed', ['bubble']); - }; - var pair = $().add(container).add(backgroundNode); - _this._closeReg(function (submitComplete) { - _this._animate(pair, { opacity: 0 }, function () { - if (this === container[0]) { - pair.detach(); - $(window).off('resize.' + namespace + ' scroll.' + namespace); - finish(); - } - }); - }); - // Close event handlers - backgroundNode.on('click', function () { - _this.blur(); - }); - closeNode.on('click', function () { - _this._close(); - }); - _this.bubblePosition(); - _this._postopen('bubble', false); - var opened = function () { - _this._focus(_this.s.includeFields, opts.focus); - _this._event('opened', ['bubble', _this.s.action]); - }; - _this._animate(pair, { opacity: 1 }, function () { - // Otherwise the callback will happen on both elements - if (this === container[0]) { - opened(); - } - }); - }); - return this; -} -/** - * Reposition the editing bubble (`bubble()`) when it is visible. This can be - * used to update the bubble position if other elements on the page change - * position. Editor will automatically call this method on window resize. - * - * @returns Editor instance - */ -function bubblePosition() { - var wrapper = $('div.DTE_Bubble'); - var liner = $('div.DTE_Bubble_Liner'); - var nodes = this.s.bubbleNodes; - // Average the node positions to insert the container - var position = { bottom: 0, left: 0, right: 0, top: 0 }; - $.each(nodes, function (i, nodeIn) { - var pos = $(nodeIn).offset(); - nodeIn = $(nodeIn).get(0); - position.top += pos.top; - position.left += pos.left; - position.right += pos.left + nodeIn.offsetWidth; - position.bottom += pos.top + nodeIn.offsetHeight; - }); - position.top /= nodes.length; - position.left /= nodes.length; - position.right /= nodes.length; - position.bottom /= nodes.length; - var top = position.top; - var left = (position.left + position.right) / 2; - var width = liner.outerWidth(); - var height = liner.outerHeight(); - var visLeft = left - (width / 2); - var visRight = visLeft + width; - var docWidth = $(window).width(); - var viewportTop = $(window).scrollTop(); - var padding = 15; - // Show above or below depending on bubbleBottom - wrapper.css({ - left: left, - top: this.s.bubbleBottom ? position.bottom : top - }); - if (this.s.bubbleBottom) { - wrapper.addClass('below'); - } - var curPosition = wrapper.position(); - // Correct for overflow below the fold - if (liner.length && curPosition.top + height > viewportTop + window.innerHeight) { - wrapper - .css('top', top) - .removeClass('below'); - this.s.bubbleBottom = false; - } - else if (liner.length && curPosition.top - height < viewportTop) { - // Correct for overflow from the top of the document by positioning below - // the field if needed - wrapper - .css('top', position.bottom) - .addClass('below'); - this.s.bubbleBottom = true; - } - // Attempt to correct for overflow to the right of the document - if (visRight + padding > docWidth) { - var diff = visRight - docWidth; - // If left overflowing, that takes priority - liner.css('left', visLeft < padding ? - -(visLeft - padding) : - -(diff + padding)); - } - else { - // Correct overflow to the left - liner.css('left', visLeft < padding ? -(visLeft - padding) : 0); - } - return this; -} -/** - * Setup the buttons that will be shown in the footer of the form - calling this - * method will replace any buttons which are currently shown in the form. - * - * @param this Editor instance - * @param buttonsIn A single button definition to add to the form or - * an array of objects with the button definitions to add more than one button. - * The options for the button definitions are fully defined by the - * @returns Editor instance - */ -function buttons(buttonsIn) { - var _this = this; - if (buttonsIn === '_basic') { - // Special string to create a basic button - undocumented - buttonsIn = [{ - action: function () { - this.submit(); - }, - text: this.i18n[this.s.action].submit - }]; - } - else if (!Array.isArray(buttonsIn)) { - // Allow a single button to be passed in as an object with an array - buttonsIn = [buttonsIn]; - } - $(this.dom.buttons).empty(); - $.each(buttonsIn, function (i, btn) { - if (typeof btn === 'string') { - btn = { - action: function () { - this.submit(); - }, - text: btn - }; - } - var text = btn.text || btn.label; // legacy support - var action = btn.action || btn.fn; // legacy support - var attr = btn.attr || {}; - $('', { - class: _this.classes.form.button + (btn.className ? ' ' + btn.className : '') - }) - .html(typeof text === 'function' ? - text(_this) : - text || '') - .attr('tabindex', btn.tabIndex !== undefined ? btn.tabIndex : 0) - .attr(attr) - .on('keyup', function (e) { - if (e.which === 13 && action) { - action.call(_this); - } - }) - .on('keypress', function (e) { - // Stop the browser activating the click event - if we don't - // have this and the Ajax return is fast, the keyup in - // `_formOptions()` might trigger another submit - if (e.which === 13) { - e.preventDefault(); - } - }) - .on('click', function (e) { - e.preventDefault(); - if (action) { - action.call(_this, e); - } - }) - .appendTo(_this.dom.buttons); - }); - return this; -} -/** - * Remove fields from the form. - * - * @param this Editor instance - * @param fieldName Field to remove - * @returns Editor instance - */ -function clear(fieldName) { - var that = this; - var sFields = this.s.fields; - if (typeof fieldName === 'string') { - // Remove an individual form element - that.field(fieldName).destroy(); - delete sFields[fieldName]; - var orderIdx = $.inArray(fieldName, this.s.order); - this.s.order.splice(orderIdx, 1); - var includeIdx = $.inArray(fieldName, this.s.includeFields); - if (includeIdx !== -1) { - this.s.includeFields.splice(includeIdx, 1); - } - } - else { - $.each(this._fieldNames(fieldName), function (i, name) { - that.clear(name); - }); - } - return this; -} -/** - * Close the form display. - * - * @param this Editor instance - * @returns Editor instance - */ -function close() { - this._close(false); - return this; -} -function create(arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - var sFields = this.s.fields; - var count = 1; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.create(arg1, arg2, arg3, arg4); - })) { - return this; - } - // Multi-row creation support (only supported by the 1.3+ style of calling - // this method, so a max of three arguments - if (typeof arg1 === 'number') { - count = arg1; - arg1 = arg2; - arg2 = arg3; - } - // Set up the edit fields for submission - this.s.editFields = {}; - for (var i = 0; i < count; i++) { - this.s.editFields[i] = { - fields: this.s.fields - }; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - this.s.mode = 'main'; - this.s.action = 'create'; - this.s.modifier = null; - this.dom.form.style.display = 'block'; - this._actionClass(); - // Allow all fields to be displayed for the create form - this._displayReorder(this.fields()); - // Set the default for the fields - $.each(sFields, function (name, fieldIn) { - var def = fieldIn.def(); - fieldIn.multiReset(); - // Set a value marker for each multi, so the field - // knows what the id's are (ints in this case) - for (var i = 0; i < count; i++) { - fieldIn.multiSet(i, def); - } - fieldIn.set(def); - }); - this._event('initCreate', null, function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - }); - return this; -} -/** - * Remove dependent links from a field - * - * @param this Editor instance - * @param parent The name of the field to remove the existing dependencies - * @returns Editor instance - */ -function undependent(parent) { - if (Array.isArray(parent)) { - for (var i = 0, ien = parent.length; i < ien; i++) { - this.undependent(parent[i]); - } - return this; - } - $(this.field(parent).node()).off('.edep'); - return this; -} -/** - * Create a dependent link between two or more fields. This method is used to - * listen for a change in a field's value which will trigger updating of the - * form. This update can consist of updating an options list, changing values - * or making fields hidden / visible. - * - * @param this Editor instance - * @param parent Field(s) to attach a dependency to - * @param url Action to perform on data change - * @param optsIn Configuration options - * @returns Editor instance - */ -function dependent(parent, url, optsIn) { - var _this = this; - if (Array.isArray(parent)) { - for (var i = 0, ien = parent.length; i < ien; i++) { - this.dependent(parent[i], url, optsIn); - } - return this; - } - var that = this; - var parentField = this.field(parent); - var ajaxOpts = { - dataType: 'json', - type: 'POST' - }; - var opts = $.extend({}, { - data: null, - event: 'change', - postUpdate: null, - preUpdate: null - }, optsIn); - var update = function (json) { - if (opts.preUpdate) { - opts.preUpdate(json); - } - // Field specific - $.each({ - errors: 'error', - labels: 'label', - messages: 'message', - options: 'update', - values: 'val' - }, function (jsonProp, fieldFn) { - if (json[jsonProp]) { - $.each(json[jsonProp], function (fieldIn, valIn) { - that.field(fieldIn)[fieldFn](valIn); - }); - } - }); - // Form level - $.each(['hide', 'show', 'enable', 'disable'], function (i, key) { - if (json[key]) { - that[key](json[key], json.animate); - } - }); - if (opts.postUpdate) { - opts.postUpdate(json); - } - parentField.processing(false); - }; - // Use a delegate handler to account for field elements which are added and - // removed after `depenedent` has been called - $(parentField.node()).on(opts.event + '.edep', function (e) { - // Make sure that it was one of the field's elements that triggered the ev - if ($(parentField.node()).find(e.target).length === 0) { - return; - } - parentField.processing(true); - var data = {}; - data.rows = _this.s.editFields ? - pluck(_this.s.editFields, 'data') : - null; - data.row = data.rows ? - data.rows[0] : - null; - data.values = _this.val(); - if (opts.data) { - var ret = opts.data(data); - if (ret) { - data = ret; - } - } - if (typeof url === 'function') { - var o = url.call(_this, parentField.val(), data, update, e); - if (o) { - if (typeof o === 'object' && typeof o.then === 'function') { - o.then(function (resolved) { - if (resolved) { - update(resolved); - } - }); - } - else { - update(o); - } - } - } - else { - if ($.isPlainObject(url)) { - $.extend(ajaxOpts, url); - } - else { - ajaxOpts.url = url; - } - $.ajax($.extend(ajaxOpts, { - data: data, - success: update - })); - } - }); - return this; -} -/** - * Destroy the Editor instance, cleaning up fields, display and event handlers - */ -function destroy() { - if (this.s.displayed) { - this.close(); - } - this.clear(); - // Stick the template back into the document so it can be reused - if (this.s.template) { - $('body').append(this.s.template); - } - var controller = this.s.displayController; - if (controller.destroy) { - controller.destroy(this); - } - $(document).off('.dte' + this.s.unique); - this.dom = null; - this.s = null; -} -/** - * Disable one or more field inputs, disallowing subsequent user interaction with the - * fields until they are re-enabled. - * - * @param this Editor instance - * @param name Field(s) to disable. Disables all if not given. - * @returns Editor instance - */ -function disable(name) { - var that = this; - $.each(this._fieldNames(name), function (i, n) { - that.field(n).disable(); - }); - return this; -} -function display(showIn) { - if (showIn === undefined) { - return this.s.displayed; - } - return this[showIn ? 'open' : 'close'](); -} -/** - * Get a list of the fields that are currently shown in the Editor form. - * - * @param this Editor instance - * @returns Array of field names - */ -function displayed() { - return $.map(this.s.fields, function (fieldIn, name) { - return fieldIn.displayed() ? name : null; - }); -} -/** - * Get display controller node - * - * @returns Display controller host element - */ -function displayNode() { - return this.s.displayController.node(this); -} -function edit(items, arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.edit(items, arg1, arg2, arg3, arg4); - })) { - return this; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - this._edit(items, this._dataSource('fields', items), 'main', argOpts.opts, function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - }); - return this; -} -/** - * Enable one or more field inputs, restoring user interaction with the fields. - * - * @param this Editor instance - * @param name Field(s) to enable. If not given, all fields in the form are enabled - * @returns Editor instance - */ -function enable(name) { - var that = this; - $.each(this._fieldNames(name), function (i, n) { - that.field(n).enable(); - }); - return this; -} -function error$1(name, msg) { - var wrapper = $(this.dom.wrapper); - if (msg === undefined) { - // Global error - this._message(this.dom.formError, name, true, function () { - wrapper.toggleClass('inFormError', name !== undefined && name !== ''); - }); - // Store the error message so `inError` can check if there is an - // error or not without considering animation - this.s.globalError = name; - } - else { - // Field error - this.field(name).error(msg); - } - return this; -} -/** - * Get a field object, configured for a named field, which can then be - * manipulated through its API. - * - * @param this Editor instance - * @param name Field to get - * @returns Field instance - */ -function field(name) { - var sFields = this.s.fields; - if (!sFields[name]) { - throw new Error('Unknown field name - ' + name); - } - return sFields[name]; -} -/** - * Get a list of the fields that are used by the Editor instance. - * - * @param this Editor instance - * @returns Editor instance - */ -function fields() { - return $.map(this.s.fields, function (fieldIn, name) { - return name; - }); -} -/** - * Get data object for a file from a table and id - * - * @param name Table name - * @param id Primary key identifier - * @returns File information - */ -function file(name, id) { - var tableFromFile = this.files(name); // can throw. `this` will be Editor or - var fileFromTable = tableFromFile[id]; // DataTables.Api context. Both work. - if (!fileFromTable) { - throw new Error('Unknown file id ' + id + ' in table ' + name); - } - return tableFromFile[id]; -} -function files(name) { - if (!name) { - return Editor.files; - } - var editorTable = Editor.files[name]; - if (!editorTable) { - throw new Error('Unknown file table name: ' + name); - } - return editorTable; -} -function get(name) { - var that = this; - if (!name) { - name = this.fields(); - } - if (Array.isArray(name)) { - var out_1 = {}; - $.each(name, function (i, n) { - out_1[n] = that.field(n).get(); - }); - return out_1; - } - return this.field(name).get(); -} -/** - * Hide one or more fields from the form display. - * - * @param this Editor instance - * @param names Fields to hide. Will hide all if not given - * @param animate Animate (default true) - * @returns Editor instance - */ -function hide(names, animate) { - var that = this; - $.each(this._fieldNames(names), function (i, n) { - that.field(n).hide(animate); - }); - return this; -} -/** - * Get the ids of the rows being edited - * - * @param includeHash Include a prefixed `#`, useful if to be used as a selector - */ -function ids(includeHash) { - if (includeHash === void 0) { includeHash = false; } - return $.map(this.s.editFields, function (editIn, idSrc) { - return includeHash === true ? - '#' + idSrc : - idSrc; - }); -} -/** - * Determine if there is an error state in the form, either the form's global - * error message, or one or more fields. - * - * @param this Editor instance - * @param inNames Fields to check. All checked if not given - * @returns true if in error, false otherwise - */ -function inError(inNames) { - $(this.dom.formError); - // Is there a global error? - if (this.s.globalError) { - return true; - } - // Field specific - var names = this._fieldNames(inNames); - for (var i = 0, ien = names.length; i < ien; i++) { - if (this.field(names[i]).inError()) { - return true; - } - } - return false; -} -function inline(cell, fieldName, opts) { - var _this = this; - var that = this; - // Argument shifting - if ($.isPlainObject(fieldName)) { - opts = fieldName; - fieldName = undefined; - } - opts = $.extend({}, this.s.formOptions.inline, opts); - var editFields = this._dataSource('individual', cell, fieldName); - var keys = Object.keys(editFields); - // Only a single row - if (keys.length > 1) { - throw new Error('Cannot edit more than one row inline at a time'); - } - var editRow = editFields[keys[0]]; - // Remap so easier to use - var hosts = []; - for (var _i = 0, _a = editRow.attach; _i < _a.length; _i++) { - var row = _a[_i]; - hosts.push(row); - } - // Already in edit mode for this cell? - if ($('div.DTE_Field', hosts).length) { - return this; - } - // Some other field in inline edit mode? - if (this._tidy(function () { - that.inline(cell, fieldName, opts); - })) { - return this; - } - // Start a full row edit, but don't display - we will be showing the field - this._edit(cell, editFields, 'inline', opts, function () { - _this._inline(editFields, opts); - }); - return this; -} -/** - * Inline creation of data. - * - * @param this Editor instance - * @param insertPoint Where to insert the create row - * @param opts Form options - * @returns Editor instance - */ -function inlineCreate(insertPoint, opts) { - var _this = this; - // Argument juggling - allow no insert point, just options - if ($.isPlainObject(insertPoint)) { - opts = insertPoint; - insertPoint = null; - } - if (this._tidy(function () { - _this.inlineCreate(insertPoint, opts); - })) { - return this; - } - // Set the default for the fields - $.each(this.s.fields, function (name, fieldIn) { - fieldIn.multiReset(); - fieldIn.multiSet(0, fieldIn.def()); - fieldIn.set(fieldIn.def()); - }); - this.s.mode = 'main'; - this.s.action = 'create'; - this.s.modifier = null; - this.s.editFields = this._dataSource('fakeRow', insertPoint); - opts = $.extend({}, this.s.formOptions.inline, opts); - this._actionClass(); - this._inline(this.s.editFields, opts, function () { - // When the form is closed (cancelled or submitted) we need to remove the - // fake row - _this._dataSource('fakeRowEnd'); - }); - this._event('initCreate', null); - return this; -} -function message(name, msg) { - if (msg === undefined) { - // Global message - this._message(this.dom.formInfo, name); - } - else { - // Field message - this.field(name).message(msg); - } - return this; -} -function mode(modeIn) { - if (!modeIn) { - return this.s.action; - } - if (!this.s.action) { - throw new Error('Not currently in an editing mode'); - } - else if (this.s.action === 'create' && modeIn !== 'create') { - throw new Error('Changing from create mode is not supported'); - } - this.s.action = modeIn; - return this; -} -/** - * Get the modifier that was used to trigger the edit or delete action. - * - * @returns The identifier that was used for the editing / remove method - * called. - */ -function modifier() { - return this.s.modifier; -} -/** - * Get the values for one or more fields (multi-row editing aware). - * - * @param this Editor instance - * @param fieldNames Fields to get values for, or all fields if not given - * @returns Editor instance - */ -function multiGet(fieldNames) { - var that = this; - if (fieldNames === undefined) { - fieldNames = this.fields(); - } - if (Array.isArray(fieldNames)) { - var out_2 = {}; - $.each(fieldNames, function (i, name) { - out_2[name] = that.field(name).multiGet(); - }); - return out_2; - } - // String - return this.field(fieldNames).multiGet(); -} -function multiSet(fieldNames, valIn) { - var that = this; - if ($.isPlainObject(fieldNames) && valIn === undefined) { - $.each(fieldNames, function (name, value) { - that.field(name).multiSet(value); - }); - } - else { - this.field(fieldNames).multiSet(valIn); - } - return this; -} -function node(name) { - var that = this; - if (!name) { - name = this.order(); - } - return Array.isArray(name) ? - $.map(name, function (n) { - return that.field(n).node(); - }) : - this.field(name).node(); -} -/** - * Remove a bound event listener to the editor instance. - * - * @param this Editor instance - * @param name Event name to remove - * @param fn Handler to remove, or all if not specified - * @returns Editor instance - */ -function off(name, fn) { - $(this).off(this._eventName(name), fn); - return this; -} -/** - * Listen for an event which is fired off by Editor when it performs certain - * actions. - * - * @param this Editor instance - * @param name Event to listen for - * @param fn Event handler to apply - * @returns Editor instance - */ -function on(name, fn) { - $(this).on(this._eventName(name), fn); - return this; -} -/** - * Listen for a single event event which is fired off by Editor when it performs - * certain actions - * - * @param this Editor instance - * @param name Event to listen for - * @param fn Event handler to apply - * @returns Editor instance - */ -function one(name, fn) { - $(this).one(this._eventName(name), fn); - return this; -} -/** - * Display the main form editor to the end user in the web-browser. - * - * @param this Editor instance - * @returns Editor instance - */ -function open() { - var _this = this; - // Insert the display elements in order - this._displayReorder(); - // Define how to do a close - this._closeReg(function () { - _this._nestedClose(function () { - _this._clearDynamicInfo(); - _this._event('closed', ['main']); - }); - }); - // Run the standard open with common events - var ret = this._preopen('main'); - if (!ret) { - return this; - } - this._nestedOpen(function () { - _this._focus($.map(_this.s.order, function (name) { return _this.s.fields[name]; }), _this.s.editOpts.focus); - _this._event('opened', ['main', _this.s.action]); - }, this.s.editOpts.nest); - this._postopen('main', false); - return this; -} -function order(setIn /* , ... */) { - if (!setIn) { - return this.s.order; - } - // Allow new layout to be passed in as arguments - if (arguments.length && !Array.isArray(setIn)) { - setIn = Array.prototype.slice.call(arguments); - } - // Sanity check - array must exactly match the fields we have available - if (this.s.order.slice().sort().join('-') !== setIn.slice().sort().join('-')) { - throw new Error('All fields, and no additional fields, must be provided for ordering.'); - } - // Copy the new array into the order (so the reference is maintained) - $.extend(this.s.order, setIn); - this._displayReorder(); - return this; -} -function remove(items, arg1, arg2, arg3, arg4) { - var _this = this; - var that = this; - // Some other field in inline edit mode? - if (this._tidy(function () { - that.remove(items, arg1, arg2, arg3, arg4); - })) { - return this; - } - if (!items && !this.s.table) { - items = 'keyless'; - } - // Allow a single row node to be passed in to remove, Can't use Array.isArray - // as we also allow array like objects to be passed in (API, jQuery) - if (items.length === undefined) { - items = [items]; - } - var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); - var editFields = this._dataSource('fields', items); - this.s.action = 'remove'; - this.s.modifier = items; - this.s.editFields = editFields; - this.dom.form.style.display = 'none'; - this._actionClass(); - this._event('initRemove', [ - pluck(editFields, 'node'), - pluck(editFields, 'data'), - items - ], function () { - _this._event('initMultiRemove', // undocumented and to be removed in v2 - [editFields, items], function () { - _this._assembleMain(); - _this._formOptions(argOpts.opts); - argOpts.maybeOpen(); - var opts = _this.s.editOpts; - if (opts.focus !== null) { - $('button', _this.dom.buttons).eq(opts.focus).focus(); - } - }); - }); - return this; -} -function set(setIn, valIn) { - var that = this; - if (!$.isPlainObject(setIn)) { - var o = {}; - o[setIn] = valIn; - setIn = o; - } - $.each(setIn, function (n, v) { - that.field(n).set(v); - }); - return this; -} -/** - * Show fields in the display that were previously hidden. - * - * @param this Editor instance - * @param names Field(s) to show. All if not given. - * @param animate Animate the visual change or not - * @returns Editor instance - */ -function show(names, animate) { - var that = this; - $.each(this._fieldNames(names), function (i, n) { - that.field(n).show(animate); - }); - return this; -} -/** - * Submit a form for processing. - * - * @param this Editor instance - * @param successCallback Function executed when submit is completed - * @param errorCallback Function executed on error - * @param formatdata Data formatting function - * @param hideIn Disable default close action by passing in false - * @returns Editor instance - */ -function submit(successCallback, errorCallback, formatdata, hideIn) { - var _this = this; - var fields = this.s.fields; - var errorFields = []; - var errorReady = 0; - var sent = false; - if (this.s.processing || !this.s.action) { - return this; - } - this._processing(true); - // If there are fields in error, we want to wait for the error notification - // to be cleared before the form is submitted - errorFields tracks the - // fields which are in the error state, while errorReady tracks those which - // are ready to submit - var send = function () { - if (errorFields.length !== errorReady || sent) { - return; - } - _this._event('initSubmit', [_this.s.action], function (result) { - if (result === false) { - _this._processing(false); - return; - } - sent = true; - _this._submit(successCallback, errorCallback, formatdata, hideIn); - }); - }; - // Blur the current focus if it is a form input element - this allows any - // actions on change event (e.g. dpendent) to happen - var active = document.activeElement; - if ($(active).closest('div.DTE_Field').length !== 0) { - active.blur(); - } - // Remove the global error (don't know if the form is still in an error - // state!) - this.error(); - // Count how many fields are in error - $.each(fields, function (name, fieldIn) { - if (fieldIn.inError()) { - errorFields.push(name); - } - }); - // Remove the error display - $.each(errorFields, function (i, name) { - fields[name].error('', function () { - errorReady++; - send(); - }); - }); - send(); - return this; -} -function table(setIn) { - if (setIn === undefined) { - return this.s.table; - } - this.s.table = setIn; - return this; -} -function template(setIn) { - if (setIn === undefined) { - return this.s.template; - } - this.s.template = setIn === null ? - null : - $(setIn); - return this; -} -function title(titleIn) { - var header = $(this.dom.header).children('div.' + this.classes.header.content); - var titleClass = this.classes.header.title; - if (titleIn === undefined) { - return header.data('title'); - } - if (typeof titleIn === 'function') { - titleIn = titleIn(this, new DataTable$5.Api(this.s.table)); - } - var set = titleClass.tag - ? $("<" + titleClass.tag + ">Uploading file'); - reader.onload = function (e) { - var data = new FormData(); - var ajax; - data.append('action', 'upload'); - data.append('uploadField', conf.name); - data.append('upload', files[counter]); - if (conf.ajaxData) { - conf.ajaxData(data, files[counter], counter); - } - if (conf.ajax) { - ajax = conf.ajax; - } - else if ($.isPlainObject(editor.s.ajax)) { - ajax = editor.s.ajax.upload ? - editor.s.ajax.upload : - editor.s.ajax; - } - else if (typeof editor.s.ajax === 'string') { - ajax = editor.s.ajax; - } - if (!ajax) { - throw new Error('No Ajax option specified for upload plug-in'); - } - if (typeof ajax === 'string') { - ajax = { url: ajax }; - } - // Handle the case when the ajax data is given as a function - if (typeof ajax.data === 'function') { - var d = {}; - var ret = ajax.data(d); - // Allow the return to be used, or the object passed in - if (ret !== undefined && typeof ret !== 'string') { - d = ret; - } - $.each(d, function (key, value) { - data.append(key, value); - }); - } - else if ($.isPlainObject(ajax.data)) { - throw new Error('Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.'); - } - // Dev cancellable event - editor._event('preUpload', [conf.name, files[counter], data], function (preRet) { - // Upload was cancelled - if (preRet === false) { - // If there are other files still to read, spin through them - if (counter < files.length - 1) { - counter++; - reader.readAsDataURL(files[counter]); - } - else { - completeCallback.call(editor, ids); - } - return; - } - // Use preSubmit to stop form submission during an upload, since the - // value won't be known until that point. - var submit = false; - editor - .on('preSubmit.DTE_Upload', function () { - submit = true; - return false; - }); - $.ajax($.extend({}, ajax, { - contentType: false, - data: data, - dataType: 'json', - error: function (xhr) { - var errors = conf.errors; - editor.off('preSubmit.DTE_Upload'); - editor.error(conf.name, errors && errors[xhr.status] - ? errors[xhr.status] - : generalError); - editor._event('uploadXhrError', [conf.name, xhr]); - progressCallback(conf); - }, - processData: false, - success: function (json) { - editor.off('preSubmit.DTE_Upload'); - editor._event('uploadXhrSuccess', [conf.name, json]); - if (json.fieldErrors && json.fieldErrors.length) { - var errors = json.fieldErrors; - for (var i = 0, ien = errors.length; i < ien; i++) { - editor.error(errors[i].name, errors[i].status); - } - completeCallback.call(editor, ids, true); - } - else if (json.error) { - editor.error(json.error); - completeCallback.call(editor, ids, true); - } - else if (!json.upload || !json.upload.id) { - editor.error(conf.name, generalError); - completeCallback.call(editor, ids, true); - } - else { - if (json.files) { - // Loop over the tables that are defined - $.each(json.files, function (table, filesIn) { - if (!Editor.files[table]) { - Editor.files[table] = {}; - } - $.extend(Editor.files[table], filesIn); - }); - } - ids.push(json.upload.id); - if (counter < files.length - 1) { - counter++; - reader.readAsDataURL(files[counter]); - } - else { - completeCallback.call(editor, ids); - if (submit) { - editor.submit(); - } - } - } - progressCallback(conf); - }, - type: 'post', - xhr: function () { - var xhr = $.ajaxSettings.xhr(); - if (xhr.upload) { - xhr.upload.onprogress = function (e) { - if (e.lengthComputable) { - var percent = (e.loaded / e.total * 100).toFixed(0) + '%'; - progressCallback(conf, files.length === 1 ? - percent : - counter + ':' + files.length + ' ' + percent); - } - }; - xhr.upload.onloadend = function () { - progressCallback(conf, conf.processingText || 'Processing'); - }; - } - return xhr; - } - })); - }); - }; - // Convert to a plain array - files = $.map(files, function (val) { - return val; - }); - // Truncate the selected files if needed - if (conf._limitLeft !== undefined) { - files.splice(conf._limitLeft, files.length); - } - reader.readAsDataURL(files[0]); -} -/** - * CommonJS factory function pass through. Matches DataTables. - * @param {*} root Window - * @param {*} jq jQUery - * @returns {boolean} Indicator - */ -function factory(root, jq) { - var is = false; - // Test if the first parameter is a window object - if (root && root.document) { - window = root; - document = root.document; - } - // Test if the second parameter is a jQuery object - if (jq && jq.fn && jq.fn.jquery) { - $ = jq; - is = true; - } - return is; -} - -var DataTable$4 = $.fn.dataTable; -var _inlineCounter = 0; -/** - * Set the class on the form to relate to the action that is being performed. - * This allows styling to be applied to the form to reflect the state that - * it is in. - * - * @private - */ -function _actionClass() { - var classesActions = this.classes.actions; - var action = this.s.action; - var wrapper = $(this.dom.wrapper); - wrapper.removeClass([classesActions.create, classesActions.edit, classesActions.remove].join(' ')); - if (action === 'create') { - wrapper.addClass(classesActions.create); - } - else if (action === 'edit') { - wrapper.addClass(classesActions.edit); - } - else if (action === 'remove') { - wrapper.addClass(classesActions.remove); - } -} -/** - * Create an Ajax request in the same style as DataTables 1.10, with full - * backwards compatibility for Editor 1.2. - * - * @param {object} data Data to submit - * @param {function} success Success callback - * @param {function} error Error callback - * @param {object} submitParams Submitted data - * @private - */ -function _ajax(data, success, error, submitParams) { - var action = this.s.action; - var thrown; - var opts = { - complete: [function (xhr, text) { - // Use `complete` rather than `success` so that all status codes are - // caught and can return valid JSON (useful when working with REST - // services). - var json = null; - if (xhr.status === 204 || xhr.responseText === 'null') { - json = {}; - } - else { - try { - // jQuery 1.12 or newer for responseJSON, but its the only - // way to get the JSON from a JSONP. So if you want to use - // JSONP with Editor you have to use jQuery 1.12+. - json = xhr.responseJSON ? - xhr.responseJSON : - JSON.parse(xhr.responseText); - } - catch (e) { } - } - if ($.isPlainObject(json) || Array.isArray(json)) { - success(json, xhr.status >= 400, xhr); - } - else { - error(xhr, text, thrown); - } - }], - data: null, - dataType: 'json', - error: [function (xhr, text, err) { - thrown = err; - }], - success: [], - type: 'POST' - }; - var a; - var ajaxSrc = this.s.ajax; - var id = action === 'edit' || action === 'remove' ? - pluck(this.s.editFields, 'idSrc').join(',') : - null; - // Get the correct object for rest style - if ($.isPlainObject(ajaxSrc) && ajaxSrc[action]) { - ajaxSrc = ajaxSrc[action]; - } - if (typeof ajaxSrc === 'function') { - // As a function, execute it, passing in the required parameters - ajaxSrc.call(this, null, null, data, success, error); - return; - } - else if (typeof ajaxSrc === 'string') { - // As a string it gives the URL. For backwards compatibility it can also - // give the method. - if (ajaxSrc.indexOf(' ') !== -1) { - a = ajaxSrc.split(' '); - opts.type = a[0]; - opts.url = a[1]; - } - else { - opts.url = ajaxSrc; - } - } - else { - // As an object, we extend the Editor defaults - with the exception of - // the error and complete functions which get added in so the user can - // specify their own in addition to ours - var optsCopy = $.extend({}, ajaxSrc || {}); - if (optsCopy.complete) { - opts.complete.unshift(optsCopy.complete); - delete optsCopy.complete; - } - if (optsCopy.error) { - opts.error.unshift(optsCopy.error); - delete optsCopy.error; - } - opts = $.extend({}, opts, optsCopy); - } - // URL macros - if (opts.replacements) { - $.each(opts.replacements, function (key, repl) { - opts.url = opts.url.replace('{' + key + '}', repl.call(this, key, id, action, data)); - }); - } - opts.url = opts.url - .replace(/_id_/, id) - .replace(/{id}/, id); - // Data processing option like in DataTables - if (opts.data) { - var isFn = typeof opts.data === 'function'; - var newData = isFn ? - opts.data(data) : // fn can manipulate data or return an object - opts.data; // object or array to merge - // If the function returned something, use that alone - data = isFn && newData ? - newData : - $.extend(true, data, newData); - } - opts.data = data; - // If a DELETE method is used there are a number of servers which will - // reject the request if it has a body. So we need to append to the URL. - // - // http://stackoverflow.com/questions/15088955 - // http://bugs.jquery.com/ticket/11586 - if (opts.type === 'DELETE' && (opts.deleteBody === undefined || opts.deleteBody === true)) { - var params = $.param(opts.data); - opts.url += opts.url.indexOf('?') === -1 ? - '?' + params : - '&' + params; - delete opts.data; - } - // Finally, make the ajax call - $.ajax(opts); -} -/** - * Abstraction for jQuery's animate method, to support jQuery slim which doesn't - * include the animate module - * - * @private - */ -function _animate(target, style, time, callback) { - if ($.fn.animate) { - target - .stop() - .animate(style, time, callback); - } - else { - target.css(style); - var scope = target.length && target.length > 1 - ? target[0] - : target; - if (typeof time === 'function') { - time.call(scope); - } - else if (callback) { - callback.call(scope); - } - } -} -/** - * Create the DOM structure from the source elements for the main form. - * This is required since the elements can be moved around for other form types - * (bubble). - * - * @private - */ -function _assembleMain() { - var dom = this.dom; - $(dom.wrapper) - .prepend(dom.header); - $(dom.footer) - .append(dom.formError) - .append(dom.buttons); - $(dom.bodyContent) - .append(dom.formInfo) - .append(dom.form); -} -/** - * Blur the editing window. A blur is different from a close in that it might - * cause either a close or the form to be submitted. A typical example of a - * blur would be clicking on the background of the bubble or main editing forms - * - i.e. it might be a close, or it might submit depending upon the - * configuration, while a click on the close box is a very definite close. - * - * @private - */ -function _blur() { - var opts = this.s.editOpts; - var onBlur = opts.onBlur; - if (this._event('preBlur') === false) { - return; - } - if (typeof onBlur === 'function') { - onBlur(this); - } - else if (onBlur === 'submit') { - this.submit(); - } - else if (onBlur === 'close') { - this._close(); - } -} -/** - * Clear all of the information that might have been dynamically set while - * the form was visible - specifically errors and dynamic messages - * - * @private - */ -function _clearDynamicInfo(errorsOnly) { - if (errorsOnly === void 0) { errorsOnly = false; } - // Can be triggered due to a destroy if the editor is open - if (!this.s) { - return; - } - var errorClass = this.classes.field.error; - var fields = this.s.fields; - $('div.' + errorClass, this.dom.wrapper).removeClass(errorClass); - $.each(fields, function (name, field) { - field.error(''); - if (!errorsOnly) { - field.message(''); - } - }); - this.error(''); - if (!errorsOnly) { - this.message(''); - } -} -/** - * Close an editing display, firing callbacks and events as needed - * - * @param {function} submitComplete Function to call after the preClose event - * @param {string} mode Editing mode that is just finished - * @private - */ -function _close(submitComplete, mode) { - var closed; - // Allow preClose event to cancel the opening of the display - if (this._event('preClose') === false) { - return; - } - if (this.s.closeCb) { - closed = this.s.closeCb(submitComplete, mode); - this.s.closeCb = null; - } - if (this.s.closeIcb) { - this.s.closeIcb(); - this.s.closeIcb = null; - } - // Remove focus control - $('body').off('focus.editor-focus'); - this.s.displayed = false; - this._event('close'); - if (closed) { - // Note that `bubble` will call this itself due to the animation - this._event('closed', [closed]); - } -} -/** - * Register a function to be called when the editing display is closed. This is - * used by function that create the editing display to tidy up the display on - * close - for example removing event handlers to prevent memory leaks. - * - * @param {function} fn Function to call on close - * @private - */ -function _closeReg(fn) { - this.s.closeCb = fn; -} -/** - * Argument shifting for the create(), edit() and remove() methods. In Editor - * 1.3 the preferred form of calling those three methods is with just two - * parameters (one in the case of create() - the id and the show flag), while in - * previous versions four / three parameters could be passed in, including the - * buttons and title options. In 1.3 the chaining API is preferred, but we want - * to support the old form as well, so this function is provided to perform - * that argument shifting, common to all three. - * - * @private - */ -function _crudArgs(arg1, arg2, arg3, arg4) { - var that = this; - var title; - var buttons; - var show; - var opts; - if ($.isPlainObject(arg1)) { - // Form options passed in as the first option - opts = arg1; - } - else if (typeof arg1 === 'boolean') { - // Show / hide passed in as the first option - form options second - show = arg1; - opts = arg2; // can be undefined - } - else { - // Old style arguments - title = arg1; // can be undefined - buttons = arg2; // can be undefined - show = arg3; // can be undefined - opts = arg4; // can be undefined - } - // If all undefined, then fall into here - if (show === undefined) { - show = true; - } - if (title) { - that.title(title); - } - if (buttons) { - that.buttons(buttons); - } - return { - maybeOpen: function () { - if (show) { - that.open(); - } - }, - opts: $.extend({}, this.s.formOptions.main, opts) - }; -} -/** - * Execute the data source abstraction layer functions. This is simply a case - * of executing the function with the Editor scope, passing in the remaining - * parameters. - * - * @param {string} name Function name to execute - * @private - */ -function _dataSource(name) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - var dataSource = this.s.table - ? Editor.dataSources.dataTable - : Editor.dataSources.html; - var fn = dataSource[name]; - if (fn) { - return fn.apply(this, args); - } -} -/** - * Insert the fields into the DOM, in the correct order - * - * @private - */ -function _displayReorder(includeFields) { - var _this = this; - var formContent = $(this.dom.formContent); - var fields = this.s.fields; - var order = this.s.order; - var template = this.s.template; - var mode = this.s.mode || 'main'; - if (includeFields) { - this.s.includeFields = includeFields; - } - else { - includeFields = this.s.includeFields; - } - // Empty before adding in the required fields - formContent.children().detach(); - $.each(order, function (i, name) { - if (_this._weakInArray(name, includeFields) !== -1) { - if (template && mode === 'main') { - template.find('editor-field[name="' + name + '"]').after(fields[name].node()); - template.find('[data-editor-template="' + name + '"]').append(fields[name].node()); - } - else { - formContent.append(fields[name].node()); - } - } - }); - if (template && mode === 'main') { - template.appendTo(formContent); - } - this._event('displayOrder', [ - this.s.displayed, - this.s.action, - formContent - ]); -} -/** - * Generic editing handler. This can be called by the three editing modes (main, - * bubble and inline) to configure Editor for a row edit, and fire the required - * events to ensure that the editing interfaces all provide a common API. - * - * @param {*} rows Identifier for the item(s) to be edited - * @param {string} type Editing type - for the initEdit event - * @private - */ -function _edit(items, editFields, type, formOptions, setupDone) { - var _this = this; - var fields = this.s.fields; - var usedFields = []; - var includeInOrder; - var editData = {}; - this.s.editFields = editFields; - this.s.editData = editData; - this.s.modifier = items; - this.s.action = 'edit'; - this.dom.form.style.display = 'block'; - this.s.mode = type; - this._actionClass(); - // Setup the field values for editing - $.each(fields, function (name, field) { - field.multiReset(); - includeInOrder = false; - editData[name] = {}; - $.each(editFields, function (idSrc, edit) { - if (edit.fields[name]) { - var val = field.valFromData(edit.data); - var nullDefault = field.nullDefault(); - // Save the set data values so we can decided in submit if data has changed - // Note that `null` is stored as an empty string since fields do not currently - // have the ability to store a null value - when they are read back (in the - // submit) they would be an empty string. When null handling is added to - // fields, this will need to be removed. - editData[name][idSrc] = val === null ? - '' : - Array.isArray(val) ? - val.slice() : - val; - // If scoped to edit the whole row, then set all of the fields - if (!formOptions || formOptions.scope === 'row') { - field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? - field.def() : - val, false); - if (!edit.displayFields || edit.displayFields[name]) { - includeInOrder = true; - } - } - else { - // Limit editing to only those fields selected if any are selected - if (!edit.displayFields || edit.displayFields[name]) { - field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? - field.def() : - val, false); - includeInOrder = true; - } - } - } - }); - // Loop finished - can do a multi-value check for display of the field now - field._multiValueCheck(); - // If the field is used, then add it to the fields to be shown - if (field.multiIds().length !== 0 && includeInOrder) { - usedFields.push(name); - } - }); - // Remove the fields that are not required from the display - var currOrder = this.order().slice(); - for (var i = currOrder.length - 1; i >= 0; i--) { - // Use `toString()` to convert numbers to strings, since usedFields - // contains strings (object property names) - if ($.inArray(currOrder[i].toString(), usedFields) === -1) { - currOrder.splice(i, 1); - } - } - this._displayReorder(currOrder); - // Events - this._event('initEdit', [ - pluck(editFields, 'node')[0], - pluck(editFields, 'data')[0], - items, - type - ], function () { - _this._event('initMultiEdit', // undocumented and to be removed in v2 - [editFields, items, type], function () { - setupDone(); - }); - }); -} -/** - * Fire callback functions and trigger events. - * - * @param {string|array} trigger Name(s) of the jQuery custom event to trigger - * @param {array} args Array of arguments to pass to the triggered event - * @return {*} Return from the event - * @private - */ -function _event(trigger, args, promiseComplete) { - if (args === void 0) { args = []; } - if (promiseComplete === void 0) { promiseComplete = undefined; } - // Allow an array to be passed in for the trigger to fire multiple events - if (Array.isArray(trigger)) { - for (var i = 0, ien = trigger.length; i < ien; i++) { - this._event(trigger[i], args); - } - } - else { - var e = $.Event(trigger); - $(this).triggerHandler(e, args); - var result = e.result; - // Automatically trigger a cancelled event if a `pre` event handler - // was cancelled by the callback - if (trigger.indexOf('pre') === 0 && result === false) { - $(this).triggerHandler($.Event(trigger + 'Cancelled'), args); - } - // Allow for a promise to be returned and execute a callback - if (promiseComplete) { - if (result && typeof result === 'object' && result.then) { - // jQuery and "real" promises both provide "then" - result.then(promiseComplete); - } - else { - // If there wasn't a promise returned, then execute immediately - promiseComplete(result); - } - } - return result; - } -} -/** - * 'Modernise' event names, from the old style `on[A-Z]` names to camelCase. - * This is done to provide backwards compatibility with Editor 1.2- event names. - * The names themselves were updated for consistency with DataTables. - * - * @param {string} Event name to modernise - * @return {string} String with new event name structure - * @private - */ -function _eventName(input) { - var name; - var names = input.split(' '); - for (var i = 0, ien = names.length; i < ien; i++) { - name = names[i]; - // Strip the 'on' part and lowercase the first character - var onStyle = name.match(/^on([A-Z])/); - if (onStyle) { - name = onStyle[1].toLowerCase() + name.substring(3); - } - names[i] = name; - } - return names.join(' '); -} -/** - * Find a field from a DOM node. All children are searched. - * - * @param {node} node DOM node to search for - * @return {Field} Field instance - */ -function _fieldFromNode(node) { - var foundField = null; - $.each(this.s.fields, function (name, field) { - if ($(field.node()).find(node).length) { - foundField = field; - } - }); - return foundField; -} -/** - * Convert a field name input parameter to an array of field names. - * - * Many of the API methods provide the ability to pass `undefined` a string or - * array of strings to identify fields. This method harmonises that. - * - * @param {array|string} [fieldNames] Field names to get - * @return {array} Field names - * @private - */ -function _fieldNames(fieldNames) { - if (fieldNames === undefined) { - return this.fields(); - } - else if (!Array.isArray(fieldNames)) { - return [fieldNames]; - } - return fieldNames; -} -/** - * Focus on a field. Providing the logic to allow complex focus expressions - * - * @param {array} fields Array of Field instances or field names for the fields - * that are shown - * @param {null|string|integer} focus Field identifier to focus on - * @private - */ -function _focus(fieldsIn, focus) { - var _this = this; - // Can't focus on a field when in remove mode (they aren't shown). - if (this.s.action === 'remove') { - return; - } - var field; - var fields = $.map(fieldsIn, function (fieldOrName) { return typeof fieldOrName === 'string' ? - _this.s.fields[fieldOrName] : - fieldOrName; }); - if (typeof focus === 'number') { - field = fields[focus]; - } - else if (focus) { - if (focus.indexOf('jq:') === 0) { - field = $('div.DTE ' + focus.replace(/^jq:/, '')); - } - else { - field = this.s.fields[focus]; - } - } - else { - document.activeElement.blur(); - } - this.s.setFocus = field; - if (field) { - field.focus(); - } -} -/** - * Form options - common function so all editing methods can provide the same - * basic options, DRY. - * - * @param {object} opts Editing options. See model.formOptions - * @private - */ -function _formOptions(opts) { - var _this = this; - var that = this; - var inlineCount = _inlineCounter++; - var namespace = '.dteInline' + inlineCount; - // Backwards compatibility with 1.4 - // if ( opts.closeOnComplete !== undefined ) { - // opts.onComplete = opts.closeOnComplete ? 'close' : 'none'; - // } - // if ( opts.submitOnBlur !== undefined ) { - // opts.onBlur = opts.submitOnBlur ? 'submit' : 'close'; - // } - // if ( opts.submitOnReturn !== undefined ) { - // opts.onReturn = opts.submitOnReturn ? 'submit' : 'none'; - // } - // if ( opts.blurOnBackground !== undefined ) { - // opts.onBackground = opts.blurOnBackground ? 'blur' : 'none'; - // } - this.s.editOpts = opts; - // When submitting by Ajax we don't want to close a form that has been - // opened during the ajax request, so we keep a count of the form opening - this.s.editCount = inlineCount; - if (typeof opts.title === 'string' || typeof opts.title === 'function') { - this.title(opts.title); - opts.title = true; - } - if (typeof opts.message === 'string' || typeof opts.message === 'function') { - this.message(opts.message); - opts.message = true; - } - if (typeof opts.buttons !== 'boolean') { - this.buttons(opts.buttons); - opts.buttons = true; - } - // Prevent submit by a host `` - $(document).on('keydown' + namespace, function (e) { - if (e.which === 13 && _this.s.displayed) { // return - var el = $(document.activeElement); - if (el) { - var field = _this._fieldFromNode(el); - if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { - e.preventDefault(); - } - } - } - }); - $(document).on('keyup' + namespace, function (e) { - var el = $(document.activeElement); - if (e.which === 13 && _this.s.displayed) { // return - var field = _this._fieldFromNode(el); - // Allow the field plug-in to say if we can submit or not - if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { - if (opts.onReturn === 'submit') { - e.preventDefault(); - _this.submit(); - } - else if (typeof opts.onReturn === 'function') { - e.preventDefault(); - opts.onReturn(_this, e); - } - } - } - else if (e.which === 27) { // esc - e.preventDefault(); - if (typeof opts.onEsc === 'function') { - opts.onEsc(that, e); - } - else if (opts.onEsc === 'blur') { - that.blur(); - } - else if (opts.onEsc === 'close') { - that.close(); - } - else if (opts.onEsc === 'submit') { - that.submit(); - } - } - else if (el.parents('.DTE_Form_Buttons').length) { - if (e.which === 37) { // left - el.prev('button').trigger('focus'); - } - else if (e.which === 39) { // right - el.next('button').trigger('focus'); - } - } - }); - this.s.closeIcb = function () { - $(document).off('keydown' + namespace); - $(document).off('keyup' + namespace); - }; - return namespace; -} -/** - * Inline editing insertion of fields - */ -function _inline(editFields, opts, closeCb) { - var _this = this; - if (closeCb === void 0) { closeCb = null; } - var closed = false; - var classes = this.classes.inline; - var keys = Object.keys(editFields); - var editRow = editFields[keys[0]]; - var lastAttachPoint; - var elements = []; - for (var i = 0; i < editRow.attach.length; i++) { - var name_1 = editRow.attachFields[i][0]; - elements.push({ - field: this.s.fields[name_1], - name: name_1, - node: $(editRow.attach[i]), - }); - } - var namespace = this._formOptions(opts); - var ret = this._preopen('inline'); - if (!ret) { - return this; - } - for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { - var el = elements_1[_i]; - var node = el.node; - el.children = node.contents().detach(); - // Note the wdith setting shouldn't be required, but Edge increases the column's - // width if a % width is used (even 1%). This is the workaround - var style = navigator.userAgent.indexOf('Edge/') !== -1 ? - 'style="width:' + node.width() + 'px"' : - ''; - node.append($('
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ')); - node.find('div.' + classes.liner.replace(/ /g, '.')) - .append(el.field.node()) - .append(this.dom.formError); - // Need the last insert point to allow for number submitTrigger - lastAttachPoint = el.field.node(); - if (opts.buttons) { - // Use prepend for the CSS, so we can float the buttons right - node.find('div.' + classes.buttons.replace(/ /g, '.')).append(this.dom.buttons); - } - } - // If there is a submit trigger target, we need to modify the document to allow submission - var submitClose = this._inputTrigger('submit', opts, lastAttachPoint); - var cancelClose = this._inputTrigger('cancel', opts, lastAttachPoint); - this._closeReg(function (submitComplete, action) { - // Mark that this specific inline edit has closed - closed = true; - $(document).off('click' + namespace); - // If there was no submit, we need to put the DOM back as it was. If - // there was a submit, the write of the new value will set the DOM to - // how it should be. Note also, check if it was an edit action, if not - // a create will create new row so we tidy this one up - if (!submitComplete || action !== 'edit') { - elements.forEach(function (el) { - el.node.contents().detach(); - el.node.append(el.children); - }); - } - submitClose(); - cancelClose(); - // Clear error messages "offline" - _this._clearDynamicInfo(); - if (closeCb) { - closeCb(); - } - return 'inline'; // trigger `closed` - }); - // Submit and blur actions - setTimeout(function () { - // If already closed, possibly due to some other aspect of the event - // that triggered the inline call, don't add the event listener - it - // isn't needed (and is dangerous) - if (closed) { - return; - } - // andSelf is deprecated in jQ1.8, but we want 1.7 compat - var back = $.fn.addBack ? 'addBack' : 'andSelf'; - // Chrome uses the target as the element where the mouse up happens, - // but we want the target being where the mouse down is, to allow for - // text selection in an input - so listen on mousedown as well. - var target; - $(document) - .on('mousedown' + namespace, function (e) { - target = e.target; - }) - .on('keydown' + namespace, function (e) { - target = e.target; - }) - .on('click' + namespace, function (e) { - // Was the click inside or owned by one of the editing nodes? If - // not, then come out of editing mode. - var isIn = false; - for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { - var el = elements_2[_i]; - if (el.field._typeFn('owns', target) || - $.inArray(el.node[0], $(target).parents()[back]()) !== -1) { - isIn = true; - } - } - if (!isIn) { - _this.blur(); - } - }); - }, 0); - this._focus($.map(elements, function (el) { return el.field; }), opts.focus); - this._postopen('inline', true); -} -/** - * Add a triggering action for inline editing, with a return function that - * will tidy up the events. - * - * @param type Action - * @param opts Form options object - * @param insertPoint Insert point in the DOM - * @private - */ -function _inputTrigger(type, opts, insertPoint) { - var _this = this; - var trigger = opts[type + 'Trigger']; - var html = opts[type + 'Html']; - var event = 'click.dte-' + type; - var tr = $(insertPoint).closest('tr'); - if (trigger === undefined) { - return function () { }; - } - // Allow the input to be a column index, including a negative to count from right - if (typeof trigger === 'number') { - var kids = tr.children(); - trigger = trigger < 0 - ? kids[kids.length + trigger] - : kids[trigger]; - } - // Use childNodes to get text nodes as well - var children = $(trigger, tr).length - ? Array.prototype.slice.call($(trigger, tr)[0].childNodes) - : []; - $(children).detach(); - // Event handler to submit the form and do nothing else - var triggerEl = $(trigger, tr) - .on(event, function (e) { - e.stopImmediatePropagation(); - if (type === 'cancel') { - _this.close(); - } - else { - _this.submit(); - } - }) - .append(html); - return function () { - triggerEl - .off(event) - .empty() - .append(children); - }; -} -/** - * Update the field options from a JSON data source - * - * @param {object} json JSON object from the server - * @private - */ -function _optionsUpdate(json) { - var that = this; - if (json && json.options) { - $.each(this.s.fields, function (name, field) { - if (json.options[name] !== undefined) { - var fieldInst = that.field(name); - if (fieldInst && fieldInst.update) { - fieldInst.update(json.options[name]); - } - } - }); - } -} -/** - * Show a message in the form. This can be used for error messages or dynamic - * messages (information display) as the structure for each is basically the - * same. This method will take into account if the form is visible or not - if - * so then the message is shown with an effect for the end user, otherwise - * it is just set immediately. - * - * @param {element} el The field display node to use - * @param {string|function} msg The message to show - * @private - */ -function _message(el, msg, title, fn) { - // Allow for jQuery slim - var canAnimate = $.fn.animate ? true : false; - if (title === undefined) { - title = false; - } - if (!fn) { - fn = function () { }; - } - if (typeof msg === 'function') { - msg = msg(this, new DataTable$4.Api(this.s.table)); - } - el = $(el); - if (canAnimate) { - el.stop(); - } - if (!msg) { - if (this.s.displayed && canAnimate) { - // Clear the message with visual effect since the form is visible - el - .fadeOut(function () { - el.html(''); - fn(); - }); - } - else { - // Clear the message without visual effect - el - .html('') - .css('display', 'none'); - fn(); - } - if (title) { - el.removeAttr('title'); - } - } - else { - fn(); - if (this.s.displayed && canAnimate) { - // Show the message with visual effect - el - .html(msg) - .fadeIn(); - } - else { - // Show the message without visual effect - el - .html(msg) - .css('display', 'block'); - } - if (title) { - el.attr('title', msg); - } - } -} -/** - * Update the multi-value information display to not show redundant information - * - * @private - */ -function _multiInfo() { - var fields = this.s.fields; - var include = this.s.includeFields; - var show = true; - var state; - if (!include) { - return; - } - for (var i = 0, ien = include.length; i < ien; i++) { - var field = fields[include[i]]; - var multiEditable = field.multiEditable(); - if (field.isMultiValue() && multiEditable && show) { - // Multi-row editable. Only show first message - state = true; - show = false; - } - else if (field.isMultiValue() && !multiEditable) { - // Not multi-row editable. Always show message - state = true; - } - else { - state = false; - } - fields[include[i]].multiInfoShown(state); - } -} -/** - * Close the current form, which can result in the display controller - * hiding its display, or showing a form from a level up if nesting - */ -function _nestedClose(cb) { - var disCtrl = this.s.displayController; - var show = disCtrl._show; - if (!show || !show.length) { - // Nothing shown just now - if (cb) { - cb(); - } - } - else if (show.length > 1) { - // Got nested forms - remove current and go one layer up - show.pop(); - // Get the one to show - var last = show[show.length - 1]; - if (cb) { - cb(); - } - this.s.displayController.open(last.dte, last.append, last.callback); - } - else { - this.s.displayController.close(this, cb); - show.length = 0; - } -} -/** - * Display a form, adding it to the display stack for nesting - */ -function _nestedOpen(cb, nest) { - var disCtrl = this.s.displayController; - // This needs to be per display controller, but the controller - // itself doesn't know anything about the nesting, so we add a - // "hidden" property to it, used here, but not by the controller - // itself. - if (!disCtrl._show) { - disCtrl._show = []; - } - if (!nest) { - disCtrl._show.length = 0; - } - disCtrl._show.push({ - append: this.dom.wrapper, - callback: cb, - dte: this, - }); - this.s.displayController.open(this, this.dom.wrapper, cb); -} -/** - * Common display editing form method called by all editing methods after the - * form has been configured and displayed. This is to ensure all fire the same - * events. - * - * @param {string} type Editing type - * @param {boolean} immediate indicate if the open is immediate (in which case - * `opened` is also triggered). - * @return {boolean} `true` - * @private - */ -function _postopen(type, immediate) { - var _this = this; - var focusCapture = this.s.displayController.captureFocus; - if (focusCapture === undefined) { - focusCapture = true; - } - $(this.dom.form) - .off('submit.editor-internal') - .on('submit.editor-internal', function (e) { - e.preventDefault(); - }); - // Focus capture - when the Editor form is shown we capture the browser's - // focus action. Without doing this is would result in the user being able - // to control items under the Editor display - triggering actions that - // shouldn't be possible while the editing is shown. - if (focusCapture && (type === 'main' || type === 'bubble')) { - $('body').on('focus.editor-focus', function () { - if ($(document.activeElement).parents('.DTE').length === 0 && - $(document.activeElement).parents('.DTED').length === 0) { - if (_this.s.setFocus) { - _this.s.setFocus.focus(); - } - } - }); - } - this._multiInfo(); - this._event('open', [type, this.s.action]); - if (immediate) { - this._event('opened', [type, this.s.action]); - } - return true; -} -/** - * Common display editing form method called by all editing methods before the - * form has been configured and displayed. This is to ensure all fire the same - * events. - * - * @param {string} Editing type - * @return {boolean} `false` if the open is cancelled by the preOpen event, - * otherwise `true` - * @private - */ -function _preopen(type) { - // Allow preOpen event to cancel the opening of the display - if (this._event('preOpen', [type, this.s.action]) === false) { - // Tidy- this would normally be done on close, but we never get that far - this._clearDynamicInfo(); - this._event('cancelOpen', [type, this.s.action]); - // inline and bubble methods cannot be opened using `open()`, they - // have to be called again, so we need to clean up the event - // listener added by _formOptions - if ((this.s.mode === 'inline' || this.s.mode === 'bubble') && this.s.closeIcb) { - this.s.closeIcb(); - } - this.s.closeIcb = null; - return false; - } - this._clearDynamicInfo(true); - this.s.displayed = type; - return true; -} -/** - * Set the form into processing mode or take it out of processing mode. In - * processing mode a processing indicator is shown and user interaction with the - * form buttons is blocked - * - * @param {boolean} processing true if to go into processing mode and false if - * to come out of processing mode - * @private - */ -function _processing(processing) { - var procClass = this.classes.processing.active; - $(['div.DTE', this.dom.wrapper]).toggleClass(procClass, processing); - this.s.processing = processing; - this._event('processing', [processing]); -} -/** - * Check if any of the fields are processing for the submit to carry on. It - * can recurse. - * - * @private - */ -function _noProcessing(args) { - var processing = false; - $.each(this.s.fields, function (name, field) { - if (field.processing()) { - processing = true; - } - }); - if (processing) { - this.one('processing-field', function () { - // Are any other fields in a processing state? - Might need to wait again - if (this._noProcessing(args) === true) { - this._submit.apply(this, args); - } - }); - } - return !processing; -} -/** - * Submit a form to the server for processing. This is the private method that is used - * by the 'submit' API method, which should always be called in preference to calling - * this method directly. - * - * @param {function} [successCallback] Callback function that is executed once the - * form has been successfully submitted to the server and no errors occurred. - * @param {function} [errorCallback] Callback function that is executed if the - * server reports an error due to the submission (this includes a JSON formatting - * error should the error return invalid JSON). - * @param {function} [formatdata] Callback function that is passed in the data - * that will be submitted to the server, allowing pre-formatting of the data, - * removal of data or adding of extra fields. - * @param {boolean} [hide=true] When the form is successfully submitted, by default - * the form display will be hidden - this option allows that to be overridden. - * @private - */ -function _submit(successCallback, errorCallback, formatdata, hide) { - var _this = this; - var changed = false; - var allData = {}; - var changedData = {}; - var setBuilder = dataSet; - var fields = this.s.fields; - var editCount = this.s.editCount; - var editFields = this.s.editFields; - var editData = this.s.editData; - var opts = this.s.editOpts; - var changedSubmit = opts.submit; - var submitParamsLocal; - // First - are any of the fields currently "processing"? If so, then we - // want to let them complete before submitting - if (this._noProcessing(arguments) === false) { - Editor.error('Field is still processing', 16, false); - return; - } - // After initSubmit to allow `mode()` to be used as a setter - var action = this.s.action; - var submitParams = { - data: {} - }; - submitParams[this.s.actionName] = action; - // Gather the data that is to be submitted - if (action === 'create' || action === 'edit') { - $.each(editFields, function (idSrc, edit) { - var allRowData = {}; - var changedRowData = {}; - $.each(fields, function (name, field) { - if (edit.fields[name] && field.submittable()) { - var multiGet = field.multiGet(); - var builder = setBuilder(name); - // If it wasn't an edit field, we still need to get the original - // data, so we can submit it if `all` or `allIfChanged` - if (multiGet[idSrc] === undefined) { - var originalVal = field.valFromData(edit.data); - builder(allRowData, originalVal); - return; - } - var value = multiGet[idSrc]; - var manyBuilder = Array.isArray(value) && typeof name === 'string' && name.indexOf('[]') !== -1 ? - setBuilder(name.replace(/\[.*$/, '') + '-many-count') : - null; - builder(allRowData, value); - // We need to tell the server-side if an array submission - // actually has no elements so it knows if the array was - // being submitted or not (since otherwise it doesn't know - // if the array was empty, or just not being submitted) - if (manyBuilder) { - manyBuilder(allRowData, value.length); - } - // Build a changed object for if that is the selected data - // type - if (action === 'edit' && (!editData[name] || !field.compare(value, editData[name][idSrc]))) { - builder(changedRowData, value); - changed = true; - if (manyBuilder) { - manyBuilder(changedRowData, value.length); - } - } - } - }); - if (!$.isEmptyObject(allRowData)) { - allData[idSrc] = allRowData; - } - if (!$.isEmptyObject(changedRowData)) { - changedData[idSrc] = changedRowData; - } - }); - // Decide what data to submit to the server for edit (create is all, always) - if (action === 'create' || changedSubmit === 'all' || (changedSubmit === 'allIfChanged' && changed)) { - submitParams.data = allData; - } - else if (changedSubmit === 'changed' && changed) { - submitParams.data = changedData; - } - else { - // Nothing to submit - this.s.action = null; - if (opts.onComplete === 'close' && (hide === undefined || hide)) { - this._close(false); - } - else if (typeof opts.onComplete === 'function') { - opts.onComplete(this); - } - if (successCallback) { - successCallback.call(this); - } - this._processing(false); - this._event('submitComplete'); - return; - } - } - else if (action === 'remove') { - $.each(editFields, function (idSrc, edit) { - submitParams.data[idSrc] = edit.data; - }); - } - // Local copy of the submit parameters, needed for the data lib prep since - // the preSubmit can modify the format and we need to know what the format is - submitParamsLocal = $.extend(true, {}, submitParams); - // Allow the data to be submitted to the server to be preprocessed by callback - // and event functions - if (formatdata) { - formatdata(submitParams); - } - this._event('preSubmit', [submitParams, action], function (result) { - if (result === false) { - _this._processing(false); - } - else { - // Submit to the server (or whatever method is defined in the settings) - var submitWire = _this.s.ajax ? - _this._ajax : - _this._submitTable; - submitWire.call(_this, submitParams, function (json, notGood, xhr) { - _this._submitSuccess(json, notGood, submitParams, submitParamsLocal, _this.s.action, editCount, hide, successCallback, errorCallback, xhr); - }, function (xhr, err, thrown) { - _this._submitError(xhr, err, thrown, errorCallback, submitParams, _this.s.action); - }, submitParams); - } - }); -} -/** - * Save submitted data without an Ajax request. This will write to a local - * table only - not saving it permanently, but rather using the DataTable itself - * as a data store. - * - * @param {object} data Data to submit - * @param {function} success Success callback - * @param {function} error Error callback - * @param {object} submitParams Submitted data - * @private - */ -function _submitTable(data, success, error, submitParams) { - var action = data.action; - var out = { data: [] }; - var idGet = dataGet(this.s.idSrc); - var idSet = dataSet(this.s.idSrc); - // Nothing required for remove - create and edit get a copy of the data - if (action !== 'remove') { - var originalData_1 = this.s.mode === 'main' ? - this._dataSource('fields', this.modifier()) : - this._dataSource('individual', this.modifier()); - $.each(data.data, function (key, vals) { - var toSave; - var extender = extend; - // Get the original row's data, so we can modify it with new values. - // This allows Editor to not need to submit all fields - if (action === 'edit') { - var rowData = originalData_1[key].data; - toSave = extender({}, rowData, true); - toSave = extender(toSave, vals, true); - } - else { - toSave = extender({}, vals, true); - } - // If create and there isn't an id for the new row, create - // one. An id could be creased by `preSubmit` - var overrideId = idGet(toSave); - if (action === 'create' && overrideId === undefined) { - idSet(toSave, +new Date() + key.toString()); - } - else { - idSet(toSave, overrideId); - } - out.data.push(toSave); - }); - } - success(out); -} -/** - * Submit success callback function - * - * @param {object} json Payload - * @param {bool} notGood True if the returned status code was - * >=400 (i.e. processing failed). This is called `notGood` rather than - * `success` since the request was successfully processed, just not written to - * the db. It is also inverted from "good" to make it optional when overriding - * the `ajax` function. - * @param {object} submitParams Submitted data - * @param {object} submitParamsLocal Unmodified copy of submitted data - * (before it could be modified by the user) - * @param {string} action CRUD action being taken - * @param {int} editCount Protection against async errors - * @param {bool} hide Hide the form flag - * @param {function} successCallback Success callback - * @param {function} errorCallback Error callback - * @private - */ -function _submitSuccess(json, notGood, submitParams, submitParamsLocal, action, editCount, hide, successCallback, errorCallback, xhr) { - var _this = this; - var that = this; - var setData; - var fields = this.s.fields; - var opts = this.s.editOpts; - var modifier = this.s.modifier; - this._event('postSubmit', [json, submitParams, action, xhr]); - if (!json.error) { - json.error = ''; - } - if (!json.fieldErrors) { - json.fieldErrors = []; - } - if (notGood || json.error || json.fieldErrors.length) { - // Global form error - var globalError_1 = []; - if (json.error) { - globalError_1.push(json.error); - } - // Field specific errors - $.each(json.fieldErrors, function (i, err) { - var field = fields[err.name]; - if (!field) { - throw new Error('Unknown field: ' + err.name); - } - else if (field.displayed()) { - field.error(err.status || 'Error'); - if (i === 0) { - if (opts.onFieldError === 'focus') { - // Scroll the display to the first error and focus - _this._animate($(_this.dom.bodyContent), { scrollTop: $(field.node()).position().top }, 500); - field.focus(); - } - else if (typeof opts.onFieldError === 'function') { - opts.onFieldError(_this, err); - } - } - } - else { - // If the field isn't visible, we need to make it display as a global error - // This _shouldn't_ happen - it means there is invalid data if it does - globalError_1.push(field.name() + ': ' + (err.status || 'Error')); - } - }); - this.error(globalError_1.join('
        ')); - this._event('submitUnsuccessful', [json]); - if (errorCallback) { - errorCallback.call(that, json); - } - } - else { - // Create a data store that the data source can use, which is - // unique to this action - var store = {}; - if (json.data && (action === 'create' || action === 'edit')) { - this._dataSource('prep', action, modifier, submitParamsLocal, json, store); - for (var _i = 0, _a = json.data; _i < _a.length; _i++) { - var data = _a[_i]; - setData = data; - var id = this._dataSource('id', data); - this._event('setData', [json, data, action]); // legacy - if (action === 'create') { - // New row was created to add it to the DT - this._event('preCreate', [json, data, id]); - this._dataSource('create', fields, data, store); - this._event(['create', 'postCreate'], [json, data, id]); - } - else if (action === 'edit') { - // Row was updated, so tell the DT - this._event('preEdit', [json, data, id]); - this._dataSource('edit', modifier, fields, data, store); - this._event(['edit', 'postEdit'], [json, data, id]); - } - } - this._dataSource('commit', action, modifier, json.data, store); - } - else if (action === 'remove') { - this._dataSource('prep', action, modifier, submitParamsLocal, json, store); - // Remove the rows given and then redraw the table - this._event('preRemove', [json, this.ids()]); - this._dataSource('remove', modifier, fields, store); - this._event(['remove', 'postRemove'], [json, this.ids()]); - this._dataSource('commit', action, modifier, json.data, store); - } - // Submission complete - if (editCount === this.s.editCount) { - var sAction = this.s.action; - this.s.action = null; // Must do before close, in case close starts a new edit - if (opts.onComplete === 'close' && (hide === undefined || hide)) { - // If no data returned, then treat as not complete - this._close(json.data ? true : false, sAction); - } - else if (typeof opts.onComplete === 'function') { - opts.onComplete(this); - } - } - // All done - fire off the callbacks and events - if (successCallback) { - successCallback.call(that, json); - } - this._event('submitSuccess', [json, setData, action]); - } - this._processing(false); - this._event('submitComplete', [json, setData, action]); -} -/** - * Submit error callback function - * - * @private - */ -function _submitError(xhr, err, thrown, errorCallback, submitParams, action) { - this._event('postSubmit', [null, submitParams, action, xhr]); - this.error(this.i18n.error.system); - this._processing(false); - if (errorCallback) { - errorCallback.call(this, xhr, err, thrown); - } - this._event(['submitError', 'submitComplete'], [xhr, err, thrown, submitParams]); -} -/** - * Check to see if the form needs to be tidied before a new action can be performed. - * This includes if the from is currently processing an old action and if it - * is inline editing. - * - * @param {function} fn Callback function - * @returns {boolean} `true` if was in inline mode, `false` otherwise - * @private - */ -function _tidy(fn) { - var _this = this; - var dt = this.s.table ? - new $.fn.dataTable.Api(this.s.table) : - null; - var ssp = false; - if (dt) { - ssp = dt.settings()[0].oFeatures.bServerSide; - } - if (this.s.processing) { - // If currently processing, wait until the action is complete - this.one('submitComplete', function () { - // If server-side processing is being used in DataTables, first - // check that we are still processing (might not be if nothing was - // submitted) and then wait for the draw to finished - if (ssp) { - dt.one('draw', fn); - } - else { - setTimeout(function () { - fn(); - }, 10); - } - }); - return true; - } - else if (this.display() === 'inline' || this.display() === 'bubble') { - // If there is an inline edit box, it needs to be tidied - this - .one('close', function () { - // On close if processing then we need to wait for the submit to - // complete before running the callback as onBlur was set to - // submit - if (!_this.s.processing) { - // IE needs a small timeout, otherwise it may not focus on a - // field if one already has focus - setTimeout(function () { - // Check this Editor wasn't destroyed - if (_this.s) { - fn(); - } - }, 10); - } - else { - // Need to wait for the submit to finish - _this.one('submitComplete', function (e, json) { - // If SSP then need to wait for the draw - if (ssp && json) { - dt.one('draw', fn); - } - else { - setTimeout(function () { - if (_this.s) { - fn(); - } - }, 10); - } - }); - } - }) - .blur(); - return true; - } - return false; -} -/** - * Same as $.inArray but with weak type checking - * - * @param {any} name Value to look for in the array - * @param {array} arr Array to scan through - * @returns {number} -1 if not found, index otherwise - */ -function _weakInArray(name, arr) { - for (var i = 0, ien = arr.length; i < ien; i++) { - if (name == arr[i]) { - return i; - } - } - return -1; -} - -var fieldType = { - create: function () { }, - disable: function () { }, - enable: function () { }, - get: function () { }, - set: function () { } -}; - -var DataTable$3 = $.fn.dataTable; -// Upload private helper method -function _buttonText(conf, textIn) { - if (textIn === null || textIn === undefined) { - textIn = conf.uploadText || 'Choose file...'; - } - conf._input.find('div.upload button').html(textIn); -} -function _commonUpload(editor, conf, dropCallback, multiple) { - if (multiple === void 0) { multiple = false; } - var btnClass = editor.classes.form.buttonInternal; - var container = $('
        ' + - '
        ' + - '
        ' + - '
        ' + - '' + - '' + - '
        ' + - '
        ' + - '' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        '); - conf._input = container; - conf._enabled = true; - if (conf.id) { - container.find('input[type=file]').attr('id', Editor.safeId(conf.id)); - } - if (conf.attr) { - container.find('input[type=file]').attr(conf.attr); - } - _buttonText(conf); - if (window.FileReader && conf.dragDrop !== false) { - container.find('div.drop span').text(conf.dragDropText || 'Drag and drop a file here to upload'); - var dragDrop_1 = container.find('div.drop'); - dragDrop_1 - .on('drop', function (e) { - if (conf._enabled) { - Editor.upload(editor, conf, e.originalEvent.dataTransfer.files, _buttonText, dropCallback); - dragDrop_1.removeClass('over'); - } - return false; - }) - .on('dragleave dragexit', function (e) { - if (conf._enabled) { - dragDrop_1.removeClass('over'); - } - return false; - }) - .on('dragover', function (e) { - if (conf._enabled) { - dragDrop_1.addClass('over'); - } - return false; - }); - // When an Editor is open with a file upload input there is a - // reasonable chance that the user will miss the drop point when - // dragging and dropping. Rather than loading the file in the browser, - // we want nothing to happen, otherwise the form will be lost. - editor - .on('open', function () { - $('body').on('dragover.DTE_Upload drop.DTE_Upload', function (e) { - return false; - }); - }) - .on('close', function () { - $('body').off('dragover.DTE_Upload drop.DTE_Upload'); - }); - } - else { - container.addClass('noDrop'); - container.append(container.find('div.rendered')); - } - container.find('div.clearValue button').on('click', function (e) { - e.preventDefault(); - if (conf._enabled) { - upload.set.call(editor, conf, ''); - } - }); - container.find('input[type=file]').on('input', function () { - Editor.upload(editor, conf, this.files, _buttonText, function (ids, error) { - if (!error) { - dropCallback.call(editor, ids); - } - container.find('input[type=file]')[0].value = ''; - }); - }); - return container; -} -// Typically a change event caused by the end user will be added to a queue that -// the browser will handle when no other script is running. However, using -// `$().trigger()` will cause it to happen immediately, so in order to simulate -// the standard browser behaviour we use setTimeout. This also means that -// `dependent()` and other change event listeners will trigger when the field -// values have all been set, rather than as they are being set - 31594 -function _triggerChange(input) { - setTimeout(function () { - input.trigger('change', { editor: true, editorSet: true }); // editorSet legacy - }, 0); -} -// A number of the fields in this file use the same get, set, enable and disable -// methods (specifically the text based controls), so in order to reduce the code -// size, we just define them once here in our own local base model for the field -// types. -var baseFieldType = $.extend(true, {}, fieldType, { - canReturnSubmit: function (conf, node) { - return true; - }, - disable: function (conf) { - conf._input.prop('disabled', true); - }, - enable: function (conf) { - conf._input.prop('disabled', false); - }, - get: function (conf) { - return conf._input.val(); - }, - set: function (conf, val) { - conf._input.val(val); - _triggerChange(conf._input); - } -}); -var hidden = { - create: function (conf) { - conf._input = $(''); - conf._val = conf.value; - return null; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - var oldVal = conf._val; - conf._val = val; - conf._input.val(val); - if (oldVal !== val) { - _triggerChange(conf._input); - } - } -}; -var readonly = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - readonly: 'readonly', - type: 'text' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var text = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - type: 'text' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var password = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id), - type: 'password' - }, conf.attr || {})); - return conf._input[0]; - } -}); -var textarea = $.extend(true, {}, baseFieldType, { - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - conf._input = $('').attr($.extend({ - id: Editor.safeId(conf.id) - }, conf.attr || {})); - return conf._input[0]; - } -}); -var select = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var elOpts = conf._input[0].options; - var countOffset = 0; - if (!append) { - elOpts.length = 0; - if (conf.placeholder !== undefined) { - var placeholderValue = conf.placeholderValue !== undefined ? - conf.placeholderValue : - ''; - countOffset += 1; - elOpts[0] = new Option(conf.placeholder, placeholderValue); - var disabled = conf.placeholderDisabled !== undefined ? - conf.placeholderDisabled : - true; - elOpts[0].hidden = disabled; // can't be hidden if not disabled! - elOpts[0].disabled = disabled; - elOpts[0]._editor_val = placeholderValue; - } - } - else { - countOffset = elOpts.length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - var option = new Option(label, val); - option._editor_val = val; - if (attr) { - $(option).attr(attr); - } - elOpts[i + countOffset] = option; - }); - } - }, - create: function (conf) { - conf._input = $('') - .attr($.extend({ - id: Editor.safeId(conf.id), - multiple: conf.multiple === true - }, conf.attr || {})) - .on('change.dte', function (e, d) { - // On change, get the user selected value and store it as the - // last set, so `update` can reflect it. This way `_lastSet` - // always gives the intended value, be it set via the API or by - // the end user. - if (!d || !d.editor) { - conf._lastSet = select.get(conf); - } - }); - select._addOptions(conf, conf.options || conf.ipOpts); - return conf._input[0]; - }, - destroy: function (conf) { - conf._input.off('change.dte'); - }, - get: function (conf) { - var val = conf._input.find('option:selected').map(function () { - return this._editor_val; - }).toArray(); - if (conf.multiple) { - return conf.separator ? - val.join(conf.separator) : - val; - } - return val.length ? val[0] : null; - }, - set: function (conf, val, localUpdate) { - if (!localUpdate) { - conf._lastSet = val; - } - // Can't just use `$().val()` because it won't work with strong types - if (conf.multiple && conf.separator && !Array.isArray(val)) { - val = typeof val === 'string' ? - val.split(conf.separator) : - []; - } - else if (!Array.isArray(val)) { - val = [val]; - } - var i; - var len = val.length; - var found; - var allFound = false; - var options = conf._input.find('option'); - conf._input.find('option').each(function () { - found = false; - for (i = 0; i < len; i++) { - // Weak typing - if (this._editor_val == val[i]) { - found = true; - allFound = true; - break; - } - } - this.selected = found; - }); - // If there is a placeholder, we might need to select it if nothing else - // was selected. It doesn't make sense to select when multi is enabled - if (conf.placeholder && !allFound && !conf.multiple && options.length) { - options[0].selected = true; - } - // Update will call change itself, otherwise multiple might be called - if (!localUpdate) { - _triggerChange(conf._input); - } - return allFound; - }, - update: function (conf, options, append) { - select._addOptions(conf, options, append); - // Attempt to set the last selected value (set by the API or the end - // user, they get equal priority) - var lastSet = conf._lastSet; - if (lastSet !== undefined) { - select.set(conf, lastSet, true); - } - _triggerChange(conf._input); - } -}); -var checkbox = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var jqInput = conf._input; - var offset = 0; - if (!append) { - jqInput.empty(); - } - else { - offset = $('input', jqInput).length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - jqInput.append('
        ' + - '' + - '' + - '
        '); - $('input:last', jqInput).attr('value', val)[0]._editor_val = val; - if (attr) { - $('input:last', jqInput).attr(attr); - } - }); - } - }, - create: function (conf) { - conf._input = $('
        '); - checkbox._addOptions(conf, conf.options || conf.ipOpts); - return conf._input[0]; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - }, - get: function (conf) { - var out = []; - var selected = conf._input.find('input:checked'); - if (selected.length) { - selected.each(function () { - out.push(this._editor_val); - }); - } - else if (conf.unselectedValue !== undefined) { - out.push(conf.unselectedValue); - } - return conf.separator === undefined || conf.separator === null ? - out : - out.join(conf.separator); - }, - set: function (conf, val) { - var jqInputs = conf._input.find('input'); - if (!Array.isArray(val) && typeof val === 'string') { - val = val.split(conf.separator || '|'); - } - else if (!Array.isArray(val)) { - val = [val]; - } - var i; - var len = val.length; - var found; - jqInputs.each(function () { - found = false; - for (i = 0; i < len; i++) { - if (this._editor_val == val[i]) { - found = true; - break; - } - } - this.checked = found; - }); - _triggerChange(jqInputs); - }, - update: function (conf, options, append) { - // Get the current value - var currVal = checkbox.get(conf); - checkbox._addOptions(conf, options, append); - checkbox.set(conf, currVal); - } -}); -var radio = $.extend(true, {}, baseFieldType, { - // Locally "private" function that can be reused for the create and update methods - _addOptions: function (conf, opts, append) { - if (append === void 0) { append = false; } - var jqInput = conf._input; - var offset = 0; - if (!append) { - jqInput.empty(); - } - else { - offset = $('input', jqInput).length; - } - if (opts) { - Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { - jqInput.append('
        ' + - '' + - '' + - '
        '); - $('input:last', jqInput).attr('value', val)[0]._editor_val = val; - if (attr) { - $('input:last', jqInput).attr(attr); - } - }); - } - }, - create: function (conf) { - conf._input = $('
        '); - radio._addOptions(conf, conf.options || conf.ipOpts); - // this is ugly, but IE6/7 has a problem with radio elements that are created - // and checked before being added to the DOM! Basically it doesn't check them. As - // such we use the _preChecked property to set cache the checked button and then - // check it again when the display is shown. This has no effect on other browsers - // other than to cook a few clock cycles. - this.on('open', function () { - conf._input.find('input').each(function () { - if (this._preChecked) { - this.checked = true; - } - }); - }); - return conf._input[0]; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - }, - get: function (conf) { - var el = conf._input.find('input:checked'); - if (el.length) { - return el[0]._editor_val; - } - return conf.unselectedValue !== undefined ? - conf.unselectedValue : - undefined; - }, - set: function (conf, val) { - conf._input.find('input').each(function () { - this._preChecked = false; - if (this._editor_val == val) { - this.checked = true; - this._preChecked = true; - } - else { - // In a detached DOM tree, there is no relationship between the - // input elements, so we need to uncheck any element that does - // not match the value - this.checked = false; - this._preChecked = false; - } - }); - _triggerChange(conf._input.find('input:checked')); - }, - update: function (conf, options, append) { - var currVal = radio.get(conf); - radio._addOptions(conf, options, append); - // Select the current value if it exists in the new data set, otherwise - // select the first radio input so there is always a value selected - var inputs = conf._input.find('input'); - radio.set(conf, inputs.filter('[value="' + currVal + '"]').length ? - currVal : - inputs.eq(0).attr('value')); - } -}); -var datetime = $.extend(true, {}, baseFieldType, { - create: function (conf) { - conf._input = $('').attr($.extend(true, { - id: Editor.safeId(conf.id), - type: 'text' - }, conf.attr)); - if (!DataTable$3.DateTime) { - Editor.error('DateTime library is required', 15); - } - // Legacy support for 2.0- parameters - if (conf.momentLocale && !conf.opts.locale) { - conf.opts.locale = conf.momentLocale; - } - if (conf.momentStrict && !conf.opts.strict) { - conf.opts.strict = conf.momentStrict; - } - conf._picker = new DataTable$3.DateTime(conf._input, $.extend({ - format: conf.displayFormat || conf.format, - i18n: this.i18n.datetime, - }, conf.opts)); - conf._closeFn = function () { - conf._picker.hide(); - }; - if (conf.keyInput === false) { - conf._input.on('keydown', function (e) { - e.preventDefault(); - }); - } - this.on('close', conf._closeFn); - return conf._input[0]; - }, - destroy: function (conf) { - this.off('close', conf._closeFn); - conf._input.off('keydown'); - conf._picker.destroy(); - }, - errorMessage: function (conf, msg) { - conf._picker.errorMsg(msg); - }, - get: function (conf) { - return conf.wireFormat - ? conf._picker.valFormat(conf.wireFormat) - : conf._input.val(); - }, - maxDate: function (conf, max) { - conf._picker.max(max); - }, - minDate: function (conf, min) { - conf._picker.min(min); - }, - // default disable and enable options are okay - owns: function (conf, node) { - return conf._picker.owns(node); - }, - set: function (conf, val) { - // If there is a wire format, convert it to the display format - // Note that special values (e.g. `--now` and empty) do not get formatted - if (typeof val === 'string' && val && val.indexOf('--') !== 0 && conf.wireFormat) { - conf._picker.valFormat(conf.wireFormat, val); - } - else { - conf._picker.val(val); - } - _triggerChange(conf._input); - } -}); -var upload = $.extend(true, {}, baseFieldType, { - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - var editor = this; - var container = _commonUpload(editor, conf, function (val) { - upload.set.call(editor, conf, val[0]); - editor._event('postUpload', [conf.name, val[0]]); - }); - return container; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - conf._enabled = false; - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - conf._enabled = true; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - conf._val = val; - conf._input.val(''); - var container = conf._input; - if (conf.display) { - var rendered = container.find('div.rendered'); - if (conf._val) { - rendered.html(conf.display(conf._val)); - } - else { - rendered - .empty() - .append('' + (conf.noFileText || 'No file') + ''); - } - } - var button = container.find('div.clearValue button'); - if (val && conf.clearText) { - button.html(conf.clearText); - container.removeClass('noClear'); - } - else { - container.addClass('noClear'); - } - conf._input.find('input').triggerHandler('upload.editor', [conf._val]); - } -}); -var uploadMany = $.extend(true, {}, baseFieldType, { - _showHide: function (conf) { - if (!conf.limit) { - return; - } - conf._container.find('div.limitHide').css('display', conf._val.length >= conf.limit ? - 'none' : - 'block'); - // Used by the Editor.upload static function to truncate if too many - // files are selected for upload - conf._limitLeft = conf.limit - conf._val.length; - }, - canReturnSubmit: function (conf, node) { - return false; - }, - create: function (conf) { - var editor = this; - var container = _commonUpload(editor, conf, function (val) { - conf._val = conf._val.concat(val); - uploadMany.set.call(editor, conf, conf._val); - editor._event('postUpload', [conf.name, conf._val]); - }, true); - container - .addClass('multi') - .on('click', 'button.remove', function (e) { - e.stopPropagation(); - if (conf._enabled) { - var idx = $(this).data('idx'); - conf._val.splice(idx, 1); - uploadMany.set.call(editor, conf, conf._val); - } - }); - conf._container = container; - return container; - }, - disable: function (conf) { - conf._input.find('input').prop('disabled', true); - conf._enabled = false; - }, - enable: function (conf) { - conf._input.find('input').prop('disabled', false); - conf._enabled = true; - }, - get: function (conf) { - return conf._val; - }, - set: function (conf, val) { - // Default value for fields is an empty string, whereas we want [] - if (!val) { - val = []; - } - if (!Array.isArray(val)) { - throw new Error('Upload collections must have an array as a value'); - } - conf._val = val; - conf._input.val(''); - var that = this; - var container = conf._input; - if (conf.display) { - var rendered = container.find('div.rendered').empty(); - if (val.length) { - var list_1 = $('
          ').appendTo(rendered); - $.each(val, function (i, file) { - var display = conf.display(file, i); - if (display !== null) { - list_1.append('
        • ' + - display + - ' ' + - '
        • '); - } - }); - } - else { - rendered.append('' + (conf.noFileText || 'No files') + ''); - } - } - uploadMany._showHide(conf); - conf._input.find('input').triggerHandler('upload.editor', [conf._val]); - } -}); -var datatable = $.extend(true, {}, baseFieldType, { - _addOptions: function (conf, options, append) { - if (append === void 0) { append = false; } - var dt = conf.dt; - if (!append) { - dt.clear(); - } - dt.rows.add(options).draw(); - }, - _jumpToFirst: function (conf, editor) { - var dt = conf.dt; - // Find which page in the table the first selected row is - var idx = dt.row({ order: 'applied', selected: true }).index(); - var page = 0; - if (typeof idx === 'number') { - var pageLen = dt.page.info().length; - var pos = dt.rows({ order: 'applied' }).indexes().indexOf(idx); - page = pageLen > 0 - ? Math.floor(pos / pageLen) - : 0; - } - dt.page(page).draw(false); - // If scrolling is enabled, scroll down to first selected - var container = $('div.dataTables_scrollBody', dt.table().container()); - var scrollTo = function () { - var node = dt.row({ order: 'applied', selected: true }).node(); - if (node) { - var height = container.height(); - var top_1 = $(node).position().top; - if (top_1 > height - 10) { - container.scrollTop(top_1); - } - } - }; - if (container.length) { - // Check that the form has actually been displayed. If not need - // to wait for Editor's open event - if (container.parents('body').length) { - scrollTo(); - } - else { - editor.one('open', function () { - scrollTo(); - }); - } - } - }, - create: function (conf) { - var _this = this; - conf.optionsPair = $.extend({ - label: 'label', - value: 'value' - }, conf.optionsPair); - var table = $(''); - var container = $('
          ').append(table); - var side = $('
          '); - if (conf.footer) { - $('
          ') - .append(Array.isArray(conf.footer) - ? $('').append($.map(conf.footer, function (str) { return $('`; + }; + theTable = $('#tableOfTarifasacabado').DataTable({ + processing: true, + serverSide: true, + autoWidth: true, + responsive: true, + scrollX: true, + lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], + pageLength: 10, + lengthChange: true, + "dom": 'lfBrtip', + "buttons": [ + 'copy', 'csv', 'excel', 'print', { + extend: 'pdfHtml5', + orientation: 'landscape', + pageSize: 'A4' + } + ], + stateSave: true, + order: [[0, 'asc']], + language: { + url: "/assets/dt/languages[$currentLocale] ?? config('Basics')->i18n ?>.json" + }, + ajax : $.fn.dataTable.pipeline( { + url: '', + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr] + } + ], + columns : [ + { 'data': 'nombre' }, + { 'data': actionBtns } + ] + }); + + + + +$(document).on('click', '.btn-edit', function(e) { + //window.location.href = `/edit/${$(this).attr('data-id')}`; + window.location.href = `/tarifas/tarifaacabado/edit/${$(this).attr('data-id')}`; + }); + +$(document).on('click', '.btn-delete', function(e) { + Swal.fire({ + title: '', + text: '', + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + confirmButtonText: '', + cancelButtonText: '', + cancelButtonColor: '#d33' + }) + .then((result) => { + const dataId = $(this).data('id'); + const row = $(this).closest('tr'); + if (result.value) { + $.ajax({ + //url: `/${dataId}`, + //method: 'DELETE', + url: `/tarifas/tarifaacabado/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + Toast.fire({ + icon: 'success', + title: data.msg ?? jqXHR.statusText, + }); + + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + }).fail((jqXHR, textStatus, errorThrown) => { + Toast.fire({ + icon: 'error', + title: jqXHR.responseJSON.messages.error, + }); + }) + } + }); + }); + + + + +endSection() ?> + + section('css') ?> endSection() ?> @@ -119,40 +157,3 @@ endSection() ?> -section('additionalInlineJs') ?> - - const lastColNr2 = $(".using-exportable-data-table").find("tr:first th").length - 1; - theTable = $('.using-exportable-data-table').DataTable({ - "responsive": true, - "paging": true, - "lengthMenu": [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], - "pageLength": 10, - "lengthChange": true, - "searching": true, - "ordering": true, - "info": true, - "dom": 'lfBrtip', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other - // "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above - "buttons": [ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ], - "autoWidth": true, - "scrollX": true, - "stateSave": true, - "language": { - url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" - }, - "columnDefs": [ - { - orderable: false, - searchable: false, - targets: [0,lastColNr2] - } - ] - }); -endSection() ?> - diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoForm.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoForm.php deleted file mode 100644 index 92ff8f02..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoForm.php +++ /dev/null @@ -1,27 +0,0 @@ -include("themes/_commonPartialsBs/select2bs5") ?> -extend('themes/backend/vuexy/main/defaultlayout') ?> -section("content") ?> -
          -
          -
          -
          -

          -
          -
          - - - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
          - " - /> - "btn btn-secondary"]) ?> -
          - -
          -
          -
          -endSection() ?> From f49e83b582fe612f37f6b65bb4d3acba45eb5f13 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Wed, 14 Jun 2023 11:29:28 +0200 Subject: [PATCH 5/6] tarifas acabado a falta de check duplicados y guardar tarifa acabado --- .vscode/sftp.json | 2 +- ci4/app/Config/Routes.php | 14 + .../Papelimpresiontipologias.php | 10 +- ci4/app/Controllers/Tarifas/Tarifaacabado.php | 26 +- .../Tarifas/Tarifaacabadolineas.php | 118 +- .../Controllers/Tarifas/Tarifamanipulado.php | 7 +- .../Entities/Tarifas/TarifaacabadoEntity.php | 4 +- ci4/app/Language/en/Basic.php | 3 +- ci4/app/Language/en/TarifaAcabadoLineas.php | 51 + ci4/app/Language/es/Basic.php | 3 +- ci4/app/Language/es/TarifaAcabadoLineas.php | 50 + .../Tarifas/TarifaAcabadoLineaModel.php | 41 +- ci4/app/Models/Tarifas/TarifaacabadoModel.php | 11 +- .../ThirdParty/DatatablesEditor/config.php | 6 +- .../tarifas/acabado/viewTarifaAcabadoForm.php | 273 +- .../datatables-editor/editor.bootstrap.css | 702 ++ .../editor.bootstrap.min.css | 1 + .../datatables-editor/editor.bootstrap4.css | 779 ++ .../editor.bootstrap4.min.css | 1 + .../datatables-editor/editor.bootstrap5.css | 782 ++ .../editor.bootstrap5.min.css | 1 + .../css/datatables-editor/editor.bulma.css | 466 ++ .../datatables-editor/editor.bulma.min.css | 1 + .../datatables-editor/editor.dataTables.css | 1279 +++ .../editor.dataTables.min.css | 1 + .../datatables-editor/editor.foundation.css | 590 ++ .../editor.foundation.min.css | 1 + .../css/datatables-editor/editor.jqueryui.css | 865 +++ .../datatables-editor/editor.jqueryui.min.css | 1 + .../datatables-editor/editor.semanticui.css | 602 ++ .../editor.semanticui.min.css | 1 + .../css/datatables-editor/scss/bubble.scss | 130 + .../css/datatables-editor/scss/datatable.scss | 100 + .../css/datatables-editor/scss/envelope.scss | 63 + .../css/datatables-editor/scss/fields.scss | 280 + .../css/datatables-editor/scss/inline.scss | 79 + .../css/datatables-editor/scss/lightbox.scss | 174 + .../css/datatables-editor/scss/main.scss | 180 + .../css/datatables-editor/scss/mixins.scss | 178 + .../datatables-editor/scss/processing.scss | 106 + .../css/datatables-editor/scss/upload.scss | 143 + .../js/datatables-editor/dataTables.editor.js | 6830 +++++++++++++++++ .../dataTables.editor.min.js | 6 + .../dataTables.editor.min.mjs | 6 + .../datatables-editor/dataTables.editor.mjs | 6789 ++++++++++++++++ .../js/datatables-editor/editor.bootstrap.js | 272 + .../datatables-editor/editor.bootstrap.min.js | 4 + .../editor.bootstrap.min.mjs | 4 + .../js/datatables-editor/editor.bootstrap.mjs | 228 + .../js/datatables-editor/editor.bootstrap4.js | 264 + .../editor.bootstrap4.min.js | 4 + .../editor.bootstrap4.min.mjs | 4 + .../datatables-editor/editor.bootstrap4.mjs | 220 + .../js/datatables-editor/editor.bootstrap5.js | 315 + .../editor.bootstrap5.min.js | 4 + .../editor.bootstrap5.min.mjs | 4 + .../datatables-editor/editor.bootstrap5.mjs | 271 + .../js/datatables-editor/editor.bulma.js | 216 + .../js/datatables-editor/editor.bulma.min.js | 4 + .../js/datatables-editor/editor.bulma.min.mjs | 4 + .../js/datatables-editor/editor.bulma.mjs | 172 + .../js/datatables-editor/editor.dataTables.js | 59 + .../editor.dataTables.min.js | 4 + .../editor.dataTables.min.mjs | 4 + .../datatables-editor/editor.dataTables.mjs | 15 + .../js/datatables-editor/editor.foundation.js | 171 + .../editor.foundation.min.js | 4 + .../editor.foundation.min.mjs | 4 + .../datatables-editor/editor.foundation.mjs | 127 + .../js/datatables-editor/editor.jqueryui.js | 186 + .../datatables-editor/editor.jqueryui.min.js | 4 + .../datatables-editor/editor.jqueryui.min.mjs | 4 + .../js/datatables-editor/editor.jqueryui.mjs | 142 + .../js/datatables-editor/editor.semanticui.js | 256 + .../editor.semanticui.min.js | 4 + .../editor.semanticui.min.mjs | 4 + .../datatables-editor/editor.semanticui.mjs | 212 + 77 files changed, 24894 insertions(+), 52 deletions(-) create mode 100644 ci4/app/Language/en/TarifaAcabadoLineas.php create mode 100644 ci4/app/Language/es/TarifaAcabadoLineas.php create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.min.css create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/bubble.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/datatable.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/envelope.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/fields.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/inline.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/lightbox.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/main.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/mixins.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/processing.scss create mode 100644 httpdocs/themes/vuexy/css/datatables-editor/scss/upload.scss create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap4.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap4.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap4.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap4.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap5.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap5.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap5.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap5.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.jqueryui.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.jqueryui.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.jqueryui.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.jqueryui.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.semanticui.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.semanticui.min.js create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.semanticui.min.mjs create mode 100644 httpdocs/themes/vuexy/js/datatables-editor/editor.semanticui.mjs diff --git a/.vscode/sftp.json b/.vscode/sftp.json index a4adf0e7..4f65c0da 100644 --- a/.vscode/sftp.json +++ b/.vscode/sftp.json @@ -4,7 +4,7 @@ "protocol": "ftp", "port": 21, "username": "sk-jjo", - "password": "yuh1C^290", + "password": "Snwi1660%", "remotePath": "/", "uploadOnSave": true, "useTempFile": false, diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index b35b2887..45e58dc0 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -192,6 +192,20 @@ $routes->group('papelimpresiontipologias', ['namespace' => 'App\Controllers\Conf $routes->get('delete/(:num)', 'Papelimpresiontipologias::delete/$1', ['as' => 'deletePapelImpresionTipologia']); }); +$routes->group('tarifaacabadolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { + $routes->get('', 'Tarifaacabadolineas::index', ['as' => 'tarifaAcabadoLineaList']); + $routes->get('add', 'Tarifaacabadolineas::add', ['as' => 'newTarifaAcabadoLinea']); + $routes->post('add', 'Tarifaacabadolineas::add', ['as' => 'createTarifaAcabadoLinea']); + $routes->post('create', 'Tarifaacabadolineas::create', ['as' => 'ajaxCreateTarifaAcabadoLinea']); + $routes->put('(:num)/update', 'Tarifaacabadolineas::update/$1', ['as' => 'ajaxUpdateTarifaAcabadoLinea']); + $routes->post('(:num)/edit', 'Tarifaacabadolineas::edit/$1', ['as' => 'updateTarifaAcabadoLinea']); + $routes->post('datatable', 'Tarifaacabadolineas::datatable', ['as' => 'dataTableOfTarifaAcabadoLineas']); + $routes->post('datatable_editor', 'Tarifaacabadolineas::datatable_editor', ['as' => 'editorOfTarifaAcabadoLineas']); + $routes->post('allmenuitems', 'Tarifaacabadolineas::allItemsSelect', ['as' => 'select2ItemsOfTarifaAcabadoLineas']); + $routes->post('menuitems', 'Tarifaacabadolineas::menuItems', ['as' => 'menuItemsOfTarifaAcabadoLineas']); + $routes->get('delete/(:num)', 'Tarifaacabadolineas::delete/$1', ['as' => 'deleteTarifaAcabadoLinea']); +}); +$routes->resource('tarifaacabadolineas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaacabadolineas', 'except' => 'show,new,create,update']); $routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) { diff --git a/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php b/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php index 22d151d6..b9163562 100644 --- a/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php +++ b/ci4/app/Controllers/Configuracion/Papelimpresiontipologias.php @@ -286,12 +286,12 @@ class Papelimpresiontipologias extends \App\Controllers\GoBaseResourceController array_unshift($menu , $nonItem); $newTokenHash = csrf_hash(); - $csrfTokenName = csrf_token(); - $data = [ - 'menu' => $menu, + $csrfTokenName = csrf_token(); + $output = array( + 'success' => 'yes', $csrfTokenName => $newTokenHash - ]; - return $this->respond($data); + ); + return json_encode($output); } else { return $this->failUnauthorized('Invalid request', 403); } diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabado.php b/ci4/app/Controllers/Tarifas/Tarifaacabado.php index bc0d7224..026dd2e2 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabado.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabado.php @@ -30,6 +30,13 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { $this->viewData['pageTitle'] = lang('Tarifaacabado.moduleTitle'); $this->viewData['usingSweetAlert'] = true; + + // Se indica que este controlador trabaja con soft_delete + $this->soft_delete = true; + // Se indica el flag para los ficheros borrados + $this->delete_flag = 1; + + $this->viewData = ['usingServerSideDataTable' => true]; parent::initController($request, $response, $logger); } @@ -52,7 +59,8 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { public function add() { - + // JJO + $session = session(); $requestMethod = $this->request->getMethod(); @@ -64,6 +72,10 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_created_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -116,6 +128,9 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { } // end function add() public function edit($requestedId = null) { + + // JJO + $session = session(); if ($requestedId == null) : return $this->redirect2listView(); @@ -136,15 +151,18 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_update_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - + if ($this->canValidate()) : try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php index 59f175ad..732f48b6 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php @@ -11,6 +11,17 @@ use App\Models\tarifas\TarifaacabadoModel; use App\Models\Tarifas\TarifaAcabadoLineaModel; +use + DataTables\Editor, + DataTables\Database, + DataTables\Editor\Field, + DataTables\Editor\Format, + DataTables\Editor\Mjoin, + DataTables\Editor\Options, + DataTables\Editor\Upload, + DataTables\Editor\Validate, + DataTables\Editor\ValidateOptions; + class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController { protected $modelName = TarifaAcabadoLineaModel::class; @@ -205,25 +216,124 @@ class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController { $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); return $response; } + $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; - $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = TarifaAcabadoLineaModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; + $order = TarifaAcabadoLineaModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + $id_TA = $reqData['id_tarifaacabado'] ?? -1; + + + $resourceData = $this->model->getResource("", $id_TA)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), - $this->model->getResource($search)->countAllResults() + $this->model->getResource($search, $id_TA)->countAllResults() )); } else { return $this->failUnauthorized('Invalid request', 403); } } + public function datatable_editor() { + if ($this->request->isAJAX()) { + + include(APPPATH . "ThirdParty/DatatablesEditor/DataTables.php"); + + // Build our Editor instance and process the data coming from _POST + $response = Editor::inst( $db, 'tarifa_acabado_lineas' ) + ->fields( + Field::inst( 'tirada_min' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_min.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_min.required') ) + ), + Field::inst( 'tirada_max' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_max.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.tirada_max.required') ) + ), + Field::inst( 'precio_min' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_min.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_min.required') ) + ), + Field::inst( 'precio_max' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_max.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_max.required') ) + ), + Field::inst( 'precio_unidad' ) + ->validator( 'Validate::numeric', array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.decimal') ) + ) + ->validator( 'Validate::notEmpty',array( + 'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.required') ) + ), + Field::inst( 'tarifa_acabado_id' ), + Field::inst( 'user_created_id' ), + Field::inst( 'created_at' ), + Field::inst( 'user_updated_id' ), + Field::inst( 'updated_at' ), + Field::inst( 'is_deleted' ), + Field::inst( 'deleted_at' ), + + ) + ->on( 'preCreate', function ( $editor, &$values ) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field( 'user_created_id' ) + ->setValue( $session->id_user ); + $editor + ->field( 'created_at' ) + ->setValue( $datetime->format('Y-m-d H:i:s') ); + } ) + ->on( 'preEdit', function ( $editor, &$values ) { + $session = session(); + $datetime = (new \CodeIgniter\I18n\Time("now")); + $editor + ->field( 'user_updated_id' ) + ->setValue( $session->id_user ); + $editor + ->field( 'updated_at' ) + ->setValue( $datetime->format('Y-m-d H:i:s') ); + } ) + ->debug(true) + ->process( $_POST ) + ->data(); + + if(isset($response['error'])){ + if(str_contains($response['error'], "tirada_min_tirada_max") && + str_contains($response['error'], "Duplicate entry ")){ + $response['error'] = lang('TarifaAcabadoLineas.validation.duplicated_tirada'); + } + } + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $response[$csrfTokenName] = $newTokenHash; + + echo json_encode($response); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function allItemsSelect() { if ($this->request->isAJAX()) { $onlyActiveOnes = true; diff --git a/ci4/app/Controllers/Tarifas/Tarifamanipulado.php b/ci4/app/Controllers/Tarifas/Tarifamanipulado.php index 7b28b845..46b01ae9 100644 --- a/ci4/app/Controllers/Tarifas/Tarifamanipulado.php +++ b/ci4/app/Controllers/Tarifas/Tarifamanipulado.php @@ -41,7 +41,8 @@ class Tarifamanipulado extends \App\Controllers\GoBaseController { public function add() { - + // JJO + $session = session(); $requestMethod = $this->request->getMethod(); @@ -52,6 +53,10 @@ class Tarifamanipulado extends \App\Controllers\GoBaseController { $postData = $this->request->getPost(); $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + // JJO + if(isset($this->model->user_update_id)){ + $sanitizedData['user_created_id'] = $session->id_user; + } $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : diff --git a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php index 0ad59298..74827121 100644 --- a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php +++ b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php @@ -8,8 +8,8 @@ class TarifaacabadoEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ "id" => null, "nombre" => null, - "user_created_id" => 1, - "user_update_id" => 1, + "user_created_id" => 0, + "user_update_id" => 0, "is_deleted" => 0, "created_at" => null, "updated_at" => null, diff --git a/ci4/app/Language/en/Basic.php b/ci4/app/Language/en/Basic.php index d7e6aea9..21d74320 100644 --- a/ci4/app/Language/en/Basic.php +++ b/ci4/app/Language/en/Basic.php @@ -79,7 +79,8 @@ return [ 'sureToDeleteTitle' => 'Are you sure you want to delete this {0}?', 'text' => 'This action cannot be undone.', 'title' => 'Are you sure?', - 'maxRowsReached' => 'No more lines can be added.' + 'maxRowsReached' => 'No more lines can be added.', + 'line' => 'the line' ], 'ok' => 'Ok', 'wait' => 'Wait', diff --git a/ci4/app/Language/en/TarifaAcabadoLineas.php b/ci4/app/Language/en/TarifaAcabadoLineas.php new file mode 100644 index 00000000..9b120843 --- /dev/null +++ b/ci4/app/Language/en/TarifaAcabadoLineas.php @@ -0,0 +1,51 @@ + 'ID', + 'moduleTitle' => 'Finish rates Lines', + 'deleteLine' => 'the selected register', + 'precioMax' => 'Max Price', + 'precioMin' => 'Min Price', + 'precioUnidad' => 'Price Unit', + 'tiradaMax' => 'Print Max', + 'tiradaMin' => 'Print Min', + 'validation' => [ + 'duplicated_tirada' => "Duplicated line (the couple 'Print Min' and 'Print Max' must be unique)", + 'precio_max' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'precio_min' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'precio_unidad' => [ + 'decimal' => 'The field must contain a decimal number.', + 'required' => 'The field is required.', + + ], + + 'tirada_max' => [ + 'integer' => 'The field must contain an integer.', + 'required' => 'The field is required.', + + ], + + 'tirada_min' => [ + 'integer' => 'The field must contain an integer.', + 'required' => 'The field is required.', + + ], + + + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Language/es/Basic.php b/ci4/app/Language/es/Basic.php index a6d6094f..5651f305 100644 --- a/ci4/app/Language/es/Basic.php +++ b/ci4/app/Language/es/Basic.php @@ -79,7 +79,8 @@ return [ 'sureToDeleteTitle' => 'Está seguro de borrar {0}?', 'text' => 'Esta acción no se puede deshacer.', 'title' => 'Está seguro?', - 'maxRowsReached' => 'No se pueden añadir más líneas.' + 'maxRowsReached' => 'No se pueden añadir más líneas.', + 'line' => 'la línea' ], 'ok' => 'Ok', diff --git a/ci4/app/Language/es/TarifaAcabadoLineas.php b/ci4/app/Language/es/TarifaAcabadoLineas.php new file mode 100644 index 00000000..397da254 --- /dev/null +++ b/ci4/app/Language/es/TarifaAcabadoLineas.php @@ -0,0 +1,50 @@ + 'ID', + 'moduleTitle' => 'Tarifa Acabado Lineas', + 'deleteLine' => 'el registro seleccionado', + 'precioMax' => 'Precio Max', + 'precioMin' => 'Precio Min', + 'precioUnidad' => 'Precio Unidad', + 'tiradaMax' => 'Tirada Max', + 'tiradaMin' => 'Tirada Min', + 'validation' => [ + 'duplicated_tirada' => "Línea duplicada (la pareja 'Tirada Min' y 'Tirada Max' debe de ser única)", + 'precio_max' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'precio_min' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'precio_unidad' => [ + 'decimal' => 'El campo debe contener un número decimal.', + 'required' => 'El campo es obligatorio.', + + ], + + 'tirada_max' => [ + 'integer' => 'El campo debe contener un número entero.', + 'required' => 'El campo es obligatorio.', + + ], + + 'tirada_min' => [ + 'integer' => 'El campo debe contener un número entero.', + 'required' => 'El campo es obligatorio.', + + ], + + + ], + + +]; \ No newline at end of file diff --git a/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php index 09b9fb44..b6609d33 100644 --- a/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php +++ b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php @@ -13,17 +13,11 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel protected $useAutoIncrement = true; const SORTABLE = [ - 1 => "t1.tirada_min", - 2 => "t1.tirada_max", - 3 => "t1.precio_min", - 4 => "t1.precio_max", - 5 => "t1.precio_unidad", - 6 => "t1.user_created_id", - 7 => "t1.user_updated_id", - 8 => "t1.is_deleted", - 9 => "t1.created_at", - 10 => "t1.updated_at", - 11 => "t2.id", + 0 => "t1.tirada_min", + 1 => "t1.tirada_max", + 2 => "t1.precio_min", + 3 => "t1.precio_max", + 4 => "t1.precio_unidad", ]; protected $allowedFields = [ @@ -136,15 +130,24 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel * * @return \CodeIgniter\Database\BaseBuilder */ - public function getResource(string $search = "") + public function getResource(string $search = "", $tarifa_acabado_id = -1) { $builder = $this->db ->table($this->table . " t1") ->select( - "t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado" + "t1.id AS id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado" ); + + if($tarifa_acabado_id>=0) + { + $builder->where('tarifa_acabado_id', $tarifa_acabado_id); + } + $builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left"); + //JJO + $builder->where("t1.is_deleted", 0); + return empty($search) ? $builder : $builder @@ -173,4 +176,16 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel ->orLike("t2.id", $search) ->groupEnd(); } + + public function findLineasForTarifaAcabado(int $tarifaacabado_id){ + + $builder = $this->db + ->table($this->table ) + ->select("*") + ->where("tarifa_acabado_id", $tarifaacabado_id); + + + return $builder; + + } } diff --git a/ci4/app/Models/Tarifas/TarifaacabadoModel.php b/ci4/app/Models/Tarifas/TarifaacabadoModel.php index 478b40a2..8f178563 100644 --- a/ci4/app/Models/Tarifas/TarifaacabadoModel.php +++ b/ci4/app/Models/Tarifas/TarifaacabadoModel.php @@ -16,7 +16,13 @@ class TarifaacabadoModel extends \App\Models\GoBaseModel 0 => "t1.nombre", ]; - protected $allowedFields = ["nombre"]; + protected $allowedFields = [ + "nombre", + "deleted_at", + "is_deleted", + "user_created_id", + "user_update_id", + ]; protected $returnType = 'App\Entities\Tarifas\TarifaacabadoEntity'; protected $useTimestamps = true; @@ -53,6 +59,9 @@ class TarifaacabadoModel extends \App\Models\GoBaseModel { $builder = $this->db->table($this->table . " t1")->select("t1.id AS id, t1.nombre AS nombre"); + //JJO + $builder->where("t1.is_deleted", 0); + return empty($search) ? $builder : $builder diff --git a/ci4/app/ThirdParty/DatatablesEditor/config.php b/ci4/app/ThirdParty/DatatablesEditor/config.php index db70a726..cfe94959 100644 --- a/ci4/app/ThirdParty/DatatablesEditor/config.php +++ b/ci4/app/ThirdParty/DatatablesEditor/config.php @@ -10,11 +10,11 @@ ini_set('display_errors', '1'); */ $sql_details = array( "type" => "Mysql", // Database type: "Mysql", "Postgres", "Sqlserver", "Sqlite" or "Oracle" - "user" => "sk-misc", // Database user name - "pass" => "Itd27y^86", // Database password + "user" => "sk_jjo", // Database user name + "pass" => "61tv&G1Zf^XY", // Database password "host" => "localhost", // Database host "port" => "", // Database connection port (can be left empty for default) - "db" => "sk-misc", // Database name + "db" => "sk_jjo", // Database name "dsn" => "", // PHP DSN extra information. Set as `charset=utf8mb4` if you are using MySQL "pdoAttr" => array() // PHP PDO attributes array. See the PHP documentation for all options ); diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php index 039baaab..e0d57f9f 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php @@ -1,3 +1,4 @@ +include('themes/_commonPartialsBs/datatables') ?> include("themes/_commonPartialsBs/select2bs5") ?> include("themes/_commonPartialsBs/sweetalert") ?> extend('themes/backend/vuexy/main/defaultlayout') ?> @@ -10,22 +11,262 @@
          -
          - - getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> - -
          - +
          + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + +
          + - + - + +
          +
          +

          + + +

          + +
          +
          + +
          ').html(str); })) - : conf.footer) - .appendTo(table); - } - var dt = table - .addClass(datatable.tableClass) - .width('100%') - .on('init.dt', function (e, settings) { - if (settings.nTable !== table[0]) { - return; - } - var api = new DataTable$3.Api(settings); - var containerNode = $(api.table(undefined).container()); - // Select init - DataTable$3.select.init(api); - // Append side button controls - side - .append(containerNode.find('div.dataTables_filter')) - .append(containerNode.find('div.dt-buttons')) - .append(containerNode.find('div.dataTables_info')); - }) - .DataTable($.extend({ - buttons: [], - columns: [ - { - data: conf.optionsPair.label, - title: 'Label' - } - ], - deferRender: true, - dom: 'fiBtp', - language: { - paginate: { - next: '>', - previous: '<', - }, - search: '', - searchPlaceholder: 'Search' - }, - lengthChange: false, - select: { - style: conf.multiple ? 'os' : 'single' - }, - }, conf.config)); - this.on('open', function () { - if (dt.search()) { - dt.search('').draw(); - } - dt.columns.adjust(); - }); - // Change event for when the user does a select - `set` will do its own - // triggering of the change for the api - dt.on('user-select', function () { - _triggerChange($(conf.dt.table().container())); - }); - if (conf.editor) { - conf.editor.table(dt); - conf.editor.on('submitComplete', function (e, json, data, action) { - if (action === 'create') { - var _loop_1 = function (dp) { - dt - .rows(function (idx, d) { return d === dp; }) - .select(); - }; - // Automatically select the new data - for (var _i = 0, _a = json.data; _i < _a.length; _i++) { - var dp = _a[_i]; - _loop_1(dp); - } - } - else if (action === 'edit' || action === 'remove') { - _this._dataSource('refresh'); - } - datatable._jumpToFirst(conf, _this); - }); - } - conf.dt = dt; - datatable._addOptions(conf, conf.options || []); - return { - input: container, - side: side, - }; - }, - disable: function (conf) { - conf.dt.select.style('api'); - conf.dt.buttons().container().css('display', 'none'); - }, - dt: function (conf) { - return conf.dt; - }, - enable: function (conf) { - conf.dt.select.style(conf.multiple ? 'os' : 'single'); - conf.dt.buttons().container().css('display', 'block'); - }, - get: function (conf) { - var rows = conf.dt - .rows({ selected: true }) - .data() - .pluck(conf.optionsPair.value) - .toArray(); - return conf.separator || !conf.multiple - ? rows.join(conf.separator || ',') - : rows; - }, - set: function (conf, val, localUpdate) { - // Convert to an array of values - works for both single and multiple - if (conf.multiple && conf.separator && !Array.isArray(val)) { - val = typeof val === 'string' ? - val.split(conf.separator) : - []; - } - else if (!Array.isArray(val)) { - val = [val]; - } - // if ( ! localUpdate ) { - // conf._lastSet = val; - // } - var valueFn = dataGet(conf.optionsPair.value); - conf.dt.rows({ selected: true }).deselect(); - conf.dt.rows(function (idx, data, node) { return val.indexOf(valueFn(data)) !== -1; }).select(); - // Jump to the first page with a selected row (if there are any) - datatable._jumpToFirst(conf, this); - // Update will call change itself, otherwise multiple might be called - if (!localUpdate) { - _triggerChange($(conf.dt.table().container())); - } - }, - tableClass: '', - update: function (conf, options, append) { - datatable._addOptions(conf, options, append); - // Attempt to set the last selected value (set by the API or the end - // user, they get equal priority) - var lastSet = conf._lastSet; - if (lastSet !== undefined) { - datatable.set(conf, lastSet, true); - } - _triggerChange($(conf.dt.table().container())); - } -}); - -var defaults = { - className: '', - compare: null, - data: '', - def: '', - entityDecode: true, - fieldInfo: '', - getFormatter: null, - id: '', - label: '', - labelInfo: '', - message: '', - multiEditable: true, - name: null, - nullDefault: false, - setFormatter: null, - submit: true, - type: 'text' -}; - -var DataTable$2 = $.fn.dataTable; -var Field = /** @class */ (function () { - function Field(options, classes, host) { - var that = this; - var multiI18n = host.internalI18n().multi; - var opts = $.extend(true, {}, Field.defaults, options); - if (!Editor.fieldTypes[opts.type]) { - throw new Error('Error adding field - unknown field type ' + opts.type); - } - this.s = { - classes: classes, - host: host, - multiIds: [], - multiValue: false, - multiValues: {}, - name: opts.name, - opts: opts, - processing: false, - type: Editor.fieldTypes[opts.type], - }; - // No id, so assign one to have the label reference work - if (!opts.id) { - opts.id = 'DTE_Field_' + opts.name; - } - // If no `data` option is given, then we use the name from the field as the - // data prop to read data for the field from DataTables - if (opts.data === '') { - opts.data = opts.name; - } - // Get and set functions in the data object for the record - this.valFromData = function (d) { - // wrapper to automatically pass `editor` as the type - return dataGet(opts.data)(d, 'editor'); - }; - this.valToData = dataSet(opts.data); // set val to data - // Field HTML structure - var template = $('
          ' + - '' + - '
          ' + - // Field specific HTML is added here if there is any - '
          ' + - '
          ' + - multiI18n.title + - '' + - multiI18n.info + - '' + - '
          ' + - '
          ' + - multiI18n.restore + - '
          ' + - '
          ' + - '
          ' + opts.message + '
          ' + - '
          ' + opts.fieldInfo + '
          ' + - '
          ' + - '
          ' + - '
          '); - var input = this._typeFn('create', opts); - var side = null; - if (input && input.side) { - side = input.side; - input = input.input; - } - if (input !== null) { - el('input-control', template).prepend(input); - } - else { - template.css('display', 'none'); - } - this.dom = { - container: template, - fieldError: el('msg-error', template), - fieldInfo: el('msg-info', template), - fieldMessage: el('msg-message', template), - inputControl: el('input-control', template), - label: el('label', template).append(side), - labelInfo: el('msg-label', template), - multi: el('multi-value', template), - multiInfo: el('multi-info', template), - multiReturn: el('msg-multi', template), - processing: el('field-processing', template) - }; - // On click - set a common value for the field - this.dom.multi.on('click', function () { - if (that.s.opts.multiEditable && !template.hasClass(classes.disabled) && opts.type !== 'readonly') { - that.val(''); - that.focus(); - } - }); - this.dom.multiReturn.on('click', function () { - that.multiRestore(); - }); - // Field type extension methods - add a method to the field for the public - // methods that each field type defines beyond the default ones that already - // exist as part of this instance - $.each(this.s.type, function (name, fn) { - if (typeof fn === 'function' && that[name] === undefined) { - that[name] = function () { - var args = Array.prototype.slice.call(arguments); - args.unshift(name); - var ret = that._typeFn.apply(that, args); - // Return the given value if there is one, or the field instance - // for chaining if there is no value - return ret === undefined ? - that : - ret; - }; - } - }); - } - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Public - */ - Field.prototype.def = function (set) { - var opts = this.s.opts; - if (set === undefined) { - // Backwards compat - var def = opts['default'] !== undefined ? - opts['default'] : - opts.def; - return typeof def === 'function' ? - def() : - def; - } - opts.def = set; - return this; - }; - Field.prototype.disable = function () { - this.dom.container.addClass(this.s.classes.disabled); - this._typeFn('disable'); - return this; - }; - Field.prototype.displayed = function () { - var container = this.dom.container; - return container.parents('body').length && container.css('display') !== 'none' ? - true : - false; - }; - Field.prototype.enable = function (toggle) { - if (toggle === void 0) { toggle = true; } - if (toggle === false) { - return this.disable(); - } - this.dom.container.removeClass(this.s.classes.disabled); - this._typeFn('enable'); - return this; - }; - Field.prototype.enabled = function () { - return this.dom.container.hasClass(this.s.classes.disabled) === false; - }; - Field.prototype.error = function (msg, fn) { - var classes = this.s.classes; - // Add or remove the error class - if (msg) { - this.dom.container.addClass(classes.error); - } - else { - this.dom.container.removeClass(classes.error); - } - this._typeFn('errorMessage', msg); - return this._msg(this.dom.fieldError, msg, fn); - }; - Field.prototype.fieldInfo = function (msg) { - return this._msg(this.dom.fieldInfo, msg); - }; - Field.prototype.isMultiValue = function () { - return this.s.multiValue && this.s.multiIds.length !== 1; - }; - Field.prototype.inError = function () { - return this.dom.container.hasClass(this.s.classes.error); - }; - Field.prototype.input = function () { - return this.s.type.input ? - this._typeFn('input') : - $('input, select, textarea', this.dom.container); - }; - Field.prototype.focus = function () { - if (this.s.type.focus) { - this._typeFn('focus'); - } - else { - $('input, select, textarea', this.dom.container).focus(); - } - return this; - }; - Field.prototype.get = function () { - // When multi-value a single get is undefined - if (this.isMultiValue()) { - return undefined; - } - return this._format(this._typeFn('get'), this.s.opts.getFormatter); - }; - Field.prototype.hide = function (animate) { - var el = this.dom.container; - if (animate === undefined) { - animate = true; - } - if (this.s.host.display() && animate && $.fn.slideUp) { - el.slideUp(); - } - else { - el.css('display', 'none'); - } - return this; - }; - Field.prototype.label = function (str) { - var label = this.dom.label; - var labelInfo = this.dom.labelInfo.detach(); - if (str === undefined) { - return label.html(); - } - label.html(str); - label.append(labelInfo); - return this; - }; - Field.prototype.labelInfo = function (msg) { - return this._msg(this.dom.labelInfo, msg); - }; - Field.prototype.message = function (msg, fn) { - return this._msg(this.dom.fieldMessage, msg, fn); - }; - // There is no `multiVal()` as its arguments could be ambiguous - // id is an idSrc value _only_ - Field.prototype.multiGet = function (id) { - var value; - var multiValues = this.s.multiValues; - var multiIds = this.s.multiIds; - var isMultiValue = this.isMultiValue(); - if (id === undefined) { - var fieldVal = this.val(); - // Get an object with the values for each item being edited - value = {}; - for (var _i = 0, multiIds_1 = multiIds; _i < multiIds_1.length; _i++) { - var multiId = multiIds_1[_i]; - value[multiId] = isMultiValue ? - multiValues[multiId] : - fieldVal; - } - } - else if (isMultiValue) { - // Individual value - value = multiValues[id]; - } - else { - // Common value - value = this.val(); - } - return value; - }; - Field.prototype.multiRestore = function () { - this.s.multiValue = true; - this._multiValueCheck(); - }; - Field.prototype.multiSet = function (id, val, recalc) { - if (recalc === void 0) { recalc = true; } - var that = this; - var multiValues = this.s.multiValues; - var multiIds = this.s.multiIds; - if (val === undefined) { - val = id; - id = undefined; - } - // Set - var set = function (idSrc, valIn) { - // Get an individual item's value - add the id to the edit ids if - // it isn't already in the set. - if ($.inArray(idSrc, multiIds) === -1) { - multiIds.push(idSrc); - } - multiValues[idSrc] = that._format(valIn, that.s.opts.setFormatter); - }; - if ($.isPlainObject(val) && id === undefined) { - // idSrc / value pairs passed in - $.each(val, function (idSrc, innerVal) { - set(idSrc, innerVal); - }); - } - else if (id === undefined) { - // Set same value for all existing ids - $.each(multiIds, function (i, idSrc) { - set(idSrc, val); - }); - } - else { - // Setting an individual property - set(id, val); - } - this.s.multiValue = true; - if (recalc) { - this._multiValueCheck(); - } - return this; - }; - Field.prototype.name = function () { - return this.s.opts.name; - }; - Field.prototype.node = function () { - return this.dom.container[0]; - }; - Field.prototype.nullDefault = function () { - return this.s.opts.nullDefault; - }; - Field.prototype.processing = function (set) { - if (set === undefined) { - return this.s.processing; - } - this.dom.processing.css('display', set ? 'block' : 'none'); - this.s.processing = set; - this.s.host.internalEvent('processing-field', [set]); - return this; - }; - // multiCheck is not publicly documented - Field.prototype.set = function (val, multiCheck) { - if (multiCheck === void 0) { multiCheck = true; } - var decodeFn = function (d) { - return typeof d !== 'string' ? - d : - d - .replace(/>/g, '>') - .replace(/</g, '<') - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/£/g, '£') - .replace(/�?39;/g, '\'') - .replace(/�?10;/g, '\n'); - }; - this.s.multiValue = false; - var decode = this.s.opts.entityDecode; - if (decode === undefined || decode === true) { - if (Array.isArray(val)) { - for (var i = 0, ien = val.length; i < ien; i++) { - val[i] = decodeFn(val[i]); - } - } - else { - val = decodeFn(val); - } - } - // If triggered from multi check we don't want to do formatting or multi checking again - if (multiCheck === true) { - val = this._format(val, this.s.opts.setFormatter); - this._typeFn('set', val); - this._multiValueCheck(); - } - else { - this._typeFn('set', val); - } - return this; - }; - Field.prototype.show = function (animate, toggle) { - if (animate === void 0) { animate = true; } - if (toggle === void 0) { toggle = true; } - if (toggle === false) { - return this.hide(animate); - } - var el = this.dom.container; - if (this.s.host.display() && animate && $.fn.slideDown) { - el.slideDown(); - } - else { - el.css('display', ''); // empty to restore css default (flex or block) - } - return this; - }; - Field.prototype.update = function (options, append) { - if (append === void 0) { append = false; } - if (this.s.type.update) { - this._typeFn('update', options, append); - } - return this; - }; - Field.prototype.val = function (val) { - return val === undefined ? - this.get() : - this.set(val); - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Internal - Called from Editor only and are not publicly documented - - * these APIs can change! - */ - Field.prototype.compare = function (value, original) { - var compare = this.s.opts.compare || deepCompare; - return compare(value, original); - }; - Field.prototype.dataSrc = function () { - return this.s.opts.data; - }; - Field.prototype.destroy = function () { - // remove element - this.dom.container.remove(); - // field's own destroy method if there is one - this._typeFn('destroy'); - return this; - }; - Field.prototype.multiEditable = function () { - return this.s.opts.multiEditable; - }; - Field.prototype.multiIds = function () { - return this.s.multiIds; - }; - Field.prototype.multiInfoShown = function (show) { - this.dom.multiInfo.css({ display: show ? 'block' : 'none' }); - }; - Field.prototype.multiReset = function () { - this.s.multiIds = []; - this.s.multiValues = {}; - }; - Field.prototype.submittable = function () { - return this.s.opts.submit; - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Internal - */ - Field.prototype._msg = function (el, msg, fn) { - if (msg === undefined) { - return el.html(); - } - if (typeof msg === 'function') { - var editor = this.s.host; - msg = msg(editor, new DataTable$2.Api(editor.internalSettings().table)); - } - if (el.parent().is(':visible') && $.fn.animate) { - el.html(msg); - if (msg) { - el.slideDown(fn); // fn can be undefined - so jQuery won't execute it - } - else { - el.slideUp(fn); - } - } - else { - // Not visible, so immediately set, or blank out the element - el - .html(msg || '') - .css('display', msg ? 'block' : 'none'); - if (fn) { - fn(); - } - } - return this; - }; - Field.prototype._multiValueCheck = function () { - var last; - var ids = this.s.multiIds; - var values = this.s.multiValues; - var isMultiValue = this.s.multiValue; - var isMultiEditable = this.s.opts.multiEditable; - var val; - var different = false; - if (ids) { - for (var i = 0; i < ids.length; i++) { - val = values[ids[i]]; - if (i > 0 && !deepCompare(val, last)) { - different = true; - break; - } - last = val; - } - } - if ((different && isMultiValue) || (!isMultiEditable && this.isMultiValue())) { - // Different values or same values, but not multiple editable - this.dom.inputControl.css({ display: 'none' }); - this.dom.multi.css({ display: 'block' }); - } - else { - // All the same value - this.dom.inputControl.css({ display: 'block' }); - this.dom.multi.css({ display: 'none' }); - if (isMultiValue && !different) { - this.set(last, false); - } - } - this.dom.multiReturn.css({ - display: ids && ids.length > 1 && different && !isMultiValue ? - 'block' : - 'none' - }); - // Update information label - var i18n = this.s.host.internalI18n().multi; - this.dom.multiInfo.html(isMultiEditable ? i18n.info : i18n.noMulti); - this.dom.multi.toggleClass(this.s.classes.multiNoEdit, !isMultiEditable); - this.s.host.internalMultiInfo(); - return true; - }; - Field.prototype._typeFn = function (name) { - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - // Insert the options as the first parameter - all field type methods - // take the field's configuration object as the first parameter - args.unshift(this.s.opts); - var fn = this.s.type[name]; - if (fn) { - return fn.apply(this.s.host, args); - } - }; - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Private - */ - Field.prototype._errorNode = function () { - return this.dom.fieldError; - }; - Field.prototype._format = function (val, formatter) { - if (formatter) { - if (Array.isArray(formatter)) { - var args = formatter.slice(); - var name_1 = args.shift(); - formatter = Field.formatters[name_1].apply(this, args); - } - return formatter.call(this.s.host, val, this); - } - return val; - }; - Field.defaults = defaults; - Field.formatters = {}; - return Field; -}()); - -var button = { - action: null, - className: null, - tabIndex: 0, - text: null, -}; - -var displayController = { - close: function () { }, - init: function () { }, - node: function () { }, - open: function () { } -}; - -var DataTable$1 = $.fn.dataTable; -/* - * DataTables 1.10 API integration. Provides the ability to control basic Editor - * aspects from the DataTables API. Full control does of course require use of - * the Editor API though. - */ -var apiRegister = DataTable$1.Api.register; -function _getInst(api) { - var ctx = api.context[0]; - return ctx.oInit.editor || ctx._editor; -} -// Set sensible defaults for the editing options -function _setBasic(inst, opts, type, plural) { - if (!opts) { - opts = {}; - } - if (opts.buttons === undefined) { - opts.buttons = '_basic'; - } - if (opts.title === undefined) { - opts.title = inst.i18n[type].title; - } - if (opts.message === undefined) { - if (type === 'remove') { - var confirm_1 = inst.i18n[type].confirm; - opts.message = plural !== 1 ? confirm_1._.replace(/%d/, plural) : confirm_1['1']; - } - else { - opts.message = ''; - } - } - return opts; -} -apiRegister('editor()', function () { - return _getInst(this); -}); -// Row editing -apiRegister('row.create()', function (opts) { - // main - var inst = _getInst(this); - inst.create(_setBasic(inst, opts, 'create')); - return this; -}); -apiRegister('row().edit()', function (opts) { - // main - var inst = _getInst(this); - inst.edit(this[0][0], _setBasic(inst, opts, 'edit')); - return this; -}); -apiRegister('rows().edit()', function (opts) { - // main - var inst = _getInst(this); - inst.edit(this[0], _setBasic(inst, opts, 'edit')); - return this; -}); -apiRegister('row().delete()', function (opts) { - // main - var inst = _getInst(this); - inst.remove(this[0][0], _setBasic(inst, opts, 'remove', 1)); - return this; -}); -apiRegister('rows().delete()', function (opts) { - // main - var inst = _getInst(this); - inst.remove(this[0], _setBasic(inst, opts, 'remove', this[0].length)); - return this; -}); -apiRegister('cell().edit()', function (type, opts) { - // inline or bubble - if (!type) { - type = 'inline'; - } - else if ($.isPlainObject(type)) { - opts = type; - type = 'inline'; - } - _getInst(this)[type](this[0][0], opts); - return this; -}); -apiRegister('cells().edit()', function (opts) { - // bubble only at the moment - _getInst(this).bubble(this[0], opts); - return this; -}); -apiRegister('file()', file); -apiRegister('files()', files); -// Global listener for file information updates via DataTables' Ajax JSON -$(document).on('xhr.dt', function (e, ctx, json) { - if (e.namespace !== 'dt') { - return; - } - if (json && json.files) { - $.each(json.files, function (name, filesIn) { - if (!Editor.files[name]) { - Editor.files[name] = {}; - } - $.extend(Editor.files[name], filesIn); - }); - } -}); - -/* - * Add helpful buttons to make life easier - * - * Note that the values that require a string to make any sense (the button text - * for example) are set by Editor when Editor is initialised through the i18n - * options. - */ -var _buttons = $.fn.dataTable.ext.buttons; -$.extend(_buttons, { - create: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .create($.extend({ - buttons: config.formButtons, - message: config.formMessage || editor.i18n.create.message, - nest: true, - title: config.formTitle || editor.i18n.create.title - }, config.formOptions)); - }, - className: 'buttons-create', - editor: null, - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.create.submit; - } - }, - formMessage: null, - formOptions: {}, - formTitle: null, - text: function (dt, node, config) { - return dt.i18n('buttons.create', config.editor.i18n.create.button); - }, - }, - createInline: { - action: function (e, dt, node, config) { - config.editor.inlineCreate(config.position, config.formOptions); - }, - className: 'buttons-create', - editor: null, - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.create.submit; - } - }, - formOptions: {}, - position: 'start', - text: function (dt, node, config) { - return dt.i18n('buttons.create', config.editor.i18n.create.button); - }, - }, - edit: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - var rows = dt.rows({ selected: true }).indexes(); - var columns = dt.columns({ selected: true }).indexes(); - var cells = dt.cells({ selected: true }).indexes(); - var items = columns.length || cells.length ? - { - cells: cells, - columns: columns, - rows: rows - } : - rows; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .edit(items, $.extend({ - buttons: config.formButtons, - message: config.formMessage || editor.i18n.edit.message, - nest: true, - title: config.formTitle || editor.i18n.edit.title - }, config.formOptions)); - }, - className: 'buttons-edit', - editor: null, - extend: 'selected', - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.edit.submit; - }, - }, - formMessage: null, - formOptions: {}, - formTitle: null, - text: function (dt, node, config) { - return dt.i18n('buttons.edit', config.editor.i18n.edit.button); - }, - }, - remove: { - action: function (e, dt, node, config) { - var that = this; - var editor = config.editor; - this.processing(true); - editor - .one('preOpen', function () { - that.processing(false); - }) - .remove(dt.rows({ selected: true }).indexes(), $.extend({ - buttons: config.formButtons, - message: config.formMessage, - nest: true, - title: config.formTitle || editor.i18n.remove.title - }, config.formOptions)); - }, - className: 'buttons-remove', - editor: null, - extend: 'selected', - formButtons: { - action: function (e) { - this.submit(); - }, - text: function (editor) { - return editor.i18n.remove.submit; - }, - }, - formMessage: function (editor, dt) { - var rows = dt.rows({ selected: true }).indexes(); - var i18n = editor.i18n.remove; - var question = typeof i18n.confirm === 'string' ? - i18n.confirm : - i18n.confirm[rows.length] ? - i18n.confirm[rows.length] : i18n.confirm._; - return question.replace(/%d/g, rows.length); - }, - formOptions: {}, - formTitle: null, - limitTo: ['rows'], - text: function (dt, node, config) { - return dt.i18n('buttons.remove', config.editor.i18n.remove.button); - }, - } -}); -// Reuse the standard edit and remove buttons for their singular equivalent, -// but set it to extend the single selected button only -_buttons.editSingle = $.extend({}, _buttons.edit); -_buttons.editSingle.extend = 'selectedSingle'; -_buttons.removeSingle = $.extend({}, _buttons.remove); -_buttons.removeSingle.extend = 'selectedSingle'; - - -if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.20')) { - throw new Error('Editor requires DataTables 1.10.20 or newer'); -} -var Editor = /** @class */ (function () { - function Editor(init, cjsJq) { - var _this = this; - this.add = add; - this.ajax = ajax; - this.background = background; - this.blur = blur; - this.bubble = bubble; - this.bubblePosition = bubblePosition; - this.buttons = buttons; - this.clear = clear; - this.close = close; - this.create = create; - this.undependent = undependent; - this.dependent = dependent; - this.destroy = destroy; - this.disable = disable; - this.display = display; - this.displayed = displayed; - this.displayNode = displayNode; - this.edit = edit; - this.enable = enable; - this.error = error$1; - this.field = field; - this.fields = fields; - this.file = file; - this.files = files; - this.get = get; - this.hide = hide; - this.ids = ids; - this.inError = inError; - this.inline = inline; - this.inlineCreate = inlineCreate; - this.message = message; - this.mode = mode; - this.modifier = modifier; - this.multiGet = multiGet; - this.multiSet = multiSet; - this.node = node; - this.off = off; - this.on = on; - this.one = one; - this.open = open; - this.order = order; - this.remove = remove; - this.set = set; - this.show = show; - this.submit = submit; - this.table = table; - this.template = template; - this.title = title; - this.val = val; - this._actionClass = _actionClass; - this._ajax = _ajax; - this._animate = _animate; - this._assembleMain = _assembleMain; - this._blur = _blur; - this._clearDynamicInfo = _clearDynamicInfo; - this._close = _close; - this._closeReg = _closeReg; - this._crudArgs = _crudArgs; - this._dataSource = _dataSource; - this._displayReorder = _displayReorder; - this._edit = _edit; - this._event = _event; - this._eventName = _eventName; - this._fieldFromNode = _fieldFromNode; - this._fieldNames = _fieldNames; - this._focus = _focus; - this._formOptions = _formOptions; - this._inline = _inline; - this._inputTrigger = _inputTrigger; - this._optionsUpdate = _optionsUpdate; - this._message = _message; - this._multiInfo = _multiInfo; - this._nestedClose = _nestedClose; - this._nestedOpen = _nestedOpen; - this._postopen = _postopen; - this._preopen = _preopen; - this._processing = _processing; - this._noProcessing = _noProcessing; - this._submit = _submit; - this._submitTable = _submitTable; - this._submitSuccess = _submitSuccess; - this._submitError = _submitError; - this._tidy = _tidy; - this._weakInArray = _weakInArray; - // Check if called with a window or jQuery object for DOM less applications - // This is for backwards compatibility with CommonJS loader - if (Editor.factory(init, cjsJq)) { - return Editor; - } - if (!(this instanceof Editor)) { - alert('DataTables Editor must be initialised as a \'new\' instance'); - } - init = $.extend(true, {}, Editor.defaults, init); - this.c = init; - this.s = $.extend(true, {}, Editor.models.settings, { - actionName: init.actionName, - ajax: init.ajax, - formOptions: init.formOptions, - idSrc: init.idSrc, - table: init.domTable || init.table, - template: init.template ? - $(init.template).detach() : null - }); - this.classes = $.extend(true, {}, Editor.classes); - this.i18n = init.i18n; - // Increment the unique counter for the next instance - Editor.models.settings.unique++; - var that = this; - var classes = this.classes; - var wrapper = $('
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          '); - var form = $('' + - '
          ' + - ''); - this.dom = { - body: el('body', wrapper)[0], - bodyContent: el('body_content', wrapper)[0], - buttons: $('
          ')[0], - footer: el('foot', wrapper)[0], - form: form[0], - formContent: el('form_content', form)[0], - formError: $('
          ')[0], - formInfo: $('
          ')[0], - header: $('
          ')[0], - processing: el('processing', wrapper)[0], - wrapper: wrapper[0], - }; - // Bind callback methods - $.each(init.events, function (evt, fn) { - that.on(evt, function () { - var argsIn = []; - for (var _i = 0; _i < arguments.length; _i++) { - argsIn[_i] = arguments[_i]; - } - // When giving events in the constructor the event argument was not - // given in 1.2-, so we remove it here. This is solely for - // backwards compatibility as the events in the initialisation are - // not documented in 1.3+. - fn.apply(that, argsIn); - }); - }); - // Cache the DOM nodes - this.dom; - // Add any fields which are given on initialisation - if (init.fields) { - this.add(init.fields); - } - $(document) - .on('init.dt.dte' + this.s.unique, function (e, settings, json) { - // Resolve this reference in the event handlers so the - // table() API method can be used to change it and the - // change still be operated on here. - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Attempt to attach to a DataTable automatically when the table is - // initialised - settings._editor = _this; - } - } - }) - .on('i18n.dt.dte' + this.s.unique, function (e, settings) { - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Use loaded language options - if (settings.oLanguage.editor) { - $.extend(true, _this.i18n, settings.oLanguage.editor); - } - } - } - }) - .on('xhr.dt.dte' + this.s.unique, function (e, settings, json) { - var table = _this.s.table; - if (table) { - var dtApi = new DataTable.Api(table); - if (settings.nTable === dtApi.table().node()) { - // Automatically update fields which have a field name defined in - // the returned json - saves an `initComplete` for the user - _this._optionsUpdate(json); - } - } - }); - // Prep the display controller - if (!Editor.display[init.display]) { - throw new Error('Cannot find display controller ' + init.display); - } - this.s.displayController = Editor.display[init.display].init(this); - this._event('initComplete', []); - $(document).trigger('initEditor', [this]); - } - // Expose internal methods and options for the Field class to use - // These are not publicly documented. - /** @internal */ - Editor.prototype.internalEvent = function (name, args) { - this._event(name, args); - }; - /** @internal */ - Editor.prototype.internalI18n = function () { - return this.i18n; - }; - /** @internal */ - Editor.prototype.internalMultiInfo = function () { - return this._multiInfo(); - }; - /** @internal */ - Editor.prototype.internalSettings = function () { - return this.s; - }; - Editor.fieldTypes = { - checkbox: checkbox, - datatable: datatable, - datetime: datetime, - hidden: hidden, - password: password, - radio: radio, - readonly: readonly, - select: select, - text: text, - textarea: textarea, - upload: upload, - uploadMany: uploadMany - }; - Editor.files = {}; - Editor.version = '2.1.3'; - Editor.classes = classNames; - Editor.Field = Field; - Editor.DateTime = null; - Editor.error = error; - Editor.pairs = pairs; - Editor.factory = factory; - Editor.upload = upload$1; - Editor.defaults = defaults$1; - Editor.models = { - button: button, - displayController: displayController, - fieldType: fieldType, - formOptions: formOptions, - settings: settings, - }; - Editor.dataSources = { - dataTable: dataSource$1, - html: dataSource, - }; - Editor.display = { - envelope: envelope, - lightbox: self, - }; - Editor.safeId = function (id) { - return safeDomId(id, ''); - }; - return Editor; -}()); -DataTable.Editor = Editor; -$.fn.DataTable.Editor = Editor; -if (DataTable.DateTime) { - Editor.DateTime = DataTable.DateTime; -} -// If there are field types available on DataTables we copy them in (after the -// built in ones to allow overrides) and then expose the field types object. -if (DataTable.ext.editorFields) { - $.extend(Editor.fieldTypes, DataTable.ext.editorFields); -} -DataTable.ext.editorFields = Editor.fieldTypes; - - - -export default Editor; diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.js deleted file mode 100644 index 2bc68d60..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bootstrap.js +++ /dev/null @@ -1,272 +0,0 @@ -/*! Bootstrap integration for DataTables' Editor - * © SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net-bs', 'datatables.net-editor'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - var jq = require('jquery'); - var cjsRequires = function (root, $) { - if ( ! $.fn.dataTable ) { - require('datatables.net-bs')(root, $); - } - - if ( ! $.fn.dataTable.Editor ) { - require('datatables.net-editor')(root, $); - } - }; - - if (typeof window === 'undefined') { - module.exports = function (root, $) { - if ( ! root ) { - // CommonJS environments without a window global must pass a - // root. This will give an error otherwise - root = window; - } - - if ( ! $ ) { - $ = jq( root ); - } - - cjsRequires( root, $ ); - return factory( $, root, root.document ); - }; - } - else { - cjsRequires( window, jq ); - module.exports = factory( jq, window, window.document ); - } - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -var Editor = DataTable.Editor; - -/* - * Set the default display controller to be our bootstrap control - */ -DataTable.Editor.defaults.display = "bootstrap"; - - -/* - * Change the default classes from Editor to be classes for Bootstrap - */ -$.extend( true, $.fn.dataTable.Editor.classes, { - "header": { - "wrapper": "DTE_Header modal-header", - title: { - tag: 'h4', - class: 'modal-title' - } - }, - "body": { - "wrapper": "DTE_Body modal-body" - }, - "footer": { - "wrapper": "DTE_Footer modal-footer" - }, - "form": { - "tag": "form-horizontal", - "button": "btn btn-default", - "buttonInternal": "btn btn-default" - }, - "field": { - "wrapper": "DTE_Field", - "label": "col-lg-4 control-label", - "input": "col-lg-8 controls", - "error": "error has-error", - "msg-labelInfo": "help-block", - "msg-info": "help-block", - "msg-message": "help-block", - "msg-error": "help-block", - "multiValue": "well well-sm multi-value", - "multiInfo": "small", - "multiRestore": "well well-sm multi-restore" - } -} ); - -$.extend( true, DataTable.ext.buttons, { - create: { - formButtons: { - className: 'btn-primary' - } - }, - edit: { - formButtons: { - className: 'btn-primary' - } - }, - remove: { - formButtons: { - className: 'btn-danger' - } - } -} ); - -DataTable.Editor.fieldTypes.datatable.tableClass = 'table'; - -let shown = false; -let fullyShown = false; - -const dom = { - // Note that `modal-dialog-scrollable` is BS4.3+ only. It has no effect on 4.0-4.2 - content: $( - '' - ), - close: $(''+ - '' - ) -}; - -DataTable.Editor.display.bulma = $.extend( true, {}, DataTable.Editor.models.displayController, { - /* - * API methods - */ - init: function ( dte ) { - // Add `form-control` to required elements - dte.on( 'displayOrder.dtebm open.dtebm', function ( e, display, action, form ) { - $.each( dte.s.fields, function ( key, field ) { - $('input:not([type=checkbox]):not([type=radio]), select, textarea', field.node() ) - .addClass( 'input' ); - - $('input[type=checkbox], input[type=radio]', field.node() ) - .removeClass('input'); - - $('select', field.node() ) - .addClass( 'select' ) - .parent().addClass('select'); - - $('select[multiple]', field.node() ) - .parent().addClass('is-multiple'); - } ); - } ); - - return DataTable.Editor.display.bulma; - }, - - open: function ( dte, append, callback ) { - $(append).removeClass('is-hidden').addClass('is-active'); - $(append).find('.modal-title').addClass('title'); - dom.content.find('.modal-content').append(append); - dom.content.addClass('is-active is-clipped'); - - dom.content.appendTo("body"); - // Setup events on each show - $('.modal-close') - .attr('title', dte.i18n.close) - .one('click', function () { - dte.close('icon'); - }) - .appendTo($('div.modal-header', append)); - - // This is a bit horrible, but if you mousedown and then drag out of the modal container, we don't - // want to trigger a background action. - let allowBackgroundClick = false; - $(document) - .off('mousedown.dte-bs5') - .on('mousedown.dte-bs5', 'div.modal-background', function (e) { - allowBackgroundClick = $(e.target).hasClass('modal-background'); - } ); - - $(document) - .off('click.dte-bs5') - .on('click.dte-bs5', 'div.modal-background', function (e) { - if ( $(e.target).hasClass('modal-background') && allowBackgroundClick ) { - dte.background(); - } - } ); - - if ( callback ) { - callback(); - } - return; - }, - - close: function ( dte, callback ) { - dom.content - .find('.is-active') - .removeClass('is-active') - .addClass('is-hidden'); - - dom.content.removeClass('is-active is-clipped'); - if ( callback ) { - callback(); - } - }, - - node: function ( dte ) { - return dom.content[0]; - } -} ); - - -return Editor; -})); diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.js deleted file mode 100644 index 16e2faba..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! Bulma integration for DataTables' Editor - * © SpryMedia Ltd - datatables.net/license - */ -!function(o){var a,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-editor"],function(e){return o(e,window,document)}):"object"==typeof exports?(a=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-bm")(e,t),t.fn.dataTable.Editor||require("datatables.net-editor")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||a(e),d(e,t),o(t,0,e.document)}:(d(window,a),module.exports=o(a,window,window.document))):o(jQuery,window,document)}(function(n,e,d,t){"use strict";var o=n.fn.dataTable,a=o.Editor;o.Editor.defaults.display="bulma",n.extend(!0,n.fn.dataTable.Editor.classes,{header:{wrapper:"DTE_Header modal-header",title:{tag:"h5",class:"modal-title"}},body:{wrapper:"DTE_Body modal-body"},footer:{wrapper:"DTE_Footer modal-footer"},form:{tag:"form-horizontal",button:"button",buttonInternal:"button",error:"DTE_Form_Error help is-danger"},field:{wrapper:"DTE_Field field",label:"label",error:"DTE_Field_Error help is-danger",multiValue:"card multi-value",multiInfo:"small",multiRestore:"card multi-restore"}}),n.extend(!0,o.ext.buttons,{create:{formButtons:{className:"button is-primary"}},edit:{formButtons:{className:"button is-primary"}},remove:{formButtons:{className:"button is-danger"}}}),o.Editor.fieldTypes.datatable.tableClass="table";const i={content:n('')};return o.Editor.display.bulma=n.extend(!0,{},o.Editor.models.displayController,{init:function(d){return d.on("displayOrder.dtebm open.dtebm",function(e,t,o,a){n.each(d.s.fields,function(e,t){n("input:not([type=checkbox]):not([type=radio]), select, textarea",t.node()).addClass("input"),n("input[type=checkbox], input[type=radio]",t.node()).removeClass("input"),n("select",t.node()).addClass("select").parent().addClass("select"),n("select[multiple]",t.node()).parent().addClass("is-multiple")})}),o.Editor.display.bulma},open:function(t,e,o){n(e).removeClass("is-hidden").addClass("is-active"),n(e).find(".modal-title").addClass("title"),i.content.find(".modal-content").append(e),i.content.addClass("is-active is-clipped"),i.content.appendTo("body"),n(".modal-close").attr("title",t.i18n.close).one("click",function(){t.close("icon")}).appendTo(n("div.modal-header",e));let a=!1;n(d).off("mousedown.dte-bs5").on("mousedown.dte-bs5","div.modal-background",function(e){a=n(e.target).hasClass("modal-background")}),n(d).off("click.dte-bs5").on("click.dte-bs5","div.modal-background",function(e){n(e.target).hasClass("modal-background")&&a&&t.background()}),o&&o()},close:function(e,t){i.content.find(".is-active").removeClass("is-active").addClass("is-hidden"),i.content.removeClass("is-active is-clipped"),t&&t()},node:function(e){return i.content[0]}}),a}); \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.mjs b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.mjs deleted file mode 100644 index c2abcbae..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.min.mjs +++ /dev/null @@ -1,4 +0,0 @@ -/*! Bulma integration for DataTables' Editor - * © SpryMedia Ltd - datatables.net/license - */ -import jQuery from"jquery";import DataTable from"datatables.net-bm";import Editor from"datatables.net-editor";let $=jQuery;var Editor=DataTable.Editor;DataTable.Editor.defaults.display="bulma",$.extend(!0,$.fn.dataTable.Editor.classes,{header:{wrapper:"DTE_Header modal-header",title:{tag:"h5",class:"modal-title"}},body:{wrapper:"DTE_Body modal-body"},footer:{wrapper:"DTE_Footer modal-footer"},form:{tag:"form-horizontal",button:"button",buttonInternal:"button",error:"DTE_Form_Error help is-danger"},field:{wrapper:"DTE_Field field",label:"label",error:"DTE_Field_Error help is-danger",multiValue:"card multi-value",multiInfo:"small",multiRestore:"card multi-restore"}}),$.extend(!0,DataTable.ext.buttons,{create:{formButtons:{className:"button is-primary"}},edit:{formButtons:{className:"button is-primary"}},remove:{formButtons:{className:"button is-danger"}}});let shown=!(DataTable.Editor.fieldTypes.datatable.tableClass="table"),fullyShown=!1;const dom={content:$('')};DataTable.Editor.display.bulma=$.extend(!0,{},DataTable.Editor.models.displayController,{init:function(d){return d.on("displayOrder.dtebm open.dtebm",function(e,t,a,o){$.each(d.s.fields,function(e,t){$("input:not([type=checkbox]):not([type=radio]), select, textarea",t.node()).addClass("input"),$("input[type=checkbox], input[type=radio]",t.node()).removeClass("input"),$("select",t.node()).addClass("select").parent().addClass("select"),$("select[multiple]",t.node()).parent().addClass("is-multiple")})}),DataTable.Editor.display.bulma},open:function(t,e,a){$(e).removeClass("is-hidden").addClass("is-active"),$(e).find(".modal-title").addClass("title"),dom.content.find(".modal-content").append(e),dom.content.addClass("is-active is-clipped"),dom.content.appendTo("body"),$(".modal-close").attr("title",t.i18n.close).one("click",function(){t.close("icon")}).appendTo($("div.modal-header",e));let o=!1;$(document).off("mousedown.dte-bs5").on("mousedown.dte-bs5","div.modal-background",function(e){o=$(e.target).hasClass("modal-background")}),$(document).off("click.dte-bs5").on("click.dte-bs5","div.modal-background",function(e){$(e.target).hasClass("modal-background")&&o&&t.background()}),a&&a()},close:function(e,t){dom.content.find(".is-active").removeClass("is-active").addClass("is-hidden"),dom.content.removeClass("is-active is-clipped"),t&&t()},node:function(e){return dom.content[0]}});export default Editor; \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.mjs b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.mjs deleted file mode 100644 index 49ff3982..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.bulma.mjs +++ /dev/null @@ -1,172 +0,0 @@ -/*! Bulma integration for DataTables' Editor - * © SpryMedia Ltd - datatables.net/license - */ - -import jQuery from 'jquery'; -import DataTable from 'datatables.net-bm'; -import Editor from 'datatables.net-editor'; - -// Allow reassignment of the $ variable -let $ = jQuery; - -var Editor = DataTable.Editor; - -/* - * Set the default display controller to be our bulma control - */ -DataTable.Editor.defaults.display = "bulma"; - - -/* - * Change the default classes from Editor to be classes for Bulma - */ -$.extend( true, $.fn.dataTable.Editor.classes, { - "header": { - "wrapper": "DTE_Header modal-header", - title: { - tag: 'h5', - class: 'modal-title' - } - }, - "body": { - "wrapper": "DTE_Body modal-body" - }, - "footer": { - "wrapper": "DTE_Footer modal-footer" - }, - "form": { - "tag": "form-horizontal", - "button": "button", - "buttonInternal": "button", - "error": "DTE_Form_Error help is-danger" - }, - "field": { - "wrapper": "DTE_Field field", - "label": "label", - "error": "DTE_Field_Error help is-danger", - "multiValue": "card multi-value", - "multiInfo": "small", - "multiRestore": "card multi-restore" - }, -} ); - -$.extend( true, DataTable.ext.buttons, { - create: { - formButtons: { - className: 'button is-primary' - } - }, - edit: { - formButtons: { - className: 'button is-primary' - } - }, - remove: { - formButtons: { - className: 'button is-danger' - } - } -} ); - -DataTable.Editor.fieldTypes.datatable.tableClass = 'table'; - -/* - * Bulma display controller - this is effectively a proxy to the Bulma - * modal control. - */ -let shown = false; -let fullyShown = false; - -const dom = { - content: $( - '' - ) -}; - -DataTable.Editor.display.bulma = $.extend( true, {}, DataTable.Editor.models.displayController, { - /* - * API methods - */ - init: function ( dte ) { - // Add `form-control` to required elements - dte.on( 'displayOrder.dtebm open.dtebm', function ( e, display, action, form ) { - $.each( dte.s.fields, function ( key, field ) { - $('input:not([type=checkbox]):not([type=radio]), select, textarea', field.node() ) - .addClass( 'input' ); - - $('input[type=checkbox], input[type=radio]', field.node() ) - .removeClass('input'); - - $('select', field.node() ) - .addClass( 'select' ) - .parent().addClass('select'); - - $('select[multiple]', field.node() ) - .parent().addClass('is-multiple'); - } ); - } ); - - return DataTable.Editor.display.bulma; - }, - - open: function ( dte, append, callback ) { - $(append).removeClass('is-hidden').addClass('is-active'); - $(append).find('.modal-title').addClass('title'); - dom.content.find('.modal-content').append(append); - dom.content.addClass('is-active is-clipped'); - - dom.content.appendTo("body"); - // Setup events on each show - $('.modal-close') - .attr('title', dte.i18n.close) - .one('click', function () { - dte.close('icon'); - }) - .appendTo($('div.modal-header', append)); - - // This is a bit horrible, but if you mousedown and then drag out of the modal container, we don't - // want to trigger a background action. - let allowBackgroundClick = false; - $(document) - .off('mousedown.dte-bs5') - .on('mousedown.dte-bs5', 'div.modal-background', function (e) { - allowBackgroundClick = $(e.target).hasClass('modal-background'); - } ); - - $(document) - .off('click.dte-bs5') - .on('click.dte-bs5', 'div.modal-background', function (e) { - if ( $(e.target).hasClass('modal-background') && allowBackgroundClick ) { - dte.background(); - } - } ); - - if ( callback ) { - callback(); - } - return; - }, - - close: function ( dte, callback ) { - dom.content - .find('.is-active') - .removeClass('is-active') - .addClass('is-hidden'); - - dom.content.removeClass('is-active is-clipped'); - if ( callback ) { - callback(); - } - }, - - node: function ( dte ) { - return dom.content[0]; - } -} ); - - -export default Editor; diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.js deleted file mode 100644 index a5b074ab..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.js +++ /dev/null @@ -1,59 +0,0 @@ -/*! DataTables styling integration for DataTables' Editor - * ©SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net-dt', 'datatables.net-editor'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - var jq = require('jquery'); - var cjsRequires = function (root, $) { - if ( ! $.fn.dataTable ) { - require('datatables.net-dt')(root, $); - } - - if ( ! $.fn.dataTable.Editor ) { - require('datatables.net-editor')(root, $); - } - }; - - if (typeof window === 'undefined') { - module.exports = function (root, $) { - if ( ! root ) { - // CommonJS environments without a window global must pass a - // root. This will give an error otherwise - root = window; - } - - if ( ! $ ) { - $ = jq( root ); - } - - cjsRequires( root, $ ); - return factory( $, root, root.document ); - }; - } - else { - cjsRequires( window, jq ); - module.exports = factory( jq, window, window.document ); - } - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -var Editor = DataTable.Editor; - - -return Editor; -})); diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.js deleted file mode 100644 index d8111120..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! DataTables styling integration for DataTables' Editor - * ©SpryMedia Ltd - datatables.net/license - */ -!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-editor"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Editor||require("datatables.net-editor")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable.Editor}); \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.mjs b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.mjs deleted file mode 100644 index ea3eead9..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.min.mjs +++ /dev/null @@ -1,4 +0,0 @@ -/*! DataTables styling integration for DataTables' Editor - * ©SpryMedia Ltd - datatables.net/license - */ -import jQuery from"jquery";import DataTable from"datatables.net-dt";import Editor from"datatables.net-editor";let $=jQuery;var Editor;export default Editor=DataTable.Editor; \ No newline at end of file diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.mjs b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.mjs deleted file mode 100644 index c3659004..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.dataTables.mjs +++ /dev/null @@ -1,15 +0,0 @@ -/*! DataTables styling integration for DataTables' Editor - * ©SpryMedia Ltd - datatables.net/license - */ - -import jQuery from 'jquery'; -import DataTable from 'datatables.net-dt'; -import Editor from 'datatables.net-editor'; - -// Allow reassignment of the $ variable -let $ = jQuery; - -var Editor = DataTable.Editor; - - -export default Editor; diff --git a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.js b/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.js deleted file mode 100644 index 913d3d47..00000000 --- a/httpdocs/themes/vuexy/vendor/libs/datatable-editor/js/editor.foundation.js +++ /dev/null @@ -1,171 +0,0 @@ -/*! Foundation integration for DataTables' Editor - * © SpryMedia Ltd - datatables.net/license - */ - -(function( factory ){ - if ( typeof define === 'function' && define.amd ) { - // AMD - define( ['jquery', 'datatables.net-zf', 'datatables.net-editor'], function ( $ ) { - return factory( $, window, document ); - } ); - } - else if ( typeof exports === 'object' ) { - // CommonJS - var jq = require('jquery'); - var cjsRequires = function (root, $) { - if ( ! $.fn.dataTable ) { - require('datatables.net-zf')(root, $); - } - - if ( ! $.fn.dataTable.Editor ) { - require('datatables.net-editor')(root, $); - } - }; - - if (typeof window === 'undefined') { - module.exports = function (root, $) { - if ( ! root ) { - // CommonJS environments without a window global must pass a - // root. This will give an error otherwise - root = window; - } - - if ( ! $ ) { - $ = jq( root ); - } - - cjsRequires( root, $ ); - return factory( $, root, root.document ); - }; - } - else { - cjsRequires( window, jq ); - module.exports = factory( jq, window, window.document ); - } - } - else { - // Browser - factory( jQuery, window, document ); - } -}(function( $, window, document, undefined ) { -'use strict'; -var DataTable = $.fn.dataTable; - - -var Editor = DataTable.Editor; - -/* - * Set the default display controller to be our foundation control - */ -DataTable.Editor.defaults.display = "foundation"; - - -/* - * Change the default classes from Editor to be classes for Foundation - */ -$.extend( true, $.fn.dataTable.Editor.classes, { - field: { - wrapper: "DTE_Field row", - label: "small-4 columns inline", - input: "small-8 columns", - error: "error", - multiValue: "panel radius multi-value", - multiInfo: "small", - multiRestore: "panel radius multi-restore", - "msg-labelInfo": "label secondary", - "msg-info": "label secondary", - "msg-message": "label secondary", - "msg-error": "label alert" - }, - form: { - button: "button small", - buttonInternal: "button small" - } -} ); - - -/* - * Foundation display controller - this is effectively a proxy to the Foundation - * modal control. - */ -var shown = false; -var reveal; - -const dom = { - content: $( - '
          ' - ), - close: $(' + + + + + + +
          +
          +
          +

          Search results

          + +
          +
          +
            +
            +
            +
            + + + + + + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-Db2Result.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-Db2Result.html new file mode 100644 index 00000000..c58c95be --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-Db2Result.html @@ -0,0 +1,515 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
            +

            Editor PHP 2.1.3

            + + + + + +
            + +
            +
            + + + + +
            + + +
            +

            + Db2Result + + + extends Result + + +
            + in package + +
            + + +

            + + + +

            SQL Server driver for DataTables Database Result class

            + +

            @internal

            +
            + + + + + + + + +

            + Table of Contents + +

            + +
            +
            + __construct() + +  : mixed +
            +
            + +
            + count() + +  : mixed +
            +
            Count the number of rows in the result set.
            + +
            + fetch() + +  : array<string|int, mixed> +
            +
            Get the next row in a result set
            + +
            + fetchAll() + +  : array<string|int, mixed> +
            +
            Get all rows in the result set
            + +
            + insertId() + +  : mixed +
            +
            After an INSERT query, get the ID that was inserted.
            + +
            + + + + + + + +
            +

            + Methods + +

            +
            +

            + __construct() + +

            + + + + + public + __construct(mixed $dbh, mixed $stmt) : mixed + +
            + +
            Parameters
            +
            +
            + $dbh + : mixed +
            +
            +
            + +
            +
            + $stmt + : mixed +
            +
            +
            + +
            +
            + + + +
            Return values
            + mixed + — + + +
            +
            +

            + count() + +

            + + +

            Count the number of rows in the result set.

            + + + public + count() : mixed + +

            @return int

            +
            + + + + +
            Return values
            + mixed + — + + +
            +
            +

            + fetch() + +

            + + +

            Get the next row in a result set

            + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

            @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

            +
            + +
            Parameters
            +
            +
            + $fetchType + : mixed + = PDO::FETCH_ASSOC
            +
            +
            + +
            +
            + + + +
            Return values
            + array<string|int, mixed> + — + + +
            +
            +

            + fetchAll() + +

            + + +

            Get all rows in the result set

            + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

            @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

            +
            + +
            Parameters
            +
            +
            + $fetchType + : mixed + = PDO::FETCH_ASSOC
            +
            +
            + +
            +
            + + + +
            Return values
            + array<string|int, mixed> + — + + +
            +
            +

            + insertId() + +

            + + +

            After an INSERT query, get the ID that was inserted.

            + + + public + insertId() : mixed + +

            @return int

            +
            + + + + +
            Return values
            + mixed + — + + +
            +
            + +
            +
            +
            +
            +
            
            +        
            + +
            +
            + + + +
            +
            +
            +
            +

            Search results

            + +
            +
            +
              +
              +
              +
              +
              +
              + + +
              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdQuery.html new file mode 100644 index 00000000..86299234 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdQuery.html @@ -0,0 +1,2311 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
              +

              Editor PHP 2.1.3

              + + + + + +
              + +
              +
              + + + + +
              + + +
              +

              + FirebirdQuery + + + extends Query + + +
              + in package + +
              + + +

              + + + +

              Firebird driver for DataTables Database Query class

              + +

              @internal

              +
              + + + + + + + + +

              + Table of Contents + +

              + +
              +
              + $_pkeyInsertedTo + +  : mixed +
              +
              + +
              + $_field_quote + +  : mixed +
              +
              + +
              + $_identifier_limiter + +  : mixed +
              +
              + +
              + $_supportsAsAlias + +  : mixed +
              +
              + +
              + $_whereInCnt + +  : mixed +
              +
              + +
              + __construct() + +  : mixed +
              +
              Query instance constructor.
              + +
              + and_where() + +  : mixed +
              +
              Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
              + +
              + bind() + +  : Query +
              +
              Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
              + +
              + commit() + +  : mixed +
              +
              Commit a transaction.
              + +
              + connect() + +  : mixed +
              +
              Database connection - override by the database driver.
              + +
              + database() + +  : DataTable +
              +
              Get the Database host for this query instance
              + +
              + distinct() + +  : Query +
              +
              Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
              + +
              + dsnPostfix() + +  : Query +
              +
              Common helper for the drivers to handle a PDO DSN postfix
              + +
              + exec() + +  : Result +
              +
              Execute the query.
              + +
              + get() + +  : self +
              +
              Get fields.
              + +
              + group_by() + +  : self +
              +
              Group the results by the values in a field
              + +
              + join() + +  : mixed +
              +
              Perform a JOIN operation
              + +
              + left_join() + +  : mixed +
              +
              Add a left join, with common logic for handling binding or not
              + +
              + limit() + +  : self +
              +
              Limit the result set to a certain size.
              + +
              + offset() + +  : self +
              +
              Offset the return set by a given number of records (useful for paging).
              + +
              + or_where() + +  : mixed +
              +
              Add addition where conditions to the query with an OR operator.
              + +
              + order() + +  : self +
              +
              Order by
              + +
              + pkey() + +  : Query|array<string|int, string> +
              +
              Get / set the primary key column name(s) so they can be easily returned +after an insert.
              + +
              + rollback() + +  : mixed +
              +
              Rollback the database state to the start of the transaction.
              + +
              + set() + +  : mixed +
              +
              Set fields to a given value.
              + +
              + table() + +  : self +
              +
              Set table(s) to perform the query on.
              + +
              + transaction() + +  : mixed +
              +
              Start a database transaction
              + +
              + where() + +  : mixed +
              +
              Where query - multiple conditions are bound as ANDs.
              + +
              + where_group() + +  : mixed +
              +
              Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
              + +
              + where_in() + +  : mixed +
              +
              Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
              + +
              + _build_limit() + +  : string +
              +
              Create the LIMIT / OFFSET string
              + +
              + _escape_field() + +  : mixed +
              +
              Escape quotes in a field identifier
              + +
              + _exec() + +  : mixed +
              +
              + +
              + _prepare() + +  : void +
              +
              Prepare the SQL query by populating the bound variables.
              + +
              + + + + + + +
              +

              + Properties + +

              +
              +

              + $_pkeyInsertedTo + + + +

              + + + + + public + mixed + $_pkeyInsertedTo + + +
              + +
              + + + +
              +
              +

              + $_field_quote + + + +

              + + + + + protected + mixed + $_field_quote + = '"' + +
              + +
              + + + +
              +
              +

              + $_identifier_limiter + + + +

              + + + + + protected + mixed + $_identifier_limiter + = ['"', '"'] + +
              + +
              + + + +
              +
              +

              + $_supportsAsAlias + + + +

              + + + + + protected + mixed + $_supportsAsAlias + = false + +
              + +
              + + + +
              +
              +

              + $_whereInCnt + + + +

              + + + + + protected + mixed + $_whereInCnt + = 1 + +
              + +
              + + + +
              +
              + +
              +

              + Methods + +

              +
              +

              + __construct() + +

              + + +

              Query instance constructor.

              + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

              Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

              +
              + +
              Parameters
              +
              +
              + $dbHost + : mixed +
              +
              +
              + +
              +
              + $type + : mixed +
              +
              +
              + +
              +
              + $table + : mixed + = null
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + and_where() + +

              + + +

              Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

              + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

              +
              + +
              Parameters
              +
              +
              + $key + : string|array<string|int, string>|callable +
              +
              +

              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

              +
              + +
              +
              + $value + : mixed + = null
              +
              +
              + +
              +
              + $op + : mixed + = "="
              +
              +
              + +
              +
              + $bind + : mixed + = true
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + bind() + +

              + + +

              Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

              + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
              Parameters
              +
              +
              + $name + : string +
              +
              +

              Parameter name. This should include a leading colon

              +
              + +
              +
              + $value + : string +
              +
              +

              Value to bind

              +
              + +
              +
              + $type + : mixed + = null
              +
              +

              Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

              +
              + +
              +
              + + + +
              Return values
              + Query + — + + +
              +
              +

              + commit() + +

              + + +

              Commit a transaction.

              + + + public + static commit(mixed $dbh) : mixed + +

              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

              +
              + +
              Parameters
              +
              +
              + $dbh + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + connect() + +

              + + +

              Database connection - override by the database driver.

              + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

              @param string|array $user User name or all parameters in an array

              +
              + +
              Parameters
              +
              +
              + $user + : mixed +
              +
              +
              + +
              +
              + $pass + : mixed + = ''
              +
              +

              Password +@param string $host Host name +@param string $db Database name +@return Query

              +
              + +
              +
              + $host + : mixed + = ''
              +
              +
              + +
              +
              + $port + : mixed + = ''
              +
              +
              + +
              +
              + $db + : mixed + = ''
              +
              +
              + +
              +
              + $dsn + : mixed + = ''
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + database() + +

              + + +

              Get the Database host for this query instance

              + + + public + database() : DataTable + + + + + +
              Return values
              + DataTable + — +

              Database class instance

              +
              + + +
              +
              +

              + distinct() + +

              + + +

              Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

              + + + public + distinct(mixed $dis) : Query + +

              @param boolean $dis Optional

              +
              + +
              Parameters
              +
              +
              + $dis + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + Query + — + + +
              +
              +

              + dsnPostfix() + +

              + + +

              Common helper for the drivers to handle a PDO DSN postfix

              + + + public + static dsnPostfix(mixed $dsn) : Query + +

              @param string $dsn DSN postfix to use

              +
              + +
              Parameters
              +
              +
              + $dsn + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + Query + — +

              @internal

              +
              + + +
              +
              +

              + exec() + +

              + + +

              Execute the query.

              + + + public + exec([mixed $sql = null ]) : Result + +

              @param string $sql SQL string to execute (only if _type is 'raw').

              +
              + +
              Parameters
              +
              +
              + $sql + : mixed + = null
              +
              +
              + +
              +
              + + + +
              Return values
              + Result + — + + +
              +
              +

              + get() + +

              + + +

              Get fields.

              + + + public + get(mixed $get) : self + +

              @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

              +
              + +
              Parameters
              +
              +
              + $get + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + group_by() + +

              + + +

              Group the results by the values in a field

              + + + public + group_by(mixed $group_by) : self + + +
              Parameters
              +
              +
              + $group_by + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + join() + +

              + + +

              Perform a JOIN operation

              + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

              @param string $table Table name to do the JOIN on

              +
              + +
              Parameters
              +
              +
              + $table + : mixed +
              +
              +
              + +
              +
              + $condition + : string +
              +
              +

              JOIN condition +@param string $type JOIN type +@return self

              +
              + +
              +
              + $type + : mixed + = ''
              +
              +
              + +
              +
              + $bind + : mixed + = true
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + left_join() + +

              + + +

              Add a left join, with common logic for handling binding or not

              + + + public + left_join(mixed $joins) : mixed + + +
              Parameters
              +
              +
              + $joins + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + limit() + +

              + + +

              Limit the result set to a certain size.

              + + + public + limit(mixed $lim) : self + +

              @param int $lim The number of records to limit the result to.

              +
              + +
              Parameters
              +
              +
              + $lim + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + offset() + +

              + + +

              Offset the return set by a given number of records (useful for paging).

              + + + public + offset(mixed $off) : self + +

              @param int $off The number of records to offset the result by.

              +
              + +
              Parameters
              +
              +
              + $off + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + or_where() + +

              + + +

              Add addition where conditions to the query with an OR operator.

              + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

              +
              + +
              Parameters
              +
              +
              + $key + : string|array<string|int, string>|callable +
              +
              +

              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

              +
              + +
              +
              + $value + : mixed + = null
              +
              +
              + +
              +
              + $op + : mixed + = "="
              +
              +
              + +
              +
              + $bind + : mixed + = true
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + order() + +

              + + +

              Order by

              + + + public + order(mixed $order) : self + +

              @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

              +
              + +
              Parameters
              +
              +
              + $order + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + pkey() + +

              + + +

              Get / set the primary key column name(s) so they can be easily returned +after an insert.

              + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
              Parameters
              +
              +
              + $pkey + : array<string|int, string> + = null
              +
              +

              Primary keys

              +
              + +
              +
              + + + +
              Return values
              + Query|array<string|int, string> + — + + +
              +
              +

              + rollback() + +

              + + +

              Rollback the database state to the start of the transaction.

              + + + public + static rollback(mixed $dbh) : mixed + +

              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

              +
              + +
              Parameters
              +
              +
              + $dbh + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + set() + +

              + + +

              Set fields to a given value.

              + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

              Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

              +
              + +
              Parameters
              +
              +
              + $set + : string|array<string|int, string> +
              +
              +

              Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

              +
              + +
              +
              + $val + : mixed + = null
              +
              +
              + +
              +
              + $bind + : mixed + = true
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + table() + +

              + + +

              Set table(s) to perform the query on.

              + + + public + table(mixed $table) : self + +

              @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

              +
              + +
              Parameters
              +
              +
              + $table + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + self + — + + +
              +
              +

              + transaction() + +

              + + +

              Start a database transaction

              + + + public + static transaction(mixed $dbh) : mixed + +

              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

              +
              + +
              Parameters
              +
              +
              + $dbh + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + where() + +

              + + +

              Where query - multiple conditions are bound as ANDs.

              + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

              +
              + +
              Parameters
              +
              +
              + $key + : string|array<string|int, string>|callable +
              +
              +

              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

              +

              @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

              +
                $query
              +    ->where( 'name', 'allan' )
              +    ->where( function ($q) {
              +      $q->where( 'location', 'Scotland' );
              +      $q->or_where( 'location', 'Canada' );
              +    } );
              +
              +
              + +
              +
              + $value + : mixed + = null
              +
              +
              + +
              +
              + $op + : mixed + = "="
              +
              +
              + +
              +
              + $bind + : mixed + = true
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + where_group() + +

              + + +

              Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

              + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

              For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

              +
              + +
              Parameters
              +
              +
              + $inOut + : bool|callable +
              +
              +

              If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

              +

              @example

              +
              $query->where_group( function ($q) {
              +  $q->where( 'location', 'Edinburgh' );
              +  $q->where( 'position', 'Manager' );
              +} );
              +
              +
              + +
              +
              + $op + : mixed + = 'AND'
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + where_in() + +

              + + +

              Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

              + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

              Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

              +
              + +
              Parameters
              +
              +
              + $field + : mixed +
              +
              +
              + +
              +
              + $arr + : mixed +
              +
              +
              + +
              +
              + $operator + : mixed + = "AND"
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + _build_limit() + +

              + + +

              Create the LIMIT / OFFSET string

              + + + protected + _build_limit() : string + +

              MySQL and Postgres style - anything else can have the driver override

              +
              + + + + +
              Return values
              + string + — +

              @internal

              +
              + + +
              +
              +

              + _escape_field() + +

              + + +

              Escape quotes in a field identifier

              + + + protected + _escape_field(mixed $field) : mixed + +

              @internal

              +
              + +
              Parameters
              +
              +
              + $field + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + mixed + — + + +
              +
              +

              + _exec() + +

              + + + + + protected + _exec() : mixed + +
              + + + + +
              Return values
              + mixed + — + + +
              +
              +

              + _prepare() + +

              + + +

              Prepare the SQL query by populating the bound variables.

              + + + protected + _prepare(mixed $sql) : void + +

              Provided by the driver

              +
              + +
              Parameters
              +
              +
              + $sql + : mixed +
              +
              +
              + +
              +
              + + + +
              Return values
              + void + — +

              @internal

              +
              + + +
              +
              + +
              +
              +
              +
              +
              
              +        
              + +
              +
              + + + +
              +
              +
              +
              +

              Search results

              + +
              +
              +
                +
                +
                +
                +
                +
                + + +
                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdResult.html new file mode 100644 index 00000000..eb91ca6a --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-FirebirdResult.html @@ -0,0 +1,523 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                +

                Editor PHP 2.1.3

                + + + + + +
                + +
                +
                + + + + +
                + + +
                +

                + FirebirdResult + + + extends Result + + +
                + in package + +
                + + +

                + + + +

                Firebird driver for DataTables Database Result class

                + +

                @internal

                +
                + + + + + + + + +

                + Table of Contents + +

                + +
                +
                + __construct() + +  : mixed +
                +
                + +
                + count() + +  : mixed +
                +
                Count the number of rows in the result set.
                + +
                + fetch() + +  : array<string|int, mixed> +
                +
                Get the next row in a result set
                + +
                + fetchAll() + +  : array<string|int, mixed> +
                +
                Get all rows in the result set
                + +
                + insertId() + +  : mixed +
                +
                After an INSERT query, get the ID that was inserted.
                + +
                + + + + + + + +
                +

                + Methods + +

                +
                +

                + __construct() + +

                + + + + + public + __construct(mixed $dbh, mixed $stmt, mixed $pkey) : mixed + +
                + +
                Parameters
                +
                +
                + $dbh + : mixed +
                +
                +
                + +
                +
                + $stmt + : mixed +
                +
                +
                + +
                +
                + $pkey + : mixed +
                +
                +
                + +
                +
                + + + +
                Return values
                + mixed + — + + +
                +
                +

                + count() + +

                + + +

                Count the number of rows in the result set.

                + + + public + count() : mixed + +

                @return int

                +
                + + + + +
                Return values
                + mixed + — + + +
                +
                +

                + fetch() + +

                + + +

                Get the next row in a result set

                + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                +
                + +
                Parameters
                +
                +
                + $fetchType + : mixed + = PDO::FETCH_ASSOC
                +
                +
                + +
                +
                + + + +
                Return values
                + array<string|int, mixed> + — + + +
                +
                +

                + fetchAll() + +

                + + +

                Get all rows in the result set

                + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                +
                + +
                Parameters
                +
                +
                + $fetchType + : mixed + = PDO::FETCH_ASSOC
                +
                +
                + +
                +
                + + + +
                Return values
                + array<string|int, mixed> + — + + +
                +
                +

                + insertId() + +

                + + +

                After an INSERT query, get the ID that was inserted.

                + + + public + insertId() : mixed + +

                @return int

                +
                + + + + +
                Return values
                + mixed + — + + +
                +
                + +
                +
                +
                +
                +
                
                +        
                + +
                +
                + + + +
                +
                +
                +
                +

                Search results

                + +
                +
                +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlQuery.html new file mode 100644 index 00000000..12f1400c --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlQuery.html @@ -0,0 +1,2185 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                  +

                  Editor PHP 2.1.3

                  + + + + + +
                  + +
                  +
                  + + + + +
                  + + +
                  +

                  + MysqlQuery + + + extends Query + + +
                  + in package + +
                  + + +

                  + + + +

                  MySQL driver for DataTables Database Query class

                  + +

                  @internal

                  +
                  + + + + + + + + +

                  + Table of Contents + +

                  + +
                  +
                  + $_supportsAsAlias + +  : mixed +
                  +
                  + +
                  + $_whereInCnt + +  : mixed +
                  +
                  + +
                  + __construct() + +  : mixed +
                  +
                  Query instance constructor.
                  + +
                  + and_where() + +  : mixed +
                  +
                  Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                  + +
                  + bind() + +  : Query +
                  +
                  Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                  + +
                  + commit() + +  : mixed +
                  +
                  Commit a transaction.
                  + +
                  + connect() + +  : mixed +
                  +
                  Database connection - override by the database driver.
                  + +
                  + database() + +  : DataTable +
                  +
                  Get the Database host for this query instance
                  + +
                  + distinct() + +  : Query +
                  +
                  Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                  + +
                  + dsnPostfix() + +  : Query +
                  +
                  Common helper for the drivers to handle a PDO DSN postfix
                  + +
                  + exec() + +  : Result +
                  +
                  Execute the query.
                  + +
                  + get() + +  : self +
                  +
                  Get fields.
                  + +
                  + group_by() + +  : self +
                  +
                  Group the results by the values in a field
                  + +
                  + join() + +  : mixed +
                  +
                  Perform a JOIN operation
                  + +
                  + left_join() + +  : mixed +
                  +
                  Add a left join, with common logic for handling binding or not
                  + +
                  + limit() + +  : self +
                  +
                  Limit the result set to a certain size.
                  + +
                  + offset() + +  : self +
                  +
                  Offset the return set by a given number of records (useful for paging).
                  + +
                  + or_where() + +  : mixed +
                  +
                  Add addition where conditions to the query with an OR operator.
                  + +
                  + order() + +  : self +
                  +
                  Order by
                  + +
                  + pkey() + +  : Query|array<string|int, string> +
                  +
                  Get / set the primary key column name(s) so they can be easily returned +after an insert.
                  + +
                  + rollback() + +  : mixed +
                  +
                  Rollback the database state to the start of the transaction.
                  + +
                  + set() + +  : mixed +
                  +
                  Set fields to a given value.
                  + +
                  + table() + +  : self +
                  +
                  Set table(s) to perform the query on.
                  + +
                  + transaction() + +  : mixed +
                  +
                  Start a database transaction
                  + +
                  + where() + +  : mixed +
                  +
                  Where query - multiple conditions are bound as ANDs.
                  + +
                  + where_group() + +  : mixed +
                  +
                  Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                  + +
                  + where_in() + +  : mixed +
                  +
                  Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                  + +
                  + _build_limit() + +  : string +
                  +
                  Create the LIMIT / OFFSET string
                  + +
                  + _escape_field() + +  : mixed +
                  +
                  Escape quotes in a field identifier
                  + +
                  + _exec() + +  : mixed +
                  +
                  + +
                  + _prepare() + +  : void +
                  +
                  Prepare the SQL query by populating the bound variables.
                  + +
                  + + + + + + +
                  +

                  + Properties + +

                  +
                  +

                  + $_supportsAsAlias + + + +

                  + + + + + protected + mixed + $_supportsAsAlias + = true + +
                  + +
                  + + + +
                  +
                  +

                  + $_whereInCnt + + + +

                  + + + + + protected + mixed + $_whereInCnt + = 1 + +
                  + +
                  + + + +
                  +
                  + +
                  +

                  + Methods + +

                  +
                  +

                  + __construct() + +

                  + + +

                  Query instance constructor.

                  + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                  Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dbHost + : mixed +
                  +
                  +
                  + +
                  +
                  + $type + : mixed +
                  +
                  +
                  + +
                  +
                  + $table + : mixed + = null
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + and_where() + +

                  + + +

                  Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                  + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                  +
                  + +
                  Parameters
                  +
                  +
                  + $key + : string|array<string|int, string>|callable +
                  +
                  +

                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                  +
                  + +
                  +
                  + $value + : mixed + = null
                  +
                  +
                  + +
                  +
                  + $op + : mixed + = "="
                  +
                  +
                  + +
                  +
                  + $bind + : mixed + = true
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + bind() + +

                  + + +

                  Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                  + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                  Parameters
                  +
                  +
                  + $name + : string +
                  +
                  +

                  Parameter name. This should include a leading colon

                  +
                  + +
                  +
                  + $value + : string +
                  +
                  +

                  Value to bind

                  +
                  + +
                  +
                  + $type + : mixed + = null
                  +
                  +

                  Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                  +
                  + +
                  +
                  + + + +
                  Return values
                  + Query + — + + +
                  +
                  +

                  + commit() + +

                  + + +

                  Commit a transaction.

                  + + + public + static commit(mixed $dbh) : mixed + +

                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dbh + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + connect() + +

                  + + +

                  Database connection - override by the database driver.

                  + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                  @param string|array $user User name or all parameters in an array

                  +
                  + +
                  Parameters
                  +
                  +
                  + $user + : mixed +
                  +
                  +
                  + +
                  +
                  + $pass + : mixed + = ''
                  +
                  +

                  Password +@param string $host Host name +@param string $db Database name +@return Query

                  +
                  + +
                  +
                  + $host + : mixed + = ''
                  +
                  +
                  + +
                  +
                  + $port + : mixed + = ''
                  +
                  +
                  + +
                  +
                  + $db + : mixed + = ''
                  +
                  +
                  + +
                  +
                  + $dsn + : mixed + = ''
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + database() + +

                  + + +

                  Get the Database host for this query instance

                  + + + public + database() : DataTable + + + + + +
                  Return values
                  + DataTable + — +

                  Database class instance

                  +
                  + + +
                  +
                  +

                  + distinct() + +

                  + + +

                  Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                  + + + public + distinct(mixed $dis) : Query + +

                  @param boolean $dis Optional

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dis + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + Query + — + + +
                  +
                  +

                  + dsnPostfix() + +

                  + + +

                  Common helper for the drivers to handle a PDO DSN postfix

                  + + + public + static dsnPostfix(mixed $dsn) : Query + +

                  @param string $dsn DSN postfix to use

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dsn + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + Query + — +

                  @internal

                  +
                  + + +
                  +
                  +

                  + exec() + +

                  + + +

                  Execute the query.

                  + + + public + exec([mixed $sql = null ]) : Result + +

                  @param string $sql SQL string to execute (only if _type is 'raw').

                  +
                  + +
                  Parameters
                  +
                  +
                  + $sql + : mixed + = null
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + Result + — + + +
                  +
                  +

                  + get() + +

                  + + +

                  Get fields.

                  + + + public + get(mixed $get) : self + +

                  @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $get + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + group_by() + +

                  + + +

                  Group the results by the values in a field

                  + + + public + group_by(mixed $group_by) : self + + +
                  Parameters
                  +
                  +
                  + $group_by + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + join() + +

                  + + +

                  Perform a JOIN operation

                  + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                  @param string $table Table name to do the JOIN on

                  +
                  + +
                  Parameters
                  +
                  +
                  + $table + : mixed +
                  +
                  +
                  + +
                  +
                  + $condition + : string +
                  +
                  +

                  JOIN condition +@param string $type JOIN type +@return self

                  +
                  + +
                  +
                  + $type + : mixed + = ''
                  +
                  +
                  + +
                  +
                  + $bind + : mixed + = true
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + left_join() + +

                  + + +

                  Add a left join, with common logic for handling binding or not

                  + + + public + left_join(mixed $joins) : mixed + + +
                  Parameters
                  +
                  +
                  + $joins + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + limit() + +

                  + + +

                  Limit the result set to a certain size.

                  + + + public + limit(mixed $lim) : self + +

                  @param int $lim The number of records to limit the result to.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $lim + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + offset() + +

                  + + +

                  Offset the return set by a given number of records (useful for paging).

                  + + + public + offset(mixed $off) : self + +

                  @param int $off The number of records to offset the result by.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $off + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + or_where() + +

                  + + +

                  Add addition where conditions to the query with an OR operator.

                  + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                  +
                  + +
                  Parameters
                  +
                  +
                  + $key + : string|array<string|int, string>|callable +
                  +
                  +

                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                  +
                  + +
                  +
                  + $value + : mixed + = null
                  +
                  +
                  + +
                  +
                  + $op + : mixed + = "="
                  +
                  +
                  + +
                  +
                  + $bind + : mixed + = true
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + order() + +

                  + + +

                  Order by

                  + + + public + order(mixed $order) : self + +

                  @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $order + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + pkey() + +

                  + + +

                  Get / set the primary key column name(s) so they can be easily returned +after an insert.

                  + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                  Parameters
                  +
                  +
                  + $pkey + : array<string|int, string> + = null
                  +
                  +

                  Primary keys

                  +
                  + +
                  +
                  + + + +
                  Return values
                  + Query|array<string|int, string> + — + + +
                  +
                  +

                  + rollback() + +

                  + + +

                  Rollback the database state to the start of the transaction.

                  + + + public + static rollback(mixed $dbh) : mixed + +

                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dbh + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + set() + +

                  + + +

                  Set fields to a given value.

                  + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                  Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                  +
                  + +
                  Parameters
                  +
                  +
                  + $set + : string|array<string|int, string> +
                  +
                  +

                  Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                  +
                  + +
                  +
                  + $val + : mixed + = null
                  +
                  +
                  + +
                  +
                  + $bind + : mixed + = true
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + table() + +

                  + + +

                  Set table(s) to perform the query on.

                  + + + public + table(mixed $table) : self + +

                  @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $table + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — + + +
                  +
                  +

                  + transaction() + +

                  + + +

                  Start a database transaction

                  + + + public + static transaction(mixed $dbh) : mixed + +

                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                  +
                  + +
                  Parameters
                  +
                  +
                  + $dbh + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + where() + +

                  + + +

                  Where query - multiple conditions are bound as ANDs.

                  + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                  +
                  + +
                  Parameters
                  +
                  +
                  + $key + : string|array<string|int, string>|callable +
                  +
                  +

                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                  +

                  @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                  +
                    $query
                  +    ->where( 'name', 'allan' )
                  +    ->where( function ($q) {
                  +      $q->where( 'location', 'Scotland' );
                  +      $q->or_where( 'location', 'Canada' );
                  +    } );
                  +
                  +
                  + +
                  +
                  + $value + : mixed + = null
                  +
                  +
                  + +
                  +
                  + $op + : mixed + = "="
                  +
                  +
                  + +
                  +
                  + $bind + : mixed + = true
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + where_group() + +

                  + + +

                  Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                  + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                  For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $inOut + : bool|callable +
                  +
                  +

                  If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                  +

                  @example

                  +
                  $query->where_group( function ($q) {
                  +  $q->where( 'location', 'Edinburgh' );
                  +  $q->where( 'position', 'Manager' );
                  +} );
                  +
                  +
                  + +
                  +
                  + $op + : mixed + = 'AND'
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + where_in() + +

                  + + +

                  Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                  + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                  Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $field + : mixed +
                  +
                  +
                  + +
                  +
                  + $arr + : mixed +
                  +
                  +
                  + +
                  +
                  + $operator + : mixed + = "AND"
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + _build_limit() + +

                  + + +

                  Create the LIMIT / OFFSET string

                  + + + protected + _build_limit() : string + +

                  MySQL and Postgres style - anything else can have the driver override

                  +
                  + + + + +
                  Return values
                  + string + — +

                  @internal

                  +
                  + + +
                  +
                  +

                  + _escape_field() + +

                  + + +

                  Escape quotes in a field identifier

                  + + + protected + _escape_field(mixed $field) : mixed + +

                  @internal

                  +
                  + +
                  Parameters
                  +
                  +
                  + $field + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + _exec() + +

                  + + + + + protected + _exec() : mixed + +
                  + + + + +
                  Return values
                  + mixed + — + + +
                  +
                  +

                  + _prepare() + +

                  + + +

                  Prepare the SQL query by populating the bound variables.

                  + + + protected + _prepare(mixed $sql) : void + +

                  Provided by the driver

                  +
                  + +
                  Parameters
                  +
                  +
                  + $sql + : mixed +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + void + — +

                  @internal

                  +
                  + + +
                  +
                  + +
                  +
                  +
                  +
                  +
                  
                  +        
                  + +
                  +
                  + + + +
                  +
                  +
                  +
                  +

                  Search results

                  + +
                  +
                  +
                    +
                    +
                    +
                    +
                    +
                    + + +
                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlResult.html new file mode 100644 index 00000000..2f0724f4 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-MysqlResult.html @@ -0,0 +1,515 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                    +

                    Editor PHP 2.1.3

                    + + + + + +
                    + +
                    +
                    + + + + +
                    + + +
                    +

                    + MysqlResult + + + extends Result + + +
                    + in package + +
                    + + +

                    + + + +

                    MySQL driver for DataTables Database Result class

                    + +

                    @internal

                    +
                    + + + + + + + + +

                    + Table of Contents + +

                    + +
                    +
                    + __construct() + +  : mixed +
                    +
                    + +
                    + count() + +  : mixed +
                    +
                    Count the number of rows in the result set.
                    + +
                    + fetch() + +  : array<string|int, mixed> +
                    +
                    Get the next row in a result set
                    + +
                    + fetchAll() + +  : array<string|int, mixed> +
                    +
                    Get all rows in the result set
                    + +
                    + insertId() + +  : mixed +
                    +
                    After an INSERT query, get the ID that was inserted.
                    + +
                    + + + + + + + +
                    +

                    + Methods + +

                    +
                    +

                    + __construct() + +

                    + + + + + public + __construct(mixed $dbh, mixed $stmt) : mixed + +
                    + +
                    Parameters
                    +
                    +
                    + $dbh + : mixed +
                    +
                    +
                    + +
                    +
                    + $stmt + : mixed +
                    +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + mixed + — + + +
                    +
                    +

                    + count() + +

                    + + +

                    Count the number of rows in the result set.

                    + + + public + count() : mixed + +

                    @return int

                    +
                    + + + + +
                    Return values
                    + mixed + — + + +
                    +
                    +

                    + fetch() + +

                    + + +

                    Get the next row in a result set

                    + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                    @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                    +
                    + +
                    Parameters
                    +
                    +
                    + $fetchType + : mixed + = PDO::FETCH_ASSOC
                    +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + array<string|int, mixed> + — + + +
                    +
                    +

                    + fetchAll() + +

                    + + +

                    Get all rows in the result set

                    + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                    @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                    +
                    + +
                    Parameters
                    +
                    +
                    + $fetchType + : mixed + = PDO::FETCH_ASSOC
                    +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + array<string|int, mixed> + — + + +
                    +
                    +

                    + insertId() + +

                    + + +

                    After an INSERT query, get the ID that was inserted.

                    + + + public + insertId() : mixed + +

                    @return int

                    +
                    + + + + +
                    Return values
                    + mixed + — + + +
                    +
                    + +
                    +
                    +
                    +
                    +
                    
                    +        
                    + +
                    +
                    + + + +
                    +
                    +
                    +
                    +

                    Search results

                    + +
                    +
                    +
                      +
                      +
                      +
                      +
                      +
                      + + +
                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleQuery.html new file mode 100644 index 00000000..eb6fc441 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleQuery.html @@ -0,0 +1,2310 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                      +

                      Editor PHP 2.1.3

                      + + + + + +
                      + +
                      +
                      + + + + +
                      + + +
                      +

                      + OracleQuery + + + extends Query + + +
                      + in package + +
                      + + +

                      + + + +

                      Oracle driver for DataTables Database Query class

                      + +

                      @internal

                      +
                      + + + + + + + + +

                      + Table of Contents + +

                      + +
                      +
                      + $_field_quote + +  : mixed +
                      +
                      + +
                      + $_identifier_limiter + +  : mixed +
                      +
                      + +
                      + $_supportsAsAlias + +  : mixed +
                      +
                      + +
                      + $_whereInCnt + +  : mixed +
                      +
                      + +
                      + __construct() + +  : mixed +
                      +
                      Query instance constructor.
                      + +
                      + and_where() + +  : mixed +
                      +
                      Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                      + +
                      + bind() + +  : Query +
                      +
                      Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                      + +
                      + commit() + +  : mixed +
                      +
                      Commit a transaction.
                      + +
                      + connect() + +  : mixed +
                      +
                      Database connection - override by the database driver.
                      + +
                      + database() + +  : DataTable +
                      +
                      Get the Database host for this query instance
                      + +
                      + distinct() + +  : Query +
                      +
                      Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                      + +
                      + dsnPostfix() + +  : Query +
                      +
                      Common helper for the drivers to handle a PDO DSN postfix
                      + +
                      + exec() + +  : Result +
                      +
                      Execute the query.
                      + +
                      + get() + +  : self +
                      +
                      Get fields.
                      + +
                      + group_by() + +  : self +
                      +
                      Group the results by the values in a field
                      + +
                      + join() + +  : mixed +
                      +
                      Perform a JOIN operation
                      + +
                      + left_join() + +  : mixed +
                      +
                      Add a left join, with common logic for handling binding or not
                      + +
                      + limit() + +  : self +
                      +
                      Limit the result set to a certain size.
                      + +
                      + offset() + +  : self +
                      +
                      Offset the return set by a given number of records (useful for paging).
                      + +
                      + or_where() + +  : mixed +
                      +
                      Add addition where conditions to the query with an OR operator.
                      + +
                      + order() + +  : self +
                      +
                      Order by
                      + +
                      + pkey() + +  : Query|array<string|int, string> +
                      +
                      Get / set the primary key column name(s) so they can be easily returned +after an insert.
                      + +
                      + rollback() + +  : mixed +
                      +
                      Rollback the database state to the start of the transaction.
                      + +
                      + set() + +  : mixed +
                      +
                      Set fields to a given value.
                      + +
                      + table() + +  : self +
                      +
                      Set table(s) to perform the query on.
                      + +
                      + transaction() + +  : mixed +
                      +
                      Start a database transaction
                      + +
                      + where() + +  : mixed +
                      +
                      Where query - multiple conditions are bound as ANDs.
                      + +
                      + where_group() + +  : mixed +
                      +
                      Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                      + +
                      + where_in() + +  : mixed +
                      +
                      Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                      + +
                      + _build_limit() + +  : string +
                      +
                      Create the LIMIT / OFFSET string
                      + +
                      + _build_table() + +  : mixed +
                      +
                      + +
                      + _escape_field() + +  : mixed +
                      +
                      Escape quotes in a field identifier
                      + +
                      + _exec() + +  : mixed +
                      +
                      + +
                      + _prepare() + +  : void +
                      +
                      Prepare the SQL query by populating the bound variables.
                      + +
                      + + + + + + +
                      +

                      + Properties + +

                      +
                      +

                      + $_field_quote + + + +

                      + + + + + protected + mixed + $_field_quote + = '"' + +
                      + +
                      + + + +
                      +
                      +

                      + $_identifier_limiter + + + +

                      + + + + + protected + mixed + $_identifier_limiter + = array('"', '"') + +
                      + +
                      + + + +
                      +
                      +

                      + $_supportsAsAlias + + + +

                      + + + + + protected + mixed + $_supportsAsAlias + = false + +
                      + +
                      + + + +
                      +
                      +

                      + $_whereInCnt + + + +

                      + + + + + protected + mixed + $_whereInCnt + = 1 + +
                      + +
                      + + + +
                      +
                      + +
                      +

                      + Methods + +

                      +
                      +

                      + __construct() + +

                      + + +

                      Query instance constructor.

                      + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                      Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $dbHost + : mixed +
                      +
                      +
                      + +
                      +
                      + $type + : mixed +
                      +
                      +
                      + +
                      +
                      + $table + : mixed + = null
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + and_where() + +

                      + + +

                      Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                      + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                      +
                      + +
                      Parameters
                      +
                      +
                      + $key + : string|array<string|int, string>|callable +
                      +
                      +

                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                      +
                      + +
                      +
                      + $value + : mixed + = null
                      +
                      +
                      + +
                      +
                      + $op + : mixed + = "="
                      +
                      +
                      + +
                      +
                      + $bind + : mixed + = true
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + bind() + +

                      + + +

                      Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                      + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                      Parameters
                      +
                      +
                      + $name + : string +
                      +
                      +

                      Parameter name. This should include a leading colon

                      +
                      + +
                      +
                      + $value + : string +
                      +
                      +

                      Value to bind

                      +
                      + +
                      +
                      + $type + : mixed + = null
                      +
                      +

                      Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                      +
                      + +
                      +
                      + + + +
                      Return values
                      + Query + — + + +
                      +
                      +

                      + commit() + +

                      + + +

                      Commit a transaction.

                      + + + public + static commit(mixed $conn) : mixed + +

                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                      +
                      + +
                      Parameters
                      +
                      +
                      + $conn + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + connect() + +

                      + + +

                      Database connection - override by the database driver.

                      + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                      @param string|array $user User name or all parameters in an array

                      +
                      + +
                      Parameters
                      +
                      +
                      + $user + : mixed +
                      +
                      +
                      + +
                      +
                      + $pass + : mixed + = ''
                      +
                      +

                      Password +@param string $host Host name +@param string $db Database name +@return Query

                      +
                      + +
                      +
                      + $host + : mixed + = ''
                      +
                      +
                      + +
                      +
                      + $port + : mixed + = ''
                      +
                      +
                      + +
                      +
                      + $db + : mixed + = ''
                      +
                      +
                      + +
                      +
                      + $dsn + : mixed + = ''
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + database() + +

                      + + +

                      Get the Database host for this query instance

                      + + + public + database() : DataTable + + + + + +
                      Return values
                      + DataTable + — +

                      Database class instance

                      +
                      + + +
                      +
                      +

                      + distinct() + +

                      + + +

                      Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                      + + + public + distinct(mixed $dis) : Query + +

                      @param boolean $dis Optional

                      +
                      + +
                      Parameters
                      +
                      +
                      + $dis + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + Query + — + + +
                      +
                      +

                      + dsnPostfix() + +

                      + + +

                      Common helper for the drivers to handle a PDO DSN postfix

                      + + + public + static dsnPostfix(mixed $dsn) : Query + +

                      @param string $dsn DSN postfix to use

                      +
                      + +
                      Parameters
                      +
                      +
                      + $dsn + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + Query + — +

                      @internal

                      +
                      + + +
                      +
                      +

                      + exec() + +

                      + + +

                      Execute the query.

                      + + + public + exec([mixed $sql = null ]) : Result + +

                      @param string $sql SQL string to execute (only if _type is 'raw').

                      +
                      + +
                      Parameters
                      +
                      +
                      + $sql + : mixed + = null
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + Result + — + + +
                      +
                      +

                      + get() + +

                      + + +

                      Get fields.

                      + + + public + get(mixed $get) : self + +

                      @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $get + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + group_by() + +

                      + + +

                      Group the results by the values in a field

                      + + + public + group_by(mixed $group_by) : self + + +
                      Parameters
                      +
                      +
                      + $group_by + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + join() + +

                      + + +

                      Perform a JOIN operation

                      + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                      @param string $table Table name to do the JOIN on

                      +
                      + +
                      Parameters
                      +
                      +
                      + $table + : mixed +
                      +
                      +
                      + +
                      +
                      + $condition + : string +
                      +
                      +

                      JOIN condition +@param string $type JOIN type +@return self

                      +
                      + +
                      +
                      + $type + : mixed + = ''
                      +
                      +
                      + +
                      +
                      + $bind + : mixed + = true
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + left_join() + +

                      + + +

                      Add a left join, with common logic for handling binding or not

                      + + + public + left_join(mixed $joins) : mixed + + +
                      Parameters
                      +
                      +
                      + $joins + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + limit() + +

                      + + +

                      Limit the result set to a certain size.

                      + + + public + limit(mixed $lim) : self + +

                      @param int $lim The number of records to limit the result to.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $lim + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + offset() + +

                      + + +

                      Offset the return set by a given number of records (useful for paging).

                      + + + public + offset(mixed $off) : self + +

                      @param int $off The number of records to offset the result by.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $off + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + or_where() + +

                      + + +

                      Add addition where conditions to the query with an OR operator.

                      + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                      +
                      + +
                      Parameters
                      +
                      +
                      + $key + : string|array<string|int, string>|callable +
                      +
                      +

                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                      +
                      + +
                      +
                      + $value + : mixed + = null
                      +
                      +
                      + +
                      +
                      + $op + : mixed + = "="
                      +
                      +
                      + +
                      +
                      + $bind + : mixed + = true
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + order() + +

                      + + +

                      Order by

                      + + + public + order(mixed $order) : self + +

                      @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $order + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + pkey() + +

                      + + +

                      Get / set the primary key column name(s) so they can be easily returned +after an insert.

                      + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                      Parameters
                      +
                      +
                      + $pkey + : array<string|int, string> + = null
                      +
                      +

                      Primary keys

                      +
                      + +
                      +
                      + + + +
                      Return values
                      + Query|array<string|int, string> + — + + +
                      +
                      +

                      + rollback() + +

                      + + +

                      Rollback the database state to the start of the transaction.

                      + + + public + static rollback(mixed $conn) : mixed + +

                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                      +
                      + +
                      Parameters
                      +
                      +
                      + $conn + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + set() + +

                      + + +

                      Set fields to a given value.

                      + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                      Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                      +
                      + +
                      Parameters
                      +
                      +
                      + $set + : string|array<string|int, string> +
                      +
                      +

                      Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                      +
                      + +
                      +
                      + $val + : mixed + = null
                      +
                      +
                      + +
                      +
                      + $bind + : mixed + = true
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + table() + +

                      + + +

                      Set table(s) to perform the query on.

                      + + + public + table(mixed $table) : self + +

                      @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $table + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + self + — + + +
                      +
                      +

                      + transaction() + +

                      + + +

                      Start a database transaction

                      + + + public + static transaction(mixed $conn) : mixed + +

                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                      +
                      + +
                      Parameters
                      +
                      +
                      + $conn + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + where() + +

                      + + +

                      Where query - multiple conditions are bound as ANDs.

                      + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                      +
                      + +
                      Parameters
                      +
                      +
                      + $key + : string|array<string|int, string>|callable +
                      +
                      +

                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                      +

                      @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                      +
                        $query
                      +    ->where( 'name', 'allan' )
                      +    ->where( function ($q) {
                      +      $q->where( 'location', 'Scotland' );
                      +      $q->or_where( 'location', 'Canada' );
                      +    } );
                      +
                      +
                      + +
                      +
                      + $value + : mixed + = null
                      +
                      +
                      + +
                      +
                      + $op + : mixed + = "="
                      +
                      +
                      + +
                      +
                      + $bind + : mixed + = true
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + where_group() + +

                      + + +

                      Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                      + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                      For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $inOut + : bool|callable +
                      +
                      +

                      If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                      +

                      @example

                      +
                      $query->where_group( function ($q) {
                      +  $q->where( 'location', 'Edinburgh' );
                      +  $q->where( 'position', 'Manager' );
                      +} );
                      +
                      +
                      + +
                      +
                      + $op + : mixed + = 'AND'
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + where_in() + +

                      + + +

                      Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                      + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                      Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                      +
                      + +
                      Parameters
                      +
                      +
                      + $field + : mixed +
                      +
                      +
                      + +
                      +
                      + $arr + : mixed +
                      +
                      +
                      + +
                      +
                      + $operator + : mixed + = "AND"
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + _build_limit() + +

                      + + +

                      Create the LIMIT / OFFSET string

                      + + + protected + _build_limit() : string + +

                      MySQL and Postgres style - anything else can have the driver override

                      +
                      + + + + +
                      Return values
                      + string + — +

                      @internal

                      +
                      + + +
                      +
                      +

                      + _build_table() + +

                      + + + + + protected + _build_table() : mixed + +
                      + + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + _escape_field() + +

                      + + +

                      Escape quotes in a field identifier

                      + + + protected + _escape_field(mixed $field) : mixed + +

                      @internal

                      +
                      + +
                      Parameters
                      +
                      +
                      + $field + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + _exec() + +

                      + + + + + protected + _exec() : mixed + +
                      + + + + +
                      Return values
                      + mixed + — + + +
                      +
                      +

                      + _prepare() + +

                      + + +

                      Prepare the SQL query by populating the bound variables.

                      + + + protected + _prepare(mixed $sql) : void + +

                      Provided by the driver

                      +
                      + +
                      Parameters
                      +
                      +
                      + $sql + : mixed +
                      +
                      +
                      + +
                      +
                      + + + +
                      Return values
                      + void + — +

                      @internal

                      +
                      + + +
                      +
                      + +
                      +
                      +
                      +
                      +
                      
                      +        
                      + +
                      +
                      + + + +
                      +
                      +
                      +
                      +

                      Search results

                      + +
                      +
                      +
                        +
                        +
                        +
                        +
                        +
                        + + +
                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleResult.html new file mode 100644 index 00000000..7085fb2a --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-OracleResult.html @@ -0,0 +1,523 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                        +

                        Editor PHP 2.1.3

                        + + + + + +
                        + +
                        +
                        + + + + +
                        + + +
                        +

                        + OracleResult + + + extends Result + + +
                        + in package + +
                        + + +

                        + + + +

                        MySQL driver for DataTables Database Result class

                        + +

                        @internal

                        +
                        + + + + + + + + +

                        + Table of Contents + +

                        + +
                        +
                        + __construct() + +  : mixed +
                        +
                        + +
                        + count() + +  : mixed +
                        +
                        Count the number of rows in the result set.
                        + +
                        + fetch() + +  : array<string|int, mixed> +
                        +
                        Get the next row in a result set
                        + +
                        + fetchAll() + +  : array<string|int, mixed> +
                        +
                        Get all rows in the result set
                        + +
                        + insertId() + +  : mixed +
                        +
                        After an INSERT query, get the ID that was inserted.
                        + +
                        + + + + + + + +
                        +

                        + Methods + +

                        +
                        +

                        + __construct() + +

                        + + + + + public + __construct(mixed $dbh, mixed $stmt, mixed $pkey_val) : mixed + +
                        + +
                        Parameters
                        +
                        +
                        + $dbh + : mixed +
                        +
                        +
                        + +
                        +
                        + $stmt + : mixed +
                        +
                        +
                        + +
                        +
                        + $pkey_val + : mixed +
                        +
                        +
                        + +
                        +
                        + + + +
                        Return values
                        + mixed + — + + +
                        +
                        +

                        + count() + +

                        + + +

                        Count the number of rows in the result set.

                        + + + public + count() : mixed + +

                        @return int

                        +
                        + + + + +
                        Return values
                        + mixed + — + + +
                        +
                        +

                        + fetch() + +

                        + + +

                        Get the next row in a result set

                        + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                        @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                        +
                        + +
                        Parameters
                        +
                        +
                        + $fetchType + : mixed + = PDO::FETCH_ASSOC
                        +
                        +
                        + +
                        +
                        + + + +
                        Return values
                        + array<string|int, mixed> + — + + +
                        +
                        +

                        + fetchAll() + +

                        + + +

                        Get all rows in the result set

                        + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                        @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                        +
                        + +
                        Parameters
                        +
                        +
                        + $fetchType + : mixed + = PDO::FETCH_ASSOC
                        +
                        +
                        + +
                        +
                        + + + +
                        Return values
                        + array<string|int, mixed> + — + + +
                        +
                        +

                        + insertId() + +

                        + + +

                        After an INSERT query, get the ID that was inserted.

                        + + + public + insertId() : mixed + +

                        @return int

                        +
                        + + + + +
                        Return values
                        + mixed + — + + +
                        +
                        + +
                        +
                        +
                        +
                        +
                        
                        +        
                        + +
                        +
                        + + + +
                        +
                        +
                        +
                        +

                        Search results

                        + +
                        +
                        +
                          +
                          +
                          +
                          +
                          +
                          + + +
                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresQuery.html new file mode 100644 index 00000000..23206d08 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresQuery.html @@ -0,0 +1,2269 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                          +

                          Editor PHP 2.1.3

                          + + + + + +
                          + +
                          +
                          + + + + +
                          + + +
                          +

                          + PostgresQuery + + + extends Query + + +
                          + in package + +
                          + + +

                          + + + +

                          Postgres driver for DataTables Database Query class

                          + +

                          @internal

                          +
                          + + + + + + + + +

                          + Table of Contents + +

                          + +
                          +
                          + $_field_quote + +  : mixed +
                          +
                          + +
                          + $_identifier_limiter + +  : mixed +
                          +
                          + +
                          + $_supportsAsAlias + +  : mixed +
                          +
                          + +
                          + $_whereInCnt + +  : mixed +
                          +
                          + +
                          + __construct() + +  : mixed +
                          +
                          Query instance constructor.
                          + +
                          + and_where() + +  : mixed +
                          +
                          Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                          + +
                          + bind() + +  : Query +
                          +
                          Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                          + +
                          + commit() + +  : mixed +
                          +
                          Commit a transaction.
                          + +
                          + connect() + +  : mixed +
                          +
                          Database connection - override by the database driver.
                          + +
                          + database() + +  : DataTable +
                          +
                          Get the Database host for this query instance
                          + +
                          + distinct() + +  : Query +
                          +
                          Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                          + +
                          + dsnPostfix() + +  : Query +
                          +
                          Common helper for the drivers to handle a PDO DSN postfix
                          + +
                          + exec() + +  : Result +
                          +
                          Execute the query.
                          + +
                          + get() + +  : self +
                          +
                          Get fields.
                          + +
                          + group_by() + +  : self +
                          +
                          Group the results by the values in a field
                          + +
                          + join() + +  : mixed +
                          +
                          Perform a JOIN operation
                          + +
                          + left_join() + +  : mixed +
                          +
                          Add a left join, with common logic for handling binding or not
                          + +
                          + limit() + +  : self +
                          +
                          Limit the result set to a certain size.
                          + +
                          + offset() + +  : self +
                          +
                          Offset the return set by a given number of records (useful for paging).
                          + +
                          + or_where() + +  : mixed +
                          +
                          Add addition where conditions to the query with an OR operator.
                          + +
                          + order() + +  : self +
                          +
                          Order by
                          + +
                          + pkey() + +  : Query|array<string|int, string> +
                          +
                          Get / set the primary key column name(s) so they can be easily returned +after an insert.
                          + +
                          + rollback() + +  : mixed +
                          +
                          Rollback the database state to the start of the transaction.
                          + +
                          + set() + +  : mixed +
                          +
                          Set fields to a given value.
                          + +
                          + table() + +  : self +
                          +
                          Set table(s) to perform the query on.
                          + +
                          + transaction() + +  : mixed +
                          +
                          Start a database transaction
                          + +
                          + where() + +  : mixed +
                          +
                          Where query - multiple conditions are bound as ANDs.
                          + +
                          + where_group() + +  : mixed +
                          +
                          Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                          + +
                          + where_in() + +  : mixed +
                          +
                          Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                          + +
                          + _build_limit() + +  : string +
                          +
                          Create the LIMIT / OFFSET string
                          + +
                          + _escape_field() + +  : mixed +
                          +
                          Escape quotes in a field identifier
                          + +
                          + _exec() + +  : mixed +
                          +
                          + +
                          + _prepare() + +  : void +
                          +
                          Prepare the SQL query by populating the bound variables.
                          + +
                          + + + + + + +
                          +

                          + Properties + +

                          +
                          +

                          + $_field_quote + + + +

                          + + + + + protected + mixed + $_field_quote + = '"' + +
                          + +
                          + + + +
                          +
                          +

                          + $_identifier_limiter + + + +

                          + + + + + protected + mixed + $_identifier_limiter + = array('"', '"') + +
                          + +
                          + + + +
                          +
                          +

                          + $_supportsAsAlias + + + +

                          + + + + + protected + mixed + $_supportsAsAlias + = true + +
                          + +
                          + + + +
                          +
                          +

                          + $_whereInCnt + + + +

                          + + + + + protected + mixed + $_whereInCnt + = 1 + +
                          + +
                          + + + +
                          +
                          + +
                          +

                          + Methods + +

                          +
                          +

                          + __construct() + +

                          + + +

                          Query instance constructor.

                          + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                          Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dbHost + : mixed +
                          +
                          +
                          + +
                          +
                          + $type + : mixed +
                          +
                          +
                          + +
                          +
                          + $table + : mixed + = null
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + and_where() + +

                          + + +

                          Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                          + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                          Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                          +
                          + +
                          Parameters
                          +
                          +
                          + $key + : string|array<string|int, string>|callable +
                          +
                          +

                          Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                          +
                          + +
                          +
                          + $value + : mixed + = null
                          +
                          +
                          + +
                          +
                          + $op + : mixed + = "="
                          +
                          +
                          + +
                          +
                          + $bind + : mixed + = true
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + bind() + +

                          + + +

                          Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                          + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                          Parameters
                          +
                          +
                          + $name + : string +
                          +
                          +

                          Parameter name. This should include a leading colon

                          +
                          + +
                          +
                          + $value + : string +
                          +
                          +

                          Value to bind

                          +
                          + +
                          +
                          + $type + : mixed + = null
                          +
                          +

                          Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Query + — + + +
                          +
                          +

                          + commit() + +

                          + + +

                          Commit a transaction.

                          + + + public + static commit(mixed $dbh) : mixed + +

                          @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dbh + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + connect() + +

                          + + +

                          Database connection - override by the database driver.

                          + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                          @param string|array $user User name or all parameters in an array

                          +
                          + +
                          Parameters
                          +
                          +
                          + $user + : mixed +
                          +
                          +
                          + +
                          +
                          + $pass + : mixed + = ''
                          +
                          +

                          Password +@param string $host Host name +@param string $db Database name +@return Query

                          +
                          + +
                          +
                          + $host + : mixed + = ''
                          +
                          +
                          + +
                          +
                          + $port + : mixed + = ''
                          +
                          +
                          + +
                          +
                          + $db + : mixed + = ''
                          +
                          +
                          + +
                          +
                          + $dsn + : mixed + = ''
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + database() + +

                          + + +

                          Get the Database host for this query instance

                          + + + public + database() : DataTable + + + + + +
                          Return values
                          + DataTable + — +

                          Database class instance

                          +
                          + + +
                          +
                          +

                          + distinct() + +

                          + + +

                          Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                          + + + public + distinct(mixed $dis) : Query + +

                          @param boolean $dis Optional

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dis + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Query + — + + +
                          +
                          +

                          + dsnPostfix() + +

                          + + +

                          Common helper for the drivers to handle a PDO DSN postfix

                          + + + public + static dsnPostfix(mixed $dsn) : Query + +

                          @param string $dsn DSN postfix to use

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dsn + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Query + — +

                          @internal

                          +
                          + + +
                          +
                          +

                          + exec() + +

                          + + +

                          Execute the query.

                          + + + public + exec([mixed $sql = null ]) : Result + +

                          @param string $sql SQL string to execute (only if _type is 'raw').

                          +
                          + +
                          Parameters
                          +
                          +
                          + $sql + : mixed + = null
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Result + — + + +
                          +
                          +

                          + get() + +

                          + + +

                          Get fields.

                          + + + public + get(mixed $get) : self + +

                          @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $get + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + group_by() + +

                          + + +

                          Group the results by the values in a field

                          + + + public + group_by(mixed $group_by) : self + + +
                          Parameters
                          +
                          +
                          + $group_by + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + join() + +

                          + + +

                          Perform a JOIN operation

                          + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                          @param string $table Table name to do the JOIN on

                          +
                          + +
                          Parameters
                          +
                          +
                          + $table + : mixed +
                          +
                          +
                          + +
                          +
                          + $condition + : string +
                          +
                          +

                          JOIN condition +@param string $type JOIN type +@return self

                          +
                          + +
                          +
                          + $type + : mixed + = ''
                          +
                          +
                          + +
                          +
                          + $bind + : mixed + = true
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + left_join() + +

                          + + +

                          Add a left join, with common logic for handling binding or not

                          + + + public + left_join(mixed $joins) : mixed + + +
                          Parameters
                          +
                          +
                          + $joins + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + limit() + +

                          + + +

                          Limit the result set to a certain size.

                          + + + public + limit(mixed $lim) : self + +

                          @param int $lim The number of records to limit the result to.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $lim + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + offset() + +

                          + + +

                          Offset the return set by a given number of records (useful for paging).

                          + + + public + offset(mixed $off) : self + +

                          @param int $off The number of records to offset the result by.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $off + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + or_where() + +

                          + + +

                          Add addition where conditions to the query with an OR operator.

                          + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                          Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                          +
                          + +
                          Parameters
                          +
                          +
                          + $key + : string|array<string|int, string>|callable +
                          +
                          +

                          Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                          +
                          + +
                          +
                          + $value + : mixed + = null
                          +
                          +
                          + +
                          +
                          + $op + : mixed + = "="
                          +
                          +
                          + +
                          +
                          + $bind + : mixed + = true
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + order() + +

                          + + +

                          Order by

                          + + + public + order(mixed $order) : self + +

                          @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $order + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + pkey() + +

                          + + +

                          Get / set the primary key column name(s) so they can be easily returned +after an insert.

                          + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                          Parameters
                          +
                          +
                          + $pkey + : array<string|int, string> + = null
                          +
                          +

                          Primary keys

                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Query|array<string|int, string> + — + + +
                          +
                          +

                          + rollback() + +

                          + + +

                          Rollback the database state to the start of the transaction.

                          + + + public + static rollback(mixed $dbh) : mixed + +

                          @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dbh + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + set() + +

                          + + +

                          Set fields to a given value.

                          + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                          Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                          +
                          + +
                          Parameters
                          +
                          +
                          + $set + : string|array<string|int, string> +
                          +
                          +

                          Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                          +
                          + +
                          +
                          + $val + : mixed + = null
                          +
                          +
                          + +
                          +
                          + $bind + : mixed + = true
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + table() + +

                          + + +

                          Set table(s) to perform the query on.

                          + + + public + table(mixed $table) : self + +

                          @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $table + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + self + — + + +
                          +
                          +

                          + transaction() + +

                          + + +

                          Start a database transaction

                          + + + public + static transaction(mixed $dbh) : mixed + +

                          @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                          +
                          + +
                          Parameters
                          +
                          +
                          + $dbh + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + where() + +

                          + + +

                          Where query - multiple conditions are bound as ANDs.

                          + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                          Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                          +
                          + +
                          Parameters
                          +
                          +
                          + $key + : string|array<string|int, string>|callable +
                          +
                          +

                          Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                          +

                          @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                          +
                            $query
                          +    ->where( 'name', 'allan' )
                          +    ->where( function ($q) {
                          +      $q->where( 'location', 'Scotland' );
                          +      $q->or_where( 'location', 'Canada' );
                          +    } );
                          +
                          +
                          + +
                          +
                          + $value + : mixed + = null
                          +
                          +
                          + +
                          +
                          + $op + : mixed + = "="
                          +
                          +
                          + +
                          +
                          + $bind + : mixed + = true
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + where_group() + +

                          + + +

                          Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                          + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                          For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $inOut + : bool|callable +
                          +
                          +

                          If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                          +

                          @example

                          +
                          $query->where_group( function ($q) {
                          +  $q->where( 'location', 'Edinburgh' );
                          +  $q->where( 'position', 'Manager' );
                          +} );
                          +
                          +
                          + +
                          +
                          + $op + : mixed + = 'AND'
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + where_in() + +

                          + + +

                          Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                          + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                          Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $field + : mixed +
                          +
                          +
                          + +
                          +
                          + $arr + : mixed +
                          +
                          +
                          + +
                          +
                          + $operator + : mixed + = "AND"
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + _build_limit() + +

                          + + +

                          Create the LIMIT / OFFSET string

                          + + + protected + _build_limit() : string + +

                          MySQL and Postgres style - anything else can have the driver override

                          +
                          + + + + +
                          Return values
                          + string + — +

                          @internal

                          +
                          + + +
                          +
                          +

                          + _escape_field() + +

                          + + +

                          Escape quotes in a field identifier

                          + + + protected + _escape_field(mixed $field) : mixed + +

                          @internal

                          +
                          + +
                          Parameters
                          +
                          +
                          + $field + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + _exec() + +

                          + + + + + protected + _exec() : mixed + +
                          + + + + +
                          Return values
                          + mixed + — + + +
                          +
                          +

                          + _prepare() + +

                          + + +

                          Prepare the SQL query by populating the bound variables.

                          + + + protected + _prepare(mixed $sql) : void + +

                          Provided by the driver

                          +
                          + +
                          Parameters
                          +
                          +
                          + $sql + : mixed +
                          +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + void + — +

                          @internal

                          +
                          + + +
                          +
                          + +
                          +
                          +
                          +
                          +
                          
                          +        
                          + +
                          +
                          + + + +
                          +
                          +
                          +
                          +

                          Search results

                          + +
                          +
                          +
                            +
                            +
                            +
                            +
                            +
                            + + +
                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresResult.html new file mode 100644 index 00000000..c29d8b11 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-PostgresResult.html @@ -0,0 +1,515 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                            +

                            Editor PHP 2.1.3

                            + + + + + +
                            + +
                            +
                            + + + + +
                            + + +
                            +

                            + PostgresResult + + + extends Result + + +
                            + in package + +
                            + + +

                            + + + +

                            Postgres driver for DataTables Database Result class

                            + +

                            @internal

                            +
                            + + + + + + + + +

                            + Table of Contents + +

                            + +
                            +
                            + __construct() + +  : mixed +
                            +
                            + +
                            + count() + +  : mixed +
                            +
                            Count the number of rows in the result set.
                            + +
                            + fetch() + +  : array<string|int, mixed> +
                            +
                            Get the next row in a result set
                            + +
                            + fetchAll() + +  : array<string|int, mixed> +
                            +
                            Get all rows in the result set
                            + +
                            + insertId() + +  : mixed +
                            +
                            After an INSERT query, get the ID that was inserted.
                            + +
                            + + + + + + + +
                            +

                            + Methods + +

                            +
                            +

                            + __construct() + +

                            + + + + + public + __construct(mixed $dbh, mixed $stmt) : mixed + +
                            + +
                            Parameters
                            +
                            +
                            + $dbh + : mixed +
                            +
                            +
                            + +
                            +
                            + $stmt + : mixed +
                            +
                            +
                            + +
                            +
                            + + + +
                            Return values
                            + mixed + — + + +
                            +
                            +

                            + count() + +

                            + + +

                            Count the number of rows in the result set.

                            + + + public + count() : mixed + +

                            @return int

                            +
                            + + + + +
                            Return values
                            + mixed + — + + +
                            +
                            +

                            + fetch() + +

                            + + +

                            Get the next row in a result set

                            + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                            @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                            +
                            + +
                            Parameters
                            +
                            +
                            + $fetchType + : mixed + = PDO::FETCH_ASSOC
                            +
                            +
                            + +
                            +
                            + + + +
                            Return values
                            + array<string|int, mixed> + — + + +
                            +
                            +

                            + fetchAll() + +

                            + + +

                            Get all rows in the result set

                            + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                            @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                            +
                            + +
                            Parameters
                            +
                            +
                            + $fetchType + : mixed + = PDO::FETCH_ASSOC
                            +
                            +
                            + +
                            +
                            + + + +
                            Return values
                            + array<string|int, mixed> + — + + +
                            +
                            +

                            + insertId() + +

                            + + +

                            After an INSERT query, get the ID that was inserted.

                            + + + public + insertId() : mixed + +

                            @return int

                            +
                            + + + + +
                            Return values
                            + mixed + — + + +
                            +
                            + +
                            +
                            +
                            +
                            +
                            
                            +        
                            + +
                            +
                            + + + +
                            +
                            +
                            +
                            +

                            Search results

                            + +
                            +
                            +
                              +
                              +
                              +
                              +
                              +
                              + + +
                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteQuery.html new file mode 100644 index 00000000..d75cd6d4 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteQuery.html @@ -0,0 +1,2227 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                              +

                              Editor PHP 2.1.3

                              + + + + + +
                              + +
                              +
                              + + + + +
                              + + +
                              +

                              + SqliteQuery + + + extends Query + + +
                              + in package + +
                              + + +

                              + + + +

                              SQLite3 driver for DataTables Database Query class

                              + +

                              @internal

                              +
                              + + + + + + + + +

                              + Table of Contents + +

                              + +
                              +
                              + $_identifier_limiter + +  : mixed +
                              +
                              + +
                              + $_supportsAsAlias + +  : mixed +
                              +
                              + +
                              + $_whereInCnt + +  : mixed +
                              +
                              + +
                              + __construct() + +  : mixed +
                              +
                              Query instance constructor.
                              + +
                              + and_where() + +  : mixed +
                              +
                              Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                              + +
                              + bind() + +  : Query +
                              +
                              Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                              + +
                              + commit() + +  : mixed +
                              +
                              Commit a transaction.
                              + +
                              + connect() + +  : mixed +
                              +
                              Database connection - override by the database driver.
                              + +
                              + database() + +  : DataTable +
                              +
                              Get the Database host for this query instance
                              + +
                              + distinct() + +  : Query +
                              +
                              Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                              + +
                              + dsnPostfix() + +  : Query +
                              +
                              Common helper for the drivers to handle a PDO DSN postfix
                              + +
                              + exec() + +  : Result +
                              +
                              Execute the query.
                              + +
                              + get() + +  : self +
                              +
                              Get fields.
                              + +
                              + group_by() + +  : self +
                              +
                              Group the results by the values in a field
                              + +
                              + join() + +  : mixed +
                              +
                              Perform a JOIN operation
                              + +
                              + left_join() + +  : mixed +
                              +
                              Add a left join, with common logic for handling binding or not
                              + +
                              + limit() + +  : self +
                              +
                              Limit the result set to a certain size.
                              + +
                              + offset() + +  : self +
                              +
                              Offset the return set by a given number of records (useful for paging).
                              + +
                              + or_where() + +  : mixed +
                              +
                              Add addition where conditions to the query with an OR operator.
                              + +
                              + order() + +  : self +
                              +
                              Order by
                              + +
                              + pkey() + +  : Query|array<string|int, string> +
                              +
                              Get / set the primary key column name(s) so they can be easily returned +after an insert.
                              + +
                              + rollback() + +  : mixed +
                              +
                              Rollback the database state to the start of the transaction.
                              + +
                              + set() + +  : mixed +
                              +
                              Set fields to a given value.
                              + +
                              + table() + +  : self +
                              +
                              Set table(s) to perform the query on.
                              + +
                              + transaction() + +  : mixed +
                              +
                              Start a database transaction
                              + +
                              + where() + +  : mixed +
                              +
                              Where query - multiple conditions are bound as ANDs.
                              + +
                              + where_group() + +  : mixed +
                              +
                              Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                              + +
                              + where_in() + +  : mixed +
                              +
                              Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                              + +
                              + _build_limit() + +  : string +
                              +
                              Create the LIMIT / OFFSET string
                              + +
                              + _escape_field() + +  : mixed +
                              +
                              Escape quotes in a field identifier
                              + +
                              + _exec() + +  : mixed +
                              +
                              + +
                              + _prepare() + +  : void +
                              +
                              Prepare the SQL query by populating the bound variables.
                              + +
                              + + + + + + +
                              +

                              + Properties + +

                              +
                              +

                              + $_identifier_limiter + + + +

                              + + + + + protected + mixed + $_identifier_limiter + = null + +
                              + +
                              + + + +
                              +
                              +

                              + $_supportsAsAlias + + + +

                              + + + + + protected + mixed + $_supportsAsAlias + = true + +
                              + +
                              + + + +
                              +
                              +

                              + $_whereInCnt + + + +

                              + + + + + protected + mixed + $_whereInCnt + = 1 + +
                              + +
                              + + + +
                              +
                              + +
                              +

                              + Methods + +

                              +
                              +

                              + __construct() + +

                              + + +

                              Query instance constructor.

                              + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                              Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dbHost + : mixed +
                              +
                              +
                              + +
                              +
                              + $type + : mixed +
                              +
                              +
                              + +
                              +
                              + $table + : mixed + = null
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + and_where() + +

                              + + +

                              Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                              + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                              +
                              + +
                              Parameters
                              +
                              +
                              + $key + : string|array<string|int, string>|callable +
                              +
                              +

                              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                              +
                              + +
                              +
                              + $value + : mixed + = null
                              +
                              +
                              + +
                              +
                              + $op + : mixed + = "="
                              +
                              +
                              + +
                              +
                              + $bind + : mixed + = true
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + bind() + +

                              + + +

                              Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                              + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                              Parameters
                              +
                              +
                              + $name + : string +
                              +
                              +

                              Parameter name. This should include a leading colon

                              +
                              + +
                              +
                              + $value + : string +
                              +
                              +

                              Value to bind

                              +
                              + +
                              +
                              + $type + : mixed + = null
                              +
                              +

                              Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                              +
                              + +
                              +
                              + + + +
                              Return values
                              + Query + — + + +
                              +
                              +

                              + commit() + +

                              + + +

                              Commit a transaction.

                              + + + public + static commit(mixed $dbh) : mixed + +

                              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dbh + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + connect() + +

                              + + +

                              Database connection - override by the database driver.

                              + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                              @param string|array $user User name or all parameters in an array

                              +
                              + +
                              Parameters
                              +
                              +
                              + $user + : mixed +
                              +
                              +
                              + +
                              +
                              + $pass + : mixed + = ''
                              +
                              +

                              Password +@param string $host Host name +@param string $db Database name +@return Query

                              +
                              + +
                              +
                              + $host + : mixed + = ''
                              +
                              +
                              + +
                              +
                              + $port + : mixed + = ''
                              +
                              +
                              + +
                              +
                              + $db + : mixed + = ''
                              +
                              +
                              + +
                              +
                              + $dsn + : mixed + = ''
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + database() + +

                              + + +

                              Get the Database host for this query instance

                              + + + public + database() : DataTable + + + + + +
                              Return values
                              + DataTable + — +

                              Database class instance

                              +
                              + + +
                              +
                              +

                              + distinct() + +

                              + + +

                              Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                              + + + public + distinct(mixed $dis) : Query + +

                              @param boolean $dis Optional

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dis + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + Query + — + + +
                              +
                              +

                              + dsnPostfix() + +

                              + + +

                              Common helper for the drivers to handle a PDO DSN postfix

                              + + + public + static dsnPostfix(mixed $dsn) : Query + +

                              @param string $dsn DSN postfix to use

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dsn + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + Query + — +

                              @internal

                              +
                              + + +
                              +
                              +

                              + exec() + +

                              + + +

                              Execute the query.

                              + + + public + exec([mixed $sql = null ]) : Result + +

                              @param string $sql SQL string to execute (only if _type is 'raw').

                              +
                              + +
                              Parameters
                              +
                              +
                              + $sql + : mixed + = null
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + Result + — + + +
                              +
                              +

                              + get() + +

                              + + +

                              Get fields.

                              + + + public + get(mixed $get) : self + +

                              @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $get + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + group_by() + +

                              + + +

                              Group the results by the values in a field

                              + + + public + group_by(mixed $group_by) : self + + +
                              Parameters
                              +
                              +
                              + $group_by + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + join() + +

                              + + +

                              Perform a JOIN operation

                              + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                              @param string $table Table name to do the JOIN on

                              +
                              + +
                              Parameters
                              +
                              +
                              + $table + : mixed +
                              +
                              +
                              + +
                              +
                              + $condition + : string +
                              +
                              +

                              JOIN condition +@param string $type JOIN type +@return self

                              +
                              + +
                              +
                              + $type + : mixed + = ''
                              +
                              +
                              + +
                              +
                              + $bind + : mixed + = true
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + left_join() + +

                              + + +

                              Add a left join, with common logic for handling binding or not

                              + + + public + left_join(mixed $joins) : mixed + + +
                              Parameters
                              +
                              +
                              + $joins + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + limit() + +

                              + + +

                              Limit the result set to a certain size.

                              + + + public + limit(mixed $lim) : self + +

                              @param int $lim The number of records to limit the result to.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $lim + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + offset() + +

                              + + +

                              Offset the return set by a given number of records (useful for paging).

                              + + + public + offset(mixed $off) : self + +

                              @param int $off The number of records to offset the result by.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $off + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + or_where() + +

                              + + +

                              Add addition where conditions to the query with an OR operator.

                              + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                              +
                              + +
                              Parameters
                              +
                              +
                              + $key + : string|array<string|int, string>|callable +
                              +
                              +

                              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                              +
                              + +
                              +
                              + $value + : mixed + = null
                              +
                              +
                              + +
                              +
                              + $op + : mixed + = "="
                              +
                              +
                              + +
                              +
                              + $bind + : mixed + = true
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + order() + +

                              + + +

                              Order by

                              + + + public + order(mixed $order) : self + +

                              @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $order + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + pkey() + +

                              + + +

                              Get / set the primary key column name(s) so they can be easily returned +after an insert.

                              + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                              Parameters
                              +
                              +
                              + $pkey + : array<string|int, string> + = null
                              +
                              +

                              Primary keys

                              +
                              + +
                              +
                              + + + +
                              Return values
                              + Query|array<string|int, string> + — + + +
                              +
                              +

                              + rollback() + +

                              + + +

                              Rollback the database state to the start of the transaction.

                              + + + public + static rollback(mixed $dbh) : mixed + +

                              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dbh + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + set() + +

                              + + +

                              Set fields to a given value.

                              + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                              Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                              +
                              + +
                              Parameters
                              +
                              +
                              + $set + : string|array<string|int, string> +
                              +
                              +

                              Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                              +
                              + +
                              +
                              + $val + : mixed + = null
                              +
                              +
                              + +
                              +
                              + $bind + : mixed + = true
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + table() + +

                              + + +

                              Set table(s) to perform the query on.

                              + + + public + table(mixed $table) : self + +

                              @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $table + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + self + — + + +
                              +
                              +

                              + transaction() + +

                              + + +

                              Start a database transaction

                              + + + public + static transaction(mixed $dbh) : mixed + +

                              @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                              +
                              + +
                              Parameters
                              +
                              +
                              + $dbh + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + where() + +

                              + + +

                              Where query - multiple conditions are bound as ANDs.

                              + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                              Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                              +
                              + +
                              Parameters
                              +
                              +
                              + $key + : string|array<string|int, string>|callable +
                              +
                              +

                              Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                              +

                              @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                              +
                                $query
                              +    ->where( 'name', 'allan' )
                              +    ->where( function ($q) {
                              +      $q->where( 'location', 'Scotland' );
                              +      $q->or_where( 'location', 'Canada' );
                              +    } );
                              +
                              +
                              + +
                              +
                              + $value + : mixed + = null
                              +
                              +
                              + +
                              +
                              + $op + : mixed + = "="
                              +
                              +
                              + +
                              +
                              + $bind + : mixed + = true
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + where_group() + +

                              + + +

                              Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                              + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                              For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $inOut + : bool|callable +
                              +
                              +

                              If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                              +

                              @example

                              +
                              $query->where_group( function ($q) {
                              +  $q->where( 'location', 'Edinburgh' );
                              +  $q->where( 'position', 'Manager' );
                              +} );
                              +
                              +
                              + +
                              +
                              + $op + : mixed + = 'AND'
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + where_in() + +

                              + + +

                              Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                              + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                              Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                              +
                              + +
                              Parameters
                              +
                              +
                              + $field + : mixed +
                              +
                              +
                              + +
                              +
                              + $arr + : mixed +
                              +
                              +
                              + +
                              +
                              + $operator + : mixed + = "AND"
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + _build_limit() + +

                              + + +

                              Create the LIMIT / OFFSET string

                              + + + protected + _build_limit() : string + +

                              MySQL and Postgres style - anything else can have the driver override

                              +
                              + + + + +
                              Return values
                              + string + — +

                              @internal

                              +
                              + + +
                              +
                              +

                              + _escape_field() + +

                              + + +

                              Escape quotes in a field identifier

                              + + + protected + _escape_field(mixed $field) : mixed + +

                              @internal

                              +
                              + +
                              Parameters
                              +
                              +
                              + $field + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + _exec() + +

                              + + + + + protected + _exec() : mixed + +
                              + + + + +
                              Return values
                              + mixed + — + + +
                              +
                              +

                              + _prepare() + +

                              + + +

                              Prepare the SQL query by populating the bound variables.

                              + + + protected + _prepare(mixed $sql) : void + +

                              Provided by the driver

                              +
                              + +
                              Parameters
                              +
                              +
                              + $sql + : mixed +
                              +
                              +
                              + +
                              +
                              + + + +
                              Return values
                              + void + — +

                              @internal

                              +
                              + + +
                              +
                              + +
                              +
                              +
                              +
                              +
                              
                              +        
                              + +
                              +
                              + + + +
                              +
                              +
                              +
                              +

                              Search results

                              + +
                              +
                              +
                                +
                                +
                                +
                                +
                                +
                                + + +
                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteResult.html new file mode 100644 index 00000000..1170365d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqliteResult.html @@ -0,0 +1,515 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                +

                                Editor PHP 2.1.3

                                + + + + + +
                                + +
                                +
                                + + + + +
                                + + +
                                +

                                + SqliteResult + + + extends Result + + +
                                + in package + +
                                + + +

                                + + + +

                                Sqlite driver for DataTables Database Result class

                                + +

                                @internal

                                +
                                + + + + + + + + +

                                + Table of Contents + +

                                + +
                                +
                                + __construct() + +  : mixed +
                                +
                                + +
                                + count() + +  : mixed +
                                +
                                Count the number of rows in the result set.
                                + +
                                + fetch() + +  : array<string|int, mixed> +
                                +
                                Get the next row in a result set
                                + +
                                + fetchAll() + +  : array<string|int, mixed> +
                                +
                                Get all rows in the result set
                                + +
                                + insertId() + +  : mixed +
                                +
                                After an INSERT query, get the ID that was inserted.
                                + +
                                + + + + + + + +
                                +

                                + Methods + +

                                +
                                +

                                + __construct() + +

                                + + + + + public + __construct(mixed $dbh, mixed $stmt) : mixed + +
                                + +
                                Parameters
                                +
                                +
                                + $dbh + : mixed +
                                +
                                +
                                + +
                                +
                                + $stmt + : mixed +
                                +
                                +
                                + +
                                +
                                + + + +
                                Return values
                                + mixed + — + + +
                                +
                                +

                                + count() + +

                                + + +

                                Count the number of rows in the result set.

                                + + + public + count() : mixed + +

                                @return int

                                +
                                + + + + +
                                Return values
                                + mixed + — + + +
                                +
                                +

                                + fetch() + +

                                + + +

                                Get the next row in a result set

                                + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                +
                                + +
                                Parameters
                                +
                                +
                                + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                +
                                +
                                + +
                                +
                                + + + +
                                Return values
                                + array<string|int, mixed> + — + + +
                                +
                                +

                                + fetchAll() + +

                                + + +

                                Get all rows in the result set

                                + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                +
                                + +
                                Parameters
                                +
                                +
                                + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                +
                                +
                                + +
                                +
                                + + + +
                                Return values
                                + array<string|int, mixed> + — + + +
                                +
                                +

                                + insertId() + +

                                + + +

                                After an INSERT query, get the ID that was inserted.

                                + + + public + insertId() : mixed + +

                                @return int

                                +
                                + + + + +
                                Return values
                                + mixed + — + + +
                                +
                                + +
                                +
                                +
                                +
                                +
                                
                                +        
                                + +
                                +
                                + + + +
                                +
                                +
                                +
                                +

                                Search results

                                + +
                                +
                                +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  + + +
                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverQuery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverQuery.html new file mode 100644 index 00000000..b61e5816 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverQuery.html @@ -0,0 +1,2227 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                  +

                                  Editor PHP 2.1.3

                                  + + + + + +
                                  + +
                                  +
                                  + + + + +
                                  + + +
                                  +

                                  + SqlserverQuery + + + extends Query + + +
                                  + in package + +
                                  + + +

                                  + + + +

                                  SQL Server driver for DataTables Database Query class

                                  + +

                                  @internal

                                  +
                                  + + + + + + + + +

                                  + Table of Contents + +

                                  + +
                                  +
                                  + $_identifier_limiter + +  : mixed +
                                  +
                                  + +
                                  + $_supportsAsAlias + +  : mixed +
                                  +
                                  + +
                                  + $_whereInCnt + +  : mixed +
                                  +
                                  + +
                                  + __construct() + +  : mixed +
                                  +
                                  Query instance constructor.
                                  + +
                                  + and_where() + +  : mixed +
                                  +
                                  Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                                  + +
                                  + bind() + +  : Query +
                                  +
                                  Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                                  + +
                                  + commit() + +  : mixed +
                                  +
                                  Commit a transaction.
                                  + +
                                  + connect() + +  : mixed +
                                  +
                                  Database connection - override by the database driver.
                                  + +
                                  + database() + +  : DataTable +
                                  +
                                  Get the Database host for this query instance
                                  + +
                                  + distinct() + +  : Query +
                                  +
                                  Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                                  + +
                                  + dsnPostfix() + +  : Query +
                                  +
                                  Common helper for the drivers to handle a PDO DSN postfix
                                  + +
                                  + exec() + +  : Result +
                                  +
                                  Execute the query.
                                  + +
                                  + get() + +  : self +
                                  +
                                  Get fields.
                                  + +
                                  + group_by() + +  : self +
                                  +
                                  Group the results by the values in a field
                                  + +
                                  + join() + +  : mixed +
                                  +
                                  Perform a JOIN operation
                                  + +
                                  + left_join() + +  : mixed +
                                  +
                                  Add a left join, with common logic for handling binding or not
                                  + +
                                  + limit() + +  : self +
                                  +
                                  Limit the result set to a certain size.
                                  + +
                                  + offset() + +  : self +
                                  +
                                  Offset the return set by a given number of records (useful for paging).
                                  + +
                                  + or_where() + +  : mixed +
                                  +
                                  Add addition where conditions to the query with an OR operator.
                                  + +
                                  + order() + +  : self +
                                  +
                                  Order by
                                  + +
                                  + pkey() + +  : Query|array<string|int, string> +
                                  +
                                  Get / set the primary key column name(s) so they can be easily returned +after an insert.
                                  + +
                                  + rollback() + +  : mixed +
                                  +
                                  Rollback the database state to the start of the transaction.
                                  + +
                                  + set() + +  : mixed +
                                  +
                                  Set fields to a given value.
                                  + +
                                  + table() + +  : self +
                                  +
                                  Set table(s) to perform the query on.
                                  + +
                                  + transaction() + +  : mixed +
                                  +
                                  Start a database transaction
                                  + +
                                  + where() + +  : mixed +
                                  +
                                  Where query - multiple conditions are bound as ANDs.
                                  + +
                                  + where_group() + +  : mixed +
                                  +
                                  Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                                  + +
                                  + where_in() + +  : mixed +
                                  +
                                  Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                                  + +
                                  + _build_limit() + +  : string +
                                  +
                                  Create the LIMIT / OFFSET string
                                  + +
                                  + _escape_field() + +  : mixed +
                                  +
                                  Escape quotes in a field identifier
                                  + +
                                  + _exec() + +  : mixed +
                                  +
                                  + +
                                  + _prepare() + +  : void +
                                  +
                                  Prepare the SQL query by populating the bound variables.
                                  + +
                                  + + + + + + +
                                  +

                                  + Properties + +

                                  +
                                  +

                                  + $_identifier_limiter + + + +

                                  + + + + + protected + mixed + $_identifier_limiter + = array('[', ']') + +
                                  + +
                                  + + + +
                                  +
                                  +

                                  + $_supportsAsAlias + + + +

                                  + + + + + protected + mixed + $_supportsAsAlias + = true + +
                                  + +
                                  + + + +
                                  +
                                  +

                                  + $_whereInCnt + + + +

                                  + + + + + protected + mixed + $_whereInCnt + = 1 + +
                                  + +
                                  + + + +
                                  +
                                  + +
                                  +

                                  + Methods + +

                                  +
                                  +

                                  + __construct() + +

                                  + + +

                                  Query instance constructor.

                                  + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                                  Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dbHost + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $type + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $table + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + and_where() + +

                                  + + +

                                  Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                                  + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $key + : string|array<string|int, string>|callable +
                                  +
                                  +

                                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                  +
                                  + +
                                  +
                                  + $value + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + $op + : mixed + = "="
                                  +
                                  +
                                  + +
                                  +
                                  + $bind + : mixed + = true
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + bind() + +

                                  + + +

                                  Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                                  + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                                  Parameters
                                  +
                                  +
                                  + $name + : string +
                                  +
                                  +

                                  Parameter name. This should include a leading colon

                                  +
                                  + +
                                  +
                                  + $value + : string +
                                  +
                                  +

                                  Value to bind

                                  +
                                  + +
                                  +
                                  + $type + : mixed + = null
                                  +
                                  +

                                  Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + Query + — + + +
                                  +
                                  +

                                  + commit() + +

                                  + + +

                                  Commit a transaction.

                                  + + + public + static commit(mixed $dbh) : mixed + +

                                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dbh + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + connect() + +

                                  + + +

                                  Database connection - override by the database driver.

                                  + + + public + static connect(mixed $user[, mixed $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                                  @param string|array $user User name or all parameters in an array

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $user + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $pass + : mixed + = ''
                                  +
                                  +

                                  Password +@param string $host Host name +@param string $db Database name +@return Query

                                  +
                                  + +
                                  +
                                  + $host + : mixed + = ''
                                  +
                                  +
                                  + +
                                  +
                                  + $port + : mixed + = ''
                                  +
                                  +
                                  + +
                                  +
                                  + $db + : mixed + = ''
                                  +
                                  +
                                  + +
                                  +
                                  + $dsn + : mixed + = ''
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + database() + +

                                  + + +

                                  Get the Database host for this query instance

                                  + + + public + database() : DataTable + + + + + +
                                  Return values
                                  + DataTable + — +

                                  Database class instance

                                  +
                                  + + +
                                  +
                                  +

                                  + distinct() + +

                                  + + +

                                  Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                                  + + + public + distinct(mixed $dis) : Query + +

                                  @param boolean $dis Optional

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dis + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + Query + — + + +
                                  +
                                  +

                                  + dsnPostfix() + +

                                  + + +

                                  Common helper for the drivers to handle a PDO DSN postfix

                                  + + + public + static dsnPostfix(mixed $dsn) : Query + +

                                  @param string $dsn DSN postfix to use

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dsn + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + Query + — +

                                  @internal

                                  +
                                  + + +
                                  +
                                  +

                                  + exec() + +

                                  + + +

                                  Execute the query.

                                  + + + public + exec([mixed $sql = null ]) : Result + +

                                  @param string $sql SQL string to execute (only if _type is 'raw').

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $sql + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + Result + — + + +
                                  +
                                  +

                                  + get() + +

                                  + + +

                                  Get fields.

                                  + + + public + get(mixed $get) : self + +

                                  @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $get + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + group_by() + +

                                  + + +

                                  Group the results by the values in a field

                                  + + + public + group_by(mixed $group_by) : self + + +
                                  Parameters
                                  +
                                  +
                                  + $group_by + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + join() + +

                                  + + +

                                  Perform a JOIN operation

                                  + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                                  @param string $table Table name to do the JOIN on

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $table + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $condition + : string +
                                  +
                                  +

                                  JOIN condition +@param string $type JOIN type +@return self

                                  +
                                  + +
                                  +
                                  + $type + : mixed + = ''
                                  +
                                  +
                                  + +
                                  +
                                  + $bind + : mixed + = true
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + left_join() + +

                                  + + +

                                  Add a left join, with common logic for handling binding or not

                                  + + + public + left_join(mixed $joins) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $joins + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + limit() + +

                                  + + +

                                  Limit the result set to a certain size.

                                  + + + public + limit(mixed $lim) : self + +

                                  @param int $lim The number of records to limit the result to.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $lim + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + offset() + +

                                  + + +

                                  Offset the return set by a given number of records (useful for paging).

                                  + + + public + offset(mixed $off) : self + +

                                  @param int $off The number of records to offset the result by.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $off + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + or_where() + +

                                  + + +

                                  Add addition where conditions to the query with an OR operator.

                                  + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $key + : string|array<string|int, string>|callable +
                                  +
                                  +

                                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                  +
                                  + +
                                  +
                                  + $value + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + $op + : mixed + = "="
                                  +
                                  +
                                  + +
                                  +
                                  + $bind + : mixed + = true
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + order() + +

                                  + + +

                                  Order by

                                  + + + public + order(mixed $order) : self + +

                                  @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $order + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + pkey() + +

                                  + + +

                                  Get / set the primary key column name(s) so they can be easily returned +after an insert.

                                  + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                                  Parameters
                                  +
                                  +
                                  + $pkey + : array<string|int, string> + = null
                                  +
                                  +

                                  Primary keys

                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + Query|array<string|int, string> + — + + +
                                  +
                                  +

                                  + rollback() + +

                                  + + +

                                  Rollback the database state to the start of the transaction.

                                  + + + public + static rollback(mixed $dbh) : mixed + +

                                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dbh + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + set() + +

                                  + + +

                                  Set fields to a given value.

                                  + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                                  Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $set + : string|array<string|int, string> +
                                  +
                                  +

                                  Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                                  +
                                  + +
                                  +
                                  + $val + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + $bind + : mixed + = true
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + table() + +

                                  + + +

                                  Set table(s) to perform the query on.

                                  + + + public + table(mixed $table) : self + +

                                  @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $table + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + self + — + + +
                                  +
                                  +

                                  + transaction() + +

                                  + + +

                                  Start a database transaction

                                  + + + public + static transaction(mixed $dbh) : mixed + +

                                  @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $dbh + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + where() + +

                                  + + +

                                  Where query - multiple conditions are bound as ANDs.

                                  + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                  Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $key + : string|array<string|int, string>|callable +
                                  +
                                  +

                                  Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                  +

                                  @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                                  +
                                    $query
                                  +    ->where( 'name', 'allan' )
                                  +    ->where( function ($q) {
                                  +      $q->where( 'location', 'Scotland' );
                                  +      $q->or_where( 'location', 'Canada' );
                                  +    } );
                                  +
                                  +
                                  + +
                                  +
                                  + $value + : mixed + = null
                                  +
                                  +
                                  + +
                                  +
                                  + $op + : mixed + = "="
                                  +
                                  +
                                  + +
                                  +
                                  + $bind + : mixed + = true
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + where_group() + +

                                  + + +

                                  Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                                  + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                                  For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $inOut + : bool|callable +
                                  +
                                  +

                                  If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                                  +

                                  @example

                                  +
                                  $query->where_group( function ($q) {
                                  +  $q->where( 'location', 'Edinburgh' );
                                  +  $q->where( 'position', 'Manager' );
                                  +} );
                                  +
                                  +
                                  + +
                                  +
                                  + $op + : mixed + = 'AND'
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + where_in() + +

                                  + + +

                                  Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                                  + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                                  Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $field + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $arr + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + $operator + : mixed + = "AND"
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + _build_limit() + +

                                  + + +

                                  Create the LIMIT / OFFSET string

                                  + + + protected + _build_limit() : string + +

                                  MySQL and Postgres style - anything else can have the driver override

                                  +
                                  + + + + +
                                  Return values
                                  + string + — +

                                  @internal

                                  +
                                  + + +
                                  +
                                  +

                                  + _escape_field() + +

                                  + + +

                                  Escape quotes in a field identifier

                                  + + + protected + _escape_field(mixed $field) : mixed + +

                                  @internal

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $field + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + _exec() + +

                                  + + + + + protected + _exec() : mixed + +
                                  + + + + +
                                  Return values
                                  + mixed + — + + +
                                  +
                                  +

                                  + _prepare() + +

                                  + + +

                                  Prepare the SQL query by populating the bound variables.

                                  + + + protected + _prepare(mixed $sql) : void + +

                                  Provided by the driver

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $sql + : mixed +
                                  +
                                  +
                                  + +
                                  +
                                  + + + +
                                  Return values
                                  + void + — +

                                  @internal

                                  +
                                  + + +
                                  +
                                  + +
                                  +
                                  +
                                  +
                                  +
                                  
                                  +        
                                  + +
                                  +
                                  + + + +
                                  +
                                  +
                                  +
                                  +

                                  Search results

                                  + +
                                  +
                                  +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + +
                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverResult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverResult.html new file mode 100644 index 00000000..5d47dbf4 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Driver-SqlserverResult.html @@ -0,0 +1,515 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                    +

                                    Editor PHP 2.1.3

                                    + + + + + +
                                    + +
                                    +
                                    + + + + +
                                    + + +
                                    +

                                    + SqlserverResult + + + extends Result + + +
                                    + in package + +
                                    + + +

                                    + + + +

                                    SQL Server driver for DataTables Database Result class

                                    + +

                                    @internal

                                    +
                                    + + + + + + + + +

                                    + Table of Contents + +

                                    + +
                                    +
                                    + __construct() + +  : mixed +
                                    +
                                    + +
                                    + count() + +  : mixed +
                                    +
                                    Count the number of rows in the result set.
                                    + +
                                    + fetch() + +  : array<string|int, mixed> +
                                    +
                                    Get the next row in a result set
                                    + +
                                    + fetchAll() + +  : array<string|int, mixed> +
                                    +
                                    Get all rows in the result set
                                    + +
                                    + insertId() + +  : mixed +
                                    +
                                    After an INSERT query, get the ID that was inserted.
                                    + +
                                    + + + + + + + +
                                    +

                                    + Methods + +

                                    +
                                    +

                                    + __construct() + +

                                    + + + + + public + __construct(mixed $dbh, mixed $stmt) : mixed + +
                                    + +
                                    Parameters
                                    +
                                    +
                                    + $dbh + : mixed +
                                    +
                                    +
                                    + +
                                    +
                                    + $stmt + : mixed +
                                    +
                                    +
                                    + +
                                    +
                                    + + + +
                                    Return values
                                    + mixed + — + + +
                                    +
                                    +

                                    + count() + +

                                    + + +

                                    Count the number of rows in the result set.

                                    + + + public + count() : mixed + +

                                    @return int

                                    +
                                    + + + + +
                                    Return values
                                    + mixed + — + + +
                                    +
                                    +

                                    + fetch() + +

                                    + + +

                                    Get the next row in a result set

                                    + + + public + fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                    @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                    +
                                    + +
                                    Parameters
                                    +
                                    +
                                    + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                    +
                                    +
                                    + +
                                    +
                                    + + + +
                                    Return values
                                    + array<string|int, mixed> + — + + +
                                    +
                                    +

                                    + fetchAll() + +

                                    + + +

                                    Get all rows in the result set

                                    + + + public + fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                    @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                    +
                                    + +
                                    Parameters
                                    +
                                    +
                                    + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                    +
                                    +
                                    + +
                                    +
                                    + + + +
                                    Return values
                                    + array<string|int, mixed> + — + + +
                                    +
                                    +

                                    + insertId() + +

                                    + + +

                                    After an INSERT query, get the ID that was inserted.

                                    + + + public + insertId() : mixed + +

                                    @return int

                                    +
                                    + + + + +
                                    Return values
                                    + mixed + — + + +
                                    +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    
                                    +        
                                    + +
                                    +
                                    + + + +
                                    +
                                    +
                                    +
                                    +

                                    Search results

                                    + +
                                    +
                                    +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + +
                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Query.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Query.html new file mode 100644 index 00000000..781019b7 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Query.html @@ -0,0 +1,2145 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                      +

                                      Editor PHP 2.1.3

                                      + + + + + +
                                      + +
                                      +
                                      + + + + +
                                      + + +
                                      +

                                      + Query + + +
                                      + in package + +
                                      + + +

                                      + + + +

                                      Perform an individual query on the database.

                                      + +

                                      The typical pattern for using this class is through the \DataTables\Database->query() method (and it's 'select', etc short-cuts). +Typically it would not be initialised directly.

                                      +

                                      Note that this is a stub class that a driver will extend and complete as +required for individual database types. Individual drivers could add +additional methods, but this is discouraged to ensure that the API is the +same for all database types.

                                      +
                                      + + + + + + + + +

                                      + Table of Contents + +

                                      + +
                                      +
                                      + $_supportsAsAlias + +  : mixed +
                                      +
                                      + +
                                      + $_whereInCnt + +  : mixed +
                                      +
                                      + +
                                      + __construct() + +  : mixed +
                                      +
                                      Query instance constructor.
                                      + +
                                      + and_where() + +  : mixed +
                                      +
                                      Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.
                                      + +
                                      + bind() + +  : Query +
                                      +
                                      Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.
                                      + +
                                      + commit() + +  : mixed +
                                      +
                                      Commit a transaction.
                                      + +
                                      + connect() + +  : mixed +
                                      +
                                      Database connection - override by the database driver.
                                      + +
                                      + database() + +  : DataTable +
                                      +
                                      Get the Database host for this query instance
                                      + +
                                      + distinct() + +  : Query +
                                      +
                                      Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.
                                      + +
                                      + dsnPostfix() + +  : Query +
                                      +
                                      Common helper for the drivers to handle a PDO DSN postfix
                                      + +
                                      + exec() + +  : Result +
                                      +
                                      Execute the query.
                                      + +
                                      + get() + +  : self +
                                      +
                                      Get fields.
                                      + +
                                      + group_by() + +  : self +
                                      +
                                      Group the results by the values in a field
                                      + +
                                      + join() + +  : mixed +
                                      +
                                      Perform a JOIN operation
                                      + +
                                      + left_join() + +  : mixed +
                                      +
                                      Add a left join, with common logic for handling binding or not
                                      + +
                                      + limit() + +  : self +
                                      +
                                      Limit the result set to a certain size.
                                      + +
                                      + offset() + +  : self +
                                      +
                                      Offset the return set by a given number of records (useful for paging).
                                      + +
                                      + or_where() + +  : mixed +
                                      +
                                      Add addition where conditions to the query with an OR operator.
                                      + +
                                      + order() + +  : self +
                                      +
                                      Order by
                                      + +
                                      + pkey() + +  : Query|array<string|int, string> +
                                      +
                                      Get / set the primary key column name(s) so they can be easily returned +after an insert.
                                      + +
                                      + rollback() + +  : mixed +
                                      +
                                      Rollback the database state to the start of the transaction.
                                      + +
                                      + set() + +  : mixed +
                                      +
                                      Set fields to a given value.
                                      + +
                                      + table() + +  : self +
                                      +
                                      Set table(s) to perform the query on.
                                      + +
                                      + transaction() + +  : mixed +
                                      +
                                      Start a database transaction
                                      + +
                                      + where() + +  : mixed +
                                      +
                                      Where query - multiple conditions are bound as ANDs.
                                      + +
                                      + where_group() + +  : mixed +
                                      +
                                      Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.
                                      + +
                                      + where_in() + +  : mixed +
                                      +
                                      Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.
                                      + +
                                      + _build_limit() + +  : string +
                                      +
                                      Create the LIMIT / OFFSET string
                                      + +
                                      + _escape_field() + +  : mixed +
                                      +
                                      Escape quotes in a field identifier
                                      + +
                                      + _prepare() + +  : void +
                                      +
                                      Prepare the SQL query by populating the bound variables.
                                      + +
                                      + + + + + + +
                                      +

                                      + Properties + +

                                      +
                                      +

                                      + $_supportsAsAlias + + + +

                                      + + + + + protected + mixed + $_supportsAsAlias + = true + +
                                      + +
                                      + + + +
                                      +
                                      +

                                      + $_whereInCnt + + + +

                                      + + + + + protected + mixed + $_whereInCnt + = 1 + +
                                      + +
                                      + + + +
                                      +
                                      + +
                                      +

                                      + Methods + +

                                      +
                                      +

                                      + __construct() + +

                                      + + +

                                      Query instance constructor.

                                      + + + public + __construct(mixed $dbHost, mixed $type[, mixed $table = null ]) : mixed + +

                                      Note that typically instances of this class will be automatically created +through the \DataTables\Database->query() method.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dbHost + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $type + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $table + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + and_where() + +

                                      + + +

                                      Add addition where conditions to the query with an AND operator. An alias +of `where` for naming consistency.

                                      + + + public + and_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $key + : string|array<string|int, string>|callable +
                                      +
                                      +

                                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                      +
                                      + +
                                      +
                                      + $value + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + $op + : mixed + = "="
                                      +
                                      +
                                      + +
                                      +
                                      + $bind + : mixed + = true
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + bind() + +

                                      + + +

                                      Safely bind an input value to a parameter. This is evaluated when the +query is executed. This allows user input to be safely executed without +risk of an SQL injection attack.

                                      + + + public + bind(string $name, string $value[, mixed $type = null ]) : Query + + +
                                      Parameters
                                      +
                                      +
                                      + $name + : string +
                                      +
                                      +

                                      Parameter name. This should include a leading colon

                                      +
                                      + +
                                      +
                                      + $value + : string +
                                      +
                                      +

                                      Value to bind

                                      +
                                      + +
                                      +
                                      + $type + : mixed + = null
                                      +
                                      +

                                      Data type. See the PHP PDO documentation: +http://php.net/manual/en/pdo.constants.php

                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + Query + — + + +
                                      +
                                      +

                                      + commit() + +

                                      + + +

                                      Commit a transaction.

                                      + + + public + static commit(mixed $dbh) : mixed + +

                                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dbh + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + connect() + +

                                      + + +

                                      Database connection - override by the database driver.

                                      + + + public + static connect(mixed $user[, string $pass = '' ][, mixed $host = '' ][, mixed $port = '' ][, mixed $db = '' ][, mixed $dsn = '' ]) : mixed + +

                                      @param string|array $user User name or all parameters in an array

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $user + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $pass + : string + = ''
                                      +
                                      +

                                      Password +@param string $host Host name +@param string $db Database name +@return Query

                                      +
                                      + +
                                      +
                                      + $host + : mixed + = ''
                                      +
                                      +
                                      + +
                                      +
                                      + $port + : mixed + = ''
                                      +
                                      +
                                      + +
                                      +
                                      + $db + : mixed + = ''
                                      +
                                      +
                                      + +
                                      +
                                      + $dsn + : mixed + = ''
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + database() + +

                                      + + +

                                      Get the Database host for this query instance

                                      + + + public + database() : DataTable + + + + + +
                                      Return values
                                      + DataTable + — +

                                      Database class instance

                                      +
                                      + + +
                                      +
                                      +

                                      + distinct() + +

                                      + + +

                                      Set a distinct flag for a `select` query. Note that this has no effect on +any of the other query types.

                                      + + + public + distinct(mixed $dis) : Query + +

                                      @param boolean $dis Optional

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dis + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + Query + — + + +
                                      +
                                      +

                                      + dsnPostfix() + +

                                      + + +

                                      Common helper for the drivers to handle a PDO DSN postfix

                                      + + + public + static dsnPostfix(mixed $dsn) : Query + +

                                      @param string $dsn DSN postfix to use

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dsn + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + Query + — +

                                      @internal

                                      +
                                      + + +
                                      +
                                      +

                                      + exec() + +

                                      + + +

                                      Execute the query.

                                      + + + public + exec([mixed $sql = null ]) : Result + +

                                      @param string $sql SQL string to execute (only if _type is 'raw').

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $sql + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + Result + — + + +
                                      +
                                      +

                                      + get() + +

                                      + + +

                                      Get fields.

                                      + + + public + get(mixed $get) : self + +

                                      @param string|string[] $get,... Fields to get - can be specified as +individual fields or an array of fields.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $get + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + group_by() + +

                                      + + +

                                      Group the results by the values in a field

                                      + + + public + group_by(mixed $group_by) : self + + +
                                      Parameters
                                      +
                                      +
                                      + $group_by + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + join() + +

                                      + + +

                                      Perform a JOIN operation

                                      + + + public + join(mixed $table, string $condition[, mixed $type = '' ][, mixed $bind = true ]) : mixed + +

                                      @param string $table Table name to do the JOIN on

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $table + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $condition + : string +
                                      +
                                      +

                                      JOIN condition +@param string $type JOIN type +@return self

                                      +
                                      + +
                                      +
                                      + $type + : mixed + = ''
                                      +
                                      +
                                      + +
                                      +
                                      + $bind + : mixed + = true
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + left_join() + +

                                      + + +

                                      Add a left join, with common logic for handling binding or not

                                      + + + public + left_join(mixed $joins) : mixed + + +
                                      Parameters
                                      +
                                      +
                                      + $joins + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + limit() + +

                                      + + +

                                      Limit the result set to a certain size.

                                      + + + public + limit(mixed $lim) : self + +

                                      @param int $lim The number of records to limit the result to.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $lim + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + offset() + +

                                      + + +

                                      Offset the return set by a given number of records (useful for paging).

                                      + + + public + offset(mixed $off) : self + +

                                      @param int $off The number of records to offset the result by.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $off + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + or_where() + +

                                      + + +

                                      Add addition where conditions to the query with an OR operator.

                                      + + + public + or_where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $key + : string|array<string|int, string>|callable +
                                      +
                                      +

                                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                      +
                                      + +
                                      +
                                      + $value + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + $op + : mixed + = "="
                                      +
                                      +
                                      + +
                                      +
                                      + $bind + : mixed + = true
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + order() + +

                                      + + +

                                      Order by

                                      + + + public + order(mixed $order) : self + +

                                      @param string|string[] $order Columns and direction to order by - can +be specified as individual names, an array of names, a string of comma +separated names or any combination of those.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $order + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + pkey() + +

                                      + + +

                                      Get / set the primary key column name(s) so they can be easily returned +after an insert.

                                      + + + public + pkey([array<string|int, string> $pkey = null ]) : Query|array<string|int, string> + + +
                                      Parameters
                                      +
                                      +
                                      + $pkey + : array<string|int, string> + = null
                                      +
                                      +

                                      Primary keys

                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + Query|array<string|int, string> + — + + +
                                      +
                                      +

                                      + rollback() + +

                                      + + +

                                      Rollback the database state to the start of the transaction.

                                      + + + public + static rollback(mixed $dbh) : mixed + +

                                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dbh + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + set() + +

                                      + + +

                                      Set fields to a given value.

                                      + + + public + set(string|array<string|int, string> $set[, mixed $val = null ][, mixed $bind = true ]) : mixed + +

                                      Can be used in two different ways, as set( field, value ) or as an array of +fields to set: set( array( 'fieldName' => 'value', ...) );

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $set + : string|array<string|int, string> +
                                      +
                                      +

                                      Can be given as a single string, when then $val +must be set, or as an array of key/value pairs to be set. +@param string $val When $set is given as a simple string, $set is the field +name and this is the field's value. +@param boolean $bind Should the value be bound or not +@return self

                                      +
                                      + +
                                      +
                                      + $val + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + $bind + : mixed + = true
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + table() + +

                                      + + +

                                      Set table(s) to perform the query on.

                                      + + + public + table(mixed $table) : self + +

                                      @param string|string[] $table,... Table(s) to use - can be specified as +individual names, an array of names, a string of comma separated +names or any combination of those.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $table + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + self + — + + +
                                      +
                                      +

                                      + transaction() + +

                                      + + +

                                      Start a database transaction

                                      + + + public + static transaction(mixed $dbh) : mixed + +

                                      @param \PDO $dbh The Database handle (typically a PDO object, but not always).

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $dbh + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + where() + +

                                      + + +

                                      Where query - multiple conditions are bound as ANDs.

                                      + + + public + where(string|array<string|int, string>|callable $key[, mixed $value = null ][, mixed $op = "=" ][, mixed $bind = true ]) : mixed + +

                                      Can be used in two different ways, as where( field, value ) or as an array of +conditions to use: where( array('fieldName', ...), array('value', ...) );

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $key + : string|array<string|int, string>|callable +
                                      +
                                      +

                                      Single field name, or an array of field names. +If given as a function (i.e. a closure), the function is called, passing the +query itself in as the only parameter, so the function can add extra conditions +with parentheses around the additional parameters. +@param string|string[] $value Single field value, or an array of +values. Can be null to search for IS NULL or IS NOT NULL (depending +on the value of $op which should be = or !=. +@param string $op Condition operator: <, >, = etc +@param boolean $bind Escape the value (true, default) or not (false). +@return self

                                      +

                                      @example +The following will produce +'WHERE name='allan' AND ( location='Scotland' OR location='Canada' ):

                                      +
                                        $query
                                      +    ->where( 'name', 'allan' )
                                      +    ->where( function ($q) {
                                      +      $q->where( 'location', 'Scotland' );
                                      +      $q->or_where( 'location', 'Canada' );
                                      +    } );
                                      +
                                      +
                                      + +
                                      +
                                      + $value + : mixed + = null
                                      +
                                      +
                                      + +
                                      +
                                      + $op + : mixed + = "="
                                      +
                                      +
                                      + +
                                      +
                                      + $bind + : mixed + = true
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + where_group() + +

                                      + + +

                                      Provide grouping for WHERE conditions. Use it with a callback function to +automatically group any conditions applied inside the method.

                                      + + + public + where_group(bool|callable $inOut[, mixed $op = 'AND' ]) : mixed + +

                                      For legacy reasons this method also provides the ability to explicitly +define if a grouping bracket should be opened or closed in the query. +This method is not prefer.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $inOut + : bool|callable +
                                      +
                                      +

                                      If callable it will create the group +automatically and pass the query into the called function. For +legacy operations use true to open brackets, false to close. +@param string $op Conditional operator to use to join to the +preceding condition. Default AND. +@return self

                                      +

                                      @example

                                      +
                                      $query->where_group( function ($q) {
                                      +  $q->where( 'location', 'Edinburgh' );
                                      +  $q->where( 'position', 'Manager' );
                                      +} );
                                      +
                                      +
                                      + +
                                      +
                                      + $op + : mixed + = 'AND'
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + where_in() + +

                                      + + +

                                      Provide a method that can be used to perform a `WHERE ... IN (...)` query +with bound values and parameters.

                                      + + + public + where_in(mixed $field, mixed $arr[, mixed $operator = "AND" ]) : mixed + +

                                      Note this is only suitable for local values, not a sub-query. For that use +->where() with an unbound value.

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $field + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $arr + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + $operator + : mixed + = "AND"
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + _build_limit() + +

                                      + + +

                                      Create the LIMIT / OFFSET string

                                      + + + protected + _build_limit() : string + +

                                      MySQL and Postgres style - anything else can have the driver override

                                      +
                                      + + + + +
                                      Return values
                                      + string + — +

                                      @internal

                                      +
                                      + + +
                                      +
                                      +

                                      + _escape_field() + +

                                      + + +

                                      Escape quotes in a field identifier

                                      + + + protected + _escape_field(mixed $field) : mixed + +

                                      @internal

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $field + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + mixed + — + + +
                                      +
                                      +

                                      + _prepare() + +

                                      + + +

                                      Prepare the SQL query by populating the bound variables.

                                      + + + protected + abstract _prepare(mixed $sql) : void + +

                                      Provided by the driver

                                      +
                                      + +
                                      Parameters
                                      +
                                      +
                                      + $sql + : mixed +
                                      +
                                      +
                                      + +
                                      +
                                      + + + +
                                      Return values
                                      + void + — +

                                      @internal

                                      +
                                      + + +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      +
                                      
                                      +        
                                      + +
                                      +
                                      + + + +
                                      +
                                      +
                                      +
                                      +

                                      Search results

                                      + +
                                      +
                                      +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        + + +
                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Result.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Result.html new file mode 100644 index 00000000..b91e0269 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database-Result.html @@ -0,0 +1,457 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                        +

                                        Editor PHP 2.1.3

                                        + + + + + +
                                        + +
                                        +
                                        + + + + +
                                        + + +
                                        +

                                        + Result + + +
                                        + in package + +
                                        + + +

                                        + + + +

                                        Result object given by a {@see Query} performed on a database.

                                        + +

                                        The typical pattern for using this class is to receive an instance of it as a +result of using the Database and Query class methods that +return a result. This class should not be initialised independently.

                                        +

                                        Note that this is a stub class that a driver will extend and complete as +required for individual database types. Individual drivers could add +additional methods, but this is discouraged to ensure that the API is the +same for all database types.

                                        +
                                        + + + + + + + + +

                                        + Table of Contents + +

                                        + +
                                        +
                                        + count() + +  : mixed +
                                        +
                                        Count the number of rows in the result set.
                                        + +
                                        + fetch() + +  : array<string|int, mixed> +
                                        +
                                        Get the next row in a result set
                                        + +
                                        + fetchAll() + +  : array<string|int, mixed> +
                                        +
                                        Get all rows in the result set
                                        + +
                                        + insertId() + +  : mixed +
                                        +
                                        After an INSERT query, get the ID that was inserted.
                                        + +
                                        + + + + + + + +
                                        +

                                        + Methods + +

                                        +
                                        +

                                        + count() + +

                                        + + +

                                        Count the number of rows in the result set.

                                        + + + public + abstract count() : mixed + +

                                        @return int

                                        +
                                        + + + + +
                                        Return values
                                        + mixed + — + + +
                                        +
                                        +

                                        + fetch() + +

                                        + + +

                                        Get the next row in a result set

                                        + + + public + abstract fetch([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                        @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                        +
                                        + +
                                        Parameters
                                        +
                                        +
                                        + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                        +
                                        +
                                        + +
                                        +
                                        + + + +
                                        Return values
                                        + array<string|int, mixed> + — + + +
                                        +
                                        +

                                        + fetchAll() + +

                                        + + +

                                        Get all rows in the result set

                                        + + + public + abstract fetchAll([mixed $fetchType = PDO::FETCH_ASSOC ]) : array<string|int, mixed> + +

                                        @param int PDO row fetch style - PDO::FETCH_ASSOC is the default

                                        +
                                        + +
                                        Parameters
                                        +
                                        +
                                        + $fetchType + : mixed + = PDO::FETCH_ASSOC
                                        +
                                        +
                                        + +
                                        +
                                        + + + +
                                        Return values
                                        + array<string|int, mixed> + — + + +
                                        +
                                        +

                                        + insertId() + +

                                        + + +

                                        After an INSERT query, get the ID that was inserted.

                                        + + + public + abstract insertId() : mixed + +

                                        @return int

                                        +
                                        + + + + +
                                        Return values
                                        + mixed + — + + +
                                        +
                                        + +
                                        +
                                        +
                                        +
                                        +
                                        
                                        +        
                                        + +
                                        +
                                        + + + +
                                        +
                                        +
                                        +
                                        +

                                        Search results

                                        + +
                                        +
                                        +
                                          +
                                          +
                                          +
                                          +
                                          +
                                          + + +
                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database.html new file mode 100644 index 00000000..99bbedfa --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Database.html @@ -0,0 +1,1476 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                          +

                                          Editor PHP 2.1.3

                                          + + + + + +
                                          + +
                                          +
                                          + + + + +
                                          + + +
                                          +

                                          + Database + + +
                                          + in package + +
                                          + + +

                                          + + + +

                                          DataTables Database connection object.

                                          + +

                                          Create a database connection which may then have queries performed upon it.

                                          +

                                          This is a database abstraction class that can be used on multiple different +databases. As a result of this, it might not be suitable to perform complex +queries through this interface or vendor specific queries, but everything +required for basic database interaction is provided through the abstracted +methods.

                                          +
                                          + + + + + + + + +

                                          + Table of Contents + +

                                          + +
                                          +
                                          + __construct() + +  : mixed +
                                          +
                                          Database instance constructor.
                                          + +
                                          + any() + +  : bool +
                                          +
                                          Determine if there is any data in the table that matches the query +condition
                                          + +
                                          + commit() + +  : self +
                                          +
                                          Commit a database transaction.
                                          + +
                                          + count() + +  : mixed +
                                          +
                                          Get a count from a table.
                                          + +
                                          + debug() + +  : bool|self +
                                          +
                                          Get / set debug mode.
                                          + +
                                          + delete() + +  : mixed +
                                          +
                                          Perform a delete query on a table.
                                          + +
                                          + insert() + +  : mixed +
                                          +
                                          Insert data into a table.
                                          + +
                                          + push() + +  : mixed +
                                          +
                                          Update or Insert data. When doing an insert, the where condition is +added as a set field
                                          + +
                                          + query() + +  : mixed +
                                          +
                                          Create a query object to build a database query.
                                          + +
                                          + quote() + +  : mixed +
                                          +
                                          Quote a string for a quote. Note you should generally use a bind!
                                          + +
                                          + raw() + +  : mixed +
                                          +
                                          Create a `Query` object that will execute a custom SQL query. This is +similar to the `sql` method, but in this case you must call the `exec()` +method of the returned `Query` object manually. This can be useful if you +wish to bind parameters using the query `bind` method to ensure data is +properly escaped.
                                          + +
                                          + resource() + +  : resource +
                                          +
                                          Get the database resource connector. This is typically a PDO object.
                                          + +
                                          + rollback() + +  : self +
                                          +
                                          Rollback the database state to the start of the transaction.
                                          + +
                                          + select() + +  : mixed +
                                          +
                                          Select data from a table.
                                          + +
                                          + selectDistinct() + +  : mixed +
                                          +
                                          Select distinct data from a table.
                                          + +
                                          + sql() + +  : mixed +
                                          +
                                          Execute an raw SQL query - i.e. give the method your own SQL, rather +than having the Database classes building it for you.
                                          + +
                                          + transaction() + +  : self +
                                          +
                                          Start a new database transaction.
                                          + +
                                          + type() + +  : mixed +
                                          +
                                          Get the database type (e.g. Postgres, Mysql, etc)
                                          + +
                                          + update() + +  : mixed +
                                          +
                                          Update data.
                                          + +
                                          + + + + + + + +
                                          +

                                          + Methods + +

                                          +
                                          +

                                          + __construct() + +

                                          + + +

                                          Database instance constructor.

                                          + + + public + __construct(mixed $opts) : mixed + +

                                          @param string[] $opts Array of connection parameters for the database:

                                          +
                                            array(
                                          +      "user" => "", // User name
                                          +      "pass" => "", // Password
                                          +      "host" => "", // Host name
                                          +      "port" => "", // Port
                                          +      "db"   => "", // Database name
                                          +      "type" => ""  // Datable type: "Mysql", "Postgres" or "Sqlite"
                                          +  )
                                          +
                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $opts + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + any() + +

                                          + + +

                                          Determine if there is any data in the table that matches the query +condition

                                          + + + public + any(string|array<string|int, string> $table[, array<string|int, mixed> $where = null ]) : bool + + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon.

                                          +
                                          + +
                                          +
                                          + $where + : array<string|int, mixed> + = null
                                          +
                                          +

                                          Where condition for what to select - see Query->where().

                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + bool + — +

                                          Boolean flag - true if there were rows

                                          +
                                          + + +
                                          +
                                          +

                                          + commit() + +

                                          + + +

                                          Commit a database transaction.

                                          + + + public + commit() : self + +

                                          Use with Database->transaction() and Database->rollback().

                                          +
                                          + + + + +
                                          Return values
                                          + self + — + + +
                                          +
                                          +

                                          + count() + +

                                          + + +

                                          Get a count from a table.

                                          + + + public + count(mixed $table[, string $field = "id" ][, mixed $where = null ]) : mixed + +

                                          @param string|string[] $table Table name(s) to act upon.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + $field + : string + = "id"
                                          +
                                          +

                                          Primary key field name +@param array $where Where condition for what to select - see Query->where(). +@return Number

                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + debug() + +

                                          + + +

                                          Get / set debug mode.

                                          + + + public + debug([mixed $set = null ]) : bool|self + +

                                          @param boolean $_ Debug mode state. If not given, then used as a getter.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $set + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + bool|self + — +

                                          Debug mode state if no parameter is given, or +self if used as a setter.

                                          +
                                          + + +
                                          +
                                          +

                                          + delete() + +

                                          + + +

                                          Perform a delete query on a table.

                                          + + + public + delete(string|array<string|int, string> $table[, mixed $where = null ]) : mixed + +

                                          This is a short cut method that creates an update query and then uses +the query('delete'), table, where and exec methods of the query.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon. +@param array $where Where condition for what to delete - see Query->where(). +@return Result

                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + insert() + +

                                          + + +

                                          Insert data into a table.

                                          + + + public + insert(string|array<string|int, string> $table, mixed $set[, mixed $pkey = '' ]) : mixed + +

                                          This is a short cut method that creates an update query and then uses +the query('insert'), table, set and exec methods of the query.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon. +@param array $set Field names and values to set - see Query->set(). +@param array $pkey Primary key column names (this is an array for +forwards compt, although only the first item in the array is actually +used). This doesn't need to be set, but it must be if you want to use +the Result->insertId() method. +@return Result

                                          +
                                          + +
                                          +
                                          + $set + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + $pkey + : mixed + = ''
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + push() + +

                                          + + +

                                          Update or Insert data. When doing an insert, the where condition is +added as a set field

                                          + + + public + push(mixed $table, array<string|int, mixed> $set[, mixed $where = null ][, mixed $pkey = '' ]) : mixed + +

                                          @param string|string[] $table Table name(s) to act upon.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + $set + : array<string|int, mixed> +
                                          +
                                          +

                                          Field names and values to set - see Query->set(). +@param array $where Where condition for what to update - see Query->where(). +@param array $pkey Primary key column names (this is an array for +forwards compt, although only the first item in the array is actually +used). This doesn't need to be set, but it must be if you want to use +the Result->insertId() method. Only used if an insert is performed. +@return Result

                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + $pkey + : mixed + = ''
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + query() + +

                                          + + +

                                          Create a query object to build a database query.

                                          + + + public + query(mixed $type[, string|array<string|int, string> $table = null ]) : mixed + +

                                          @param string $type Query type - select, insert, update or delete.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $type + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + $table + : string|array<string|int, string> + = null
                                          +
                                          +

                                          Table name(s) to act upon. +@return Query

                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + quote() + +

                                          + + +

                                          Quote a string for a quote. Note you should generally use a bind!

                                          + + + public + quote(mixed $val[, string $type = PDO::PARAM_STR ]) : mixed + +

                                          @param string $val Value to quote

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $val + : mixed +
                                          +
                                          +
                                          + +
                                          +
                                          + $type + : string + = PDO::PARAM_STR
                                          +
                                          +

                                          Value type +@return string

                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + raw() + +

                                          + + +

                                          Create a `Query` object that will execute a custom SQL query. This is +similar to the `sql` method, but in this case you must call the `exec()` +method of the returned `Query` object manually. This can be useful if you +wish to bind parameters using the query `bind` method to ensure data is +properly escaped.

                                          + + + public + raw() : mixed + +

                                          @return Result

                                          +
                                          + + + +
                                          + Tags + +
                                          +
                                          +
                                          + example +
                                          +
                                          + +

                                          Safely escape user input

                                          +
                                          $db
                                          +  ->raw()
                                          +  ->bind( ':date', $_POST['date'] )
                                          +  ->exec( 'SELECT * FROM staff where date < :date' );
                                          +
                                          +
                                          + +
                                          +
                                          + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + resource() + +

                                          + + +

                                          Get the database resource connector. This is typically a PDO object.

                                          + + + public + resource() : resource + + + + + +
                                          Return values
                                          + resource + — +

                                          PDO connection resource (driver dependent)

                                          +
                                          + + +
                                          +
                                          +

                                          + rollback() + +

                                          + + +

                                          Rollback the database state to the start of the transaction.

                                          + + + public + rollback() : self + +

                                          Use with Database->transaction() and Database->commit().

                                          +
                                          + + + + +
                                          Return values
                                          + self + — + + +
                                          +
                                          +

                                          + select() + +

                                          + + +

                                          Select data from a table.

                                          + + + public + select(string|array<string|int, string> $table[, mixed $field = "*" ][, mixed $where = null ][, mixed $orderBy = null ]) : mixed + +

                                          This is a short cut method that creates an update query and then uses +the query('select'), table, get, where and exec methods of the query.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon. +@param array $field Fields to get from the table(s) - see Query->get(). +@param array $where Where condition for what to select - see Query->where(). +@param array $orderBy Order condition - see Query->order(). +@return Result

                                          +
                                          + +
                                          +
                                          + $field + : mixed + = "*"
                                          +
                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + $orderBy + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + selectDistinct() + +

                                          + + +

                                          Select distinct data from a table.

                                          + + + public + selectDistinct(string|array<string|int, string> $table[, mixed $field = "*" ][, mixed $where = null ][, mixed $orderBy = null ]) : mixed + +

                                          This is a short cut method that creates an update query and then uses the +query('select'), distinct ,table, get, where and exec methods of the +query.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon. +@param array $field Fields to get from the table(s) - see Query->get(). +@param array $where Where condition for what to select - see Query->where(). +@param array $orderBy Order condition - see Query->order(). +@return Result

                                          +
                                          + +
                                          +
                                          + $field + : mixed + = "*"
                                          +
                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + $orderBy + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + sql() + +

                                          + + +

                                          Execute an raw SQL query - i.e. give the method your own SQL, rather +than having the Database classes building it for you.

                                          + + + public + sql(string $sql) : mixed + +

                                          This method will execute the given SQL immediately. Use the raw() +method if you need the ability to add bound parameters.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $sql + : string +
                                          +
                                          +

                                          SQL string to execute (only if _type is 'raw'). +@return Result

                                          +

                                          @example +Basic select

                                          +
                                          $result = $db->sql( 'SELECT * FROM myTable;' );
                                          +
                                          +

                                          @example +Set the character set of the connection

                                          +
                                          $db->sql("SET character_set_client=utf8");
                                          +$db->sql("SET character_set_connection=utf8");
                                          +$db->sql("SET character_set_results=utf8");
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + transaction() + +

                                          + + +

                                          Start a new database transaction.

                                          + + + public + transaction() : self + +

                                          Use with Database->commit() and Database->rollback().

                                          +
                                          + + + + +
                                          Return values
                                          + self + — + + +
                                          +
                                          +

                                          + type() + +

                                          + + +

                                          Get the database type (e.g. Postgres, Mysql, etc)

                                          + + + public + type() : mixed + + + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          +

                                          + update() + +

                                          + + +

                                          Update data.

                                          + + + public + update(string|array<string|int, string> $table[, mixed $set = null ][, mixed $where = null ]) : mixed + +

                                          This is a short cut method that creates an update query and then uses +the query('update'), table, set, where and exec methods of the query.

                                          +
                                          + +
                                          Parameters
                                          +
                                          +
                                          + $table + : string|array<string|int, string> +
                                          +
                                          +

                                          Table name(s) to act upon. +@param array $set Field names and values to set - see Query->set(). +@param array $where Where condition for what to update - see Query->where(). +@return Result

                                          +
                                          + +
                                          +
                                          + $set + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + $where + : mixed + = null
                                          +
                                          +
                                          + +
                                          +
                                          + + + +
                                          Return values
                                          + mixed + — + + +
                                          +
                                          + +
                                          +
                                          +
                                          +
                                          +
                                          
                                          +        
                                          + +
                                          +
                                          + + + +
                                          +
                                          +
                                          +
                                          +

                                          Search results

                                          + +
                                          +
                                          +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            + + +
                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Field.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Field.html new file mode 100644 index 00000000..92d6cdbb --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Field.html @@ -0,0 +1,2105 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                            +

                                            Editor PHP 2.1.3

                                            + + + + + +
                                            + +
                                            +
                                            + + + + +
                                            + + +
                                            +

                                            + Field + + + extends Ext + + +
                                            + in package + +
                                            + + +

                                            + + + +

                                            Field definitions for the DataTables Editor.

                                            + +

                                            Each Database column that is used with Editor can be described with this +Field method (both for Editor and Join instances). It basically tells +Editor what table column to use, how to format the data and if you want +to read and/or write this column.

                                            +

                                            Field instances are used with the Editor->field() and +Join->field() methods to describe what fields should be interacted +with by the editable table.

                                            +
                                            + + +
                                            + Tags + +
                                            +
                                            +
                                            + example +
                                            +
                                            + +

                                            Simply get a column with the name "city". No validation is performed.

                                            +
                                              Field::inst( 'city' )
                                            +
                                            +

                                            @example +Get a column with the name "first_name" - when edited a value must +be given due to the "required" validation from the Validate class.

                                            +
                                              Field::inst( 'first_name' )->validator( 'Validate::required' )
                                            +
                                            +

                                            @example +Working with a date field, which is validated, and also has get and +set formatters.

                                            +
                                              Field::inst( 'registered_date' )
                                            +      ->validator( 'Validate::dateFormat', 'D, d M y' )
                                            +      ->getFormatter( 'Format::date_sql_to_format', 'D, d M y' )
                                            +      ->setFormatter( 'Format::date_format_to_sql', 'D, d M y' )
                                            +
                                            +

                                            @example +Using an alias in the first parameter

                                            +
                                              Field::inst( 'name.first as first_name' )
                                            +
                                            +
                                            + +
                                            +
                                            + + + + + + +

                                            + Table of Contents + +

                                            + +
                                            +
                                            + SET_BOTH + +  = 'both' +
                                            +
                                            Set option flag (`set()`) - write to database on both create and edit
                                            + +
                                            + SET_CREATE + +  = 'create' +
                                            +
                                            Set option flag (`set()`) - write to database only on create
                                            + +
                                            + SET_EDIT + +  = 'edit' +
                                            +
                                            Set option flag (`set()`) - write to database only on edit
                                            + +
                                            + SET_NONE + +  = 'none' +
                                            +
                                            Set option flag (`set()`) - do not set data
                                            + +
                                            + __construct() + +  : mixed +
                                            +
                                            Field instance constructor.
                                            + +
                                            + apply() + +  : mixed +
                                            +
                                            Check to see if a field should be used for a particular action (get or set).
                                            + +
                                            + dbField() + +  : mixed +
                                            +
                                            Get / set the DB field name.
                                            + +
                                            + get() + +  : mixed +
                                            +
                                            Get / set the 'get' property of the field.
                                            + +
                                            + getFormatter() + +  : mixed +
                                            +
                                            Get formatter for the field's data.
                                            + +
                                            + getValue() + +  : callable|string|self +
                                            +
                                            Get / set a get value. If given, then this value is used to send to the +client-side, regardless of what value is held by the database.
                                            + +
                                            + inst() + +  : Editor|Field|Join|Upload +
                                            +
                                            Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                            + +
                                            + instantiate() + +  : Editor|Field|Join|Upload +
                                            +
                                            Static method to instantiate a new instance of a class.
                                            + +
                                            + name() + +  : mixed +
                                            +
                                            Get / set the 'name' property of the field.
                                            + +
                                            + options() + +  : Field +
                                            +
                                            Get a list of values that can be used for the options list in radio, +select and checkbox inputs from the database for this field.
                                            + +
                                            + searchBuilderOptions() + +  : self +
                                            +
                                            Get a list of values that can be used for the options list in SearchBuilder
                                            + +
                                            + searchPaneOptions() + +  : self +
                                            +
                                            Get a list of values that can be used for the options list in SearchPanes
                                            + +
                                            + set() + +  : mixed +
                                            +
                                            Get / set the 'set' property of the field.
                                            + +
                                            + setFormatter() + +  : mixed +
                                            +
                                            Set formatter for the field's data.
                                            + +
                                            + setValue() + +  : callable|string|self +
                                            +
                                            Get / set a set value. If given, then this value is used to write to the +database regardless of what data is sent from the client-side.
                                            + +
                                            + upload() + +  : Upload|self +
                                            +
                                            Get / set the upload class for this field.
                                            + +
                                            + val() + +  : mixed +
                                            +
                                            Get the value of the field, taking into account if it is coming from the +DB or from a POST. If formatting has been specified for this field, it +will be applied here.
                                            + +
                                            + validator() + +  : mixed +
                                            +
                                            Get / set the 'validator' of the field.
                                            + +
                                            + xss() + +  : Field +
                                            +
                                            Set a formatting method that will be used for XSS checking / removal.
                                            + +
                                            + xssSafety() + +  : string +
                                            +
                                            Perform XSS prevention on an input.
                                            + +
                                            + _getSet() + +  : mixed +
                                            +
                                            Common getter / setter function for DataTables classes.
                                            + +
                                            + _propExists() + +  : bool +
                                            +
                                            Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                            + +
                                            + _readProp() + +  : mixed +
                                            +
                                            Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                            + +
                                            + _writeProp() + +  : mixed +
                                            +
                                            Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                            + +
                                            + + + + +
                                            +

                                            + Constants + +

                                            +
                                            +

                                            + SET_BOTH + +

                                            + + + +

                                            Set option flag (`set()`) - write to database on both create and edit

                                            + + + public + mixed + SET_BOTH + = 'both' + + + + +
                                            + + + +
                                            +
                                            +

                                            + SET_CREATE + +

                                            + + + +

                                            Set option flag (`set()`) - write to database only on create

                                            + + + public + mixed + SET_CREATE + = 'create' + + + + +
                                            + + + +
                                            +
                                            +

                                            + SET_EDIT + +

                                            + + + +

                                            Set option flag (`set()`) - write to database only on edit

                                            + + + public + mixed + SET_EDIT + = 'edit' + + + + +
                                            + + + +
                                            +
                                            +

                                            + SET_NONE + +

                                            + + + +

                                            Set option flag (`set()`) - do not set data

                                            + + + public + mixed + SET_NONE + = 'none' + + + + +
                                            + + + +
                                            +
                                            + + + +
                                            +

                                            + Methods + +

                                            +
                                            +

                                            + __construct() + +

                                            + + +

                                            Field instance constructor.

                                            + + + public + __construct([mixed $dbField = null ][, string $name = null ]) : mixed + +

                                            @param string $dbField Name of the database column

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $dbField + : mixed + = null
                                            +
                                            +
                                            + +
                                            +
                                            + $name + : string + = null
                                            +
                                            +

                                            Name to use in the JSON output from Editor and the +HTTP submit from the client-side when editing. If not given then the +$dbField name is used.

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + apply() + +

                                            + + +

                                            Check to see if a field should be used for a particular action (get or set).

                                            + + + public + apply(string $action[, mixed $data = null ]) : mixed + +

                                            Called by the Editor / Join class instances - not expected for general +consumption - internal.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $action + : string +
                                            +
                                            +

                                            Direction that the data is travelling - 'get' is +reading DB data, create and edit for writing to the DB +@param array $data Data submitted from the client-side when setting. +@return boolean true if the field should be used in the get / set. +@internal

                                            +
                                            + +
                                            +
                                            + $data + : mixed + = null
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + dbField() + +

                                            + + +

                                            Get / set the DB field name.

                                            + + + public + dbField([string $_ = null ]) : mixed + +

                                            Note that when used as a setter, an alias can be given for the field +using the SQL as keyword - for example: firstName as name. In this +situation the dbField is set to the field name before the as, and the +field's name (name()) is set to the name after the as.

                                            +

                                            As a result of this, the following constructs have identical +functionality:

                                            +

                                            Field::inst( 'firstName as name' ); +Field::inst( 'firstName', 'name' );

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : string + = null
                                            +
                                            +

                                            Value to set if using as a setter. +@return string|self The name of the db field if no parameter is given, +or self if used as a setter.

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + get() + +

                                            + + +

                                            Get / set the 'get' property of the field.

                                            + + + public + get([bool $_ = null ]) : mixed + +

                                            A field can be marked as write only when setting the get property to false +here.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : bool + = null
                                            +
                                            +

                                            Value to set if using as a setter. +@return boolean|self The get property if no parameter is given, or self +if used as a setter.

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + getFormatter() + +

                                            + + +

                                            Get formatter for the field's data.

                                            + + + public + getFormatter([callable|string $_ = null ][, mixed $opts = null ]) : mixed + +

                                            When the data has been retrieved from the server, it can be passed through +a formatter here, which will manipulate (format) the data as required. This +can be useful when, for example, working with dates and a particular format +is required on the client-side.

                                            +

                                            Editor has a number of formatters available with the Format class +which can be used directly with this method.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : callable|string + = null
                                            +
                                            +

                                            Value to set if using as a setter. Can be given as +a closure function or a string with a reference to a function that will +be called with call_user_func(). +@param mixed $opts Variable that is passed through to the get formatting +function - can be useful for passing through extra information such as +date formatting string, or a required flag. The actual options available +depend upon the formatter used. +@return callable|string|self The get formatter if no parameter is given, or +self if used as a setter.

                                            +
                                            + +
                                            +
                                            + $opts + : mixed + = null
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + getValue() + +

                                            + + +

                                            Get / set a get value. If given, then this value is used to send to the +client-side, regardless of what value is held by the database.

                                            + + + public + getValue([callable|string|number $_ = null ]) : callable|string|self + + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : callable|string|number + = null
                                            +
                                            +

                                            Value to set, or no value to use as a +getter

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + callable|string|self + — +

                                            Value if used as a getter, or self if used +as a setter.

                                            +
                                            + + +
                                            +
                                            +

                                            + inst() + +

                                            + + +

                                            Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                            + + + public + static inst() : Editor|Field|Join|Upload + +

                                            This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                            +
                                            + + + + +
                                            Return values
                                            + Editor|Field|Join|Upload + — +

                                            class +@static

                                            +
                                            + + +
                                            +
                                            +

                                            + instantiate() + +

                                            + + +

                                            Static method to instantiate a new instance of a class.

                                            + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                            A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                            +
                                            + + + + +
                                            Return values
                                            + Editor|Field|Join|Upload + — +

                                            Instantiated class +@static

                                            +
                                            + + +
                                            +
                                            +

                                            + name() + +

                                            + + +

                                            Get / set the 'name' property of the field.

                                            + + + public + name([string $_ = null ]) : mixed + +

                                            The name is typically the same as the dbField name, since it makes things +less confusing(!), but it is possible to set a different name for the data +which is used in the JSON returned to DataTables in a 'get' operation and +the field name used in a 'set' operation.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : string + = null
                                            +
                                            +

                                            Value to set if using as a setter. +@return string|self The name property if no parameter is given, or self +if used as a setter.

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + options() + +

                                            + + +

                                            Get a list of values that can be used for the options list in radio, +select and checkbox inputs from the database for this field.

                                            + + + public + options([string|callable $table = null ][, string $value = null ][, string $label = null ][, callable $condition = null ][, callable $format = null ][, string $order = null ]) : Field + +

                                            Note that this is for simple 'label / value' pairs only. For more complex +data, including pairs that require joins and where conditions, use a +closure to provide a query

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $table + : string|callable + = null
                                            +
                                            +

                                            Database table name to use to get the +paired data from, or a closure function if providing a method

                                            +
                                            + +
                                            +
                                            + $value + : string + = null
                                            +
                                            +

                                            Table column name that contains the pair's +value. Not used if the first parameter is given as a closure

                                            +
                                            + +
                                            +
                                            + $label + : string + = null
                                            +
                                            +

                                            Table column name that contains the pair's +label. Not used if the first parameter is given as a closure

                                            +
                                            + +
                                            +
                                            + $condition + : callable + = null
                                            +
                                            +

                                            Function that will add where +conditions to the query

                                            +
                                            + +
                                            +
                                            + $format + : callable + = null
                                            +
                                            +

                                            Function will render each label

                                            +
                                            + +
                                            +
                                            + $order + : string + = null
                                            +
                                            +

                                            SQL ordering

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + Field + — +

                                            Self for chaining

                                            +
                                            + + +
                                            +
                                            +

                                            + searchBuilderOptions() + +

                                            + + +

                                            Get a list of values that can be used for the options list in SearchBuilder

                                            + + + public + searchBuilderOptions([SearchBuilderOptions|callable $sbInput = null ]) : self + + +
                                            Parameters
                                            +
                                            +
                                            + $sbInput + : SearchBuilderOptions|callable + = null
                                            +
                                            +

                                            SearchBuilderOptions instance or a closure function if providing a method

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + self + — + + +
                                            +
                                            +

                                            + searchPaneOptions() + +

                                            + + +

                                            Get a list of values that can be used for the options list in SearchPanes

                                            + + + public + searchPaneOptions([SearchPaneOptions|callable $spInput = null ]) : self + + +
                                            Parameters
                                            +
                                            +
                                            + $spInput + : SearchPaneOptions|callable + = null
                                            +
                                            +

                                            SearchPaneOptions instance or a closure function if providing a method

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + self + — + + +
                                            +
                                            +

                                            + set() + +

                                            + + +

                                            Get / set the 'set' property of the field.

                                            + + + public + set([string|bool $_ = null ]) : mixed + +

                                            A field can be marked as read only using this option, to be set only +during an create or edit action or to be set during both actions. This +provides the ability to have fields that are only set when a new row is +created (for example a "created" time stamp).

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : string|bool + = null
                                            +
                                            +

                                            Value to set when the method is being used as a +setter (leave as undefined to use as a getter). This can take the +value of:

                                            +
                                              +
                                            • +true - Same as Field::SET_BOTH +
                                            • +
                                            • +false - Same as Field::SET_NONE +
                                            • +
                                            • +Field::SET_BOTH - Set the database value on both create and edit commands
                                            • +
                                            • +Field::SET_NONE - Never set the database value
                                            • +
                                            • +Field::SET_CREATE - Set the database value only on create
                                            • +
                                            • +Field::SET_EDIT - Set the database value only on edit +@return string|self The set property if no parameter is given, or self +if used as a setter.
                                            • +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + setFormatter() + +

                                            + + +

                                            Set formatter for the field's data.

                                            + + + public + setFormatter([callable|string $_ = null ][, mixed $opts = null ]) : mixed + +

                                            When the data has been retrieved from the server, it can be passed through +a formatter here, which will manipulate (format) the data as required. This +can be useful when, for example, working with dates and a particular format +is required on the client-side.

                                            +

                                            Editor has a number of formatters available with the Format class +which can be used directly with this method.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : callable|string + = null
                                            +
                                            +

                                            Value to set if using as a setter. Can be given as +a closure function or a string with a reference to a function that will +be called with call_user_func(). +@param mixed $opts Variable that is passed through to the get formatting +function - can be useful for passing through extra information such as +date formatting string, or a required flag. The actual options available +depend upon the formatter used. +@return callable|string|self The set formatter if no parameter is given, or +self if used as a setter.

                                            +
                                            + +
                                            +
                                            + $opts + : mixed + = null
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + setValue() + +

                                            + + +

                                            Get / set a set value. If given, then this value is used to write to the +database regardless of what data is sent from the client-side.

                                            + + + public + setValue([callable|string|number $_ = null ]) : callable|string|self + + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : callable|string|number + = null
                                            +
                                            +

                                            Value to set, or no value to use as a +getter

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + callable|string|self + — +

                                            Value if used as a getter, or self if used +as a setter.

                                            +
                                            + + +
                                            +
                                            +

                                            + upload() + +

                                            + + +

                                            Get / set the upload class for this field.

                                            + + + public + upload([Upload $_ = null ]) : Upload|self + + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : Upload + = null
                                            +
                                            +

                                            Upload class if used as a setter

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + Upload|self + — +

                                            Value if used as a getter, or self if used +as a setter.

                                            +
                                            + + +
                                            +
                                            +

                                            + val() + +

                                            + + +

                                            Get the value of the field, taking into account if it is coming from the +DB or from a POST. If formatting has been specified for this field, it +will be applied here.

                                            + + + public + val(string $direction, mixed $data) : mixed + +

                                            Called by the Editor / Join class instances - not expected for general +consumption - internal.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $direction + : string +
                                            +
                                            +

                                            Direction that the data is travelling - 'get' is +reading data, and 'set' is writing it to the DB. +@param array $data Data submitted from the client-side when setting or the +data for the row when getting data from the DB. +@return string Value for the field +@internal

                                            +
                                            + +
                                            +
                                            + $data + : mixed +
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + validator() + +

                                            + + +

                                            Get / set the 'validator' of the field.

                                            + + + public + validator([callable|string $_ = null ][, mixed $opts = null ]) : mixed + +

                                            The validator can be used to check if any abstract piece of data is valid +or not according to the given rules of the validation function used.

                                            +

                                            Multiple validation options can be applied to a field instance by calling +this method multiple times. For example, it would be possible to have a +'required' validation and a 'maxLength' validation with multiple calls.

                                            +

                                            Editor has a number of validation available with the Validate class +which can be used directly with this method.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $_ + : callable|string + = null
                                            +
                                            +

                                            Value to set if using as the validation method. +Can be given as a closure function or a string with a reference to a +function that will be called with call_user_func(). +@param mixed $opts Variable that is passed through to the validation +function - can be useful for passing through extra information such as +date formatting string, or a required flag. The actual options available +depend upon the validation function used. +@return callable|string|self The validation method if no parameter is given, +or self if used as a setter.

                                            +
                                            + +
                                            +
                                            + $opts + : mixed + = null
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + xss() + +

                                            + + +

                                            Set a formatting method that will be used for XSS checking / removal.

                                            + + + public + xss(callable|false $xssFormatter) : Field + +

                                            This should be a function that takes a single argument (the value to be +cleaned) and returns the cleaned value.

                                            +

                                            Editor will use HtmLawed by default for this operation, which is built +into the software and no additional configuration is required, but a +custom function can be used if you wish to use a different formatter such +as HTMLPurifier.

                                            +

                                            If you wish to disable this option (which you would only do if you are +absolutely confident that your validation will pick up on any XSS inputs) +simply provide a closure function that returns the value given to the +function. This is not recommended.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $xssFormatter + : callable|false +
                                            +
                                            +

                                            XSS cleaner function, use false or +null to disable XSS cleaning.

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + Field + — +

                                            Self for chaining.

                                            +
                                            + + +
                                            +
                                            +

                                            + xssSafety() + +

                                            + + +

                                            Perform XSS prevention on an input.

                                            + + + public + xssSafety(mixed $val) : string + + +
                                            Parameters
                                            +
                                            +
                                            + $val + : mixed +
                                            +
                                            +

                                            Value to be escaped

                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + string + — +

                                            Safe value

                                            +
                                            + + +
                                            +
                                            +

                                            + _getSet() + +

                                            + + +

                                            Common getter / setter function for DataTables classes.

                                            + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                            This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                            +
                                            + +
                                            Parameters
                                            +
                                            +
                                            + $prop + : mixed +
                                            +
                                            +

                                            The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                            +
                                            + +
                                            +
                                            + $val + : mixed +
                                            +
                                            +
                                            + +
                                            +
                                            + $array + : mixed + = false
                                            +
                                            +
                                            + +
                                            +
                                            + + + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            +

                                            + _propExists() + +

                                            + + +

                                            Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                            + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                            Parameters
                                            +
                                            +
                                            + $name + : string +
                                            +
                                            +

                                            Javascript dotted object name to write to

                                            +
                                            + +
                                            +
                                            + $data + : array<string|int, mixed> +
                                            +
                                            +

                                            Data source array to read from

                                            +
                                            + +
                                            +
                                            + + +
                                            + Tags + +
                                            +
                                            +
                                            + private +
                                            +
                                            + + +
                                            +
                                            + +
                                            Return values
                                            + bool + — +

                                            true if present, false otherwise

                                            +
                                            + + +
                                            +
                                            +

                                            + _readProp() + +

                                            + + +

                                            Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                            + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                            Parameters
                                            +
                                            +
                                            + $name + : string +
                                            +
                                            +

                                            Javascript dotted object name to write to

                                            +
                                            + +
                                            +
                                            + $data + : array<string|int, mixed> +
                                            +
                                            +

                                            Data source array to read from

                                            +
                                            + +
                                            +
                                            + + +
                                            + Tags + +
                                            +
                                            +
                                            + private +
                                            +
                                            + + +
                                            +
                                            + +
                                            Return values
                                            + mixed + — +

                                            The read value, or null if no value found.

                                            +
                                            + + +
                                            +
                                            +

                                            + _writeProp() + +

                                            + + +

                                            Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                            + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                            Parameters
                                            +
                                            +
                                            + $out + : array<string|int, mixed> +
                                            +
                                            +

                                            Array to write the data to

                                            +
                                            + +
                                            +
                                            + $name + : string +
                                            +
                                            +

                                            Javascript dotted object name to write to

                                            +
                                            + +
                                            +
                                            + $value + : mixed +
                                            +
                                            +

                                            Value to write

                                            +
                                            + +
                                            +
                                            + + +
                                            + Tags + +
                                            +
                                            +
                                            + throws +
                                            +
                                            + Exception + +

                                            Information about duplicate properties

                                            +
                                            + +
                                            +
                                            + private +
                                            +
                                            + + +
                                            +
                                            + +
                                            Return values
                                            + mixed + — + + +
                                            +
                                            + +
                                            +
                                            +
                                            +
                                            +
                                            
                                            +        
                                            + +
                                            +
                                            + + + +
                                            +
                                            +
                                            +
                                            +

                                            Search results

                                            + +
                                            +
                                            +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Format.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Format.html new file mode 100644 index 00000000..5d129d6a --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Format.html @@ -0,0 +1,1112 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                              +

                                              Editor PHP 2.1.3

                                              + + + + + +
                                              + +
                                              +
                                              + + + + +
                                              + + +
                                              +

                                              + Format + + +
                                              + in package + +
                                              + + +

                                              + + + +

                                              Formatter methods for the DataTables Editor

                                              + +

                                              All methods in this class are static with common inputs and returns.

                                              +
                                              + + + + + + + + +

                                              + Table of Contents + +

                                              + +
                                              +
                                              + DATE_EPOCH + +  = "U" +
                                              +
                                              Date format: 1331251200. jQuery UI equivalent format: @
                                              + +
                                              + DATE_ISO_1036 + +  = "D, j M y" +
                                              +
                                              Date format: Fri, 9 Mar 12. jQuery UI equivalent format: D, d M y
                                              + +
                                              + DATE_ISO_1123 + +  = "D, j M Y" +
                                              +
                                              Date format: Fri, 9 Mar 2012. jQuery UI equivalent format: D, d M yy
                                              + +
                                              + DATE_ISO_2822 + +  = "D, j M Y" +
                                              +
                                              Date format: Fri, 9 Mar 2012. jQuery UI equivalent format: D, d M yy
                                              + +
                                              + DATE_ISO_822 + +  = "D, j M y" +
                                              +
                                              Date format: Fri, 9 Mar 12. jQuery UI equivalent format: D, d M y
                                              + +
                                              + DATE_ISO_850 + +  = "l, d-M-y" +
                                              +
                                              Date format: Friday, 09-Mar-12. jQuery UI equivalent format: DD, dd-M-y
                                              + +
                                              + DATE_ISO_8601 + +  = "Y-m-d" +
                                              +
                                              Date format: 2012-03-09. jQuery UI equivalent format: yy-mm-dd
                                              + +
                                              + DATE_TIMESTAMP + +  = "U" +
                                              +
                                              Date format: 1331251200. jQuery UI equivalent format: @
                                              + +
                                              + DATE_USA + +  = "m-d-Y" +
                                              +
                                              Date format: March-. jQuery UI equivalent format: D, d M yy
                                              + +
                                              + dateFormatToSql() + +  : mixed +
                                              +
                                              Convert from a format given by the options parameter to a format that +SQL servers will recognise as a date.
                                              + +
                                              + dateSqlToFormat() + +  : mixed +
                                              +
                                              Convert from SQL date / date time format to a format given by the options +parameter.
                                              + +
                                              + datetime() + +  : mixed +
                                              +
                                              Convert from one date time format to another
                                              + +
                                              + explode() + +  : mixed +
                                              +
                                              Convert a string of values into an array for use with checkboxes.
                                              + +
                                              + fromDecimalChar() + +  : mixed +
                                              +
                                              Convert a number from using any character other than a period (dot) to +one which does use a period. This is useful for allowing numeric user +input in regions where a comma is used as the decimal character. Use with +a set formatter.
                                              + +
                                              + ifEmpty() + +  : mixed +
                                              +
                                              Formatter that can be used to specify what value should be used if an +empty value is submitted by the client-side (e.g. null, 0, 'Not set', +etc)
                                              + +
                                              + implode() + +  : mixed +
                                              +
                                              Convert an array of values from a checkbox into a string which can be +used to store in a text field in a database.
                                              + +
                                              + nullEmpty() + +  : mixed +
                                              +
                                              Convert an empty string to `null`. Null values are very useful in +databases, but HTTP variables have no way of representing `null` as a +value, often leading to an empty string and null overlapping. This method +will check the value to operate on and return null if it is empty.
                                              + +
                                              + toDecimalChar() + +  : mixed +
                                              +
                                              Convert a number with a period (dot) as the decimal character to use +a different character (typically a comma). Use with a get formatter.
                                              + +
                                              + + + + +
                                              +

                                              + Constants + +

                                              +
                                              +

                                              + DATE_EPOCH + +

                                              + + + +

                                              Date format: 1331251200. jQuery UI equivalent format: @

                                              + + + public + mixed + DATE_EPOCH + = "U" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_1036 + +

                                              + + + +

                                              Date format: Fri, 9 Mar 12. jQuery UI equivalent format: D, d M y

                                              + + + public + mixed + DATE_ISO_1036 + = "D, j M y" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_1123 + +

                                              + + + +

                                              Date format: Fri, 9 Mar 2012. jQuery UI equivalent format: D, d M yy

                                              + + + public + mixed + DATE_ISO_1123 + = "D, j M Y" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_2822 + +

                                              + + + +

                                              Date format: Fri, 9 Mar 2012. jQuery UI equivalent format: D, d M yy

                                              + + + public + mixed + DATE_ISO_2822 + = "D, j M Y" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_822 + +

                                              + + + +

                                              Date format: Fri, 9 Mar 12. jQuery UI equivalent format: D, d M y

                                              + + + public + mixed + DATE_ISO_822 + = "D, j M y" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_850 + +

                                              + + + +

                                              Date format: Friday, 09-Mar-12. jQuery UI equivalent format: DD, dd-M-y

                                              + + + public + mixed + DATE_ISO_850 + = "l, d-M-y" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_ISO_8601 + +

                                              + + + +

                                              Date format: 2012-03-09. jQuery UI equivalent format: yy-mm-dd

                                              + + + public + mixed + DATE_ISO_8601 + = "Y-m-d" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_TIMESTAMP + +

                                              + + + +

                                              Date format: 1331251200. jQuery UI equivalent format: @

                                              + + + public + mixed + DATE_TIMESTAMP + = "U" + + + + +
                                              + + + +
                                              +
                                              +

                                              + DATE_USA + +

                                              + + + +

                                              Date format: March-. jQuery UI equivalent format: D, d M yy

                                              + + + public + mixed + DATE_USA + = "m-d-Y" + + + + +
                                              + + + +
                                              +
                                              + + + +
                                              +

                                              + Methods + +

                                              +
                                              +

                                              + dateFormatToSql() + +

                                              + + +

                                              Convert from a format given by the options parameter to a format that +SQL servers will recognise as a date.

                                              + + + public + static dateFormatToSql(mixed $format) : mixed + +

                                              Typical use of this method is to use it with the +Field::getFormatter() and Field::setFormatter() methods of +Field where the parameters required for this method will be +automatically satisfied.

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $format + : mixed +
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + dateSqlToFormat() + +

                                              + + +

                                              Convert from SQL date / date time format to a format given by the options +parameter.

                                              + + + public + static dateSqlToFormat(mixed $format) : mixed + +

                                              Typical use of this method is to use it with the +Field::getFormatter() and Field::setFormatter() methods of +Field where the parameters required for this method will be +automatically satisfied.

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $format + : mixed +
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + datetime() + +

                                              + + +

                                              Convert from one date time format to another

                                              + + + public + static datetime(mixed $from, mixed $to) : mixed + +

                                              Typical use of this method is to use it with the +Field::getFormatter() and Field::setFormatter() methods of +Field where the parameters required for this method will be +automatically satisfied.

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $from + : mixed +
                                              +
                                              +
                                              + +
                                              +
                                              + $to + : mixed +
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + explode() + +

                                              + + +

                                              Convert a string of values into an array for use with checkboxes.

                                              + + + public + static explode([mixed $char = '|' ]) : mixed + +

                                              @param string $val Value to convert to from a string to an array

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $char + : mixed + = '|'
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + fromDecimalChar() + +

                                              + + +

                                              Convert a number from using any character other than a period (dot) to +one which does use a period. This is useful for allowing numeric user +input in regions where a comma is used as the decimal character. Use with +a set formatter.

                                              + + + public + static fromDecimalChar([mixed $char = ',' ]) : mixed + +

                                              @param string $val Value to convert to from a string to an array

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $char + : mixed + = ','
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + ifEmpty() + +

                                              + + +

                                              Formatter that can be used to specify what value should be used if an +empty value is submitted by the client-side (e.g. null, 0, 'Not set', +etc)

                                              + + + public + static ifEmpty(mixed $ret) : mixed + +

                                              @param string $val Value to convert to from a string to an array

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $ret + : mixed +
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + implode() + +

                                              + + +

                                              Convert an array of values from a checkbox into a string which can be +used to store in a text field in a database.

                                              + + + public + static implode([mixed $char = '|' ]) : mixed + +

                                              @param string $val Value to convert to from an array to a string

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $char + : mixed + = '|'
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + nullEmpty() + +

                                              + + +

                                              Convert an empty string to `null`. Null values are very useful in +databases, but HTTP variables have no way of representing `null` as a +value, often leading to an empty string and null overlapping. This method +will check the value to operate on and return null if it is empty.

                                              + + + public + static nullEmpty() : mixed + +

                                              @param string $val Value to convert to from a string to an array

                                              +
                                              + + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              +

                                              + toDecimalChar() + +

                                              + + +

                                              Convert a number with a period (dot) as the decimal character to use +a different character (typically a comma). Use with a get formatter.

                                              + + + public + static toDecimalChar([mixed $char = ',' ]) : mixed + +

                                              @param string $val Value to convert to from a string to an array

                                              +
                                              + +
                                              Parameters
                                              +
                                              +
                                              + $char + : mixed + = ','
                                              +
                                              +
                                              + +
                                              +
                                              + + + +
                                              Return values
                                              + mixed + — + + +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              
                                              +        
                                              + +
                                              +
                                              + + + +
                                              +
                                              +
                                              +
                                              +

                                              Search results

                                              + +
                                              +
                                              +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + +
                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Join.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Join.html new file mode 100644 index 00000000..70b3d1ea --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Join.html @@ -0,0 +1,2087 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                +

                                                Editor PHP 2.1.3

                                                + + + + + +
                                                + +
                                                +
                                                + + + + +
                                                + + +
                                                +

                                                + Join + + + extends Ext + + +
                                                + in package + +
                                                + + +

                                                + + + +

                                                Join table class for DataTables Editor.

                                                + +

                                                The Join class can be used with Editor->join() to allow Editor to +obtain joined information from the database.

                                                +

                                                For an overview of how Join tables work, please refer to the +Editor manual as it is +useful to understand how this class represents the links between tables, +before fully getting to grips with it's API.

                                                +
                                                + + +
                                                + Tags + +
                                                +
                                                +
                                                + example +
                                                +
                                                + +

                                                Join the parent table (the one specified in the Editor->table() +method) with the table access, with a link table user__access, which +allows multiple properties to be found for each row in the parent table.

                                                +
                                                  Join::inst( 'access', 'array' )
                                                +      ->link( 'users.id', 'user_access.user_id' )
                                                +      ->link( 'access.id', 'user_access.access_id' )
                                                +      ->field(
                                                +          Field::inst( 'id' )->validator( 'Validate::required' ),
                                                +          Field::inst( 'name' )
                                                +      )
                                                +
                                                +

                                                @example +Single row join - here we join the parent table with a single row in +the child table, without an intermediate link table. In this case the +child table is called extra and the two fields give the columns that +Editor will read from that table.

                                                +
                                                    Join::inst( 'extra', 'object' )
                                                +        ->link( 'user.id', 'extra.user_id' )
                                                +        ->field(
                                                +            Field::inst( 'comments' ),
                                                +            Field::inst( 'review' )
                                                +        )
                                                +
                                                +
                                                + +
                                                +
                                                + + + + + + +

                                                + Table of Contents + +

                                                + +
                                                +
                                                + __construct() + +  : mixed +
                                                +
                                                Join instance constructor.
                                                + +
                                                + aliasParentTable() + +  : mixed +
                                                +
                                                Get / set parent table alias.
                                                + +
                                                + create() + +  : mixed +
                                                +
                                                Create a row.
                                                + +
                                                + data() + +  : mixed +
                                                +
                                                Get data
                                                + +
                                                + field() + +  : mixed +
                                                +
                                                Get / set field instances.
                                                + +
                                                + fields() + +  : mixed +
                                                +
                                                Get / set field instances.
                                                + +
                                                + get() + +  : mixed +
                                                +
                                                Get / set get attribute.
                                                + +
                                                + inst() + +  : Editor|Field|Join|Upload +
                                                +
                                                Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                + +
                                                + instantiate() + +  : Editor|Field|Join|Upload +
                                                +
                                                Static method to instantiate a new instance of a class.
                                                + +
                                                + join() + +  : mixed +
                                                +
                                                Get / set join properties.
                                                + +
                                                + leftJoin() + +  : self +
                                                +
                                                Set up a left join operation for the Mjoined data
                                                + +
                                                + link() + +  : Join +
                                                +
                                                Create a join link between two tables. The order of the fields does not +matter, but each field must contain the table name as well as the field +name.
                                                + +
                                                + name() + +  : mixed +
                                                +
                                                Get / set name.
                                                + +
                                                + order() + +  : Join +
                                                +
                                                Specify the property that the data will be sorted by.
                                                + +
                                                + remove() + +  : mixed +
                                                +
                                                Delete rows
                                                + +
                                                + set() + +  : mixed +
                                                +
                                                Get / set set attribute.
                                                + +
                                                + table() + +  : mixed +
                                                +
                                                Get / set join table name.
                                                + +
                                                + type() + +  : mixed +
                                                +
                                                Get / set the join type.
                                                + +
                                                + update() + +  : mixed +
                                                +
                                                Update a row.
                                                + +
                                                + validator() + +  : self +
                                                +
                                                Set a validator for the array of data (not on a field basis)
                                                + +
                                                + where() + +  : mixed +
                                                +
                                                Where condition to add to the query used to get data from the database.
                                                + +
                                                + whereSet() + +  : mixed +
                                                +
                                                Get / set if the WHERE conditions should be included in the create and +edit actions.
                                                + +
                                                + _getSet() + +  : mixed +
                                                +
                                                Common getter / setter function for DataTables classes.
                                                + +
                                                + _propExists() + +  : bool +
                                                +
                                                Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                + +
                                                + _readProp() + +  : mixed +
                                                +
                                                Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                + +
                                                + _writeProp() + +  : mixed +
                                                +
                                                Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                + +
                                                + + + + + + + +
                                                +

                                                + Methods + +

                                                +
                                                +

                                                + __construct() + +

                                                + + +

                                                Join instance constructor.

                                                + + + public + __construct([mixed $table = null ][, string $type = 'object' ]) : mixed + +

                                                @param string $table Table name to get the joined data from.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $table + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + $type + : string + = 'object'
                                                +
                                                +

                                                Work with a single result ('object') or an array of +results ('array') for the join.

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + aliasParentTable() + +

                                                + + +

                                                Get / set parent table alias.

                                                + + + public + aliasParentTable([string $_ = null ]) : mixed + +

                                                When working with a self referencing table (i.e. a column in the table contains +a primary key value from its own table) it can be useful to set an alias on the +parent table's name, allowing a self referencing Join. For example:

                                                +
                                                SELECT p2.publisher
                                                +FROM   publisher as p2
                                                +JOIN   publisher on (publisher.idPublisher = p2.idPublisher)
                                                +
                                                +

                                                Where, in this case, publisher is the table that is used by the Editor instance, +and you want to use Join to link back to the table (resolving a name for example). +This method allows that alias to be set. Fields can then use standard SQL notation +to select a field, for example p2.publisher or publisher.publisher.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : string + = null
                                                +
                                                +

                                                Table alias to use +@return string|self Table alias set (which is null by default), or self if used as +a setter.

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + create() + +

                                                + + +

                                                Create a row.

                                                + + + public + create(mixed $editor, int $parentId, mixed $data) : mixed + +

                                                @param Editor $editor Host Editor instance

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $editor + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + $parentId + : int +
                                                +
                                                +

                                                Parent row's primary key value +@param string[] $data Data to be set for the join +@internal

                                                +
                                                + +
                                                +
                                                + $data + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + data() + +

                                                + + +

                                                Get data

                                                + + + public + data(mixed $editor, array<string|int, string> &$data, mixed &$options) : mixed + +

                                                @param Editor $editor Host Editor instance

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $editor + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + $data + : array<string|int, string> +
                                                +
                                                +

                                                Data from the parent table's get and were we need +to add out output. +@param array $options options array for fields +@internal

                                                +
                                                + +
                                                +
                                                + $options + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + field() + +

                                                + + +

                                                Get / set field instances.

                                                + + + public + field([mixed $_ = null ]) : mixed + +

                                                The list of fields designates which columns in the table that will be read +from the joined table.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + fields() + +

                                                + + +

                                                Get / set field instances.

                                                + + + public + fields([mixed $_ = null ]) : mixed + +

                                                An alias of field, for convenience.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + get() + +

                                                + + +

                                                Get / set get attribute.

                                                + + + public + get([bool $_ = null ]) : mixed + +

                                                When set to false no read operations will occur on the join tables.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : bool + = null
                                                +
                                                +

                                                Value +@return boolean|self Name

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + inst() + +

                                                + + +

                                                Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                + + + public + static inst() : Editor|Field|Join|Upload + +

                                                This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                +
                                                + + + + +
                                                Return values
                                                + Editor|Field|Join|Upload + — +

                                                class +@static

                                                +
                                                + + +
                                                +
                                                +

                                                + instantiate() + +

                                                + + +

                                                Static method to instantiate a new instance of a class.

                                                + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                +
                                                + + + + +
                                                Return values
                                                + Editor|Field|Join|Upload + — +

                                                Instantiated class +@static

                                                +
                                                + + +
                                                +
                                                +

                                                + join() + +

                                                + + +

                                                Get / set join properties.

                                                + + + public + join([string|array<string|int, string> $parent = null ][, mixed $child = null ][, mixed $table = null ]) : mixed + +

                                                Define how the SQL will be performed, on what columns. There are +basically two types of join that are supported by Editor here, a direct +foreign key reference in the join table to the parent table's primary +key, or a link table that contains just primary keys for the parent and +child tables (this approach is usually used with a Join->type() of +'array' since you can often have multiple links between the two tables, +while a direct foreign key reference will typically use a type of +'object' (i.e. a single entry).

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $parent + : string|array<string|int, string> + = null
                                                +
                                                +

                                                Parent table's primary key names. If used +with a link table (i.e. third parameter to this method is given, then +an array should be used, with the first element being the pkey's name +in the parent table, and the second element being the key's name in +the link table. +@param string|string[] $child Child table's primary key names. If used +with a link table (i.e. third parameter to this method is given, then +an array should be used, with the first element being the pkey's name +in the child table, and the second element being the key's name in the +link table. +@param string $table Join table name, if using a link table +@returns Join This for chaining +@deprecated 1.5 Please use the Join->link() method rather than this +method now.

                                                +
                                                + +
                                                +
                                                + $child + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + $table + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + leftJoin() + +

                                                + + +

                                                Set up a left join operation for the Mjoined data

                                                + + + public + leftJoin(string $table, string $field1, string $operator, string $field2) : self + + +
                                                Parameters
                                                +
                                                +
                                                + $table + : string +
                                                +
                                                +

                                                to get the information from

                                                +
                                                + +
                                                +
                                                + $field1 + : string +
                                                +
                                                +

                                                the first field to get the information from

                                                +
                                                + +
                                                +
                                                + $operator + : string +
                                                +
                                                +

                                                the operation to perform on the two fields

                                                +
                                                + +
                                                +
                                                + $field2 + : string +
                                                +
                                                +

                                                the second field to get the information from

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + self + — + + +
                                                +
                                                + + + +

                                                Create a join link between two tables. The order of the fields does not +matter, but each field must contain the table name as well as the field +name.

                                                + + + public + link(string $field1, string $field2) : Join + +

                                                This method can be called a maximum of two times for an Mjoin instance:

                                                +
                                                  +
                                                • First time, creates a link between the Editor host table and a join +table
                                                • +
                                                • Second time creates the links required for a link table.
                                                • +
                                                +

                                                Please refer to the Editor Mjoin documentation for further details: +https://editor.datatables.net/manual/php

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $field1 + : string +
                                                +
                                                +

                                                Table and field name

                                                +
                                                + +
                                                +
                                                + $field2 + : string +
                                                +
                                                +

                                                Table and field name

                                                +
                                                + +
                                                +
                                                + + +
                                                + Tags + +
                                                +
                                                +
                                                + throws +
                                                +
                                                + Exception + +

                                                Link limitations

                                                +
                                                + +
                                                +
                                                + +
                                                Return values
                                                + Join + — +

                                                Self for chaining

                                                +
                                                + + +
                                                +
                                                +

                                                + name() + +

                                                + + +

                                                Get / set name.

                                                + + + public + name([string $_ = null ]) : mixed + +

                                                The name of the Join is the JSON property key that is used when +'getting' the data, and the HTTP property key (in a JSON style) when +'setting' data. Typically the name of the db table will be used here, +but this method allows that to be overridden.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : string + = null
                                                +
                                                +

                                                Field name +@return String|self Name

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + order() + +

                                                + + +

                                                Specify the property that the data will be sorted by.

                                                + + + public + order([mixed $_ = null ]) : Join + + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + Join + — +

                                                Self for chaining

                                                +
                                                + + +
                                                +
                                                +

                                                + remove() + +

                                                + + +

                                                Delete rows

                                                + + + public + remove(mixed $editor, array<string|int, int> $ids) : mixed + +

                                                @param Editor $editor Host Editor instance

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $editor + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + $ids + : array<string|int, int> +
                                                +
                                                +

                                                Parent row IDs to delete +@internal

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + set() + +

                                                + + +

                                                Get / set set attribute.

                                                + + + public + set([bool $_ = null ]) : mixed + +

                                                When set to false no write operations will occur on the join tables. +This can be useful when you want to display information which is joined, +but want to only perform write operations on the parent table.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : bool + = null
                                                +
                                                +

                                                Value +@return boolean|self Name

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + table() + +

                                                + + +

                                                Get / set join table name.

                                                + + + public + table([string $_ = null ]) : mixed + +

                                                Please note that this will also set the Join->name() used by the Join +as well. This is for convenience as the JSON output / HTTP input will +typically use the same name as the database name. If you want to set a +custom name, the Join->name() method must be called after this one.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : string + = null
                                                +
                                                +

                                                Name of the table to read the join data from +@return String|self Name of the join table, or self if used as a setter.

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + type() + +

                                                + + +

                                                Get / set the join type.

                                                + + + public + type([string $_ = null ]) : mixed + +

                                                The join type allows the data that is returned from the join to be given +as an array (i.e. working with multiple possibly results for each record from +the parent table), or as an object (i.e. working which one and only one result +for each record form the parent table).

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : string + = null
                                                +
                                                +

                                                Join type ('object') or an array of +results ('array') for the join. +@return String|self Join type, or self if used as a setter.

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + update() + +

                                                + + +

                                                Update a row.

                                                + + + public + update(mixed $editor, int $parentId, mixed $data) : mixed + +

                                                @param Editor $editor Host Editor instance

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $editor + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + $parentId + : int +
                                                +
                                                +

                                                Parent row's primary key value +@param string[] $data Data to be set for the join +@internal

                                                +
                                                + +
                                                +
                                                + $data + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + validator() + +

                                                + + +

                                                Set a validator for the array of data (not on a field basis)

                                                + + + public + validator(string $fieldName, callable $fn) : self + + +
                                                Parameters
                                                +
                                                +
                                                + $fieldName + : string +
                                                +
                                                +

                                                Name of the field that any error should be shown +against on the client-side

                                                +
                                                + +
                                                +
                                                + $fn + : callable +
                                                +
                                                +

                                                Callback function for validation

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + self + — +

                                                Chainable

                                                +
                                                + + +
                                                +
                                                +

                                                + where() + +

                                                + + +

                                                Where condition to add to the query used to get data from the database.

                                                + + + public + where([string|callable $key = null ][, mixed $value = null ][, mixed $op = '=' ]) : mixed + +

                                                Note that this is applied to the child table.

                                                +

                                                Can be used in two different ways:

                                                +
                                                  +
                                                • Simple case: where( field, value, operator ) +
                                                • +
                                                • Complex: where( fn ) +
                                                • +
                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $key + : string|callable + = null
                                                +
                                                +

                                                Single field name or a closure function +@param string|string[] $value Single field value, or an array of values. +@param string $op Condition operator: <, >, = etc +@return string[]|self Where condition array, or self if used as a setter.

                                                +
                                                + +
                                                +
                                                + $value + : mixed + = null
                                                +
                                                +
                                                + +
                                                +
                                                + $op + : mixed + = '='
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + whereSet() + +

                                                + + +

                                                Get / set if the WHERE conditions should be included in the create and +edit actions.

                                                + + + public + whereSet([bool $_ = null ]) : mixed + +

                                                This means that the fields which have been used as part of the 'get' +WHERE condition (using the where() method) will be set as the values +given.

                                                +

                                                This is default false (i.e. they are not included).

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $_ + : bool + = null
                                                +
                                                +

                                                Include (true), or not (false) +@return boolean Current value

                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + _getSet() + +

                                                + + +

                                                Common getter / setter function for DataTables classes.

                                                + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                +
                                                + +
                                                Parameters
                                                +
                                                +
                                                + $prop + : mixed +
                                                +
                                                +

                                                The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                +
                                                + +
                                                +
                                                + $val + : mixed +
                                                +
                                                +
                                                + +
                                                +
                                                + $array + : mixed + = false
                                                +
                                                +
                                                + +
                                                +
                                                + + + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                +

                                                + _propExists() + +

                                                + + +

                                                Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                Parameters
                                                +
                                                +
                                                + $name + : string +
                                                +
                                                +

                                                Javascript dotted object name to write to

                                                +
                                                + +
                                                +
                                                + $data + : array<string|int, mixed> +
                                                +
                                                +

                                                Data source array to read from

                                                +
                                                + +
                                                +
                                                + + +
                                                + Tags + +
                                                +
                                                +
                                                + private +
                                                +
                                                + + +
                                                +
                                                + +
                                                Return values
                                                + bool + — +

                                                true if present, false otherwise

                                                +
                                                + + +
                                                +
                                                +

                                                + _readProp() + +

                                                + + +

                                                Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                Parameters
                                                +
                                                +
                                                + $name + : string +
                                                +
                                                +

                                                Javascript dotted object name to write to

                                                +
                                                + +
                                                +
                                                + $data + : array<string|int, mixed> +
                                                +
                                                +

                                                Data source array to read from

                                                +
                                                + +
                                                +
                                                + + +
                                                + Tags + +
                                                +
                                                +
                                                + private +
                                                +
                                                + + +
                                                +
                                                + +
                                                Return values
                                                + mixed + — +

                                                The read value, or null if no value found.

                                                +
                                                + + +
                                                +
                                                +

                                                + _writeProp() + +

                                                + + +

                                                Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                Parameters
                                                +
                                                +
                                                + $out + : array<string|int, mixed> +
                                                +
                                                +

                                                Array to write the data to

                                                +
                                                + +
                                                +
                                                + $name + : string +
                                                +
                                                +

                                                Javascript dotted object name to write to

                                                +
                                                + +
                                                +
                                                + $value + : mixed +
                                                +
                                                +

                                                Value to write

                                                +
                                                + +
                                                +
                                                + + +
                                                + Tags + +
                                                +
                                                +
                                                + throws +
                                                +
                                                + Exception + +

                                                Information about duplicate properties

                                                +
                                                + +
                                                +
                                                + private +
                                                +
                                                + + +
                                                +
                                                + +
                                                Return values
                                                + mixed + — + + +
                                                +
                                                + +
                                                +
                                                +
                                                +
                                                +
                                                
                                                +        
                                                + +
                                                +
                                                + + + +
                                                +
                                                +
                                                +
                                                +

                                                Search results

                                                + +
                                                +
                                                +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  + + +
                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Mjoin.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Mjoin.html new file mode 100644 index 00000000..1dd0298f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Mjoin.html @@ -0,0 +1,2038 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                  +

                                                  Editor PHP 2.1.3

                                                  + + + + + +
                                                  + +
                                                  +
                                                  + + + + +
                                                  + + +
                                                  +

                                                  + Mjoin + + + extends Join + + +
                                                  + in package + +
                                                  + + +

                                                  + + + +

                                                  The `Mjoin` class extends the `Join` class with the join data type set to +'array', whereas the `Join` default is `object` which has been rendered +obsolete by the `Editor->leftJoin()` method. The API API is otherwise +identical.

                                                  + +

                                                  This class is recommended over the Join class.

                                                  +
                                                  + + + + + + + + +

                                                  + Table of Contents + +

                                                  + +
                                                  +
                                                  + __construct() + +  : mixed +
                                                  +
                                                  Join instance constructor.
                                                  + +
                                                  + aliasParentTable() + +  : mixed +
                                                  +
                                                  Get / set parent table alias.
                                                  + +
                                                  + create() + +  : mixed +
                                                  +
                                                  Create a row.
                                                  + +
                                                  + data() + +  : mixed +
                                                  +
                                                  Get data
                                                  + +
                                                  + field() + +  : mixed +
                                                  +
                                                  Get / set field instances.
                                                  + +
                                                  + fields() + +  : mixed +
                                                  +
                                                  Get / set field instances.
                                                  + +
                                                  + get() + +  : mixed +
                                                  +
                                                  Get / set get attribute.
                                                  + +
                                                  + inst() + +  : Editor|Field|Join|Upload +
                                                  +
                                                  Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                  + +
                                                  + instantiate() + +  : Editor|Field|Join|Upload +
                                                  +
                                                  Static method to instantiate a new instance of a class.
                                                  + +
                                                  + join() + +  : mixed +
                                                  +
                                                  Get / set join properties.
                                                  + +
                                                  + leftJoin() + +  : self +
                                                  +
                                                  Set up a left join operation for the Mjoined data
                                                  + +
                                                  + link() + +  : Join +
                                                  +
                                                  Create a join link between two tables. The order of the fields does not +matter, but each field must contain the table name as well as the field +name.
                                                  + +
                                                  + name() + +  : mixed +
                                                  +
                                                  Get / set name.
                                                  + +
                                                  + order() + +  : Join +
                                                  +
                                                  Specify the property that the data will be sorted by.
                                                  + +
                                                  + remove() + +  : mixed +
                                                  +
                                                  Delete rows
                                                  + +
                                                  + set() + +  : mixed +
                                                  +
                                                  Get / set set attribute.
                                                  + +
                                                  + table() + +  : mixed +
                                                  +
                                                  Get / set join table name.
                                                  + +
                                                  + type() + +  : mixed +
                                                  +
                                                  Get / set the join type.
                                                  + +
                                                  + update() + +  : mixed +
                                                  +
                                                  Update a row.
                                                  + +
                                                  + validator() + +  : self +
                                                  +
                                                  Set a validator for the array of data (not on a field basis)
                                                  + +
                                                  + where() + +  : mixed +
                                                  +
                                                  Where condition to add to the query used to get data from the database.
                                                  + +
                                                  + whereSet() + +  : mixed +
                                                  +
                                                  Get / set if the WHERE conditions should be included in the create and +edit actions.
                                                  + +
                                                  + _getSet() + +  : mixed +
                                                  +
                                                  Common getter / setter function for DataTables classes.
                                                  + +
                                                  + _propExists() + +  : bool +
                                                  +
                                                  Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                  + +
                                                  + _readProp() + +  : mixed +
                                                  +
                                                  Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                  + +
                                                  + _writeProp() + +  : mixed +
                                                  +
                                                  Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                  + +
                                                  + + + + + + + +
                                                  +

                                                  + Methods + +

                                                  +
                                                  +

                                                  + __construct() + +

                                                  + + +

                                                  Join instance constructor.

                                                  + + + public + __construct([mixed $table = null ]) : mixed + +

                                                  @param string $table Table name to get the joined data from.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $table + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + aliasParentTable() + +

                                                  + + +

                                                  Get / set parent table alias.

                                                  + + + public + aliasParentTable([string $_ = null ]) : mixed + +

                                                  When working with a self referencing table (i.e. a column in the table contains +a primary key value from its own table) it can be useful to set an alias on the +parent table's name, allowing a self referencing Join. For example:

                                                  +
                                                  SELECT p2.publisher
                                                  +FROM   publisher as p2
                                                  +JOIN   publisher on (publisher.idPublisher = p2.idPublisher)
                                                  +
                                                  +

                                                  Where, in this case, publisher is the table that is used by the Editor instance, +and you want to use Join to link back to the table (resolving a name for example). +This method allows that alias to be set. Fields can then use standard SQL notation +to select a field, for example p2.publisher or publisher.publisher.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : string + = null
                                                  +
                                                  +

                                                  Table alias to use +@return string|self Table alias set (which is null by default), or self if used as +a setter.

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + create() + +

                                                  + + +

                                                  Create a row.

                                                  + + + public + create(mixed $editor, int $parentId, mixed $data) : mixed + +

                                                  @param Editor $editor Host Editor instance

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $editor + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $parentId + : int +
                                                  +
                                                  +

                                                  Parent row's primary key value +@param string[] $data Data to be set for the join +@internal

                                                  +
                                                  + +
                                                  +
                                                  + $data + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + data() + +

                                                  + + +

                                                  Get data

                                                  + + + public + data(mixed $editor, array<string|int, string> &$data, mixed &$options) : mixed + +

                                                  @param Editor $editor Host Editor instance

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $editor + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $data + : array<string|int, string> +
                                                  +
                                                  +

                                                  Data from the parent table's get and were we need +to add out output. +@param array $options options array for fields +@internal

                                                  +
                                                  + +
                                                  +
                                                  + $options + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + field() + +

                                                  + + +

                                                  Get / set field instances.

                                                  + + + public + field([mixed $_ = null ]) : mixed + +

                                                  The list of fields designates which columns in the table that will be read +from the joined table.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + fields() + +

                                                  + + +

                                                  Get / set field instances.

                                                  + + + public + fields([mixed $_ = null ]) : mixed + +

                                                  An alias of field, for convenience.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + get() + +

                                                  + + +

                                                  Get / set get attribute.

                                                  + + + public + get([bool $_ = null ]) : mixed + +

                                                  When set to false no read operations will occur on the join tables.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : bool + = null
                                                  +
                                                  +

                                                  Value +@return boolean|self Name

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + inst() + +

                                                  + + +

                                                  Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                  + + + public + static inst() : Editor|Field|Join|Upload + +

                                                  This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                  +
                                                  + + + + +
                                                  Return values
                                                  + Editor|Field|Join|Upload + — +

                                                  class +@static

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + instantiate() + +

                                                  + + +

                                                  Static method to instantiate a new instance of a class.

                                                  + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                  A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                  +
                                                  + + + + +
                                                  Return values
                                                  + Editor|Field|Join|Upload + — +

                                                  Instantiated class +@static

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + join() + +

                                                  + + +

                                                  Get / set join properties.

                                                  + + + public + join([string|array<string|int, string> $parent = null ][, mixed $child = null ][, mixed $table = null ]) : mixed + +

                                                  Define how the SQL will be performed, on what columns. There are +basically two types of join that are supported by Editor here, a direct +foreign key reference in the join table to the parent table's primary +key, or a link table that contains just primary keys for the parent and +child tables (this approach is usually used with a Join->type() of +'array' since you can often have multiple links between the two tables, +while a direct foreign key reference will typically use a type of +'object' (i.e. a single entry).

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $parent + : string|array<string|int, string> + = null
                                                  +
                                                  +

                                                  Parent table's primary key names. If used +with a link table (i.e. third parameter to this method is given, then +an array should be used, with the first element being the pkey's name +in the parent table, and the second element being the key's name in +the link table. +@param string|string[] $child Child table's primary key names. If used +with a link table (i.e. third parameter to this method is given, then +an array should be used, with the first element being the pkey's name +in the child table, and the second element being the key's name in the +link table. +@param string $table Join table name, if using a link table +@returns Join This for chaining +@deprecated 1.5 Please use the Join->link() method rather than this +method now.

                                                  +
                                                  + +
                                                  +
                                                  + $child + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $table + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + leftJoin() + +

                                                  + + +

                                                  Set up a left join operation for the Mjoined data

                                                  + + + public + leftJoin(string $table, string $field1, string $operator, string $field2) : self + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $table + : string +
                                                  +
                                                  +

                                                  to get the information from

                                                  +
                                                  + +
                                                  +
                                                  + $field1 + : string +
                                                  +
                                                  +

                                                  the first field to get the information from

                                                  +
                                                  + +
                                                  +
                                                  + $operator + : string +
                                                  +
                                                  +

                                                  the operation to perform on the two fields

                                                  +
                                                  + +
                                                  +
                                                  + $field2 + : string +
                                                  +
                                                  +

                                                  the second field to get the information from

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + self + — + + +
                                                  +
                                                  + + + +

                                                  Create a join link between two tables. The order of the fields does not +matter, but each field must contain the table name as well as the field +name.

                                                  + + + public + link(string $field1, string $field2) : Join + +

                                                  This method can be called a maximum of two times for an Mjoin instance:

                                                  +
                                                    +
                                                  • First time, creates a link between the Editor host table and a join +table
                                                  • +
                                                  • Second time creates the links required for a link table.
                                                  • +
                                                  +

                                                  Please refer to the Editor Mjoin documentation for further details: +https://editor.datatables.net/manual/php

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $field1 + : string +
                                                  +
                                                  +

                                                  Table and field name

                                                  +
                                                  + +
                                                  +
                                                  + $field2 + : string +
                                                  +
                                                  +

                                                  Table and field name

                                                  +
                                                  + +
                                                  +
                                                  + + +
                                                  + Tags + +
                                                  +
                                                  +
                                                  + throws +
                                                  +
                                                  + Exception + +

                                                  Link limitations

                                                  +
                                                  + +
                                                  +
                                                  + +
                                                  Return values
                                                  + Join + — +

                                                  Self for chaining

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + name() + +

                                                  + + +

                                                  Get / set name.

                                                  + + + public + name([string $_ = null ]) : mixed + +

                                                  The name of the Join is the JSON property key that is used when +'getting' the data, and the HTTP property key (in a JSON style) when +'setting' data. Typically the name of the db table will be used here, +but this method allows that to be overridden.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : string + = null
                                                  +
                                                  +

                                                  Field name +@return String|self Name

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + order() + +

                                                  + + +

                                                  Specify the property that the data will be sorted by.

                                                  + + + public + order([mixed $_ = null ]) : Join + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + Join + — +

                                                  Self for chaining

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + remove() + +

                                                  + + +

                                                  Delete rows

                                                  + + + public + remove(mixed $editor, array<string|int, int> $ids) : mixed + +

                                                  @param Editor $editor Host Editor instance

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $editor + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $ids + : array<string|int, int> +
                                                  +
                                                  +

                                                  Parent row IDs to delete +@internal

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + set() + +

                                                  + + +

                                                  Get / set set attribute.

                                                  + + + public + set([bool $_ = null ]) : mixed + +

                                                  When set to false no write operations will occur on the join tables. +This can be useful when you want to display information which is joined, +but want to only perform write operations on the parent table.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : bool + = null
                                                  +
                                                  +

                                                  Value +@return boolean|self Name

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + table() + +

                                                  + + +

                                                  Get / set join table name.

                                                  + + + public + table([string $_ = null ]) : mixed + +

                                                  Please note that this will also set the Join->name() used by the Join +as well. This is for convenience as the JSON output / HTTP input will +typically use the same name as the database name. If you want to set a +custom name, the Join->name() method must be called after this one.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : string + = null
                                                  +
                                                  +

                                                  Name of the table to read the join data from +@return String|self Name of the join table, or self if used as a setter.

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + type() + +

                                                  + + +

                                                  Get / set the join type.

                                                  + + + public + type([string $_ = null ]) : mixed + +

                                                  The join type allows the data that is returned from the join to be given +as an array (i.e. working with multiple possibly results for each record from +the parent table), or as an object (i.e. working which one and only one result +for each record form the parent table).

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : string + = null
                                                  +
                                                  +

                                                  Join type ('object') or an array of +results ('array') for the join. +@return String|self Join type, or self if used as a setter.

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + update() + +

                                                  + + +

                                                  Update a row.

                                                  + + + public + update(mixed $editor, int $parentId, mixed $data) : mixed + +

                                                  @param Editor $editor Host Editor instance

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $editor + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $parentId + : int +
                                                  +
                                                  +

                                                  Parent row's primary key value +@param string[] $data Data to be set for the join +@internal

                                                  +
                                                  + +
                                                  +
                                                  + $data + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + validator() + +

                                                  + + +

                                                  Set a validator for the array of data (not on a field basis)

                                                  + + + public + validator(string $fieldName, callable $fn) : self + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $fieldName + : string +
                                                  +
                                                  +

                                                  Name of the field that any error should be shown +against on the client-side

                                                  +
                                                  + +
                                                  +
                                                  + $fn + : callable +
                                                  +
                                                  +

                                                  Callback function for validation

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + self + — +

                                                  Chainable

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + where() + +

                                                  + + +

                                                  Where condition to add to the query used to get data from the database.

                                                  + + + public + where([string|callable $key = null ][, mixed $value = null ][, mixed $op = '=' ]) : mixed + +

                                                  Note that this is applied to the child table.

                                                  +

                                                  Can be used in two different ways:

                                                  +
                                                    +
                                                  • Simple case: where( field, value, operator ) +
                                                  • +
                                                  • Complex: where( fn ) +
                                                  • +
                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $key + : string|callable + = null
                                                  +
                                                  +

                                                  Single field name or a closure function +@param string|string[] $value Single field value, or an array of values. +@param string $op Condition operator: <, >, = etc +@return string[]|self Where condition array, or self if used as a setter.

                                                  +
                                                  + +
                                                  +
                                                  + $value + : mixed + = null
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $op + : mixed + = '='
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + whereSet() + +

                                                  + + +

                                                  Get / set if the WHERE conditions should be included in the create and +edit actions.

                                                  + + + public + whereSet([bool $_ = null ]) : mixed + +

                                                  This means that the fields which have been used as part of the 'get' +WHERE condition (using the where() method) will be set as the values +given.

                                                  +

                                                  This is default false (i.e. they are not included).

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $_ + : bool + = null
                                                  +
                                                  +

                                                  Include (true), or not (false) +@return boolean Current value

                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + _getSet() + +

                                                  + + +

                                                  Common getter / setter function for DataTables classes.

                                                  + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                  This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                  +
                                                  + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $prop + : mixed +
                                                  +
                                                  +

                                                  The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                  +
                                                  + +
                                                  +
                                                  + $val + : mixed +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + $array + : mixed + = false
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  +

                                                  + _propExists() + +

                                                  + + +

                                                  Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                  + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $name + : string +
                                                  +
                                                  +

                                                  Javascript dotted object name to write to

                                                  +
                                                  + +
                                                  +
                                                  + $data + : array<string|int, mixed> +
                                                  +
                                                  +

                                                  Data source array to read from

                                                  +
                                                  + +
                                                  +
                                                  + + +
                                                  + Tags + +
                                                  +
                                                  +
                                                  + private +
                                                  +
                                                  + + +
                                                  +
                                                  + +
                                                  Return values
                                                  + bool + — +

                                                  true if present, false otherwise

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + _readProp() + +

                                                  + + +

                                                  Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                  + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $name + : string +
                                                  +
                                                  +

                                                  Javascript dotted object name to write to

                                                  +
                                                  + +
                                                  +
                                                  + $data + : array<string|int, mixed> +
                                                  +
                                                  +

                                                  Data source array to read from

                                                  +
                                                  + +
                                                  +
                                                  + + +
                                                  + Tags + +
                                                  +
                                                  +
                                                  + private +
                                                  +
                                                  + + +
                                                  +
                                                  + +
                                                  Return values
                                                  + mixed + — +

                                                  The read value, or null if no value found.

                                                  +
                                                  + + +
                                                  +
                                                  +

                                                  + _writeProp() + +

                                                  + + +

                                                  Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                  + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                  Parameters
                                                  +
                                                  +
                                                  + $out + : array<string|int, mixed> +
                                                  +
                                                  +

                                                  Array to write the data to

                                                  +
                                                  + +
                                                  +
                                                  + $name + : string +
                                                  +
                                                  +

                                                  Javascript dotted object name to write to

                                                  +
                                                  + +
                                                  +
                                                  + $value + : mixed +
                                                  +
                                                  +

                                                  Value to write

                                                  +
                                                  + +
                                                  +
                                                  + + +
                                                  + Tags + +
                                                  +
                                                  +
                                                  + throws +
                                                  +
                                                  + Exception + +

                                                  Information about duplicate properties

                                                  +
                                                  + +
                                                  +
                                                  + private +
                                                  +
                                                  + + +
                                                  +
                                                  + +
                                                  Return values
                                                  + mixed + — + + +
                                                  +
                                                  + +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  
                                                  +        
                                                  + +
                                                  +
                                                  + + + +
                                                  +
                                                  +
                                                  +
                                                  +

                                                  Search results

                                                  + +
                                                  +
                                                  +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    + + +
                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Options.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Options.html new file mode 100644 index 00000000..9d9d7b99 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Options.html @@ -0,0 +1,1299 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                    +

                                                    Editor PHP 2.1.3

                                                    + + + + + +
                                                    + +
                                                    +
                                                    + + + + +
                                                    + + +
                                                    +

                                                    + Options + + + extends Ext + + +
                                                    + in package + +
                                                    + + +

                                                    + + + +

                                                    The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.

                                                    + +

                                                    This is normally from a table that is left joined to the main table being +edited, and a list of the values available from the joined table is shown to +the end user to let them select from.

                                                    +

                                                    Options instances are used with the Field->options() method.

                                                    +
                                                    + + +
                                                    + Tags + +
                                                    +
                                                    +
                                                    + example +
                                                    +
                                                    + +

                                                    Get a list of options from the sites table

                                                    +
                                                    Field::inst( 'users.site' )
                                                    +    ->options( Options::inst()
                                                    +        ->table( 'sites' )
                                                    +        ->value( 'id' )
                                                    +        ->label( 'name' )
                                                    +    )
                                                    +
                                                    +

                                                    @example +Get a list of options with custom ordering

                                                    +
                                                    Field::inst( 'users.site' )
                                                    +    ->options( Options::inst()
                                                    +        ->table( 'sites' )
                                                    +        ->value( 'id' )
                                                    +        ->label( 'name' )
                                                    +        ->order( 'name DESC' )
                                                    +    )
                                                    +
                                                    +

                                                    @example +Get a list of options showing the id and name in the label

                                                    +
                                                    Field::inst( 'users.site' )
                                                    +    ->options( Options::inst()
                                                    +        ->table( 'sites' )
                                                    +        ->value( 'id' )
                                                    +        ->label( [ 'name', 'id' ] )
                                                    +        ->render( function ( $row ) {
                                                    +          return $row['name'].' ('.$row['id'].')';
                                                    +        } )
                                                    +    )
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + + + + + + +

                                                    + Table of Contents + +

                                                    + +
                                                    +
                                                    + add() + +  : Options +
                                                    +
                                                    Add extra options to the list, in addition to any obtained from the database
                                                    + +
                                                    + inst() + +  : Editor|Field|Join|Upload +
                                                    +
                                                    Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                    + +
                                                    + instantiate() + +  : Editor|Field|Join|Upload +
                                                    +
                                                    Static method to instantiate a new instance of a class.
                                                    + +
                                                    + label() + +  : Options|array<string|int, string> +
                                                    +
                                                    Get / set the column(s) to use as the label value of the options
                                                    + +
                                                    + leftJoin() + +  : self +
                                                    +
                                                    Set up a left join operation for the options
                                                    + +
                                                    + limit() + +  : Options|array<string|int, string> +
                                                    +
                                                    Get / set the LIMIT clause to limit the number of records returned.
                                                    + +
                                                    + order() + +  : Options|string +
                                                    +
                                                    Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.
                                                    + +
                                                    + render() + +  : Options|callable +
                                                    +
                                                    Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.
                                                    + +
                                                    + table() + +  : Options|string +
                                                    +
                                                    Get / set the database table from which to gather the options for the +list.
                                                    + +
                                                    + value() + +  : Options|string +
                                                    +
                                                    Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.
                                                    + +
                                                    + where() + +  : Options|callable +
                                                    +
                                                    Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.
                                                    + +
                                                    + _getSet() + +  : mixed +
                                                    +
                                                    Common getter / setter function for DataTables classes.
                                                    + +
                                                    + _propExists() + +  : bool +
                                                    +
                                                    Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                    + +
                                                    + _readProp() + +  : mixed +
                                                    +
                                                    Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                    + +
                                                    + _writeProp() + +  : mixed +
                                                    +
                                                    Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                    + +
                                                    + + + + + + + +
                                                    +

                                                    + Methods + +

                                                    +
                                                    +

                                                    + add() + +

                                                    + + +

                                                    Add extra options to the list, in addition to any obtained from the database

                                                    + + + public + add(string $label[, string|null $value = null ]) : Options + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $label + : string +
                                                    +
                                                    +

                                                    The label to use for the option

                                                    +
                                                    + +
                                                    +
                                                    + $value + : string|null + = null
                                                    +
                                                    +

                                                    Value for the option. If not given, the label will be used

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options + — +

                                                    Self for chaining

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + inst() + +

                                                    + + +

                                                    Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                    + + + public + static inst() : Editor|Field|Join|Upload + +

                                                    This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                    +
                                                    + + + + +
                                                    Return values
                                                    + Editor|Field|Join|Upload + — +

                                                    class +@static

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + instantiate() + +

                                                    + + +

                                                    Static method to instantiate a new instance of a class.

                                                    + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                    A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                    +
                                                    + + + + +
                                                    Return values
                                                    + Editor|Field|Join|Upload + — +

                                                    Instantiated class +@static

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + label() + +

                                                    + + +

                                                    Get / set the column(s) to use as the label value of the options

                                                    + + + public + label([null|string|array<string|int, string> $_ = null ]) : Options|array<string|int, string> + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|string|array<string|int, string> + = null
                                                    +
                                                    +

                                                    null to get the current value, string or +array to get.

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|array<string|int, string> + — +

                                                    Self if setting for chaining, array of values if +getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + leftJoin() + +

                                                    + + +

                                                    Set up a left join operation for the options

                                                    + + + public + leftJoin(string $table, string $field1, string $operator, string $field2) : self + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $table + : string +
                                                    +
                                                    +

                                                    to get the information from

                                                    +
                                                    + +
                                                    +
                                                    + $field1 + : string +
                                                    +
                                                    +

                                                    the first field to get the information from

                                                    +
                                                    + +
                                                    +
                                                    + $operator + : string +
                                                    +
                                                    +

                                                    the operation to perform on the two fields

                                                    +
                                                    + +
                                                    +
                                                    + $field2 + : string +
                                                    +
                                                    +

                                                    the second field to get the information from

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + self + — + + +
                                                    +
                                                    +

                                                    + limit() + +

                                                    + + +

                                                    Get / set the LIMIT clause to limit the number of records returned.

                                                    + + + public + limit([null|number $_ = null ]) : Options|array<string|int, string> + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|number + = null
                                                    +
                                                    +

                                                    Number of rows to limit the result to

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|array<string|int, string> + — +

                                                    Self if setting for chaining, limit if getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + order() + +

                                                    + + +

                                                    Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.

                                                    + + + public + order([null|string $_ = null ]) : Options|string + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|string + = null
                                                    +
                                                    +

                                                    String to set, null to get current value

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|string + — +

                                                    Self if setting for chaining, string if getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + render() + +

                                                    + + +

                                                    Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.

                                                    + + + public + render([null|callable $_ = null ]) : Options|callable + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|callable + = null
                                                    +
                                                    +

                                                    Function to set, null to get current value

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|callable + — +

                                                    Self if setting for chaining, callable if +getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + table() + +

                                                    + + +

                                                    Get / set the database table from which to gather the options for the +list.

                                                    + + + public + table([null|string $_ = null ]) : Options|string + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|string + = null
                                                    +
                                                    +

                                                    String to set, null to get current value

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|string + — +

                                                    Self if setting for chaining, string if getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + value() + +

                                                    + + +

                                                    Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.

                                                    + + + public + value([null|string $_ = null ]) : Options|string + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|string + = null
                                                    +
                                                    +

                                                    String to set, null to get current value

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|string + — +

                                                    Self if setting for chaining, string if getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + where() + +

                                                    + + +

                                                    Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.

                                                    + + + public + where([null|callable $_ = null ]) : Options|callable + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $_ + : null|callable + = null
                                                    +
                                                    +

                                                    Function to set, null to get current value

                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + Options|callable + — +

                                                    Self if setting for chaining, callable if +getting.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + _getSet() + +

                                                    + + +

                                                    Common getter / setter function for DataTables classes.

                                                    + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                    This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                    +
                                                    + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $prop + : mixed +
                                                    +
                                                    +

                                                    The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                    +
                                                    + +
                                                    +
                                                    + $val + : mixed +
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + $array + : mixed + = false
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + + + +
                                                    Return values
                                                    + mixed + — + + +
                                                    +
                                                    +

                                                    + _propExists() + +

                                                    + + +

                                                    Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                    + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $name + : string +
                                                    +
                                                    +

                                                    Javascript dotted object name to write to

                                                    +
                                                    + +
                                                    +
                                                    + $data + : array<string|int, mixed> +
                                                    +
                                                    +

                                                    Data source array to read from

                                                    +
                                                    + +
                                                    +
                                                    + + +
                                                    + Tags + +
                                                    +
                                                    +
                                                    + private +
                                                    +
                                                    + + +
                                                    +
                                                    + +
                                                    Return values
                                                    + bool + — +

                                                    true if present, false otherwise

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + _readProp() + +

                                                    + + +

                                                    Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                    + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $name + : string +
                                                    +
                                                    +

                                                    Javascript dotted object name to write to

                                                    +
                                                    + +
                                                    +
                                                    + $data + : array<string|int, mixed> +
                                                    +
                                                    +

                                                    Data source array to read from

                                                    +
                                                    + +
                                                    +
                                                    + + +
                                                    + Tags + +
                                                    +
                                                    +
                                                    + private +
                                                    +
                                                    + + +
                                                    +
                                                    + +
                                                    Return values
                                                    + mixed + — +

                                                    The read value, or null if no value found.

                                                    +
                                                    + + +
                                                    +
                                                    +

                                                    + _writeProp() + +

                                                    + + +

                                                    Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                    + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                    Parameters
                                                    +
                                                    +
                                                    + $out + : array<string|int, mixed> +
                                                    +
                                                    +

                                                    Array to write the data to

                                                    +
                                                    + +
                                                    +
                                                    + $name + : string +
                                                    +
                                                    +

                                                    Javascript dotted object name to write to

                                                    +
                                                    + +
                                                    +
                                                    + $value + : mixed +
                                                    +
                                                    +

                                                    Value to write

                                                    +
                                                    + +
                                                    +
                                                    + + +
                                                    + Tags + +
                                                    +
                                                    +
                                                    + throws +
                                                    +
                                                    + Exception + +

                                                    Information about duplicate properties

                                                    +
                                                    + +
                                                    +
                                                    + private +
                                                    +
                                                    + + +
                                                    +
                                                    + +
                                                    Return values
                                                    + mixed + — + + +
                                                    +
                                                    + +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    
                                                    +        
                                                    + +
                                                    +
                                                    + + + +
                                                    +
                                                    +
                                                    +
                                                    +

                                                    Search results

                                                    + +
                                                    +
                                                    +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + +
                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchBuilderOptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchBuilderOptions.html new file mode 100644 index 00000000..02611837 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchBuilderOptions.html @@ -0,0 +1,1182 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                      +

                                                      Editor PHP 2.1.3

                                                      + + + + + +
                                                      + +
                                                      +
                                                      + + + + +
                                                      + + +
                                                      +

                                                      + SearchBuilderOptions + + + extends Ext + + +
                                                      + in package + +
                                                      + + +

                                                      + + + +

                                                      The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.

                                                      + +

                                                      This is normally from a table that is left joined to the main table being +edited, and a list of the values available from the joined table is shown to +the end user to let them select from.

                                                      +

                                                      Options instances are used with the Field->options() method.

                                                      +
                                                      + + +
                                                      + Tags + +
                                                      +
                                                      +
                                                      + example +
                                                      +
                                                      + +

                                                      Get a list of options from the sites table

                                                      +
                                                      Field::inst( 'users.site' )
                                                      +    ->options( Options::inst()
                                                      +        ->table( 'sites' )
                                                      +        ->value( 'id' )
                                                      +        ->label( 'name' )
                                                      +    )
                                                      +
                                                      +

                                                      @example +Get a list of options with custom ordering

                                                      +
                                                      Field::inst( 'users.site' )
                                                      +    ->options( Options::inst()
                                                      +        ->table( 'sites' )
                                                      +        ->value( 'id' )
                                                      +        ->label( 'name' )
                                                      +        ->order( 'name DESC' )
                                                      +    )
                                                      +
                                                      +

                                                      @example +Get a list of options showing the id and name in the label

                                                      +
                                                      Field::inst( 'users.site' )
                                                      +    ->options( Options::inst()
                                                      +        ->table( 'sites' )
                                                      +        ->value( 'id' )
                                                      +        ->label( [ 'name', 'id' ] )
                                                      +        ->render( function ( $row ) {
                                                      +          return $row['name'].' ('.$row['id'].')';
                                                      +        } )
                                                      +    )
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + + + + + + +

                                                      + Table of Contents + +

                                                      + +
                                                      +
                                                      + inst() + +  : Editor|Field|Join|Upload +
                                                      +
                                                      Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                      + +
                                                      + instantiate() + +  : Editor|Field|Join|Upload +
                                                      +
                                                      Static method to instantiate a new instance of a class.
                                                      + +
                                                      + label() + +  : Options|array<string|int, string> +
                                                      +
                                                      Get / set the column(s) to use as the label value of the options
                                                      + +
                                                      + leftJoin() + +  : self +
                                                      +
                                                      Get / set the array values used for a leftJoin condition if it is to be +applied to the query to get the options.
                                                      + +
                                                      + order() + +  : Options|string +
                                                      +
                                                      Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.
                                                      + +
                                                      + render() + +  : Options|callable +
                                                      +
                                                      Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.
                                                      + +
                                                      + table() + +  : Options|string +
                                                      +
                                                      Get / set the database table from which to gather the options for the +list.
                                                      + +
                                                      + value() + +  : Options|string +
                                                      +
                                                      Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.
                                                      + +
                                                      + where() + +  : Options|callable +
                                                      +
                                                      Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.
                                                      + +
                                                      + _getSet() + +  : mixed +
                                                      +
                                                      Common getter / setter function for DataTables classes.
                                                      + +
                                                      + _propExists() + +  : bool +
                                                      +
                                                      Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                      + +
                                                      + _readProp() + +  : mixed +
                                                      +
                                                      Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                      + +
                                                      + _writeProp() + +  : mixed +
                                                      +
                                                      Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                      + +
                                                      + + + + + + + +
                                                      +

                                                      + Methods + +

                                                      +
                                                      +

                                                      + inst() + +

                                                      + + +

                                                      Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                      + + + public + static inst() : Editor|Field|Join|Upload + +

                                                      This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                      +
                                                      + + + + +
                                                      Return values
                                                      + Editor|Field|Join|Upload + — +

                                                      class +@static

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + instantiate() + +

                                                      + + +

                                                      Static method to instantiate a new instance of a class.

                                                      + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                      A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                      +
                                                      + + + + +
                                                      Return values
                                                      + Editor|Field|Join|Upload + — +

                                                      Instantiated class +@static

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + label() + +

                                                      + + +

                                                      Get / set the column(s) to use as the label value of the options

                                                      + + + public + label([null|string|array<string|int, string> $_ = null ]) : Options|array<string|int, string> + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|string|array<string|int, string> + = null
                                                      +
                                                      +

                                                      null to get the current value, string or +array to get.

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|array<string|int, string> + — +

                                                      Self if setting for chaining, array of values if +getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + leftJoin() + +

                                                      + + +

                                                      Get / set the array values used for a leftJoin condition if it is to be +applied to the query to get the options.

                                                      + + + public + leftJoin(string $table, string $field1, string $operator, string $field2) : self + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $table + : string +
                                                      +
                                                      +

                                                      to get the information from

                                                      +
                                                      + +
                                                      +
                                                      + $field1 + : string +
                                                      +
                                                      +

                                                      the first field to get the information from

                                                      +
                                                      + +
                                                      +
                                                      + $operator + : string +
                                                      +
                                                      +

                                                      the operation to perform on the two fields

                                                      +
                                                      + +
                                                      +
                                                      + $field2 + : string +
                                                      +
                                                      +

                                                      the second field to get the information from

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + self + — + + +
                                                      +
                                                      +

                                                      + order() + +

                                                      + + +

                                                      Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.

                                                      + + + public + order([null|string $_ = null ]) : Options|string + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|string + = null
                                                      +
                                                      +

                                                      String to set, null to get current value

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|string + — +

                                                      Self if setting for chaining, string if getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + render() + +

                                                      + + +

                                                      Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.

                                                      + + + public + render([null|callable $_ = null ]) : Options|callable + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|callable + = null
                                                      +
                                                      +

                                                      Function to set, null to get current value

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|callable + — +

                                                      Self if setting for chaining, callable if +getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + table() + +

                                                      + + +

                                                      Get / set the database table from which to gather the options for the +list.

                                                      + + + public + table([null|string $_ = null ]) : Options|string + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|string + = null
                                                      +
                                                      +

                                                      String to set, null to get current value

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|string + — +

                                                      Self if setting for chaining, string if getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + value() + +

                                                      + + +

                                                      Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.

                                                      + + + public + value([null|string $_ = null ]) : Options|string + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|string + = null
                                                      +
                                                      +

                                                      String to set, null to get current value

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|string + — +

                                                      Self if setting for chaining, string if getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + where() + +

                                                      + + +

                                                      Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.

                                                      + + + public + where([null|callable $_ = null ]) : Options|callable + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $_ + : null|callable + = null
                                                      +
                                                      +

                                                      Function to set, null to get current value

                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + Options|callable + — +

                                                      Self if setting for chaining, callable if +getting.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + _getSet() + +

                                                      + + +

                                                      Common getter / setter function for DataTables classes.

                                                      + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                      This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                      +
                                                      + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $prop + : mixed +
                                                      +
                                                      +

                                                      The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                      +
                                                      + +
                                                      +
                                                      + $val + : mixed +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + $array + : mixed + = false
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + + + +
                                                      Return values
                                                      + mixed + — + + +
                                                      +
                                                      +

                                                      + _propExists() + +

                                                      + + +

                                                      Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                      + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $name + : string +
                                                      +
                                                      +

                                                      Javascript dotted object name to write to

                                                      +
                                                      + +
                                                      +
                                                      + $data + : array<string|int, mixed> +
                                                      +
                                                      +

                                                      Data source array to read from

                                                      +
                                                      + +
                                                      +
                                                      + + +
                                                      + Tags + +
                                                      +
                                                      +
                                                      + private +
                                                      +
                                                      + + +
                                                      +
                                                      + +
                                                      Return values
                                                      + bool + — +

                                                      true if present, false otherwise

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + _readProp() + +

                                                      + + +

                                                      Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                      + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $name + : string +
                                                      +
                                                      +

                                                      Javascript dotted object name to write to

                                                      +
                                                      + +
                                                      +
                                                      + $data + : array<string|int, mixed> +
                                                      +
                                                      +

                                                      Data source array to read from

                                                      +
                                                      + +
                                                      +
                                                      + + +
                                                      + Tags + +
                                                      +
                                                      +
                                                      + private +
                                                      +
                                                      + + +
                                                      +
                                                      + +
                                                      Return values
                                                      + mixed + — +

                                                      The read value, or null if no value found.

                                                      +
                                                      + + +
                                                      +
                                                      +

                                                      + _writeProp() + +

                                                      + + +

                                                      Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                      + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                      Parameters
                                                      +
                                                      +
                                                      + $out + : array<string|int, mixed> +
                                                      +
                                                      +

                                                      Array to write the data to

                                                      +
                                                      + +
                                                      +
                                                      + $name + : string +
                                                      +
                                                      +

                                                      Javascript dotted object name to write to

                                                      +
                                                      + +
                                                      +
                                                      + $value + : mixed +
                                                      +
                                                      +

                                                      Value to write

                                                      +
                                                      + +
                                                      +
                                                      + + +
                                                      + Tags + +
                                                      +
                                                      +
                                                      + throws +
                                                      +
                                                      + Exception + +

                                                      Information about duplicate properties

                                                      +
                                                      + +
                                                      +
                                                      + private +
                                                      +
                                                      + + +
                                                      +
                                                      + +
                                                      Return values
                                                      + mixed + — + + +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      
                                                      +        
                                                      + +
                                                      +
                                                      + + + +
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Search results

                                                      + +
                                                      +
                                                      +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + +
                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchPaneOptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchPaneOptions.html new file mode 100644 index 00000000..411de632 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-SearchPaneOptions.html @@ -0,0 +1,1182 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                        +

                                                        Editor PHP 2.1.3

                                                        + + + + + +
                                                        + +
                                                        +
                                                        + + + + +
                                                        + + +
                                                        +

                                                        + SearchPaneOptions + + + extends Ext + + +
                                                        + in package + +
                                                        + + +

                                                        + + + +

                                                        The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.

                                                        + +

                                                        This is normally from a table that is left joined to the main table being +edited, and a list of the values available from the joined table is shown to +the end user to let them select from.

                                                        +

                                                        Options instances are used with the Field->options() method.

                                                        +
                                                        + + +
                                                        + Tags + +
                                                        +
                                                        +
                                                        + example +
                                                        +
                                                        + +

                                                        Get a list of options from the sites table

                                                        +
                                                        Field::inst( 'users.site' )
                                                        +    ->options( Options::inst()
                                                        +        ->table( 'sites' )
                                                        +        ->value( 'id' )
                                                        +        ->label( 'name' )
                                                        +    )
                                                        +
                                                        +

                                                        @example +Get a list of options with custom ordering

                                                        +
                                                        Field::inst( 'users.site' )
                                                        +    ->options( Options::inst()
                                                        +        ->table( 'sites' )
                                                        +        ->value( 'id' )
                                                        +        ->label( 'name' )
                                                        +        ->order( 'name DESC' )
                                                        +    )
                                                        +
                                                        +

                                                        @example +Get a list of options showing the id and name in the label

                                                        +
                                                        Field::inst( 'users.site' )
                                                        +    ->options( Options::inst()
                                                        +        ->table( 'sites' )
                                                        +        ->value( 'id' )
                                                        +        ->label( [ 'name', 'id' ] )
                                                        +        ->render( function ( $row ) {
                                                        +          return $row['name'].' ('.$row['id'].')';
                                                        +        } )
                                                        +    )
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + + + + + + +

                                                        + Table of Contents + +

                                                        + +
                                                        +
                                                        + inst() + +  : Editor|Field|Join|Upload +
                                                        +
                                                        Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                        + +
                                                        + instantiate() + +  : Editor|Field|Join|Upload +
                                                        +
                                                        Static method to instantiate a new instance of a class.
                                                        + +
                                                        + label() + +  : Options|array<string|int, string> +
                                                        +
                                                        Get / set the column(s) to use as the label value of the options
                                                        + +
                                                        + leftJoin() + +  : self +
                                                        +
                                                        Get / set the array values used for a leftJoin condition if it is to be +applied to the query to get the options.
                                                        + +
                                                        + order() + +  : Options|string +
                                                        +
                                                        Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.
                                                        + +
                                                        + render() + +  : Options|callable +
                                                        +
                                                        Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.
                                                        + +
                                                        + table() + +  : Options|string +
                                                        +
                                                        Get / set the database table from which to gather the options for the +list.
                                                        + +
                                                        + value() + +  : Options|string +
                                                        +
                                                        Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.
                                                        + +
                                                        + where() + +  : Options|callable +
                                                        +
                                                        Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.
                                                        + +
                                                        + _getSet() + +  : mixed +
                                                        +
                                                        Common getter / setter function for DataTables classes.
                                                        + +
                                                        + _propExists() + +  : bool +
                                                        +
                                                        Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                        + +
                                                        + _readProp() + +  : mixed +
                                                        +
                                                        Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                        + +
                                                        + _writeProp() + +  : mixed +
                                                        +
                                                        Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                        + +
                                                        + + + + + + + +
                                                        +

                                                        + Methods + +

                                                        +
                                                        +

                                                        + inst() + +

                                                        + + +

                                                        Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                        + + + public + static inst() : Editor|Field|Join|Upload + +

                                                        This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                        +
                                                        + + + + +
                                                        Return values
                                                        + Editor|Field|Join|Upload + — +

                                                        class +@static

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + instantiate() + +

                                                        + + +

                                                        Static method to instantiate a new instance of a class.

                                                        + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                        A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                        +
                                                        + + + + +
                                                        Return values
                                                        + Editor|Field|Join|Upload + — +

                                                        Instantiated class +@static

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + label() + +

                                                        + + +

                                                        Get / set the column(s) to use as the label value of the options

                                                        + + + public + label([null|string|array<string|int, string> $_ = null ]) : Options|array<string|int, string> + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|string|array<string|int, string> + = null
                                                        +
                                                        +

                                                        null to get the current value, string or +array to get.

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|array<string|int, string> + — +

                                                        Self if setting for chaining, array of values if +getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + leftJoin() + +

                                                        + + +

                                                        Get / set the array values used for a leftJoin condition if it is to be +applied to the query to get the options.

                                                        + + + public + leftJoin(string $table, string $field1, string $operator, string $field2) : self + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $table + : string +
                                                        +
                                                        +

                                                        to get the information from

                                                        +
                                                        + +
                                                        +
                                                        + $field1 + : string +
                                                        +
                                                        +

                                                        the first field to get the information from

                                                        +
                                                        + +
                                                        +
                                                        + $operator + : string +
                                                        +
                                                        +

                                                        the operation to perform on the two fields

                                                        +
                                                        + +
                                                        +
                                                        + $field2 + : string +
                                                        +
                                                        +

                                                        the second field to get the information from

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + self + — + + +
                                                        +
                                                        +

                                                        + order() + +

                                                        + + +

                                                        Get / set the ORDER BY clause to use in the SQL. If this option is not +provided the ordering will be based on the rendered output, either +numerically or alphabetically based on the data returned by the renderer.

                                                        + + + public + order([null|string $_ = null ]) : Options|string + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|string + = null
                                                        +
                                                        +

                                                        String to set, null to get current value

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|string + — +

                                                        Self if setting for chaining, string if getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + render() + +

                                                        + + +

                                                        Get / set the label renderer. The renderer can be used to combine +multiple database columns into a single string that is shown as the label +to the end user in the list of options.

                                                        + + + public + render([null|callable $_ = null ]) : Options|callable + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|callable + = null
                                                        +
                                                        +

                                                        Function to set, null to get current value

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|callable + — +

                                                        Self if setting for chaining, callable if +getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + table() + +

                                                        + + +

                                                        Get / set the database table from which to gather the options for the +list.

                                                        + + + public + table([null|string $_ = null ]) : Options|string + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|string + = null
                                                        +
                                                        +

                                                        String to set, null to get current value

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|string + — +

                                                        Self if setting for chaining, string if getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + value() + +

                                                        + + +

                                                        Get / set the column name to use for the value in the options list. This +would normally be the primary key for the table.

                                                        + + + public + value([null|string $_ = null ]) : Options|string + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|string + = null
                                                        +
                                                        +

                                                        String to set, null to get current value

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|string + — +

                                                        Self if setting for chaining, string if getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + where() + +

                                                        + + +

                                                        Get / set the method to use for a WHERE condition if it is to be +applied to the query to get the options.

                                                        + + + public + where([null|callable $_ = null ]) : Options|callable + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $_ + : null|callable + = null
                                                        +
                                                        +

                                                        Function to set, null to get current value

                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + Options|callable + — +

                                                        Self if setting for chaining, callable if +getting.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + _getSet() + +

                                                        + + +

                                                        Common getter / setter function for DataTables classes.

                                                        + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                        This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                        +
                                                        + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $prop + : mixed +
                                                        +
                                                        +

                                                        The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                        +
                                                        + +
                                                        +
                                                        + $val + : mixed +
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + $array + : mixed + = false
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + + + +
                                                        Return values
                                                        + mixed + — + + +
                                                        +
                                                        +

                                                        + _propExists() + +

                                                        + + +

                                                        Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                        + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $name + : string +
                                                        +
                                                        +

                                                        Javascript dotted object name to write to

                                                        +
                                                        + +
                                                        +
                                                        + $data + : array<string|int, mixed> +
                                                        +
                                                        +

                                                        Data source array to read from

                                                        +
                                                        + +
                                                        +
                                                        + + +
                                                        + Tags + +
                                                        +
                                                        +
                                                        + private +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        Return values
                                                        + bool + — +

                                                        true if present, false otherwise

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + _readProp() + +

                                                        + + +

                                                        Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                        + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $name + : string +
                                                        +
                                                        +

                                                        Javascript dotted object name to write to

                                                        +
                                                        + +
                                                        +
                                                        + $data + : array<string|int, mixed> +
                                                        +
                                                        +

                                                        Data source array to read from

                                                        +
                                                        + +
                                                        +
                                                        + + +
                                                        + Tags + +
                                                        +
                                                        +
                                                        + private +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        Return values
                                                        + mixed + — +

                                                        The read value, or null if no value found.

                                                        +
                                                        + + +
                                                        +
                                                        +

                                                        + _writeProp() + +

                                                        + + +

                                                        Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                        + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                        Parameters
                                                        +
                                                        +
                                                        + $out + : array<string|int, mixed> +
                                                        +
                                                        +

                                                        Array to write the data to

                                                        +
                                                        + +
                                                        +
                                                        + $name + : string +
                                                        +
                                                        +

                                                        Javascript dotted object name to write to

                                                        +
                                                        + +
                                                        +
                                                        + $value + : mixed +
                                                        +
                                                        +

                                                        Value to write

                                                        +
                                                        + +
                                                        +
                                                        + + +
                                                        + Tags + +
                                                        +
                                                        +
                                                        + throws +
                                                        +
                                                        + Exception + +

                                                        Information about duplicate properties

                                                        +
                                                        + +
                                                        +
                                                        + private +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        Return values
                                                        + mixed + — + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        
                                                        +        
                                                        + +
                                                        +
                                                        + + + +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        Search results

                                                        + +
                                                        +
                                                        +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + +
                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Upload.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Upload.html new file mode 100644 index 00000000..c5bc8d48 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Upload.html @@ -0,0 +1,1681 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                          +

                                                          Editor PHP 2.1.3

                                                          + + + + + +
                                                          + +
                                                          +
                                                          + + + + +
                                                          + + +
                                                          +

                                                          + Upload + + + extends Ext + + +
                                                          + in package + +
                                                          + + +

                                                          + + + +

                                                          Upload class for Editor. This class provides the ability to easily specify +file upload information, specifically how the file should be recorded on +the server (database and file system).

                                                          + +

                                                          An instance of this class is attached to a field using the Field->upload() method. When Editor detects a file upload for that file the +information provided for this instance is executed.

                                                          +

                                                          The configuration is primarily driven through the Upload->db() and +Upload->action() methods:

                                                          +
                                                            +
                                                          • Upload->db() Describes how information about the uploaded file is to be +stored on the database.
                                                          • +
                                                          • Upload->action() Describes where the file should be stored on the file system +and provides the option of specifying a custom action when a file is +uploaded.
                                                          • +
                                                          +

                                                          Both methods are optional - you can store the file on the server using the +Upload->db() method only if you want to store the file in the database, or if +you don't want to store relational data on the database us only +Upload->action(). However, the majority of the time it is best to use +both - store information about the file on the database for fast retrieval (using a +Editor->leftJoin() for example) and the file on the file system for direct +web access.

                                                          +
                                                          + + +
                                                          + Tags + +
                                                          +
                                                          +
                                                          + example +
                                                          +
                                                          + +

                                                          Store information about a file in a table called files and the actual +file in an uploads directory.

                                                          +
                                                          	Field::inst( 'imageId' )
                                                          +		->upload(
                                                          +			Upload::inst( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' )
                                                          +		 		->db( 'files', 'id', array(
                                                          +					'webPath'     => Upload::DB_WEB_PATH,
                                                          +					'fileName'    => Upload::DB_FILE_NAME,
                                                          +					'fileSize'    => Upload::DB_FILE_SIZE,
                                                          +					'systemPath'  => Upload::DB_SYSTEM_PATH
                                                          +				) )
                                                          +				->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" )
                                                          +		)
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + example +
                                                          +
                                                          + +

                                                          As above, but with PHP 5.4 (which allows chaining from new instances of a +class)

                                                          +
                                                          	newField( 'imageId' )
                                                          +		->upload(
                                                          +			new Upload( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' )
                                                          +		 		->db( 'files', 'id', array(
                                                          +					'webPath'     => Upload::DB_WEB_PATH,
                                                          +					'fileName'    => Upload::DB_FILE_NAME,
                                                          +					'fileSize'    => Upload::DB_FILE_SIZE,
                                                          +					'systemPath'  => Upload::DB_SYSTEM_PATH
                                                          +				) )
                                                          +				->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" )
                                                          +		)
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + + + + +

                                                          + Table of Contents + +

                                                          + +
                                                          +
                                                          + DB_CONTENT + +  = 'editor-content' +
                                                          +
                                                          Database value option (`Db()`) - File content. This should be written to +a blob. Typically this should be avoided and the file saved on the file +system, but there are cases where it can be useful to store the file in +the database.
                                                          + +
                                                          + DB_CONTENT_TYPE + +  = 'editor-contentType' +
                                                          +
                                                          Database value option (`Db()`) - Content type
                                                          + +
                                                          + DB_EXTN + +  = 'editor-extn' +
                                                          +
                                                          Database value option (`Db()`) - File extension
                                                          + +
                                                          + DB_FILE_NAME + +  = 'editor-fileName' +
                                                          +
                                                          Database value option (`Db()`) - File name (with extension)
                                                          + +
                                                          + DB_FILE_SIZE + +  = 'editor-fileSize' +
                                                          +
                                                          Database value option (`Db()`) - File size (bytes)
                                                          + +
                                                          + DB_MIME_TYPE + +  = 'editor-mimeType' +
                                                          +
                                                          Database value option (`Db()`) - MIME type
                                                          + +
                                                          + DB_READ_ONLY + +  = 'editor-readOnly' +
                                                          +
                                                          Read from the database - don't write to it
                                                          + +
                                                          + DB_SYSTEM_PATH + +  = 'editor-systemPath' +
                                                          +
                                                          Database value option (`Db()`) - Full system path to the file
                                                          + +
                                                          + DB_WEB_PATH + +  = 'editor-webPath' +
                                                          +
                                                          Database value option (`Db()`) - HTTP path to the file. This is derived +from the system path by removing `$_SERVER['DOCUMENT_ROOT']`. If your +images live outside of the document root a custom value would be to be +used.
                                                          + +
                                                          + __construct() + +  : mixed +
                                                          +
                                                          Upload instance constructor
                                                          + +
                                                          + action() + +  : self +
                                                          +
                                                          Set the action to take when a file is uploaded. This can be either of:
                                                          + +
                                                          + allowedExtensions() + +  : self +
                                                          +
                                                          An array of valid file extensions that can be uploaded. This is for +simple validation that the file is of the expected type - for example you +might use `[ 'png', 'jpg', 'jpeg', 'gif' ]` for images. The check is +case-insensitive. If no extensions are given, no validation is performed +on the file extension.
                                                          + +
                                                          + db() + +  : self +
                                                          +
                                                          Database configuration method. When used, this method will tell Editor +what information you want written to a database on file upload, should +you wish to store relational information about your file on the database +(this is generally recommended).
                                                          + +
                                                          + dbClean() + +  : self +
                                                          +
                                                          Set a callback function that is used to remove files which no longer have +a reference in a source table.
                                                          + +
                                                          + inst() + +  : Editor|Field|Join|Upload +
                                                          +
                                                          Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                          + +
                                                          + instantiate() + +  : Editor|Field|Join|Upload +
                                                          +
                                                          Static method to instantiate a new instance of a class.
                                                          + +
                                                          + mode() + +  : mixed +
                                                          +
                                                          Set the permissions on the file after it has been uploaded using +chmod.
                                                          + +
                                                          + validator() + +  : self +
                                                          +
                                                          Add a validation method to check file uploads. Multiple validators can be +added by calling this method multiple times - they will be executed in +sequence when a file has been uploaded.
                                                          + +
                                                          + where() + +  : self +
                                                          +
                                                          Add a condition to the data to be retrieved from the database. This +must be given as a function to be executed (usually anonymous) and +will be passed in a single argument, the `Query` object, to which +conditions can be added. Multiple calls to this method can be made.
                                                          + +
                                                          + _getSet() + +  : mixed +
                                                          +
                                                          Common getter / setter function for DataTables classes.
                                                          + +
                                                          + _propExists() + +  : bool +
                                                          +
                                                          Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                          + +
                                                          + _readProp() + +  : mixed +
                                                          +
                                                          Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                          + +
                                                          + _writeProp() + +  : mixed +
                                                          +
                                                          Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                          + +
                                                          + + + + +
                                                          +

                                                          + Constants + +

                                                          +
                                                          +

                                                          + DB_CONTENT + +

                                                          + + + +

                                                          Database value option (`Db()`) - File content. This should be written to +a blob. Typically this should be avoided and the file saved on the file +system, but there are cases where it can be useful to store the file in +the database.

                                                          + + + public + mixed + DB_CONTENT + = 'editor-content' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_CONTENT_TYPE + +

                                                          + + + +

                                                          Database value option (`Db()`) - Content type

                                                          + + + public + mixed + DB_CONTENT_TYPE + = 'editor-contentType' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_EXTN + +

                                                          + + + +

                                                          Database value option (`Db()`) - File extension

                                                          + + + public + mixed + DB_EXTN + = 'editor-extn' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_FILE_NAME + +

                                                          + + + +

                                                          Database value option (`Db()`) - File name (with extension)

                                                          + + + public + mixed + DB_FILE_NAME + = 'editor-fileName' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_FILE_SIZE + +

                                                          + + + +

                                                          Database value option (`Db()`) - File size (bytes)

                                                          + + + public + mixed + DB_FILE_SIZE + = 'editor-fileSize' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_MIME_TYPE + +

                                                          + + + +

                                                          Database value option (`Db()`) - MIME type

                                                          + + + public + mixed + DB_MIME_TYPE + = 'editor-mimeType' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_READ_ONLY + +

                                                          + + + +

                                                          Read from the database - don't write to it

                                                          + + + public + mixed + DB_READ_ONLY + = 'editor-readOnly' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_SYSTEM_PATH + +

                                                          + + + +

                                                          Database value option (`Db()`) - Full system path to the file

                                                          + + + public + mixed + DB_SYSTEM_PATH + = 'editor-systemPath' + + + + +
                                                          + + + +
                                                          +
                                                          +

                                                          + DB_WEB_PATH + +

                                                          + + + +

                                                          Database value option (`Db()`) - HTTP path to the file. This is derived +from the system path by removing `$_SERVER['DOCUMENT_ROOT']`. If your +images live outside of the document root a custom value would be to be +used.

                                                          + + + public + mixed + DB_WEB_PATH + = 'editor-webPath' + + + + +
                                                          + + + +
                                                          +
                                                          + + + +
                                                          +

                                                          + Methods + +

                                                          +
                                                          +

                                                          + __construct() + +

                                                          + + +

                                                          Upload instance constructor

                                                          + + + public + __construct([string|callable $action = null ]) : mixed + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $action + : string|callable + = null
                                                          +
                                                          +

                                                          Action to take on upload - this is applied +directly to Upload->action().

                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + mixed + — + + +
                                                          +
                                                          +

                                                          + action() + +

                                                          + + +

                                                          Set the action to take when a file is uploaded. This can be either of:

                                                          + + + public + action(string|callable $action) : self + +
                                                            +
                                                          • A string - the value given is the full system path to where the +uploaded file is written to. The value given can include three "macros" +which are replaced by the script dependent on the uploaded file: +
                                                              +
                                                            • +__EXTN__ - the file extension
                                                            • +
                                                            • +__NAME__ - the uploaded file's name (including the extension)
                                                            • +
                                                            • +__ID__ - Database primary key value if the Upload->db() method is +used.
                                                            • +
                                                            +
                                                          • +
                                                          • A closure - if a function is given the responsibility of what to do +with the uploaded file is transferred to this function. That will +typically involve writing it to the file system so it can be used +later.
                                                          • +
                                                          +
                                                          + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $action + : string|callable +
                                                          +
                                                          +

                                                          Action to take - see description above.

                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + allowedExtensions() + +

                                                          + + +

                                                          An array of valid file extensions that can be uploaded. This is for +simple validation that the file is of the expected type - for example you +might use `[ 'png', 'jpg', 'jpeg', 'gif' ]` for images. The check is +case-insensitive. If no extensions are given, no validation is performed +on the file extension.

                                                          + + + public + allowedExtensions(array<string|int, string> $extn[, string $error = "This file type cannot be uploaded" ]) : self + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $extn + : array<string|int, string> +
                                                          +
                                                          +

                                                          List of file extensions that are allowable for +the upload

                                                          +
                                                          + +
                                                          +
                                                          + $error + : string + = "This file type cannot be uploaded"
                                                          +
                                                          +

                                                          Error message if a file is uploaded that doesn't +match the valid list of extensions.

                                                          +
                                                          + +
                                                          +
                                                          + + +
                                                          + Tags + +
                                                          +
                                                          +
                                                          + deprecated +
                                                          +
                                                          + +

                                                          Use Validate::fileExtensions

                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + db() + +

                                                          + + +

                                                          Database configuration method. When used, this method will tell Editor +what information you want written to a database on file upload, should +you wish to store relational information about your file on the database +(this is generally recommended).

                                                          + + + public + db(string $table, string $pkey, array<string|int, mixed> $fields[, mixed $format = null ]) : self + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $table + : string +
                                                          +
                                                          +

                                                          The name of the table where the file information +should be stored

                                                          +
                                                          + +
                                                          +
                                                          + $pkey + : string +
                                                          +
                                                          +

                                                          Primary key column name. The Upload class +requires that the database table have a single primary key so each +row can be uniquely identified.

                                                          +
                                                          + +
                                                          +
                                                          + $fields + : array<string|int, mixed> +
                                                          +
                                                          +

                                                          A list of the fields to be written to on upload. +The property names are the database columns and the values can be +defined by the constants of this class. The value can also be a +string or a closure function if you wish to send custom information +to the database.

                                                          +
                                                          + +
                                                          +
                                                          + $format + : mixed + = null
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + dbClean() + +

                                                          + + +

                                                          Set a callback function that is used to remove files which no longer have +a reference in a source table.

                                                          + + + public + dbClean(mixed $tableField[, callable $callback = null ]) : self + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $tableField + : mixed +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + $callback + : callable + = null
                                                          +
                                                          +

                                                          Function that will be executed on clean. It is +given an array of information from the database about the orphaned +rows, and can return true to indicate that the rows should be +removed from the database. Any other return value (including none) +will result in the records being retained.

                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + inst() + +

                                                          + + +

                                                          Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                          + + + public + static inst() : Editor|Field|Join|Upload + +

                                                          This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                          +
                                                          + + + + +
                                                          Return values
                                                          + Editor|Field|Join|Upload + — +

                                                          class +@static

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + instantiate() + +

                                                          + + +

                                                          Static method to instantiate a new instance of a class.

                                                          + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                          A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                          +
                                                          + + + + +
                                                          Return values
                                                          + Editor|Field|Join|Upload + — +

                                                          Instantiated class +@static

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + mode() + +

                                                          + + +

                                                          Set the permissions on the file after it has been uploaded using +chmod.

                                                          + + + public + mode(mixed $m) : mixed + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $m + : mixed +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + mixed + — + + +
                                                          +
                                                          +

                                                          + validator() + +

                                                          + + +

                                                          Add a validation method to check file uploads. Multiple validators can be +added by calling this method multiple times - they will be executed in +sequence when a file has been uploaded.

                                                          + + + public + validator(callable $fn) : self + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $fn + : callable +
                                                          +
                                                          +

                                                          Validation function. A PHP $_FILES parameter is +passed in for the uploaded file and the return is either a string +(validation failed and error message), or null (validation passed).

                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + where() + +

                                                          + + +

                                                          Add a condition to the data to be retrieved from the database. This +must be given as a function to be executed (usually anonymous) and +will be passed in a single argument, the `Query` object, to which +conditions can be added. Multiple calls to this method can be made.

                                                          + + + public + where(callable $fn) : self + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $fn + : callable +
                                                          +
                                                          +

                                                          Where function.

                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + self + — +

                                                          Current instance, used for chaining

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + _getSet() + +

                                                          + + +

                                                          Common getter / setter function for DataTables classes.

                                                          + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                          This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                          +
                                                          + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $prop + : mixed +
                                                          +
                                                          +

                                                          The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                          +
                                                          + +
                                                          +
                                                          + $val + : mixed +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + $array + : mixed + = false
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          Return values
                                                          + mixed + — + + +
                                                          +
                                                          +

                                                          + _propExists() + +

                                                          + + +

                                                          Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                          + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $name + : string +
                                                          +
                                                          +

                                                          Javascript dotted object name to write to

                                                          +
                                                          + +
                                                          +
                                                          + $data + : array<string|int, mixed> +
                                                          +
                                                          +

                                                          Data source array to read from

                                                          +
                                                          + +
                                                          +
                                                          + + +
                                                          + Tags + +
                                                          +
                                                          +
                                                          + private +
                                                          +
                                                          + + +
                                                          +
                                                          + +
                                                          Return values
                                                          + bool + — +

                                                          true if present, false otherwise

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + _readProp() + +

                                                          + + +

                                                          Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                          + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $name + : string +
                                                          +
                                                          +

                                                          Javascript dotted object name to write to

                                                          +
                                                          + +
                                                          +
                                                          + $data + : array<string|int, mixed> +
                                                          +
                                                          +

                                                          Data source array to read from

                                                          +
                                                          + +
                                                          +
                                                          + + +
                                                          + Tags + +
                                                          +
                                                          +
                                                          + private +
                                                          +
                                                          + + +
                                                          +
                                                          + +
                                                          Return values
                                                          + mixed + — +

                                                          The read value, or null if no value found.

                                                          +
                                                          + + +
                                                          +
                                                          +

                                                          + _writeProp() + +

                                                          + + +

                                                          Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                          + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                          Parameters
                                                          +
                                                          +
                                                          + $out + : array<string|int, mixed> +
                                                          +
                                                          +

                                                          Array to write the data to

                                                          +
                                                          + +
                                                          +
                                                          + $name + : string +
                                                          +
                                                          +

                                                          Javascript dotted object name to write to

                                                          +
                                                          + +
                                                          +
                                                          + $value + : mixed +
                                                          +
                                                          +

                                                          Value to write

                                                          +
                                                          + +
                                                          +
                                                          + + +
                                                          + Tags + +
                                                          +
                                                          +
                                                          + throws +
                                                          +
                                                          + Exception + +

                                                          Information about duplicate properties

                                                          +
                                                          + +
                                                          +
                                                          + private +
                                                          +
                                                          + + +
                                                          +
                                                          + +
                                                          Return values
                                                          + mixed + — + + +
                                                          +
                                                          + +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          
                                                          +        
                                                          + +
                                                          +
                                                          + + + +
                                                          +
                                                          +
                                                          +
                                                          +

                                                          Search results

                                                          + +
                                                          +
                                                          +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + +
                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Validate.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Validate.html new file mode 100644 index 00000000..490dac38 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-Validate.html @@ -0,0 +1,2108 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                            +

                                                            Editor PHP 2.1.3

                                                            + + + + + +
                                                            + +
                                                            +
                                                            + + + + +
                                                            + + +
                                                            +

                                                            + Validate + + +
                                                            + in package + +
                                                            + + +

                                                            + + + +

                                                            Validation methods for DataTables Editor fields.

                                                            + +

                                                            These methods will typically be applied through the Field::validator() +method and thus the arguments to be passed will be automatically resolved +by Editor.

                                                            +

                                                            The validation methods in this class all take three parameters:

                                                            +
                                                              +
                                                            1. Data to be validated
                                                            2. +
                                                            3. Full data from the form (this can be used with a custom validation method +for dependent validation).
                                                            4. +
                                                            5. Validation configuration options.
                                                            6. +
                                                            +

                                                            When using the Validate class functions with the Field::validator() +method, the second parameter passed into Field::validator() is given +to the validation functions here as the third parameter. The first and +second parameters are automatically resolved by the Field class.

                                                            +

                                                            The validation configuration options is an array of options that can be used +to customise the validation - for example defining a date format for date +validation. Each validation method has the option of defining its own +validation options, but all validation methods provide four common options:

                                                            +
                                                              +
                                                            • +{boolean} optional - Require the field to be submitted (false) or not +(true - default). When set to true the field does not need to be +included in the list of parameters sent by the client - if set to false +then it must be included. This option can be be particularly used in Editor +as Editor will not set a value for fields which have not been submitted - +giving the ability to submit just a partial list of options.
                                                            • +
                                                            • +{boolean} empty - Allow a field to be empty, i.e. a zero length string - +'' (true - default) or require it to be non-zero length (false).
                                                            • +
                                                            • +{boolean} required - Short-cut for optional=false and empty=false. +Note that if this option is set the optional and empty parameters are +automatically set and cannot be overridden by passing in different values.
                                                            • +
                                                            • +{string} message - Error message shown should validation fail. This +provides complete control over the message shown to the end user, including +internationalisation (i.e. to provide a translation that is not in the +English language).
                                                            • +
                                                            +
                                                            + + +
                                                            + Tags + +
                                                            +
                                                            +
                                                            + example +
                                                            +
                                                            + +
                                                                // Ensure that a non-empty value is given for a field
                                                            +    Field::inst( 'engine' )->validator( Validate::required() )
                                                            +
                                                            +

                                                            @example

                                                            +
                                                              // Don't require a field to be submitted, but if it is submitted, it
                                                            +  // must be non-empty
                                                            +  Field::inst( 'reg_date' )->validator( Validate::notEmpty() )
                                                            +
                                                            +

                                                            @example

                                                            +
                                                              // Date validation
                                                            +  Field::inst( 'reg_date' )->validator( Validate::dateFormat( 'D, d M y' ) )
                                                            +
                                                            +

                                                            @example

                                                            +
                                                              // Date validation with a custom error message
                                                            +  Field::inst( 'reg_date' )->validator( Validate::dateFormat( 'D, d M y',
                                                            +      ValidateOptions::inst()
                                                            +          ->message( 'Invalid date' )
                                                            +  ) )
                                                            +
                                                            +

                                                            @example

                                                            +
                                                              // Require a non-empty e-mail address
                                                            +  Field::inst( 'reg_date' )->validator( Validate::email( ValidateOptions::inst()
                                                            +    ->empty( false )
                                                            +  ) )
                                                            +
                                                            +

                                                            @example

                                                            +
                                                              // Custom validation - closure
                                                            +  Field::inst( 'engine' )->validator( function($val, $data, $opts) {
                                                            +     if ( ! preg_match( '/^1/', $val ) ) {
                                                            +       return "Value <b>must</b> start with a 1";
                                                            +     }
                                                            +     return true;
                                                            +  } )
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + + + + +

                                                            + Table of Contents + +

                                                            + +
                                                            +
                                                            + _common() + +  : mixed +
                                                            +
                                                            Perform common validation using the configuration parameters
                                                            + +
                                                            + _commonLegacy() + +  : mixed +
                                                            +
                                                            Convert the old style validation parameters into ValidateOptions
                                                            + +
                                                            + _extend() + +  : mixed +
                                                            +
                                                            Extend the options from the user function and the validation function +with core defaults.
                                                            + +
                                                            + basic() + +  : string|true +
                                                            +
                                                            Basic validation - this is used to perform the validation provided by the +validation options only. If the validation options pass (e.g. `required`, +`empty` and `optional`) then the validation will pass regardless of the +actual value.
                                                            + +
                                                            + boolean() + +  : mixed +
                                                            +
                                                            Validate an input as a boolean value.
                                                            + +
                                                            + dateFormat() + +  : mixed +
                                                            +
                                                            Check that a valid date input is given
                                                            + +
                                                            + dbValues() + +  : mixed +
                                                            +
                                                            Check that the given value is a value that is available in a database - +i.e. a join primary key. This will attempt to automatically use the table +name and value column from the field's `options` method (under the +assumption that it will typically be used with a joined field), but the +table and field can also be specified via the options.
                                                            + +
                                                            + email() + +  : mixed +
                                                            +
                                                            Validate an input as an e-mail address.
                                                            + +
                                                            + fileExtensions() + +  : mixed +
                                                            +
                                                            + +
                                                            + fileSize() + +  : mixed +
                                                            +
                                                            + +
                                                            + ip() + +  : mixed +
                                                            +
                                                            Validate as an IP address.
                                                            + +
                                                            + maxLen() + +  : mixed +
                                                            +
                                                            Validate a string does not exceed a maximum length.
                                                            + +
                                                            + maxNum() + +  : mixed +
                                                            +
                                                            Check for a numeric input and that it is less than a given value.
                                                            + +
                                                            + minLen() + +  : mixed +
                                                            +
                                                            Validate a string has a minimum length.
                                                            + +
                                                            + minMaxLen() + +  : mixed +
                                                            +
                                                            Require a string with a certain minimum or maximum number of characters.
                                                            + +
                                                            + minMaxNum() + +  : mixed +
                                                            +
                                                            Check for a numeric input and that it is both greater and smaller than +given numbers.
                                                            + +
                                                            + minNum() + +  : mixed +
                                                            +
                                                            Check for a numeric input and that it is greater than a given value.
                                                            + +
                                                            + mjoinMaxCount() + +  : mixed +
                                                            +
                                                            + +
                                                            + mjoinMinCount() + +  : mixed +
                                                            +
                                                            + +
                                                            + none() + +  : mixed +
                                                            +
                                                            No validation - all inputs are valid.
                                                            + +
                                                            + noTags() + +  : mixed +
                                                            +
                                                            Check if there are any tags in the submitted value
                                                            + +
                                                            + notEmpty() + +  : mixed +
                                                            +
                                                            Optional field, but if given there must be a non-empty value
                                                            + +
                                                            + numeric() + +  : mixed +
                                                            +
                                                            Check that any input is numeric.
                                                            + +
                                                            + required() + +  : mixed +
                                                            +
                                                            Required field - there must be a value and it must be a non-empty value
                                                            + +
                                                            + unique() + +  : mixed +
                                                            +
                                                            Check that the given value is unique in the database
                                                            + +
                                                            + url() + +  : mixed +
                                                            +
                                                            Validate as an URL address.
                                                            + +
                                                            + values() + +  : mixed +
                                                            +
                                                            Confirm that the value submitted is in a list of allowable values
                                                            + +
                                                            + xss() + +  : mixed +
                                                            +
                                                            Check if string could contain an XSS attack string
                                                            + +
                                                            + + + + + + + +
                                                            +

                                                            + Methods + +

                                                            +
                                                            +

                                                            + _common() + +

                                                            + + +

                                                            Perform common validation using the configuration parameters

                                                            + + + public + static _common(mixed $val, mixed $opts) : mixed + +

                                                            @internal

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $val + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $opts + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + _commonLegacy() + +

                                                            + + +

                                                            Convert the old style validation parameters into ValidateOptions

                                                            + + + public + static _commonLegacy(mixed $cfg) : mixed + +

                                                            @internal

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + _extend() + +

                                                            + + +

                                                            Extend the options from the user function and the validation function +with core defaults.

                                                            + + + public + static _extend(mixed $userOpts, mixed $prop, mixed $fnOpts) : mixed + +

                                                            @internal

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $userOpts + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $prop + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $fnOpts + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + basic() + +

                                                            + + +

                                                            Basic validation - this is used to perform the validation provided by the +validation options only. If the validation options pass (e.g. `required`, +`empty` and `optional`) then the validation will pass regardless of the +actual value.

                                                            + + + public + static basic([mixed $cfg = null ]) : string|true + +

                                                            Note that there are two helper short-cut methods that provide the same +function as this method, but are slightly shorter:

                                                            +
                                                            // Required:
                                                            +Validate::required()
                                                            +
                                                            +// is the same as
                                                            +Validate::basic( $val, $data, array(
                                                            +  "required" => true
                                                            +);
                                                            +
                                                            +
                                                            // Optional, but not empty if given:
                                                            +Validate::notEmpty()
                                                            +
                                                            +// is the same as
                                                            +Validate::basic( $val, $data, array(
                                                            +  "empty" => false
                                                            +);
                                                            +
                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + string|true + — +

                                                            true if the value is valid, a string with an error +message otherwise.

                                                            +
                                                            + + +
                                                            +
                                                            +

                                                            + boolean() + +

                                                            + + +

                                                            Validate an input as a boolean value.

                                                            + + + public + static boolean([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + dateFormat() + +

                                                            + + +

                                                            Check that a valid date input is given

                                                            + + + public + static dateFormat(mixed $format[, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $format + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + dbValues() + +

                                                            + + +

                                                            Check that the given value is a value that is available in a database - +i.e. a join primary key. This will attempt to automatically use the table +name and value column from the field's `options` method (under the +assumption that it will typically be used with a joined field), but the +table and field can also be specified via the options.

                                                            + + + public + static dbValues([mixed $cfg = null ][, mixed $column = null ][, mixed $table = null ][, mixed $db = null ][, mixed $values = array() ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $column + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $table + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $db + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $values + : mixed + = array()
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + email() + +

                                                            + + +

                                                            Validate an input as an e-mail address.

                                                            + + + public + static email([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + fileExtensions() + +

                                                            + + + + + public + static fileExtensions(mixed $extensions[, mixed $msg = "This file type cannot be uploaded." ]) : mixed + +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $extensions + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $msg + : mixed + = "This file type cannot be uploaded."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + fileSize() + +

                                                            + + + + + public + static fileSize(mixed $size[, mixed $msg = "Uploaded file is too large." ]) : mixed + +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $size + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $msg + : mixed + = "Uploaded file is too large."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + ip() + +

                                                            + + +

                                                            Validate as an IP address.

                                                            + + + public + static ip([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + maxLen() + +

                                                            + + +

                                                            Validate a string does not exceed a maximum length.

                                                            + + + public + static maxLen(mixed $max[, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $max + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + maxNum() + +

                                                            + + +

                                                            Check for a numeric input and that it is less than a given value.

                                                            + + + public + static maxNum(mixed $max[, mixed $decimal = "." ][, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $max + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $decimal + : mixed + = "."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + minLen() + +

                                                            + + +

                                                            Validate a string has a minimum length.

                                                            + + + public + static minLen(mixed $min[, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $min + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + minMaxLen() + +

                                                            + + +

                                                            Require a string with a certain minimum or maximum number of characters.

                                                            + + + public + static minMaxLen(mixed $min, mixed $max[, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $min + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $max + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + minMaxNum() + +

                                                            + + +

                                                            Check for a numeric input and that it is both greater and smaller than +given numbers.

                                                            + + + public + static minMaxNum(mixed $min, mixed $max[, mixed $decimal = '.' ][, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $min + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $max + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $decimal + : mixed + = '.'
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + minNum() + +

                                                            + + +

                                                            Check for a numeric input and that it is greater than a given value.

                                                            + + + public + static minNum(mixed $min[, mixed $decimal = "." ][, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $min + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $decimal + : mixed + = "."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + mjoinMaxCount() + +

                                                            + + + + + public + static mjoinMaxCount(mixed $count[, mixed $msg = "Too many items." ]) : mixed + +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $count + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $msg + : mixed + = "Too many items."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + mjoinMinCount() + +

                                                            + + + + + public + static mjoinMinCount(mixed $count[, mixed $msg = "Too few items." ]) : mixed + +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $count + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $msg + : mixed + = "Too few items."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + none() + +

                                                            + + +

                                                            No validation - all inputs are valid.

                                                            + + + public + static none() : mixed + +

                                                            @return callable Validation function

                                                            +
                                                            + + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + noTags() + +

                                                            + + +

                                                            Check if there are any tags in the submitted value

                                                            + + + public + static noTags([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + notEmpty() + +

                                                            + + +

                                                            Optional field, but if given there must be a non-empty value

                                                            + + + public + static notEmpty([ValidateOptions $cfg = null ]) : mixed + +

                                                            This is a helper short-cut method which is the same as:

                                                            +
                                                            Validate::basic( $val, $data, array(
                                                            +  "empty" => false
                                                            +);
                                                            +
                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : ValidateOptions + = null
                                                            +
                                                            +

                                                            Validation options +@return callable Validation function

                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + numeric() + +

                                                            + + +

                                                            Check that any input is numeric.

                                                            + + + public + static numeric([mixed $decimal = "." ][, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $decimal + : mixed + = "."
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + required() + +

                                                            + + +

                                                            Required field - there must be a value and it must be a non-empty value

                                                            + + + public + static required([mixed $cfg = null ]) : mixed + +

                                                            This is a helper short-cut method which is the same as:

                                                            +
                                                            Validate::basic( $val, $data, array(
                                                            +  "required" => true
                                                            +);
                                                            +
                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + unique() + +

                                                            + + +

                                                            Check that the given value is unique in the database

                                                            + + + public + static unique([mixed $cfg = null ][, mixed $column = null ][, mixed $table = null ][, mixed $db = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $column + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $table + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $db + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + url() + +

                                                            + + +

                                                            Validate as an URL address.

                                                            + + + public + static url([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + values() + +

                                                            + + +

                                                            Confirm that the value submitted is in a list of allowable values

                                                            + + + public + static values(mixed $values[, mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $values + : mixed +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            +

                                                            + xss() + +

                                                            + + +

                                                            Check if string could contain an XSS attack string

                                                            + + + public + static xss([mixed $cfg = null ]) : mixed + +

                                                            @param string $val The value to check for validity

                                                            +
                                                            + +
                                                            Parameters
                                                            +
                                                            +
                                                            + $cfg + : mixed + = null
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            Return values
                                                            + mixed + — + + +
                                                            +
                                                            + +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            
                                                            +        
                                                            + +
                                                            +
                                                            + + + +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Search results

                                                            + +
                                                            +
                                                            +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + +
                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-ValidateOptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-ValidateOptions.html new file mode 100644 index 00000000..6e788003 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor-ValidateOptions.html @@ -0,0 +1,922 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                              +

                                                              Editor PHP 2.1.3

                                                              + + + + + +
                                                              + +
                                                              +
                                                              + + + + +
                                                              + + +
                                                              +

                                                              + ValidateOptions + + + extends Ext + + +
                                                              + in package + +
                                                              + + +

                                                              + + + +

                                                              Common validation options that can be specified for all validation methods.

                                                              + + + + + + + + + +

                                                              + Table of Contents + +

                                                              + +
                                                              +
                                                              + __construct() + +  : mixed +
                                                              +
                                                              + +
                                                              + allowEmpty() + +  : ValidateOptions|bool +
                                                              +
                                                              Get / set the field empty option
                                                              + +
                                                              + inst() + +  : Editor|Field|Join|Upload +
                                                              +
                                                              Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                              + +
                                                              + instantiate() + +  : Editor|Field|Join|Upload +
                                                              +
                                                              Static method to instantiate a new instance of a class.
                                                              + +
                                                              + message() + +  : ValidateOptions|string +
                                                              +
                                                              Get / set the error message to use if validation fails
                                                              + +
                                                              + optional() + +  : ValidateOptions|bool +
                                                              +
                                                              Get / set the field optional option
                                                              + +
                                                              + _getSet() + +  : mixed +
                                                              +
                                                              Common getter / setter function for DataTables classes.
                                                              + +
                                                              + _propExists() + +  : bool +
                                                              +
                                                              Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                              + +
                                                              + _readProp() + +  : mixed +
                                                              +
                                                              Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                              + +
                                                              + _writeProp() + +  : mixed +
                                                              +
                                                              Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                              + +
                                                              + + + + + + + +
                                                              +

                                                              + Methods + +

                                                              +
                                                              +

                                                              + __construct() + +

                                                              + + + + + public + __construct([mixed $opts = null ]) : mixed + +
                                                              + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $opts + : mixed + = null
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              Return values
                                                              + mixed + — + + +
                                                              +
                                                              +

                                                              + allowEmpty() + +

                                                              + + +

                                                              Get / set the field empty option

                                                              + + + public + allowEmpty([bool $empty = null ]) : ValidateOptions|bool + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $empty + : bool + = null
                                                              +
                                                              +

                                                              false if the field is not allowed to be +empty. true if it can be.

                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              Return values
                                                              + ValidateOptions|bool + — +

                                                              Self if setting, current value if getting.

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + inst() + +

                                                              + + +

                                                              Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                              + + + public + static inst() : Editor|Field|Join|Upload + +

                                                              This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                              +
                                                              + + + + +
                                                              Return values
                                                              + Editor|Field|Join|Upload + — +

                                                              class +@static

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + instantiate() + +

                                                              + + +

                                                              Static method to instantiate a new instance of a class.

                                                              + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                              A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                              +
                                                              + + + + +
                                                              Return values
                                                              + Editor|Field|Join|Upload + — +

                                                              Instantiated class +@static

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + message() + +

                                                              + + +

                                                              Get / set the error message to use if validation fails

                                                              + + + public + message([string $msg = null ]) : ValidateOptions|string + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $msg + : string + = null
                                                              +
                                                              +

                                                              Error message to use. If not given, the currently +set message will be returned.

                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              Return values
                                                              + ValidateOptions|string + — +

                                                              Self if setting, message if getting.

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + optional() + +

                                                              + + +

                                                              Get / set the field optional option

                                                              + + + public + optional([bool $optional = null ]) : ValidateOptions|bool + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $optional + : bool + = null
                                                              +
                                                              +

                                                              false if the field does not need to be +submitted. true if it must be.

                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              Return values
                                                              + ValidateOptions|bool + — +

                                                              Self if setting, current value if getting.

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + _getSet() + +

                                                              + + +

                                                              Common getter / setter function for DataTables classes.

                                                              + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                              This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                              +
                                                              + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $prop + : mixed +
                                                              +
                                                              +

                                                              The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                              +
                                                              + +
                                                              +
                                                              + $val + : mixed +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + $array + : mixed + = false
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              Return values
                                                              + mixed + — + + +
                                                              +
                                                              +

                                                              + _propExists() + +

                                                              + + +

                                                              Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                              + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $name + : string +
                                                              +
                                                              +

                                                              Javascript dotted object name to write to

                                                              +
                                                              + +
                                                              +
                                                              + $data + : array<string|int, mixed> +
                                                              +
                                                              +

                                                              Data source array to read from

                                                              +
                                                              + +
                                                              +
                                                              + + +
                                                              + Tags + +
                                                              +
                                                              +
                                                              + private +
                                                              +
                                                              + + +
                                                              +
                                                              + +
                                                              Return values
                                                              + bool + — +

                                                              true if present, false otherwise

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + _readProp() + +

                                                              + + +

                                                              Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                              + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $name + : string +
                                                              +
                                                              +

                                                              Javascript dotted object name to write to

                                                              +
                                                              + +
                                                              +
                                                              + $data + : array<string|int, mixed> +
                                                              +
                                                              +

                                                              Data source array to read from

                                                              +
                                                              + +
                                                              +
                                                              + + +
                                                              + Tags + +
                                                              +
                                                              +
                                                              + private +
                                                              +
                                                              + + +
                                                              +
                                                              + +
                                                              Return values
                                                              + mixed + — +

                                                              The read value, or null if no value found.

                                                              +
                                                              + + +
                                                              +
                                                              +

                                                              + _writeProp() + +

                                                              + + +

                                                              Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                              + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                              Parameters
                                                              +
                                                              +
                                                              + $out + : array<string|int, mixed> +
                                                              +
                                                              +

                                                              Array to write the data to

                                                              +
                                                              + +
                                                              +
                                                              + $name + : string +
                                                              +
                                                              +

                                                              Javascript dotted object name to write to

                                                              +
                                                              + +
                                                              +
                                                              + $value + : mixed +
                                                              +
                                                              +

                                                              Value to write

                                                              +
                                                              + +
                                                              +
                                                              + + +
                                                              + Tags + +
                                                              +
                                                              +
                                                              + throws +
                                                              +
                                                              + Exception + +

                                                              Information about duplicate properties

                                                              +
                                                              + +
                                                              +
                                                              + private +
                                                              +
                                                              + + +
                                                              +
                                                              + +
                                                              Return values
                                                              + mixed + — + + +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              
                                                              +        
                                                              + +
                                                              +
                                                              + + + +
                                                              +
                                                              +
                                                              +
                                                              +

                                                              Search results

                                                              + +
                                                              +
                                                              +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                + + +
                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor.html new file mode 100644 index 00000000..972a63e3 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Editor.html @@ -0,0 +1,2989 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                +

                                                                Editor PHP 2.1.3

                                                                + + + + + +
                                                                + +
                                                                +
                                                                + + + + +
                                                                + + +
                                                                +

                                                                + Editor + + + extends Ext + + +
                                                                + in package + +
                                                                + + +

                                                                + + + +

                                                                DataTables Editor base class for creating editable tables.

                                                                + +

                                                                Editor class instances are capable of servicing all of the requests that +DataTables and Editor will make from the client-side - specifically:

                                                                +
                                                                  +
                                                                • Get data
                                                                • +
                                                                • Create new record
                                                                • +
                                                                • Edit existing record
                                                                • +
                                                                • Delete existing records
                                                                • +
                                                                +

                                                                The Editor instance is configured with information regarding the +database table fields that you wish to make editable, and other information +needed to read and write to the database (table name for example!).

                                                                +

                                                                This documentation is very much focused on describing the API presented +by these DataTables Editor classes. For a more general overview of how +the Editor class is used, and how to install Editor on your server, please +refer to the Editor manual.

                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + example +
                                                                +
                                                                + +

                                                                A very basic example of using Editor to create a table with four fields. +This is all that is needed on the server-side to create a editable +table - the Editor->process() method determines what action DataTables / +Editor is requesting from the server-side and will correctly action it.

                                                                +
                                                                  Editor::inst( $db, 'browsers' )
                                                                +      ->fields(
                                                                +          Field::inst( 'first_name' )->validator( Validate::required() ),
                                                                +          Field::inst( 'last_name' )->validator( Validate::required() ),
                                                                +          Field::inst( 'country' ),
                                                                +          Field::inst( 'details' )
                                                                +      )
                                                                +      ->process( $_POST )
                                                                +      ->json();
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + + + + +

                                                                + Table of Contents + +

                                                                + +
                                                                +
                                                                + ACTION_CREATE + +  = 'create' +
                                                                +
                                                                Request type - create
                                                                + +
                                                                + ACTION_DELETE + +  = 'remove' +
                                                                +
                                                                Request type - delete
                                                                + +
                                                                + ACTION_EDIT + +  = 'edit' +
                                                                +
                                                                Request type - edit
                                                                + +
                                                                + ACTION_READ + +  = 'read' +
                                                                +
                                                                Request type - read
                                                                + +
                                                                + ACTION_UPLOAD + +  = 'upload' +
                                                                +
                                                                Request type - upload
                                                                + +
                                                                + $version + +  : string +
                                                                +
                                                                + +
                                                                + __construct() + +  : mixed +
                                                                +
                                                                Constructor.
                                                                + +
                                                                + _ssp_field() + +  : mixed +
                                                                +
                                                                Convert a column index to a database field name - used for server-side +processing requests.
                                                                + +
                                                                + action() + +  : string +
                                                                +
                                                                Determine the request type from an HTTP request.
                                                                + +
                                                                + actionName() + +  : string|self +
                                                                +
                                                                Get / set the action name to read in HTTP parameters. This can be useful +to set if you are using a framework that uses the default name of `action` +for something else (e.g. WordPress).
                                                                + +
                                                                + data() + +  : array<string|int, mixed> +
                                                                +
                                                                Get the data constructed in this instance.
                                                                + +
                                                                + db() + +  : Database|self +
                                                                +
                                                                Get / set the DB connection instance
                                                                + +
                                                                + debug() + +  : mixed +
                                                                +
                                                                Get / set debug mode and set a debug message.
                                                                + +
                                                                + field() + +  : mixed +
                                                                +
                                                                Get / set field instance.
                                                                + +
                                                                + fields() + +  : mixed +
                                                                +
                                                                Get / set field instances.
                                                                + +
                                                                + idPrefix() + +  : mixed +
                                                                +
                                                                Get / set the DOM prefix.
                                                                + +
                                                                + inData() + +  : mixed +
                                                                +
                                                                Get the data that is being processed by the Editor instance. This is only +useful once the `process()` method has been called, and is available for +use in validation and formatter methods.
                                                                + +
                                                                + inst() + +  : Editor|Field|Join|Upload +
                                                                +
                                                                Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                                + +
                                                                + instantiate() + +  : Editor|Field|Join|Upload +
                                                                +
                                                                Static method to instantiate a new instance of a class.
                                                                + +
                                                                + join() + +  : mixed +
                                                                +
                                                                Get / set join instances. Note that for the majority of use cases you +will want to use the `leftJoin()` method. It is significantly easier +to use if you are just doing a simple left join!
                                                                + +
                                                                + json() + +  : mixed +
                                                                +
                                                                Get the JSON for the data constructed in this instance.
                                                                + +
                                                                + jsonp() + +  : self +
                                                                +
                                                                Echo out JSONP for the data constructed and processed in this instance.
                                                                + +
                                                                + leftJoin() + +  : self +
                                                                +
                                                                Add a left join condition to the Editor instance, allowing it to operate +over multiple tables. Multiple `leftJoin()` calls can be made for a +single Editor instance to join multiple tables.
                                                                + +
                                                                + leftJoinRemove() + +  : mixed +
                                                                +
                                                                Indicate if a remove should be performed on left joined tables when deleting +from the parent row. Note that this is disabled by default and will be +removed completely in v2. Use `ON DELETE CASCADE` in your database instead.
                                                                + +
                                                                + on() + +  : self +
                                                                +
                                                                Add an event listener. The `Editor` class will trigger an number of +events that some action can be taken on.
                                                                + +
                                                                + pkey() + +  : mixed +
                                                                +
                                                                Get / set the primary key.
                                                                + +
                                                                + pkeyToArray() + +  : array<string|int, mixed> +
                                                                +
                                                                Convert a primary key combined value to an array of field values.
                                                                + +
                                                                + pkeyToValue() + +  : string +
                                                                +
                                                                Convert a primary key array of field values to a combined value.
                                                                + +
                                                                + process() + +  : self +
                                                                +
                                                                Process a request from the Editor client-side to get / set data.
                                                                + +
                                                                + readTable() + +  : array<string|int, string>|self +
                                                                +
                                                                The CRUD read table name. If this method is used, Editor will create from the +table name(s) given rather than those given by `Editor->table()`. This can be +a useful distinction to allow a read from a VIEW (which could make use of a +complex SELECT) while writing to a different table.
                                                                + +
                                                                + table() + +  : mixed +
                                                                +
                                                                Get / set the table name.
                                                                + +
                                                                + transaction() + +  : mixed +
                                                                +
                                                                Get / set transaction support.
                                                                + +
                                                                + tryCatch() + +  : bool|Editor +
                                                                +
                                                                Enable / try catch when `process()` is called. Disabling this can be +useful for debugging, but is not recommended for production.
                                                                + +
                                                                + validate() + +  : mixed +
                                                                +
                                                                Perform validation on a data set.
                                                                + +
                                                                + validator() + +  : Editor|callable +
                                                                +
                                                                Get / set a global validator that will be triggered for the create, edit +and remove actions performed from the client-side. Multiple validators +can be added.
                                                                + +
                                                                + where() + +  : array<string|int, string>|self +
                                                                +
                                                                Where condition to add to the query used to get data from the database.
                                                                + +
                                                                + whereSet() + +  : bool +
                                                                +
                                                                Get / set if the WHERE conditions should be included in the create and +edit actions.
                                                                + +
                                                                + write() + +  : mixed +
                                                                +
                                                                + +
                                                                + _getSet() + +  : mixed +
                                                                +
                                                                Common getter / setter function for DataTables classes.
                                                                + +
                                                                + _propExists() + +  : bool +
                                                                +
                                                                Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                                + +
                                                                + _readProp() + +  : mixed +
                                                                +
                                                                Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                                + +
                                                                + _writeProp() + +  : mixed +
                                                                +
                                                                Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                                + +
                                                                + + + + +
                                                                +

                                                                + Constants + +

                                                                +
                                                                +

                                                                + ACTION_CREATE + +

                                                                + + + +

                                                                Request type - create

                                                                + + + public + mixed + ACTION_CREATE + = 'create' + + + + +
                                                                + + + +
                                                                +
                                                                +

                                                                + ACTION_DELETE + +

                                                                + + + +

                                                                Request type - delete

                                                                + + + public + mixed + ACTION_DELETE + = 'remove' + + + + +
                                                                + + + +
                                                                +
                                                                +

                                                                + ACTION_EDIT + +

                                                                + + + +

                                                                Request type - edit

                                                                + + + public + mixed + ACTION_EDIT + = 'edit' + + + + +
                                                                + + + +
                                                                +
                                                                +

                                                                + ACTION_READ + +

                                                                + + + +

                                                                Request type - read

                                                                + + + public + mixed + ACTION_READ + = 'read' + + + + +
                                                                + + + +
                                                                +
                                                                +

                                                                + ACTION_UPLOAD + +

                                                                + + + +

                                                                Request type - upload

                                                                + + + public + mixed + ACTION_UPLOAD + = 'upload' + + + + +
                                                                + + + +
                                                                +
                                                                + + +
                                                                +

                                                                + Properties + +

                                                                +
                                                                +

                                                                + $version + + + +

                                                                + + + + + public + string + $version + = '2.1.3' + + + + + +
                                                                +
                                                                + +
                                                                +

                                                                + Methods + +

                                                                +
                                                                +

                                                                + __construct() + +

                                                                + + +

                                                                Constructor.

                                                                + + + public + __construct([mixed $db = null ][, string|array<string|int, mixed> $table = null ][, mixed $pkey = null ]) : mixed + +

                                                                @param Database $db An instance of the DataTables Database class that we can +use for the DB connection. Can be given here or with the 'db' method.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $db + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + $table + : string|array<string|int, mixed> + = null
                                                                +
                                                                +

                                                                The table name in the database to read and write +information from and to. Can be given here or with the 'table' method. +@param string|array $pkey Primary key column name in the table given in +the $table parameter. Can be given here or with the 'pkey' method.

                                                                +
                                                                + +
                                                                +
                                                                + $pkey + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + _ssp_field() + +

                                                                + + +

                                                                Convert a column index to a database field name - used for server-side +processing requests.

                                                                + + + public + _ssp_field(mixed $http, int $index) : mixed + +

                                                                @param array $http HTTP variables (i.e. GET or POST)

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $http + : mixed +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + $index + : int +
                                                                +
                                                                +

                                                                Index in the DataTables' submitted data +@returns string DB field name +@throws \Exception Unknown fields +@private Note that it is actually public for PHP 5.3 - thread 39810

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + action() + +

                                                                + + +

                                                                Determine the request type from an HTTP request.

                                                                + + + public + static action(array<string|int, mixed> $http[, string $name = 'action' ]) : string + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $http + : array<string|int, mixed> +
                                                                +
                                                                +

                                                                Typically $_POST, but can be any array used to carry +an Editor payload

                                                                +
                                                                + +
                                                                +
                                                                + $name + : string + = 'action'
                                                                +
                                                                +

                                                                The parameter name that the action should be read from.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + string + — +

                                                                Editor::ACTION_READ, Editor::ACTION_CREATE, +Editor::ACTION_EDIT or Editor::ACTION_DELETE indicating the request +type.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + actionName() + +

                                                                + + +

                                                                Get / set the action name to read in HTTP parameters. This can be useful +to set if you are using a framework that uses the default name of `action` +for something else (e.g. WordPress).

                                                                + + + public + actionName([mixed $_ = null ]) : string|self + +

                                                                @param string Value to set. If not given, then used as a getter.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + string|self + — +

                                                                Value, or self if used as a setter.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + data() + +

                                                                + + +

                                                                Get the data constructed in this instance.

                                                                + + + public + data() : array<string|int, mixed> + +

                                                                This will get the PHP array of data that has been constructed for the +command that has been processed by this instance. Therefore only useful after +process has been called.

                                                                +
                                                                + + + + +
                                                                Return values
                                                                + array<string|int, mixed> + — +

                                                                Processed data array.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + db() + +

                                                                + + +

                                                                Get / set the DB connection instance

                                                                + + + public + db([mixed $_ = null ]) : Database|self + +

                                                                @param Database $_ DataTable's Database class instance to use for database +connectivity. If not given, then used as a getter.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + Database|self + — +

                                                                The Database connection instance if no parameter +is given, or self if used as a setter.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + debug() + +

                                                                + + +

                                                                Get / set debug mode and set a debug message.

                                                                + + + public + debug([bool|mixed $_ = null ][, mixed $path = null ]) : mixed + +

                                                                It can be useful to see the SQL statements that Editor is using. This +method enables that ability. Information about the queries used is +automatically added to the output data array / JSON under the property +name debugSql.

                                                                +

                                                                This method can also be called with a string parameter, which will be +added to the debug information sent back to the client-side. This can +be useful when debugging event listeners, etc.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : bool|mixed + = null
                                                                +
                                                                +

                                                                Debug mode state. If not given, then used as a +getter. If given as anything other than a boolean, it will be added +to the debug information sent back to the client. +@param string [$path=null] Set an output path to log debug information +@return boolean|self Debug mode state if no parameter is given, or +self if used as a setter or when adding a debug message.

                                                                +
                                                                + +
                                                                +
                                                                + $path + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + field() + +

                                                                + + +

                                                                Get / set field instance.

                                                                + + + public + field([mixed $_ = null ]) : mixed + +

                                                                The list of fields designates which columns in the table that Editor will work +with (both get and set).

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + fields() + +

                                                                + + +

                                                                Get / set field instances.

                                                                + + + public + fields([mixed $_ = null ]) : mixed + +

                                                                An alias of field, for convenience.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + idPrefix() + +

                                                                + + +

                                                                Get / set the DOM prefix.

                                                                + + + public + idPrefix([string $_ = null ]) : mixed + +

                                                                Typically primary keys are numeric and this is not a valid ID value in an +HTML document - is also increases the likelihood of an ID clash if multiple +tables are used on a single page. As such, a prefix is assigned to the +primary key value for each row, and this is used as the DOM ID, so Editor +can track individual rows.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : string + = null
                                                                +
                                                                +

                                                                Primary key's name. If not given, then used as a getter. +@return string|self Primary key value if no parameter is given, or +self if used as a setter.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + inData() + +

                                                                + + +

                                                                Get the data that is being processed by the Editor instance. This is only +useful once the `process()` method has been called, and is available for +use in validation and formatter methods.

                                                                + + + public + inData() : mixed + +

                                                                @return array Data given to process().

                                                                +
                                                                + + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + inst() + +

                                                                + + +

                                                                Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                                + + + public + static inst() : Editor|Field|Join|Upload + +

                                                                This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                                +
                                                                + + + + +
                                                                Return values
                                                                + Editor|Field|Join|Upload + — +

                                                                class +@static

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + instantiate() + +

                                                                + + +

                                                                Static method to instantiate a new instance of a class.

                                                                + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                                A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                                +
                                                                + + + + +
                                                                Return values
                                                                + Editor|Field|Join|Upload + — +

                                                                Instantiated class +@static

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + join() + +

                                                                + + +

                                                                Get / set join instances. Note that for the majority of use cases you +will want to use the `leftJoin()` method. It is significantly easier +to use if you are just doing a simple left join!

                                                                + + + public + join([mixed $_ = null ]) : mixed + +

                                                                The list of Join instances that Editor will join the parent table to +(i.e. the one that the Editor->table() and Editor->fields +methods refer to in this class instance).

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + json() + +

                                                                + + +

                                                                Get the JSON for the data constructed in this instance.

                                                                + + + public + json([bool $print = true ], mixed $options) : mixed + +

                                                                Basically the same as the Editor->data() method, but in this case we echo, or +return the JSON string of the data.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $print + : bool + = true
                                                                +
                                                                +

                                                                Echo the JSON string out (true, default) or return it +(false). +@param int JSON encode option https://www.php.net/manual/en/json.constants.php +@return string|self self if printing the JSON, or JSON representation of +the processed data if false is given as the first parameter.

                                                                +
                                                                + +
                                                                +
                                                                + $options + : mixed +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + jsonp() + +

                                                                + + +

                                                                Echo out JSONP for the data constructed and processed in this instance.

                                                                + + + public + jsonp([string $callback = null ]) : self + +

                                                                This is basically the same as Editor->json() but wraps the return in a +JSONP callback.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $callback + : string + = null
                                                                +
                                                                +

                                                                The callback function name to use. If not given +or null, then $_GET['callback'] is used (the jQuery default).

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + throws +
                                                                +
                                                                + Exception + +

                                                                JSONP function name validation

                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                Return values
                                                                + self + — +

                                                                Self for chaining.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + leftJoin() + +

                                                                + + +

                                                                Add a left join condition to the Editor instance, allowing it to operate +over multiple tables. Multiple `leftJoin()` calls can be made for a +single Editor instance to join multiple tables.

                                                                + + + public + leftJoin(string $table, string $field1[, string $operator = null ][, string $field2 = null ]) : self + +

                                                                A left join is the most common type of join that is used with Editor +so this method is provided to make its use very easy to configure. Its +parameters are basically the same as writing an SQL left join statement, +but in this case Editor will handle the create, update and remove +requirements of the join for you:

                                                                +
                                                                  +
                                                                • Create - On create Editor will insert the data into the primary table +and then into the joined tables - selecting the required data for each +table.
                                                                • +
                                                                • Edit - On edit Editor will update the main table, and then either +update the existing rows in the joined table that match the join and +edit conditions, or insert a new row into the joined table if required.
                                                                • +
                                                                • Remove - On delete Editor will remove the main row and then loop over +each of the joined tables and remove the joined data matching the join +link from the main table.
                                                                • +
                                                                +

                                                                Please note that when using join tables, Editor requires that you fully +qualify each field with the field's table name. SQL can result table +names for ambiguous field names, but for Editor to provide its full CRUD +options, the table name must also be given. For example the field +first_name in the table users would be given as users.first_name.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $table + : string +
                                                                +
                                                                +

                                                                Table name to do a join onto

                                                                +
                                                                + +
                                                                +
                                                                + $field1 + : string +
                                                                +
                                                                +

                                                                Field from the parent table to use as the join link

                                                                +
                                                                + +
                                                                +
                                                                + $operator + : string + = null
                                                                +
                                                                +

                                                                Join condition (=, '<`, etc)

                                                                +
                                                                + +
                                                                +
                                                                + $field2 + : string + = null
                                                                +
                                                                +

                                                                Field from the child table to use as the join link

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + example +
                                                                +
                                                                + +

                                                                Simple join:

                                                                +
                                                                    ->field(
                                                                +      Field::inst( 'users.first_name as myField' ),
                                                                +      Field::inst( 'users.last_name' ),
                                                                +      Field::inst( 'users.dept_id' ),
                                                                +      Field::inst( 'dept.name' )
                                                                +    )
                                                                +    ->leftJoin( 'dept', 'users.dept_id', '=', 'dept.id' )
                                                                +    ->process($_POST)
                                                                +    ->json();
                                                                +```</code>```
                                                                +
                                                                +This is basically the same as the following SQL statement:
                                                                +
                                                                +```sql
                                                                +  SELECT users.first_name, users.last_name, user.dept_id, dept.name
                                                                +  FROM users
                                                                +  LEFT JOIN dept ON users.dept_id = dept.id
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                Return values
                                                                + self + — +

                                                                Self for chaining.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + leftJoinRemove() + +

                                                                + + +

                                                                Indicate if a remove should be performed on left joined tables when deleting +from the parent row. Note that this is disabled by default and will be +removed completely in v2. Use `ON DELETE CASCADE` in your database instead.

                                                                + + + public + leftJoinRemove([bool $_ = null ]) : mixed + +

                                                                @deprecated

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : bool + = null
                                                                +
                                                                +

                                                                Value to set. If not given, then used as a getter. +@return boolean|self Value if no parameter is given, or +self if used as a setter.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + on() + +

                                                                + + +

                                                                Add an event listener. The `Editor` class will trigger an number of +events that some action can be taken on.

                                                                + + + public + on(string $name, callable $callback) : self + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $name + : string +
                                                                +
                                                                +

                                                                Event name

                                                                +
                                                                + +
                                                                +
                                                                + $callback + : callable +
                                                                +
                                                                +

                                                                Callback function to execute when the event +occurs

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + self + — +

                                                                Self for chaining.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + pkey() + +

                                                                + + +

                                                                Get / set the primary key.

                                                                + + + public + pkey([string|array<string|int, mixed> $_ = null ]) : mixed + +

                                                                The primary key must be known to Editor so it will know which rows are being +edited / deleted upon those actions. The default value is ['id'].

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : string|array<string|int, mixed> + = null
                                                                +
                                                                +

                                                                Primary key's name. If not given, then used as a +getter. An array of column names can be given to allow composite keys to +be used. +@return string|self Primary key value if no parameter is given, or +self if used as a setter.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + pkeyToArray() + +

                                                                + + +

                                                                Convert a primary key combined value to an array of field values.

                                                                + + + public + pkeyToArray(string $value[, bool $flat = false ][, array<string|int, string> $pkey = null ]) : array<string|int, mixed> + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $value + : string +
                                                                +
                                                                +

                                                                The id that should be split apart

                                                                +
                                                                + +
                                                                +
                                                                + $flat + : bool + = false
                                                                +
                                                                +

                                                                Flag to indicate if the returned array should be +flat (useful for where conditions) or nested for join tables.

                                                                +
                                                                + +
                                                                +
                                                                + $pkey + : array<string|int, string> + = null
                                                                +
                                                                +

                                                                The primary key name - will use the instance value +if not given

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + throws +
                                                                +
                                                                + Exception + +

                                                                If the primary key value does not match the expected +length based on the primary key configuration, an exception will be +thrown.

                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                Return values
                                                                + array<string|int, mixed> + — +

                                                                Array of field values that the id was made up of.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + pkeyToValue() + +

                                                                + + +

                                                                Convert a primary key array of field values to a combined value.

                                                                + + + public + pkeyToValue(string $row[, bool $flat = false ]) : string + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $row + : string +
                                                                +
                                                                +

                                                                The row of data that the primary key value should +be extracted from.

                                                                +
                                                                + +
                                                                +
                                                                + $flat + : bool + = false
                                                                +
                                                                +

                                                                Flag to indicate if the given array is flat +(useful for where conditions) or nested for join tables.

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + throws +
                                                                +
                                                                + Exception + +

                                                                If one of the values that the primary key is made up +of cannot be found in the data set given, an Exception will be thrown.

                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                Return values
                                                                + string + — +

                                                                The created primary key value.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + process() + +

                                                                + + +

                                                                Process a request from the Editor client-side to get / set data.

                                                                + + + public + process(mixed $data) : self + +

                                                                @param array $data Typically $_POST or $_GET as required by what is sent +by Editor

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $data + : mixed +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + self + — + + +
                                                                +
                                                                +

                                                                + readTable() + +

                                                                + + +

                                                                The CRUD read table name. If this method is used, Editor will create from the +table name(s) given rather than those given by `Editor->table()`. This can be +a useful distinction to allow a read from a VIEW (which could make use of a +complex SELECT) while writing to a different table.

                                                                + + + public + readTable([mixed $_ = null ]) : array<string|int, string>|self + +

                                                                @param string|array $_,... Read table names given as a single string, an array +of strings or multiple string parameters for the function.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + array<string|int, string>|self + — +

                                                                Array of read tables names, or self if used as a setter.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + table() + +

                                                                + + +

                                                                Get / set the table name.

                                                                + + + public + table([mixed $_ = null ]) : mixed + +

                                                                The table name designated which DB table Editor will use as its data +source for working with the database. Table names can be given with an +alias, which can be used to simplify larger table names. The field +names would also need to reflect the alias, just like an SQL query. For +example: users as a.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + transaction() + +

                                                                + + +

                                                                Get / set transaction support.

                                                                + + + public + transaction([bool $_ = null ]) : mixed + +

                                                                When enabled (which it is by default) Editor will use an SQL transaction +to ensure data integrity while it is performing operations on the table. +This can be optionally disabled using this method, if required by your +database configuration.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : bool + = null
                                                                +
                                                                +

                                                                Enable (true) or disabled (false) transactions. +If not given, then used as a getter. +@return boolean|self Transactions enabled flag, or self if used as a +setter.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + tryCatch() + +

                                                                + + +

                                                                Enable / try catch when `process()` is called. Disabling this can be +useful for debugging, but is not recommended for production.

                                                                + + + public + tryCatch([bool $_ = null ]) : bool|Editor + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : bool + = null
                                                                +
                                                                +

                                                                true to enable (default), otherwise false to disable

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + bool|Editor + — +

                                                                Value if used as a getter, otherwise $this when +used as a setter.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + validate() + +

                                                                + + +

                                                                Perform validation on a data set.

                                                                + + + public + validate(array<string|int, mixed> &$errors, mixed $data) : mixed + +

                                                                Note that validation is performed on data only when the action is +create or edit. Additionally, validation is performed on the wire +data - i.e. that which is submitted from the client, without formatting. +Any formatting required by setFormatter is performed after the data +from the client has been validated.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $errors + : array<string|int, mixed> +
                                                                +
                                                                +

                                                                Output array to which field error information will +be written. Each element in the array represents a field in an error +condition. These elements are themselves arrays with two properties +set; name and status. +@param array $data The format data to check +@return boolean true if the data is valid, false if not.

                                                                +
                                                                + +
                                                                +
                                                                + $data + : mixed +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + validator() + +

                                                                + + +

                                                                Get / set a global validator that will be triggered for the create, edit +and remove actions performed from the client-side. Multiple validators +can be added.

                                                                + + + public + validator([callable $_ = null ]) : Editor|callable + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : callable + = null
                                                                +
                                                                +

                                                                Function to execute when validating the input data. +It is passed three parameters: 1. The editor instance, 2. The action +and 3. The values.

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + Editor|callable + — +

                                                                Editor instance if called as a setter, or the +validator function if not.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + where() + +

                                                                + + +

                                                                Where condition to add to the query used to get data from the database.

                                                                + + + public + where([string|callable $key = null ][, string $value = null ][, string $op = '=' ]) : array<string|int, string>|self + +

                                                                Can be used in two different ways:

                                                                +
                                                                  +
                                                                • Simple case: where( field, value, operator ) +
                                                                • +
                                                                • Complex: where( fn ) +
                                                                • +
                                                                +

                                                                The simple case is fairly self explanatory, a condition is applied to the +data that looks like field operator value (e.g. name = 'Allan'). The +complex case allows full control over the query conditions by providing a +closure function that has access to the database Query that Editor is +using, so you can use the where(), or_where(), and_where() and +where_group() methods as you require.

                                                                +

                                                                Please be very careful when using this method! If an edit made by a user +using Editor removes the row from the where condition, the result is +undefined (since Editor expects the row to still be available, but the +condition removes it from the result set).

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $key + : string|callable + = null
                                                                +
                                                                +

                                                                Single field name or a closure function

                                                                +
                                                                + +
                                                                +
                                                                + $value + : string + = null
                                                                +
                                                                +

                                                                Single field value.

                                                                +
                                                                + +
                                                                +
                                                                + $op + : string + = '='
                                                                +
                                                                +

                                                                Condition operator: <, >, = etc

                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + array<string|int, string>|self + — +

                                                                Where condition array, or self if used as a setter.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + whereSet() + +

                                                                + + +

                                                                Get / set if the WHERE conditions should be included in the create and +edit actions.

                                                                + + + public + whereSet([mixed $_ = null ]) : bool + +

                                                                @param boolean $_ Include (true), or not (false)

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_ + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + bool + — +

                                                                Current value +@deprecated Note that whereSet is now deprecated and replaced with the +ability to set values for columns on create and edit. The C# libraries +do not support this option at all.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + write() + +

                                                                + + + + + public + write([mixed $_writeVal = null ]) : mixed + +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $_writeVal + : mixed + = null
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + _getSet() + +

                                                                + + +

                                                                Common getter / setter function for DataTables classes.

                                                                + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                                This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                                +
                                                                + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $prop + : mixed +
                                                                +
                                                                +

                                                                The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                                +
                                                                + +
                                                                +
                                                                + $val + : mixed +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + $array + : mixed + = false
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                +

                                                                + _propExists() + +

                                                                + + +

                                                                Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                                + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $name + : string +
                                                                +
                                                                +

                                                                Javascript dotted object name to write to

                                                                +
                                                                + +
                                                                +
                                                                + $data + : array<string|int, mixed> +
                                                                +
                                                                +

                                                                Data source array to read from

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + private +
                                                                +
                                                                + + +
                                                                +
                                                                + +
                                                                Return values
                                                                + bool + — +

                                                                true if present, false otherwise

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + _readProp() + +

                                                                + + +

                                                                Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                                + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $name + : string +
                                                                +
                                                                +

                                                                Javascript dotted object name to write to

                                                                +
                                                                + +
                                                                +
                                                                + $data + : array<string|int, mixed> +
                                                                +
                                                                +

                                                                Data source array to read from

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + private +
                                                                +
                                                                + + +
                                                                +
                                                                + +
                                                                Return values
                                                                + mixed + — +

                                                                The read value, or null if no value found.

                                                                +
                                                                + + +
                                                                +
                                                                +

                                                                + _writeProp() + +

                                                                + + +

                                                                Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                                + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                                Parameters
                                                                +
                                                                +
                                                                + $out + : array<string|int, mixed> +
                                                                +
                                                                +

                                                                Array to write the data to

                                                                +
                                                                + +
                                                                +
                                                                + $name + : string +
                                                                +
                                                                +

                                                                Javascript dotted object name to write to

                                                                +
                                                                + +
                                                                +
                                                                + $value + : mixed +
                                                                +
                                                                +

                                                                Value to write

                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + Tags + +
                                                                +
                                                                +
                                                                + throws +
                                                                +
                                                                + Exception + +

                                                                Information about duplicate properties

                                                                +
                                                                + +
                                                                +
                                                                + private +
                                                                +
                                                                + + +
                                                                +
                                                                + +
                                                                Return values
                                                                + mixed + — + + +
                                                                +
                                                                + +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                
                                                                +        
                                                                + +
                                                                +
                                                                + + + +
                                                                +
                                                                +
                                                                +
                                                                +

                                                                Search results

                                                                + +
                                                                +
                                                                +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Ext.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Ext.html new file mode 100644 index 00000000..363d70dd --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-Ext.html @@ -0,0 +1,698 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                  +

                                                                  Editor PHP 2.1.3

                                                                  + + + + + +
                                                                  + +
                                                                  +
                                                                  + + + + +
                                                                  + + +
                                                                  +

                                                                  + Ext + + +
                                                                  + in package + +
                                                                  + + +

                                                                  + + + +

                                                                  Base class for DataTables classes.

                                                                  + + + + + + + + + +

                                                                  + Table of Contents + +

                                                                  + +
                                                                  +
                                                                  + inst() + +  : Editor|Field|Join|Upload +
                                                                  +
                                                                  Static method to instantiate a new instance of a class (shorthand of +'instantiate').
                                                                  + +
                                                                  + instantiate() + +  : Editor|Field|Join|Upload +
                                                                  +
                                                                  Static method to instantiate a new instance of a class.
                                                                  + +
                                                                  + _getSet() + +  : mixed +
                                                                  +
                                                                  Common getter / setter function for DataTables classes.
                                                                  + +
                                                                  + _propExists() + +  : bool +
                                                                  +
                                                                  Determine if a property is available in a data set (allowing `null` to be +a valid value)
                                                                  + +
                                                                  + _readProp() + +  : mixed +
                                                                  +
                                                                  Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.
                                                                  + +
                                                                  + _writeProp() + +  : mixed +
                                                                  +
                                                                  Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).
                                                                  + +
                                                                  + + + + + + + +
                                                                  +

                                                                  + Methods + +

                                                                  +
                                                                  +

                                                                  + inst() + +

                                                                  + + +

                                                                  Static method to instantiate a new instance of a class (shorthand of +'instantiate').

                                                                  + + + public + static inst() : Editor|Field|Join|Upload + +

                                                                  This method performs exactly the same actions as the 'instantiate' +static method, but is simply shorter and easier to type!

                                                                  +
                                                                  + + + + +
                                                                  Return values
                                                                  + Editor|Field|Join|Upload + — +

                                                                  class +@static

                                                                  +
                                                                  + + +
                                                                  +
                                                                  +

                                                                  + instantiate() + +

                                                                  + + +

                                                                  Static method to instantiate a new instance of a class.

                                                                  + + + public + static instantiate() : Editor|Field|Join|Upload + +

                                                                  A factory method that will create a new instance of the class +that has extended 'Ext'. This allows classes to be instantiated +and then chained - which otherwise isn't available until PHP 5.4. +If using PHP 5.4 or later, simply create a 'new' instance of the +target class and chain methods as normal.

                                                                  +
                                                                  + + + + +
                                                                  Return values
                                                                  + Editor|Field|Join|Upload + — +

                                                                  Instantiated class +@static

                                                                  +
                                                                  + + +
                                                                  +
                                                                  +

                                                                  + _getSet() + +

                                                                  + + +

                                                                  Common getter / setter function for DataTables classes.

                                                                  + + + protected + _getSet(mixed &$prop, mixed $val[, mixed $array = false ]) : mixed + +

                                                                  This getter / setter method makes building getter / setting methods +easier, by abstracting everything to a single function call.

                                                                  +
                                                                  + +
                                                                  Parameters
                                                                  +
                                                                  +
                                                                  + $prop + : mixed +
                                                                  +
                                                                  +

                                                                  The property to set +@param mixed $val The value to set - if given as null, then we assume +that the function is being used as a getter. +@param boolean $array Treat the target property as an array or not +(default false). If used as an array, then values passed in are added +to the $prop array. +@return self|mixed Class instance if setting (allowing chaining), or +the value requested if getting.

                                                                  +
                                                                  + +
                                                                  +
                                                                  + $val + : mixed +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + $array + : mixed + = false
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  Return values
                                                                  + mixed + — + + +
                                                                  +
                                                                  +

                                                                  + _propExists() + +

                                                                  + + +

                                                                  Determine if a property is available in a data set (allowing `null` to be +a valid value)

                                                                  + + + protected + _propExists(string $name, array<string|int, mixed> $data) : bool + + +
                                                                  Parameters
                                                                  +
                                                                  +
                                                                  + $name + : string +
                                                                  +
                                                                  +

                                                                  Javascript dotted object name to write to

                                                                  +
                                                                  + +
                                                                  +
                                                                  + $data + : array<string|int, mixed> +
                                                                  +
                                                                  +

                                                                  Data source array to read from

                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  + Tags + +
                                                                  +
                                                                  +
                                                                  + private +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  Return values
                                                                  + bool + — +

                                                                  true if present, false otherwise

                                                                  +
                                                                  + + +
                                                                  +
                                                                  +

                                                                  + _readProp() + +

                                                                  + + +

                                                                  Read a value from a data structure, using Javascript dotted object +notation. This is the inverse of the `_writeProp` method and provides +the same support, matching DataTables' ability to read nested JSON +data objects.

                                                                  + + + protected + _readProp(string $name, array<string|int, mixed> $data) : mixed + + +
                                                                  Parameters
                                                                  +
                                                                  +
                                                                  + $name + : string +
                                                                  +
                                                                  +

                                                                  Javascript dotted object name to write to

                                                                  +
                                                                  + +
                                                                  +
                                                                  + $data + : array<string|int, mixed> +
                                                                  +
                                                                  +

                                                                  Data source array to read from

                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  + Tags + +
                                                                  +
                                                                  +
                                                                  + private +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  Return values
                                                                  + mixed + — +

                                                                  The read value, or null if no value found.

                                                                  +
                                                                  + + +
                                                                  +
                                                                  +

                                                                  + _writeProp() + +

                                                                  + + +

                                                                  Write the field's value to an array structure, using Javascript dotted +object notation to indicate JSON data structure. For example `name.first` +gives the data structure: `name: { first: ... }`. This matches DataTables +own ability to do this on the client-side, although this doesn't +implement implement quite such a complex structure (no array / function +support).

                                                                  + + + protected + _writeProp(array<string|int, mixed> &$out, string $name, mixed $value) : mixed + + +
                                                                  Parameters
                                                                  +
                                                                  +
                                                                  + $out + : array<string|int, mixed> +
                                                                  +
                                                                  +

                                                                  Array to write the data to

                                                                  +
                                                                  + +
                                                                  +
                                                                  + $name + : string +
                                                                  +
                                                                  +

                                                                  Javascript dotted object name to write to

                                                                  +
                                                                  + +
                                                                  +
                                                                  + $value + : mixed +
                                                                  +
                                                                  +

                                                                  Value to write

                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  + Tags + +
                                                                  +
                                                                  +
                                                                  + throws +
                                                                  +
                                                                  + Exception + +

                                                                  Information about duplicate properties

                                                                  +
                                                                  + +
                                                                  +
                                                                  + private +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  Return values
                                                                  + mixed + — + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  
                                                                  +        
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +

                                                                  Search results

                                                                  + +
                                                                  +
                                                                  +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-HtmLawed-Htmlaw.html b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-HtmLawed-Htmlaw.html new file mode 100644 index 00000000..e91df86f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/classes/DataTables-HtmLawed-Htmlaw.html @@ -0,0 +1,516 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                    +

                                                                    Editor PHP 2.1.3

                                                                    + + + + + +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    + + +
                                                                    +

                                                                    + Htmlaw + + +
                                                                    + in package + +
                                                                    + + +

                                                                    + + + +

                                                                    A class wrapper for the htmLawed library.

                                                                    + + + + + + + + + +

                                                                    + Table of Contents + +

                                                                    + +
                                                                    +
                                                                    + $defaultConfig + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + $defaultSpec + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + filter() + +  : string +
                                                                    +
                                                                    Filters a string of html with the htmLawed library.
                                                                    + +
                                                                    + filterRSS() + +  : string +
                                                                    +
                                                                    Filter a string of html so that it can be put into an rss feed.
                                                                    + +
                                                                    + + + + + + +
                                                                    +

                                                                    + Properties + +

                                                                    +
                                                                    +

                                                                    + $defaultConfig + + + +

                                                                    + + + + + public + static mixed + $defaultConfig + = array( + 'anti_link_spam' => array('`.`', ''), + 'comment' => 1, + 'cdata' => 3, + 'css_expression' => 1, + 'deny_attribute' => 'on*', + 'unique_ids' => 0, + 'elements' => '*-applet-form-input-textarea-iframe-script-style-embed-object', + 'keep_bad' => 1, + 'schemes' => 'classid:clsid; href: aim, feed, file, ftp, gopher, http, https, irc, mailto, news, nntp, sftp, ssh, telnet; style: nil; *:file, http, https', + // clsid allowed in class + 'valid_xhtml' => 0, + 'direct_list_nest' => 1, + 'balance' => 1, +) + +
                                                                    + +
                                                                    + + + +
                                                                    +
                                                                    +

                                                                    + $defaultSpec + + + +

                                                                    + + + + + public + static mixed + $defaultSpec + = array('object=-classid-type, -codebase', 'embed=type(oneof=application/x-shockwave-flash)') + +
                                                                    + +
                                                                    + + + +
                                                                    +
                                                                    + +
                                                                    +

                                                                    + Methods + +

                                                                    +
                                                                    +

                                                                    + filter() + +

                                                                    + + +

                                                                    Filters a string of html with the htmLawed library.

                                                                    + + + public + static filter(string $html[, array<string|int, mixed>|null $config = null ][, string|array<string|int, mixed>|null $spec = null ]) : string + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $html + : string +
                                                                    +
                                                                    +

                                                                    The text to filter.

                                                                    +
                                                                    + +
                                                                    +
                                                                    + $config + : array<string|int, mixed>|null + = null
                                                                    +
                                                                    +

                                                                    Config settings for the array.

                                                                    +
                                                                    + +
                                                                    +
                                                                    + $spec + : string|array<string|int, mixed>|null + = null
                                                                    +
                                                                    +

                                                                    A specification to further limit the allowed attribute values in the html.

                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/htmLawed_README.htm + + +
                                                                    +
                                                                    + +
                                                                    Return values
                                                                    + string + — +

                                                                    Returns the filtered html.

                                                                    +
                                                                    + + +
                                                                    +
                                                                    +

                                                                    + filterRSS() + +

                                                                    + + +

                                                                    Filter a string of html so that it can be put into an rss feed.

                                                                    + + + public + static filterRSS( $html) : string + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $html + : +
                                                                    +
                                                                    +

                                                                    The html text to fitlter.

                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + +

                                                                    Htmlawed::filter().

                                                                    +
                                                                    + +
                                                                    +
                                                                    + +
                                                                    Return values
                                                                    + string + — +

                                                                    Returns the filtered html.

                                                                    +
                                                                    + + +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    
                                                                    +        
                                                                    + +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +

                                                                    Search results

                                                                    + +
                                                                    +
                                                                    +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/css/base.css b/ci4/app/ThirdParty/DatatablesEditor/docs/css/base.css new file mode 100644 index 00000000..b71c759f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/css/base.css @@ -0,0 +1,1105 @@ + +:root { + /* Typography */ + --font-primary: 'Source Sans Pro', Helvetica, Arial, sans-serif; + --font-secondary: 'Source Sans Pro', Helvetica, Arial, sans-serif; + --font-monospace: 'Source Code Pro', monospace; + --line-height--primary: 1.6; + --letter-spacing--primary: .05rem; + --text-base-size: 1em; + --text-scale-ratio: 1.2; + + --text-xxs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio) / var(--text-scale-ratio)); + --text-xs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio)); + --text-sm: calc(var(--text-base-size) / var(--text-scale-ratio)); + --text-md: var(--text-base-size); + --text-lg: calc(var(--text-base-size) * var(--text-scale-ratio)); + --text-xl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + + /* Colors */ + --primary-color-hue: 96; + --primary-color-saturation: 57%; + --primary-color: hsl(var(--primary-color-hue), var(--primary-color-saturation), 60%); + --primary-color-darken: hsl(var(--primary-color-hue), var(--primary-color-saturation), 40%); + --primary-color-darker: hsl(var(--primary-color-hue), var(--primary-color-saturation), 20%); + --primary-color-darkest: hsl(var(--primary-color-hue), var(--primary-color-saturation), 10%); + --primary-color-lighten: hsl(var(--primary-color-hue), var(--primary-color-saturation), 80%); + --primary-color-lighter: hsl(var(--primary-color-hue), var(--primary-color-saturation), 99%); + --dark-gray: #d1d1d1; + --light-gray: #f0f0f0; + + --text-color: var(--primary-color-darkest); + + --header-height: var(--spacing-xxxxl); + --header-bg-color: var(--primary-color); + --code-background-color: var(--primary-color-lighter); + --code-border-color: --primary-color-lighten; + --button-border-color: var(--primary-color-darken); + --button-color: transparent; + --button-color-primary: var(--primary-color); + --button-text-color: #555; + --button-text-color-primary: white; + --popover-background-color: rgba(255, 255, 255, 0.75); + --link-color-primary: var(--primary-color-darken); + --link-hover-color-primary: var(--primary-color-darker); + --form-field-border-color: var(--dark-gray); + --form-field-color: #fff; + --admonition-success-color: var(--primary-color); + --admonition-border-color: silver; + --table-separator-color: var(--primary-color-lighten); + --title-text-color: var(--primary-color); + + --sidebar-border-color: var(--primary-color-lighten); + + /* Grid */ + --container-width: 1400px; + + /* Spacing */ + --spacing-base-size: 1rem; + --spacing-scale-ratio: 1.5; + + --spacing-xxxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-xxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-xs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-sm: calc(var(--spacing-base-size) / var(--spacing-scale-ratio)); + --spacing-md: var(--spacing-base-size); + --spacing-lg: calc(var(--spacing-base-size) * var(--spacing-scale-ratio)); + --spacing-xl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + + --border-radius-base-size: 3px; +} + +/* Base Styles +-------------------------------------------------- */ +body { + color: var(--text-color); + font-family: var(--font-primary); + font-size: var(--text-md); + letter-spacing: var(--letter-spacing--primary); + line-height: var(--line-height--primary); + width: 100%; +} + +.phpdocumentor h1, +.phpdocumentor h2, +.phpdocumentor h3, +.phpdocumentor h4, +.phpdocumentor h5, +.phpdocumentor h6 { + margin-bottom: var(--spacing-lg); + margin-top: var(--spacing-lg); + font-weight: 600; +} + +.phpdocumentor h1 { + font-size: var(--text-xxxxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.2; + margin-top: 0; +} + +.phpdocumentor h2 { + font-size: var(--text-xxxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.25; +} + +.phpdocumentor h3 { + font-size: var(--text-xxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.3; +} + +.phpdocumentor h4 { + font-size: var(--text-xl); + letter-spacing: calc(var(--letter-spacing--primary) / 2); + line-height: 1.35; + margin-bottom: var(--spacing-md); +} + +.phpdocumentor h5 { + font-size: var(--text-lg); + letter-spacing: calc(var(--letter-spacing--primary) / 4); + line-height: 1.5; + margin-bottom: var(--spacing-md); + margin-top: var(--spacing-md); +} + +.phpdocumentor h6 { + font-size: var(--text-md); + letter-spacing: 0; + line-height: var(--line-height--primary); + margin-bottom: var(--spacing-md); + margin-top: var(--spacing-md); +} + +.phpdocumentor h1 .headerlink, +.phpdocumentor h2 .headerlink, +.phpdocumentor h3 .headerlink, +.phpdocumentor h4 .headerlink, +.phpdocumentor h5 .headerlink, +.phpdocumentor h6 .headerlink +{ + transition: all .3s ease-in-out; + opacity: 0; + text-decoration: none; + color: silver; + font-size: 80%; +} + +.phpdocumentor h1:hover .headerlink, +.phpdocumentor h2:hover .headerlink, +.phpdocumentor h3:hover .headerlink, +.phpdocumentor h4:hover .headerlink, +.phpdocumentor h5:hover .headerlink, +.phpdocumentor h6:hover .headerlink +{ + opacity: 1; +} +.phpdocumentor p { + margin-top: 0; + margin-bottom: var(--spacing-md); +} +.phpdocumentor figure { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor figcaption { + text-align: center; + font-style: italic; + font-size: 80%; +} + +.phpdocumentor-uml-diagram svg { + max-width: 100%; + height: auto !important; +} +.phpdocumentor-line { + border-top: 1px solid #E1E1E1; + border-width: 0; + margin-bottom: var(--spacing-xxl); + margin-top: var(--spacing-xxl); +} +.phpdocumentor-section { + box-sizing: border-box; + margin: 0 auto; + max-width: var(--container-width); + padding: 0 var(--spacing-lg); + position: relative; + width: 100%; +} + +@media (min-width: 1200px) { + .phpdocumentor-section { + padding: 0; + width: 95%; + } +} +.phpdocumentor-column { + box-sizing: border-box; + float: left; + width: 100%; +} + +@media (min-width: 550px) { + .phpdocumentor-column { + margin-left: 4%; + } + + .phpdocumentor-column:first-child { + margin-left: 0; + } + + .-one.phpdocumentor-column { + width: 4.66666666667%; + } + + .-two.phpdocumentor-column { + width: 13.3333333333%; + } + + .-three.phpdocumentor-column { + width: 22%; + } + + .-four.phpdocumentor-column { + width: 30.6666666667%; + } + + .-five.phpdocumentor-column { + width: 39.3333333333%; + } + + .-six.phpdocumentor-column { + width: 48%; + } + + .-seven.phpdocumentor-column { + width: 56.6666666667%; + } + + .-eight.phpdocumentor-column { + width: 65.3333333333%; + } + + .-nine.phpdocumentor-column { + width: 74.0%; + } + + .-ten.phpdocumentor-column { + width: 82.6666666667%; + } + + .-eleven.phpdocumentor-column { + width: 91.3333333333%; + } + + .-twelve.phpdocumentor-column { + margin-left: 0; + width: 100%; + } + + .-one-third.phpdocumentor-column { + width: 30.6666666667%; + } + + .-two-thirds.phpdocumentor-column { + width: 65.3333333333%; + } + + .-one-half.phpdocumentor-column { + width: 48%; + } + + /* Offsets */ + .-offset-by-one.phpdocumentor-column { + margin-left: 8.66666666667%; + } + + .-offset-by-two.phpdocumentor-column { + margin-left: 17.3333333333%; + } + + .-offset-by-three.phpdocumentor-column { + margin-left: 26%; + } + + .-offset-by-four.phpdocumentor-column { + margin-left: 34.6666666667%; + } + + .-offset-by-five.phpdocumentor-column { + margin-left: 43.3333333333%; + } + + .-offset-by-six.phpdocumentor-column { + margin-left: 52%; + } + + .-offset-by-seven.phpdocumentor-column { + margin-left: 60.6666666667%; + } + + .-offset-by-eight.phpdocumentor-column { + margin-left: 69.3333333333%; + } + + .-offset-by-nine.phpdocumentor-column { + margin-left: 78.0%; + } + + .-offset-by-ten.phpdocumentor-column { + margin-left: 86.6666666667%; + } + + .-offset-by-eleven.phpdocumentor-column { + margin-left: 95.3333333333%; + } + + .-offset-by-one-third.phpdocumentor-column { + margin-left: 34.6666666667%; + } + + .-offset-by-two-thirds.phpdocumentor-column { + margin-left: 69.3333333333%; + } + + .-offset-by-one-half.phpdocumentor-column { + margin-left: 52%; + } +} +.phpdocumentor a { + color: var(--link-color-primary); +} + +.phpdocumentor a:hover { + color: var(--link-hover-color-primary); +} +.phpdocumentor-button { + background-color: var(--button-color); + border: 1px solid var(--button-border-color); + border-radius: var(--border-radius-base-size); + box-sizing: border-box; + color: var(--button-text-color); + cursor: pointer; + display: inline-block; + font-size: var(--text-sm); + font-weight: 600; + height: 38px; + letter-spacing: .1rem; + line-height: 38px; + padding: 0 var(--spacing-xxl); + text-align: center; + text-decoration: none; + text-transform: uppercase; + white-space: nowrap; + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-button .-wide { + width: 100%; +} + +.phpdocumentor-button:hover, +.phpdocumentor-button:focus { + border-color: #888; + color: #333; + outline: 0; +} + +.phpdocumentor-button.-primary { + background-color: var(--button-color-primary); + border-color: var(--button-color-primary); + color: var(--button-text-color-primary); +} + +.phpdocumentor-button.-primary:hover, +.phpdocumentor-button.-primary:focus { + background-color: var(--link-color-primary); + border-color: var(--link-color-primary); + color: var(--button-text-color-primary); +} +.phpdocumentor form { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-field { + background-color: var(--form-field-color); + border: 1px solid var(--form-field-border-color); + border-radius: var(--border-radius-base-size); + box-shadow: none; + box-sizing: border-box; + height: 38px; + padding: var(--spacing-xxxs) var(--spacing-xxs); /* The 6px vertically centers text on FF, ignored by Webkit */ + margin-bottom: var(--spacing-md); +} + +/* Removes awkward default styles on some inputs for iOS */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; +} + +.phpdocumentor-textarea { + min-height: 65px; + padding-bottom: var(--spacing-xxxs); + padding-top: var(--spacing-xxxs); +} + +.phpdocumentor-field:focus { + border: 1px solid var(--button-color-primary); + outline: 0; +} + +.phpdocumentor-label { + display: block; + margin-bottom: var(--spacing-xs); +} + +.phpdocumentor-fieldset { + border-width: 0; + padding: 0; +} + +input[type="checkbox"].phpdocumentor-field, +input[type="radio"].phpdocumentor-field { + display: inline; +} +.phpdocumentor-column ul, +div.phpdocumentor-list > ul, +ul.phpdocumentor-list { + list-style: circle; +} + +.phpdocumentor-column ol, +div.phpdocumentor-list > ol, +ol.phpdocumentor-list { + list-style: decimal; +} + + +.phpdocumentor-column ul, +div.phpdocumentor-list > ul, +ol.phpdocumentor-list, +ul.phpdocumentor-list { + margin-top: 0; + padding-left: 1rem; + margin-bottom: var(--spacing-md); +} + +dl { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-column ul ul, +div.phpdocumentor-list > ul ul, +ul.phpdocumentor-list ul.phpdocumentor-list, +ul.phpdocumentor-list ol.phpdocumentor-list, +ol.phpdocumentor-list ol.phpdocumentor-list, +ol.phpdocumentor-list ul.phpdocumentor-list { + font-size: var(--text-sm); + margin: var(--spacing-xs) 0 var(--spacing-xs) calc(var(--spacing-xs) * 2); +} + +.phpdocumentor-column ul li, +.phpdocumentor-list li { + padding-bottom: var(--spacing-xs); +} + +.phpdocumentor dl dt { + margin-bottom: var(--spacing-xs); +} + +.phpdocumentor dl dd { + margin-bottom: var(--spacing-md); +} +.phpdocumentor pre { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-code { + font-family: var(--font-monospace); + background: var(--code-background-color); + border: 1px solid var(--code-border-color); + border-radius: var(--border-radius-base-size); + font-size: var(--text-sm); + padding: var(--spacing-sm) var(--spacing-md); + width: 100%; + box-sizing: border-box; +} + +.phpdocumentor-code.-dark { + background: var(--primary-color-darkest); + color: var(--light-gray); + box-shadow: 0 2px 3px var(--dark-gray); +} + +pre > .phpdocumentor-code { + display: block; + white-space: pre; +} +.phpdocumentor blockquote { + border-left: 4px solid var(--primary-color-darken); + margin: var(--spacing-md) 0; + padding: var(--spacing-xs) var(--spacing-sm); + color: var(--primary-color-darker); + font-style: italic; +} + +.phpdocumentor blockquote p:last-of-type { + margin-bottom: 0; +} +.phpdocumentor table { + margin-bottom: var(--spacing-md); +} + +th.phpdocumentor-heading, +td.phpdocumentor-cell { + border-bottom: 1px solid var(--table-separator-color); + padding: var(--spacing-sm) var(--spacing-md); + text-align: left; +} + +th.phpdocumentor-heading:first-child, +td.phpdocumentor-cell:first-child { + padding-left: 0; +} + +th.phpdocumentor-heading:last-child, +td.phpdocumentor-cell:last-child { + padding-right: 0; +} + +.phpdocumentor-header { + display: flex; + flex-direction: row; + align-items: stretch; + flex-wrap: wrap; + justify-content: space-between; + height: auto; + padding: var(--spacing-md) var(--spacing-md); +} + +.phpdocumentor-header__menu-button { + position: absolute; + top: -100%; + left: -100%; +} + +.phpdocumentor-header__menu-icon { + font-size: 2rem; + color: var(--primary-color); +} + +.phpdocumentor-header__menu-button:checked ~ .phpdocumentor-topnav { + max-height: 250px; + padding-top: var(--spacing-md); +} + +@media (min-width: 1000px) { + .phpdocumentor-header { + flex-direction: row; + padding: var(--spacing-lg) var(--spacing-lg); + min-height: var(--header-height); + } + + .phpdocumentor-header__menu-icon { + display: none; + } +} + +@media (min-width: 1000px) { + .phpdocumentor-header { + padding-top: 0; + padding-bottom: 0; + } +} +@media (min-width: 1200px) { + .phpdocumentor-header { + padding: 0; + } +} +.phpdocumentor-title { + box-sizing: border-box; + color: var(--title-text-color); + font-size: var(--text-xxl); + letter-spacing: .05rem; + font-weight: normal; + width: auto; + margin: 0; + display: flex; + align-items: center; +} + +.phpdocumentor-title.-without-divider { + border: none; +} + +.phpdocumentor-title__link { + transition: all .3s ease-out; + display: flex; + color: var(--title-text-color); + text-decoration: none; + font-weight: normal; + white-space: nowrap; + transform: scale(.75); + transform-origin: left; +} + +.phpdocumentor-title__link:hover { + transform: perspective(15rem) translateX(.5rem); + font-weight: 600; +} + +@media (min-width: 1000px) { + .phpdocumentor-title { + width: 30.6666666667%; + border-right: var(--sidebar-border-color) solid 1px; + } + + .phpdocumentor-title__link { + transform-origin: left; + } +} + +@media (min-width: 1000px) { + .phpdocumentor-title__link { + transform: scale(.85); + } +} + +@media (min-width: 1200px) { + .phpdocumentor-title__link { + transform: scale(1); + } +} +.phpdocumentor-topnav { + display: flex; + align-items: center; + margin: 0; + max-height: 0; + overflow: hidden; + transition: max-height 0.2s ease-out; + flex-basis: 100%; +} + +.phpdocumentor-topnav__menu { + text-align: right; + list-style: none; + margin: 0; + padding: 0; + flex: 1; + display: flex; + flex-flow: row wrap; + justify-content: center; +} + +.phpdocumentor-topnav__menu-item { + margin: 0; + width: 100%; + display: inline-block; + text-align: center; + padding: var(--spacing-sm) 0 +} + +.phpdocumentor-topnav__menu-item.-social { + width: auto; + padding: var(--spacing-sm) +} + +.phpdocumentor-topnav__menu-item a { + display: inline-block; + color: var(--text-color); + text-decoration: none; + font-size: var(--text-lg); + transition: all .3s ease-out; + border-bottom: 1px dotted transparent; + line-height: 1; +} + +.phpdocumentor-topnav__menu-item a:hover { + transform: perspective(15rem) translateY(.1rem); + border-bottom: 1px dotted var(--text-color); +} + +@media (min-width: 1000px) { + .phpdocumentor-topnav { + max-height: none; + overflow: visible; + flex-basis: auto; + } + + .phpdocumentor-topnav__menu { + display: flex; + flex-flow: row wrap; + justify-content: flex-end; + } + + .phpdocumentor-topnav__menu-item, + .phpdocumentor-topnav__menu-item.-social { + width: auto; + display: inline; + text-align: right; + padding: 0 0 0 var(--spacing-md) + } +} +.phpdocumentor-sidebar { + margin: 0; + overflow: hidden; + max-height: 0; +} + +.phpdocumentor .phpdocumentor-sidebar .phpdocumentor-list { + padding: var(--spacing-xs) var(--spacing-md); + list-style: none; + margin: 0; +} + +.phpdocumentor .phpdocumentor-sidebar li { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding: 0 0 var(--spacing-xxxs) var(--spacing-md); +} + +.phpdocumentor .phpdocumentor-sidebar abbr, +.phpdocumentor .phpdocumentor-sidebar a { + text-decoration: none; + border-bottom: none; + color: var(--text-color); + font-size: var(--text-md); + padding-left: 0; + transition: padding-left .4s ease-out; +} + +.phpdocumentor .phpdocumentor-sidebar a:hover, +.phpdocumentor .phpdocumentor-sidebar a.-active { + padding-left: 5px; + font-weight: 600; +} + +.phpdocumentor .phpdocumentor-sidebar__category > * { + border-left: 1px solid var(--primary-color-lighten); +} + +.phpdocumentor .phpdocumentor-sidebar__category { + margin-bottom: var(--spacing-lg); +} + +.phpdocumentor .phpdocumentor-sidebar__category-header { + font-size: var(--text-md); + margin-bottom: var(--spacing-xs); + color: var(--link-color-primary); + font-weight: 600; + border-left: 0; +} + +.phpdocumentor .phpdocumentor-sidebar__root-package, +.phpdocumentor .phpdocumentor-sidebar__root-namespace { + font-size: var(--text-md); + margin: 0; + padding-top: var(--spacing-xs); + padding-left: var(--spacing-md); + color: var(--text-color); + font-weight: normal; +} + +@media (min-width: 550px) { + .phpdocumentor-sidebar { + border-right: var(--sidebar-border-color) solid 1px; + } +} + +.phpdocumentor-sidebar__menu-button { + position: absolute; + top: -100%; + left: -100%; +} + +.phpdocumentor-sidebar__menu-icon { + font-size: var(--text-md); + font-weight: 600; + background: var(--primary-color); + color: white; + margin: 0 0 var(--spacing-lg); + display: block; + padding: var(--spacing-sm); + text-align: center; + border-radius: 3px; + text-transform: uppercase; + letter-spacing: .15rem; +} + +.phpdocumentor-sidebar__menu-button:checked ~ .phpdocumentor-sidebar { + max-height: 100%; + padding-top: var(--spacing-md); +} + +@media (min-width: 550px) { + .phpdocumentor-sidebar { + overflow: visible; + max-height: 100%; + } + + .phpdocumentor-sidebar__menu-icon { + display: none; + } +} +.phpdocumentor-admonition { + border: 1px solid var(--admonition-border-color); + border-radius: var(--border-radius-base-size); + border-color: var(--primary-color-lighten); + background-color: var(--primary-color-lighter); + padding: var(--spacing-lg); + margin: var(--spacing-lg) 0; + display: flex; + flex-direction: row; + align-items: flex-start; +} + +.phpdocumentor-admonition p:last-of-type { + margin-bottom: 0; +} + +.phpdocumentor-admonition--success, +.phpdocumentor-admonition.-success { + border-color: var(--admonition-success-color); +} + +.phpdocumentor-admonition__icon { + margin-right: var(--spacing-md); + color: var(--primary-color); + max-width: 3rem; +} +.phpdocumentor ul.phpdocumentor-breadcrumbs { + font-size: var(--text-md); + list-style: none; + margin: 0; + padding: 0; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs a { + color: var(--text-color); + text-decoration: none; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs > li { + display: inline-block; + margin: 0; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs > li + li:before { + color: var(--dark-gray); + content: "\\\A0"; + padding: 0; +} +.phpdocumentor .phpdocumentor-back-to-top { + position: fixed; + bottom: 2rem; + font-size: 2.5rem; + opacity: .25; + transition: all .3s ease-in-out; + right: 2rem; +} + +.phpdocumentor .phpdocumentor-back-to-top:hover { + color: var(--link-color-primary); + opacity: 1; +} +.phpdocumentor-search { + position: relative; + display: none; /** disable by default for non-js flow */ + opacity: .3; /** white-out default for loading indication */ + transition: opacity .3s, background .3s; + margin: var(--spacing-sm) 0; + flex: 1; + min-width: 100%; +} + +.phpdocumentor-search label { + display: flex; + align-items: center; + flex: 1; +} + +.phpdocumentor-search__icon { + color: var(--primary-color); + margin-right: var(--spacing-sm); + width: 1rem; + height: 1rem; +} + +.phpdocumentor-search--enabled { + display: flex; +} + +.phpdocumentor-search--active { + opacity: 1; +} + +.phpdocumentor-search input:disabled { + background-color: lightgray; +} + +.phpdocumentor-search__field:focus, +.phpdocumentor-search__field { + margin-bottom: 0; + border: 0; + border-bottom: 2px solid var(--primary-color); + padding: 0; + border-radius: 0; + flex: 1; +} + +@media (min-width: 1000px) { + .phpdocumentor-search { + min-width: auto; + max-width: 20rem; + margin: 0 0 0 auto; + } +} +.phpdocumentor-content { + position: relative; +} + +.phpdocumentor-search-results { + backdrop-filter: blur(5px); + background: var(--popover-background-color); + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + padding: 0; + opacity: 1; + pointer-events: all; + + transition: opacity .3s, background .3s; +} + +.phpdocumentor-search-results--hidden { + background: transparent; + backdrop-filter: blur(0); + opacity: 0; + pointer-events: none; +} + +.phpdocumentor-search-results__dialog { + width: 100%; + background: white; + max-height: 100%; + display: flex; + flex-direction: column; +} + +.phpdocumentor-search-results__body { + overflow: auto; +} + +.phpdocumentor-search-results__header { + padding: var(--spacing-lg); + display: flex; + justify-content: space-between; + background: var(--primary-color-darken); + color: white; + align-items: center; +} + +.phpdocumentor-search-results__close { + font-size: var(--text-xl); + background: none; + border: none; + padding: 0; + margin: 0; +} + +.phpdocumentor .phpdocumentor-search-results__title { + font-size: var(--text-xl); + margin-bottom: 0; +} + +.phpdocumentor-search-results__entries { + list-style: none; + padding: 0 var(--spacing-lg); + margin: 0; +} + +.phpdocumentor-search-results__entry { + border-bottom: 1px solid var(--table-separator-color); + padding: var(--spacing-sm) 0; + text-align: left; +} + +.phpdocumentor-search-results__entry a { + display: block; +} + +.phpdocumentor-search-results__entry small { + margin-top: var(--spacing-xs); + margin-bottom: var(--spacing-md); + color: var(--primary-color-darker); + display: block; + word-break: break-word; +} + +.phpdocumentor-search-results__entry h3 { + font-size: var(--text-lg); + margin: 0; +} + +@media (min-width: 550px) { + .phpdocumentor-search-results { + padding: 0 var(--spacing-lg); + } + + .phpdocumentor-search-results__entry h3 { + font-size: var(--text-xxl); + } + + .phpdocumentor-search-results__dialog { + margin: var(--spacing-xl) auto; + max-width: 40rem; + background: white; + border: 1px solid silver; + box-shadow: 0 2px 5px silver; + max-height: 40rem; + border-radius: 3px; + } +} +.phpdocumentor-modal { + position: fixed; + width: 100vw; + height: 100vh; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; +} + +.phpdocumentor-modal__open { + visibility: visible; + opacity: 1; + transition-delay: 0s; +} + +.phpdocumentor-modal-bg { + position: absolute; + background: gray; + opacity: 50%; + width: 100%; + height: 100%; +} + +.phpdocumentor-modal-container { + border-radius: 1em; + background: #fff; + position: relative; + padding: 2em; + box-sizing: border-box; + max-width:100vw; +} + +.phpdocumentor-modal__close { + position: absolute; + right: 0.75em; + top: 0.75em; + outline: none; + appearance: none; + color: var(--primary-color); + background: none; + border: 0px; + font-weight: bold; + cursor: pointer; +} + +/* Used for screen readers and such */ +.visually-hidden { + display: none; +} + +.float-right { + float: right; +} + +.float-left { + float: left; +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/css/normalize.css b/ci4/app/ThirdParty/DatatablesEditor/docs/css/normalize.css new file mode 100644 index 00000000..579152b0 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: var(--font-monospace); + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/css/template.css b/ci4/app/ThirdParty/DatatablesEditor/docs/css/template.css new file mode 100644 index 00000000..f7178281 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/css/template.css @@ -0,0 +1,192 @@ +.phpdocumentor-summary { + font-style: italic; +} +.phpdocumentor-description { + margin-bottom: var(--spacing-md); +} +.phpdocumentor-element { + position: relative; +} + +.phpdocumentor .phpdocumentor-element__name { + line-height: 1; +} + +.phpdocumentor-element__package, +.phpdocumentor-element__extends, +.phpdocumentor-element__implements { + display: block; + font-size: var(--text-xxs); + font-weight: normal; + opacity: .7; +} + +.phpdocumentor-element__package .phpdocumentor-breadcrumbs { + display: inline; +} + +.phpdocumentor-element:not(:last-child) { + border-bottom: 1px solid var(--primary-color-lighten); + padding-bottom: var(--spacing-lg); +} + +.phpdocumentor-element.-deprecated .phpdocumentor-element__name { + text-decoration: line-through; +} + +.phpdocumentor-element__modifier { + font-size: var(--text-xxs); + padding: calc(var(--spacing-base-size) / 4) calc(var(--spacing-base-size) / 2); + color: var(--text-color); + background-color: var(--light-gray); + border-radius: 3px; + text-transform: uppercase; +} +.phpdocumentor-signature { + display: inline-block; + font-size: var(--text-sm); + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-signature.-deprecated .phpdocumentor-signature__name { + text-decoration: line-through; +} +.phpdocumentor-table-of-contents { +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry { + padding-top: var(--spacing-xs); + margin-left: 2rem; + display: flex; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > a { + flex: 0 1 auto; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > span { + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:after { + content: ''; + height: 12px; + width: 12px; + left: 16px; + position: absolute; +} +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-private:after { + background: url('data:image/svg+xml;utf8,') no-repeat; +} +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-protected:after { + left: 13px; + background: url('data:image/svg+xml;utf8,') no-repeat; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:before { + width: 1.25rem; + height: 1.25rem; + line-height: 1.25rem; + background: transparent url('data:image/svg+xml;utf8,') no-repeat center center; + content: ''; + position: absolute; + left: 0; + border-radius: 50%; + font-weight: 600; + color: white; + text-align: center; + font-size: .75rem; + margin-top: .2rem; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-method:before { + content: 'M'; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-function:before { + content: 'M'; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-property:before { + content: 'P' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-constant:before { + content: 'C'; + background-color: transparent; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-class:before { + content: 'C' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-interface:before { + content: 'I' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-trait:before { + content: 'T' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-namespace:before { + content: 'N' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-package:before { + content: 'P' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-enum:before { + content: 'E' +} + +.phpdocumentor-table-of-contents dd { + font-style: italic; + margin-left: 2rem; +} +.phpdocumentor-element-found-in { + position: absolute; + top: 0; + right: 0; + font-size: var(--text-sm); + color: gray; +} + +.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source { + flex: 0 1 auto; + display: inline-flex; +} + +.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source:after { + width: 1.25rem; + height: 1.25rem; + line-height: 1.25rem; + background: transparent url('data:image/svg+xml;utf8,') no-repeat center center; + content: ''; + left: 0; + border-radius: 50%; + font-weight: 600; + text-align: center; + font-size: .75rem; + margin-top: .2rem; +} +.phpdocumentor-class-graph { + width: 100%; height: 600px; border:1px solid black; overflow: hidden +} + +.phpdocumentor-class-graph__graph { + width: 100%; +} +.phpdocumentor-tag-list__definition { + display: flex; +} + +.phpdocumentor-tag-link { + margin-right: var(--spacing-sm); +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Bootstrap.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Bootstrap.php.txt new file mode 100644 index 00000000..eb620ca0 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Bootstrap.php.txt @@ -0,0 +1,54 @@ + "Editor PHP libraries required PHP 5.3 or newer. You are ". + "currently using ".PHP_VERSION.". PHP 5.3 and newer have a lot of ". + "great new features that the Editor libraries take advantage of to ". + "present an easy to use and flexible API." + ) ); + exit(0); +} + + +// +// Load the DataTables bootstrap core file and let it register the required +// handlers. +// +require( dirname(__FILE__).'/Bootstrap.php' ); + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database.php.txt new file mode 100644 index 00000000..7d86935f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database.php.txt @@ -0,0 +1,473 @@ + "", // User name + * "pass" => "", // Password + * "host" => "", // Host name + * "port" => "", // Port + * "db" => "", // Database name + * "type" => "" // Datable type: "Mysql", "Postgres" or "Sqlite" + * ) + * ``` + */ + function __construct( $opts ) + { + $types = array( 'Mysql', 'Oracle', 'Postgres', 'Sqlite', 'Sqlserver', 'Db2', 'Firebird' ); + + if ( ! in_array( $opts['type'], $types ) ) { + throw new \Exception( + "Unknown database driver type. Must be one of ".implode(', ', $types), + 1 + ); + } + + $this->_type = $opts['type']; + $this->query_driver = "DataTables\\Database\\Driver\\".$opts['type'].'Query'; + $this->_dbResource = isset( $opts['pdo'] ) ? + $opts['pdo'] : + call_user_func($this->query_driver.'::connect', $opts ); + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + /** @var resource */ + private $_dbResource = null; + + /** @var callable */ + private $_type = null; + private $_debugCallback = null; + private $query_driver = null; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Determine if there is any data in the table that matches the query + * condition + * + * @param string|string[] $table Table name(s) to act upon. + * @param array $where Where condition for what to select - see {@see + * Query->where()}. + * @return boolean Boolean flag - true if there were rows + */ + public function any( $table, $where=null ) + { + $res = $this->query( 'select' ) + ->table( $table ) + ->get( '*' ) + ->where( $where ) + ->limit(1) + ->exec(); + + return $res->count() > 0; + } + + + /** + * Commit a database transaction. + * + * Use with {@see Database->transaction()} and {@see Database->rollback()}. + * @return self + */ + public function commit () + { + call_user_func($this->query_driver.'::commit', $this->_dbResource ); + return $this; + } + + + /** + * Get a count from a table. + * @param string|string[] $table Table name(s) to act upon. + * @param string $field Primary key field name + * @param array $where Where condition for what to select - see {@see + * Query->where()}. + * @return Number + */ + public function count ( $table, $field="id", $where=null ) + { + $res = $this->query( 'count' ) + ->table( $table ) + ->get( $field ) + ->where( $where ) + ->exec(); + + $cnt = $res->fetch(); + return $cnt['cnt']; + } + + + /** + * Get / set debug mode. + * + * @param boolean $_ Debug mode state. If not given, then used as a getter. + * @return boolean|self Debug mode state if no parameter is given, or + * self if used as a setter. + */ + public function debug ( $set=null ) + { + if ( $set === null ) { + return $this->_debugCallback ? true : false; + } + else if ( $set === false ) { + $this->_debugCallback = null; + } + else { + $this->_debugCallback = $set; + } + + return $this; + } + + + /** + * Perform a delete query on a table. + * + * This is a short cut method that creates an update query and then uses + * the query('delete'), table, where and exec methods of the query. + * @param string|string[] $table Table name(s) to act upon. + * @param array $where Where condition for what to delete - see {@see + * Query->where()}. + * @return Result + */ + public function delete ( $table, $where=null ) + { + return $this->query( 'delete' ) + ->table( $table ) + ->where( $where ) + ->exec(); + } + + + /** + * Insert data into a table. + * + * This is a short cut method that creates an update query and then uses + * the query('insert'), table, set and exec methods of the query. + * @param string|string[] $table Table name(s) to act upon. + * @param array $set Field names and values to set - see {@see + * Query->set()}. + * @param array $pkey Primary key column names (this is an array for + * forwards compt, although only the first item in the array is actually + * used). This doesn't need to be set, but it must be if you want to use + * the `Result->insertId()` method. + * @return Result + */ + public function insert ( $table, $set, $pkey='' ) + { + return $this->query( 'insert' ) + ->pkey( $pkey ) + ->table( $table ) + ->set( $set ) + ->exec(); + } + + + /** + * Update or Insert data. When doing an insert, the where condition is + * added as a set field + * @param string|string[] $table Table name(s) to act upon. + * @param array $set Field names and values to set - see {@see + * Query->set()}. + * @param array $where Where condition for what to update - see {@see + * Query->where()}. + * @param array $pkey Primary key column names (this is an array for + * forwards compt, although only the first item in the array is actually + * used). This doesn't need to be set, but it must be if you want to use + * the `Result->insertId()` method. Only used if an insert is performed. + * @return Result + */ + public function push ( $table, $set, $where=null, $pkey='' ) + { + $selectColumn = '*'; + + if ( $pkey ) { + $selectColumn = is_array($pkey) ? + $pkey[0] : + $pkey; + } + + // Update or insert + if ( $this->select( $table, $selectColumn, $where )->count() > 0 ) { + return $this->update( $table, $set, $where ); + } + + // Add the where condition to the values to set + foreach ($where as $key => $value) { + if ( ! isset( $set[ $key ] ) ) { + $set[ $key ] = $value; + } + } + + return $this->insert( $table, $set, $pkey ); + } + + + /** + * Create a query object to build a database query. + * @param string $type Query type - select, insert, update or delete. + * @param string|string[] $table Table name(s) to act upon. + * @return Query + */ + public function query ( $type, $table=null ) + { + return new $this->query_driver( $this, $type, $table ); + } + + + /** + * Quote a string for a quote. Note you should generally use a bind! + * @param string $val Value to quote + * @param string $type Value type + * @return string + */ + public function quote ( $val, $type=\PDO::PARAM_STR ) + { + return $this->_dbResource->quote( $val, $type ); + } + + + /** + * Create a `Query` object that will execute a custom SQL query. This is + * similar to the `sql` method, but in this case you must call the `exec()` + * method of the returned `Query` object manually. This can be useful if you + * wish to bind parameters using the query `bind` method to ensure data is + * properly escaped. + * + * @return Result + * + * @example + * Safely escape user input + * ```php + * $db + * ->raw() + * ->bind( ':date', $_POST['date'] ) + * ->exec( 'SELECT * FROM staff where date < :date' ); + * ``` + */ + public function raw () + { + return $this->query( 'raw' ); + } + + + /** + * Get the database resource connector. This is typically a PDO object. + * @return resource PDO connection resource (driver dependent) + */ + public function resource () + { + return $this->_dbResource; + } + + + /** + * Rollback the database state to the start of the transaction. + * + * Use with {@see Database->transaction()} and {@see Database->commit()}. + * @return self + */ + public function rollback () + { + call_user_func($this->query_driver.'::rollback', $this->_dbResource ); + return $this; + } + + + /** + * Select data from a table. + * + * This is a short cut method that creates an update query and then uses + * the query('select'), table, get, where and exec methods of the query. + * @param string|string[] $table Table name(s) to act upon. + * @param array $field Fields to get from the table(s) - see {@see + * Query->get()}. + * @param array $where Where condition for what to select - see {@see + * Query->where()}. + * @param array $orderBy Order condition - see {@see + * Query->order()}. + * @return Result + */ + public function select ( $table, $field="*", $where=null, $orderBy=null ) + { + return $this->query( 'select' ) + ->table( $table ) + ->get( $field ) + ->where( $where ) + ->order( $orderBy ) + ->exec(); + } + + + /** + * Select distinct data from a table. + * + * This is a short cut method that creates an update query and then uses the + * query('select'), distinct ,table, get, where and exec methods of the + * query. + * @param string|string[] $table Table name(s) to act upon. + * @param array $field Fields to get from the table(s) - see {@see + * Query->get()}. + * @param array $where Where condition for what to select - see {@see + * Query->where()}. + * @param array $orderBy Order condition - see {@see + * Query->order()}. + * @return Result + */ + public function selectDistinct ( $table, $field="*", $where=null, $orderBy=null ) + { + return $this->query( 'select' ) + ->table( $table ) + ->distinct( true ) + ->get( $field ) + ->where( $where ) + ->order( $orderBy ) + ->exec(); + } + + + /** + * Execute an raw SQL query - i.e. give the method your own SQL, rather + * than having the Database classes building it for you. + * + * This method will execute the given SQL immediately. Use the `raw()` + * method if you need the ability to add bound parameters. + * @param string $sql SQL string to execute (only if _type is 'raw'). + * @return Result + * + * @example + * Basic select + * ```php + * $result = $db->sql( 'SELECT * FROM myTable;' ); + * ``` + * + * @example + * Set the character set of the connection + * ```php + * $db->sql("SET character_set_client=utf8"); + * $db->sql("SET character_set_connection=utf8"); + * $db->sql("SET character_set_results=utf8"); + * ``` + */ + public function sql ( $sql ) + { + return $this->query( 'raw' ) + ->exec( $sql ); + } + + + /** + * Start a new database transaction. + * + * Use with {@see Database->commit()} and {@see Database->rollback()}. + * @return self + */ + public function transaction () + { + call_user_func($this->query_driver.'::transaction', $this->_dbResource ); + return $this; + } + + + /** + * Get the database type (e.g. Postgres, Mysql, etc) + */ + public function type () + { + return $this->_type; + } + + + /** + * Update data. + * + * This is a short cut method that creates an update query and then uses + * the query('update'), table, set, where and exec methods of the query. + * @param string|string[] $table Table name(s) to act upon. + * @param array $set Field names and values to set - see {@see + * Query->set()}. + * @param array $where Where condition for what to update - see {@see + * Query->where()}. + * @return Result + */ + public function update ( $table, $set=null, $where=null ) + { + return $this->query( 'update' ) + ->table( $table ) + ->set( $set ) + ->where( $where ) + ->exec(); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal functions + */ + + /** + * Get debug query information. + * + * @return array Information about the queries used. When this method is + * called it will reset the query cache. + * @internal + */ + public function debugInfo ( $query=null, $bindings=null ) + { + $callback = $this->_debugCallback; + + if ( $callback ) { + $callback( array( + "query" => $query, + "bindings" => $bindings + ) ); + } + + return $this; + } +}; + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Query.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Query.php.txt new file mode 100644 index 00000000..3461491d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Query.php.txt @@ -0,0 +1,161 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e + ) ); + exit(0); + } + + return $conn; + } + + public static function transaction ( $conn ) + { + // no op + } + + public static function commit ( $conn ) + { + // no op + } + + public static function rollback ( $conn ) + { + // no op + } + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare($sql) + { + $this->_sql = $sql; + } + + protected function _exec() + { + $resource = $this->database()->resource(); + $bindings = $this->_bindings; + + $paramSql = preg_replace('/(:[a-zA-Z\-_0-9]*)/', '?', $this->_sql); + //echo $paramSql."\n"; + $this->_stmt = db2_prepare($resource, $paramSql); + $stmt = $this->_stmt; + + //echo $this->_sql."\n"; + + preg_match_all('/(:[a-zA-Z\-_0-9]*)/', $this->_sql, $matches); + + //print_r( $matches ); + //print_r( $bindings); + + //$allanTest = 65; + //db2_bind_param( $stmt, 1, 'allanTest', DB2_PARAM_IN ); + + for ( $i=0, $ien=count($matches[0]) ; $i<$ien ; $i++ ) { + for ( $j=0, $jen=count($bindings) ; $j<$jen ; $j++ ) { + if ( $bindings[$j]['name'] === $matches[0][$i] ) { + $name = str_replace(':', '', $matches[0][$i]); + $$name = $bindings[$j]['value']; + //$_GLOBALS[ $name ] = $bindings[$j]['value']; + + //echo "bind $name as ".$$name."\n"; + + db2_bind_param( $stmt, $i+1, $name, DB2_PARAM_IN ); + } + } + } + + //print_r( get_defined_vars() ); + + $res = db2_execute($stmt); + + if (! $res) { + throw new \Exception('DB2 SQL error = '.db2_stmt_error($this->_stmt)); + + return false; + } + + $resource = $this->database()->resource(); + return new Db2Result($resource, $this->_stmt, $this->_editor_pkey_value); + } + + protected function _build_table() + { + $out = array(); + + for ($i = 0, $ien = count($this->_table); $i < $ien; $i ++) { + $t = $this->_table[$i]; + + if (strpos($t, ' as ')) { + $a = explode(' as ', $t); + $out[] = $a[0] . ' ' . $a[1]; + } else { + $out[] = $t; + } + } + + return ' ' . implode(', ', $out) . ' '; + } +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Result.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Result.php.txt new file mode 100644 index 00000000..9885d862 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/Db2Result.php.txt @@ -0,0 +1,82 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + private $_allRows = null; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + $all = $this->_fetchAll(); + return count($all); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return db2_fetch_assoc( $this->_stmt ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + $all = $this->_fetchAll(); + return $all; + } + + public function insertId () + { + return db2_last_insert_id( $this->_dbh ); + } + + private function _fetchAll () { + $a = array(); + while ( $row = db2_fetch_assoc( $this->_stmt ) ) { + $a[] = $row; + } + return $a; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdQuery.php.txt new file mode 100644 index 00000000..fa71840e --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdQuery.php.txt @@ -0,0 +1,137 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e->getMessage() + ) ); + exit(0); + } + + return $pdo; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + $this->database()->debugInfo( $sql, $this->_bindings ); + + $resource = $this->database()->resource(); + $pkey = $this->pkey(); + + // If insert, add the pkey column + if ( $this->_type === 'insert' && $pkey ) { + $this->_pkeyInsertedTo = (is_array($pkey) ? $pkey[0] : $pkey); + $sql .= ' RETURNING "'.$this->_pkeyInsertedTo.'"'; + } + + $this->_stmt = $resource->prepare( $sql ); + + // bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + $this->_stmt->bindValue( + $binding['name'], + $binding['value'], + $binding['type'] ? $binding['type'] : \PDO::PARAM_STR + ); + } + } + + + protected function _exec() + { + try { + $this->_stmt->execute(); + } + catch (\PDOException $e) { + throw new \Exception( "An SQL error occurred: ".$e->getMessage() ); + error_log( "An SQL error occurred: ".$e->getMessage() ); + return false; + } + + $resource = $this->database()->resource(); + return new FirebirdResult( $resource, $this->_stmt, $this->_pkeyInsertedTo ); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdResult.php.txt new file mode 100644 index 00000000..da372542 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/FirebirdResult.php.txt @@ -0,0 +1,77 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + $this->_pkey = $pkey; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + private $_pkey; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetch( $fetchType ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetchAll( $fetchType ); + } + + + public function insertId () + { + // Only useful after an insert of course... + $rows = $this->_stmt->fetchAll(); + return $rows[0][$this->_pkey]; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlQuery.php.txt new file mode 100644 index 00000000..fb21b381 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlQuery.php.txt @@ -0,0 +1,121 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e->getMessage() + ) ); + exit(0); + } + + return $pdo; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + $this->database()->debugInfo( $sql, $this->_bindings ); + + $resource = $this->database()->resource(); + $this->_stmt = $resource->prepare( $sql ); + + // bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + $this->_stmt->bindValue( + $binding['name'], + $binding['value'], + $binding['type'] ? $binding['type'] : \PDO::PARAM_STR + ); + } + } + + + protected function _exec() + { + // $start = hrtime(true); + + try { + $this->_stmt->execute(); + } + catch (\PDOException $e) { + throw new \Exception( "An SQL error occurred: ".$e->getMessage() ); + error_log( "An SQL error occurred: ".$e->getMessage() ); + return false; + } + + // $this->database()->debugInfo( 'Execution complete - duration: '. (hrtime(true) - $start) . ' Time: '. microtime(true), [] ); + + $resource = $this->database()->resource(); + return new MysqlResult( $resource, $this->_stmt ); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlResult.php.txt new file mode 100644 index 00000000..b044f4ea --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/MysqlResult.php.txt @@ -0,0 +1,73 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetch( $fetchType ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetchAll( $fetchType ); + } + + + public function insertId () + { + return $this->_dbh->lastInsertId(); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleQuery.php.txt new file mode 100644 index 00000000..9d1b448d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleQuery.php.txt @@ -0,0 +1,203 @@ + "oci methods are not available in this PHP install to connect to Oracle" + ) ); + exit(0); + } + + $conn = @oci_connect($user, $pass, $host.$port.'/'.$db, 'utf8'); + + if ( ! $conn ) { + // If we can't establish a DB connection then we return a DataTables + // error. + $e = oci_error(); + + echo json_encode( array( + "error" => "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e['message'] + ) ); + exit(0); + } + + // Use ISO date and time styles + $stmt = oci_parse($conn, "ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'" ); + $res = oci_execute( $stmt ); + + $stmt = oci_parse($conn, "ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" ); + $res = oci_execute( $stmt ); + + return $conn; + } + + + public static function transaction ( $conn ) + { + // no op + } + + public static function commit ( $conn ) + { + oci_commit( $conn ); + } + + public static function rollback ( $conn ) + { + oci_rollback( $conn ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + + $resource = $this->database()->resource(); + $pkey = $this->pkey(); + + // If insert, add the pkey column + if ( $this->_type === 'insert' && $pkey ) { + $sql .= ' RETURNING '.$this->_protect_identifiers(is_array($pkey) ? $pkey[0] : $pkey).' INTO :editor_pkey_value'; + } + else if ( $this->_type === 'select' && $this->_oracle_offset !== null ) { + $sql = ' + select * from (select rownum rnum, a.* + from ('.$sql.') a where rownum <= '.($this->_oracle_offset+$this->_oracle_limit).') + where rnum > '.$this->_oracle_offset; + } + + $this->database()->debugInfo( $sql, $this->_bindings ); + + $this->_stmt = oci_parse( $resource, $sql ); + + // If insert, add a binding for the returned id + if ( $this->_type === 'insert' && $pkey ) { + oci_bind_by_name( + $this->_stmt, + ':editor_pkey_value', + $this->_editor_pkey_value, + 36 + ); + } + + // Bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + oci_bind_by_name( + $this->_stmt, + $binding['name'], + $binding['value'] + ); + } + } + + + protected function _exec() + { + $res = @oci_execute( $this->_stmt, OCI_NO_AUTO_COMMIT ); + + if ( ! $res ) { + $e = oci_error( $this->_stmt ); + throw new \Exception( "Oracle SQL error: ".$e['message'] ); + + return false; + } + + $resource = $this->database()->resource(); + return new OracleResult( $resource, $this->_stmt, $this->_editor_pkey_value ); + } + + + protected function _build_table() + { + $out = array(); + + for ( $i=0, $ien=count($this->_table) ; $i<$ien ; $i++ ) { + $t = $this->_table[$i]; + + if ( strpos($t, ' as ') ) { + $a = explode( ' as ', $t ); + $out[] = $this->_protect_identifiers($a[0]).' '.$this->_protect_identifiers($a[1]); + } + else { + $out[] = $t; + } + } + + return ' '.implode(', ', $out).' '; + } + + + private $_oracle_offset = null; + private $_oracle_limit = null; + + protected function _build_limit() + { + $this->_oracle_offset = $this->_offset; + $this->_oracle_limit = $this->_limit; + + return ' '; + } +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleResult.php.txt new file mode 100644 index 00000000..b8eee5de --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/OracleResult.php.txt @@ -0,0 +1,82 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + $this->_pkey_val = $pkey_val; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; // Result from oci_parse + private $_dbh; // Result from oci_connect + private $_rows = null; + private $_pkey_val; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC /* irrelevant for oci8 */ ) + { + return oci_fetch_assoc( $this->_stmt ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC /* irrelevant for oci8 */ ) + { + if ( ! $this->_rows ) { + $out = array(); + + oci_fetch_all( $this->_stmt, $out, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC ); + + $this->_rows = $out; + } + + return $this->_rows; + } + + + public function insertId () + { + return $this->_pkey_val; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresQuery.php.txt new file mode 100644 index 00000000..67c9247a --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresQuery.php.txt @@ -0,0 +1,146 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e->getMessage() + ) ); + exit(0); + } + + return $pdo; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + $this->database()->debugInfo( $sql, $this->_bindings ); + + $resource = $this->database()->resource(); + + // Add a RETURNING command to postgres insert queries so we can get the + // pkey value from the query reliably + if ( $this->_type === 'insert' ) { + $table = explode( ' as ', $this->_table[0] ); + + // Get the pkey field name + $pkRes = $resource->prepare( + "SELECT + pg_attribute.attname, + format_type(pg_attribute.atttypid, pg_attribute.atttypmod) + FROM pg_index, pg_class, pg_attribute + WHERE + pg_class.oid = '{$table[0]}'::regclass AND + indrelid = pg_class.oid AND + pg_attribute.attrelid = pg_class.oid AND + pg_attribute.attnum = any(pg_index.indkey) + AND indisprimary" + ); + $pkRes->execute(); + $row = $pkRes->fetch(); + + if ( $row && isset($row['attname'] ) ) { + $sql .= ' RETURNING '.$row['attname'].' as dt_pkey'; + } + } + + $this->_stmt = $resource->prepare( $sql ); + + // bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + $this->_stmt->bindValue( + $binding['name'], + $binding['value'], + $binding['type'] ? $binding['type'] : \PDO::PARAM_STR + ); + } + } + + + protected function _exec() + { + try { + $this->_stmt->execute(); + } + catch (\PDOException $e) { + throw new \Exception( "An SQL error occurred: ".$e->getMessage() ); + error_log( "An SQL error occurred: ".$e->getMessage() ); + return false; + } + + $resource = $this->database()->resource(); + return new PostgresResult( $resource, $this->_stmt ); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresResult.php.txt new file mode 100644 index 00000000..eb204efe --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/PostgresResult.php.txt @@ -0,0 +1,75 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetch( $fetchType ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetchAll( $fetchType ); + } + + + public function insertId () + { + // Only useful after an insert of course... + $rows = $this->_stmt->fetchAll(); + return $rows[0]['dt_pkey']; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteQuery.php.txt new file mode 100644 index 00000000..9c1ef0bc --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteQuery.php.txt @@ -0,0 +1,112 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e->getMessage() + ) ); + exit(0); + } + + return $pdo; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + $this->database()->debugInfo( $sql, $this->_bindings ); + + $resource = $this->database()->resource(); + $this->_stmt = $resource->prepare( $sql ); + + // bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + $this->_stmt->bindValue( + $binding['name'], + $binding['value'], + $binding['type'] ? $binding['type'] : \PDO::PARAM_STR + ); + } + } + + + protected function _exec() + { + try { + $this->_stmt->execute(); + } + catch (PDOException $e) { + throw new \Exception( "An SQL error occurred: ".$e->getMessage() ); + error_log( "An SQL error occurred: ".$e->getMessage() ); + return false; + } + + $resource = $this->database()->resource(); + return new SqliteResult( $resource, $this->_stmt ); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteResult.php.txt new file mode 100644 index 00000000..f71964e2 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqliteResult.php.txt @@ -0,0 +1,73 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetch( $fetchType ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetchAll( $fetchType ); + } + + + public function insertId () + { + return $this->_dbh->lastInsertId(); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverQuery.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverQuery.php.txt new file mode 100644 index 00000000..87e62ead --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverQuery.php.txt @@ -0,0 +1,153 @@ + "An error occurred while connecting to the database ". + "'{$db}'. The error reported by the server was: ".$e->getMessage() + ) ); + exit(0); + } + + return $pdo; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + protected function _prepare( $sql ) + { + $this->database()->debugInfo( $sql, $this->_bindings ); + + $resource = $this->database()->resource(); + $this->_stmt = $resource->prepare( $sql ); + + // bind values + for ( $i=0 ; $i_bindings) ; $i++ ) { + $binding = $this->_bindings[$i]; + + $this->_stmt->bindValue( + $binding['name'], + $binding['value'], + $binding['type'] ? $binding['type'] : \PDO::PARAM_STR + ); + } + } + + + protected function _exec() + { + try { + $this->_stmt->execute(); + } + catch (PDOException $e) { + throw new \Exception( "An SQL error occurred: ".$e->getMessage() ); + error_log( "An SQL error occurred: ".$e->getMessage() ); + return false; + } + + $resource = $this->database()->resource(); + return new SqlserverResult( $resource, $this->_stmt ); + } + + + // SQL Server 2012+ only + protected function _build_limit() + { + $out = ''; + + if ( $this->_offset ) { + $out .= ' OFFSET '.$this->_offset.' ROWS'; + } + + if ( $this->_limit ) { + if ( ! $this->_offset ) { + $out .= ' OFFSET 0 ROWS'; + } + $out .= ' FETCH NEXT '.$this->_limit. ' ROWS ONLY'; + } + + return $out; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverResult.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverResult.php.txt new file mode 100644 index 00000000..14773c56 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Driver/SqlserverResult.php.txt @@ -0,0 +1,71 @@ +_dbh = $dbh; + $this->_stmt = $stmt; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + private $_stmt; + private $_dbh; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + public function count () + { + return count($this->fetchAll()); + } + + + public function fetch ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetch( $fetchType ); + } + + + public function fetchAll ( $fetchType=\PDO::FETCH_ASSOC ) + { + return $this->_stmt->fetchAll( $fetchType ); + } + + + public function insertId () + { + return $this->_dbh->lastInsertId(); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Query.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Query.php.txt new file mode 100644 index 00000000..cd9a60e2 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Query.php.txt @@ -0,0 +1,1295 @@ +query()} method (and it's 'select', etc short-cuts). + * Typically it would not be initialised directly. + * + * Note that this is a stub class that a driver will extend and complete as + * required for individual database types. Individual drivers could add + * additional methods, but this is discouraged to ensure that the API is the + * same for all database types. + */ +abstract class Query { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + + /** + * Query instance constructor. + * + * Note that typically instances of this class will be automatically created + * through the {@see \DataTables\Database->query()} method. + * @param Database $db Database instance + * @param string $type Query type - 'select', 'insert', 'update' or 'delete' + * @param string|string[] $table Tables to operate on - see {@see Query->table()}. + */ + public function __construct( $dbHost, $type, $table=null ) + { + $this->_dbHost = $dbHost; + $this->_type = $type; + $this->table( $table ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + /** + * @var Database Database connection instance + * @internal + */ + protected $_dbHost; + + /** + * @var string Driver to use + * @internal + */ + protected $_type = ""; + + /** + * @var array + * @internal + */ + protected $_table = array(); + + /** + * @var array + * @internal + */ + protected $_field = array(); + + /** + * @var array + * @internal + */ + protected $_bindings = array(); + + /** + * @var array + * @internal + */ + protected $_where = array(); + + /** + * @var array + * @internal + */ + protected $_join = array(); + + /** + * @var array + * @internal + */ + protected $_order = array(); + + /** + * @var array + * @internal + */ + protected $_noBind = array(); + + /** + * @var int + * @internal + */ + protected $_limit = null; + + /** + * @var int + * @internal + */ + protected $_group_by = null; + + /** + * @var int + * @internal + */ + protected $_offset = null; + + /** + * @var string + * @internal + */ + protected $_distinct = false; + + /** + * @var string + * @internal + */ + protected $_identifier_limiter = array( '`', '`' ); + + /** + * @var string + * @internal + */ + protected $_field_quote = '\''; + + /** + * @var array + * @internal + */ + protected $_pkey = null; + + protected $_supportsAsAlias = true; + + protected $_whereInCnt = 1; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Static methods + */ + + /** + * Commit a transaction. + * @param \PDO $dbh The Database handle (typically a PDO object, but not always). + */ + public static function commit ( $dbh ) + { + $dbh->commit(); + } + + /** + * Database connection - override by the database driver. + * @param string|array $user User name or all parameters in an array + * @param string $pass Password + * @param string $host Host name + * @param string $db Database name + * @return Query + */ + public static function connect ( $user, $pass='', $host='', $port='', $db='', $dsn='' ) { + // noop - PHP <7 can't have an abstract static without causing + // an error in strict mode. This should technically be an + // abstract method however. + } + + + /** + * Start a database transaction + * @param \PDO $dbh The Database handle (typically a PDO object, but not always). + */ + public static function transaction ( $dbh ) + { + $dbh->beginTransaction(); + } + + + /** + * Rollback the database state to the start of the transaction. + * @param \PDO $dbh The Database handle (typically a PDO object, but not always). + */ + public static function rollback ( $dbh ) + { + $dbh->rollBack(); + } + + + /** + * Common helper for the drivers to handle a PDO DSN postfix + * @param string $dsn DSN postfix to use + * @return Query + * @internal + */ + static function dsnPostfix ( $dsn ) + { + if ( ! $dsn ) { + return ''; + } + + // Add a DSN field separator if not given + if ( strpos( $dsn, ';' ) !== 0 ) { + return ';'.$dsn; + } + + return $dsn; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Safely bind an input value to a parameter. This is evaluated when the + * query is executed. This allows user input to be safely executed without + * risk of an SQL injection attack. + * + * @param string $name Parameter name. This should include a leading colon + * @param string $value Value to bind + * @param mixed $type Data type. See the PHP PDO documentation: + * http://php.net/manual/en/pdo.constants.php + * @return Query + */ + public function bind ( $name, $value, $type=null ) + { + $this->_bindings[] = array( + "name" => $this->_safe_bind( $name ), + "value" => $value, + "type" => $type + ); + + return $this; + } + + + /** + * Get the Database host for this query instance + * @return DataTable Database class instance + */ + public function database () + { + return $this->_dbHost; + } + + + /** + * Set a distinct flag for a `select` query. Note that this has no effect on + * any of the other query types. + * @param boolean $dis Optional + * @return Query + */ + public function distinct ( $dis ) + { + $this->_distinct = $dis; + return $this; + } + + + /** + * Execute the query. + * @param string $sql SQL string to execute (only if _type is 'raw'). + * @return Result + */ + public function exec ( $sql=null ) + { + $type = strtolower( $this->_type ); + + if ( $type === 'select' ) { + return $this->_select(); + } + else if ( $type === 'insert' ) { + return $this->_insert(); + } + else if ( $type === 'update' ) { + return $this->_update(); + } + else if ( $type === 'delete' ) { + return $this->_delete(); + } + else if ( $type === 'count' ) { + return $this->_count(); + } + else if ( $type === 'raw' ) { + return $this->_raw( $sql ); + } + + throw new \Exception("Unknown database command or not supported: ".$type, 1); + } + + + /** + * Get fields. + * @param string|string[] $get,... Fields to get - can be specified as + * individual fields or an array of fields. + * @return self + */ + public function get ( $get ) + { + $args = func_get_args(); + + if ( $get === null ) { + return $this; + } + + for ( $i=0 ; $iget( $args[$i][$j] ); + } + } + else if ( strpos($args[$i], ',') !== false && strpos($args[$i], '(') === false) { + // Comma delimited set of fields - legacy. Recommended that fields be split into + // an array on input + $a = explode(',', $args[$i]); + + for ( $j=0 ; $jget( $a[$j] ); + } + } + else { + $this->_field[] = trim( $args[$i] ); + } + } + + return $this; + } + + + /** + * Perform a JOIN operation + * @param string $table Table name to do the JOIN on + * @param string $condition JOIN condition + * @param string $type JOIN type + * @return self + */ + public function join ( $table, $condition, $type='', $bind=true ) + { + // Tidy and check we know what the join type is + if ($type !== '') { + $type = strtoupper(trim($type)); + + if ( ! in_array($type, array('LEFT', 'RIGHT', 'INNER', 'OUTER', 'LEFT OUTER', 'RIGHT OUTER'))) { + $type = ''; + } + } + + // Protect the identifiers + if ($bind && preg_match('/([\w\.]+)([\W\s]+)(.+)/', $condition, $match)) + { + $match[1] = $this->_protect_identifiers( $match[1] ); + $match[3] = $this->_protect_identifiers( $match[3] ); + + $condition = $match[1].$match[2].$match[3]; + } + + $this->_join[] = $type .' JOIN '. $this->_protect_identifiers($table) .' ON '. $condition .' '; + + return $this; + } + + /** + * Add a left join, with common logic for handling binding or not + */ + public function left_join( $joins ) + { + // Allow a single associative array + if ($this->_is_assoc($joins)) { + $joins = array( + $joins + ); + } + + for ( $i=0, $ien=count($joins) ; $i<$ien ; $i++ ) { + $join = $joins[$i]; + + if ($join['field2'] === null && $join['operator'] === null) { + $this->join( + $join['table'], + $join['field1'], + 'LEFT', + false + ); + } + else { + $this->join( + $join['table'], + $join['field1'].' '.$join['operator'].' '.$join['field2'], + 'LEFT' + ); + } + } + + return $this; + } + + + /** + * Limit the result set to a certain size. + * @param int $lim The number of records to limit the result to. + * @return self + */ + public function limit ( $lim ) + { + $this->_limit = $lim; + + return $this; + } + + /** + * Group the results by the values in a field + * @param string The field of which the values are to be grouped + * @return self + */ + public function group_by ( $group_by ) + { + $this->_group_by = $group_by; + + return $this; + } + + + /** + * Get / set the primary key column name(s) so they can be easily returned + * after an insert. + * @param string[] $pkey Primary keys + * @return Query|string[] + */ + public function pkey ( $pkey=null ) + { + if ( $pkey === null ) { + return $this->_pkey; + } + + $this->_pkey = $pkey; + + return $this; + } + + + /** + * Set table(s) to perform the query on. + * @param string|string[] $table,... Table(s) to use - can be specified as + * individual names, an array of names, a string of comma separated + * names or any combination of those. + * @return self + */ + public function table ( $table ) + { + if ( $table === null ) { + return $this; + } + + if ( is_array($table) ) { + // Array so loop internally + for ( $i=0 ; $itable( $table[$i] ); + } + } + else { + // String based, explode for multiple tables + $tables = explode(",", $table); + + for ( $i=0 ; $i_table[] = $this->_protect_identifiers( trim($tables[$i]) ); + } + } + + return $this; + } + + + /** + * Offset the return set by a given number of records (useful for paging). + * @param int $off The number of records to offset the result by. + * @return self + */ + public function offset ( $off ) + { + $this->_offset = $off; + + return $this; + } + + + /** + * Order by + * @param string|string[] $order Columns and direction to order by - can + * be specified as individual names, an array of names, a string of comma + * separated names or any combination of those. + * @return self + */ + public function order ( $order ) + { + if ( $order === null ) { + return $this; + } + + if ( !is_array($order) ) { + $order = preg_split('/\,(?![^\(]*\))/',$order); + } + + for ( $i=0 ; $i_order[] = $this->_protect_identifiers( $identifier ).' '.$direction; + } + + return $this; + } + + + /** + * Set fields to a given value. + * + * Can be used in two different ways, as set( field, value ) or as an array of + * fields to set: set( array( 'fieldName' => 'value', ...) ); + * @param string|string[] $set Can be given as a single string, when then $val + * must be set, or as an array of key/value pairs to be set. + * @param string $val When $set is given as a simple string, $set is the field + * name and this is the field's value. + * @param boolean $bind Should the value be bound or not + * @return self + */ + public function set ( $set, $val=null, $bind=true ) + { + if ( $set === null ) { + return $this; + } + + if ( !is_array($set) ) { + $set = array( $set => $val ); + } + + foreach ($set as $key => $value) { + $this->_field[] = $key; + + if ( $bind ) { + $this->bind( ':'.$key, $value ); + } + else { + $this->_noBind[$key] = $value; + } + } + + return $this; + } + + + /** + * Where query - multiple conditions are bound as ANDs. + * + * Can be used in two different ways, as where( field, value ) or as an array of + * conditions to use: where( array('fieldName', ...), array('value', ...) ); + * @param string|string[]|callable $key Single field name, or an array of field names. + * If given as a function (i.e. a closure), the function is called, passing the + * query itself in as the only parameter, so the function can add extra conditions + * with parentheses around the additional parameters. + * @param string|string[] $value Single field value, or an array of + * values. Can be null to search for `IS NULL` or `IS NOT NULL` (depending + * on the value of `$op` which should be `=` or `!=`. + * @param string $op Condition operator: <, >, = etc + * @param boolean $bind Escape the value (true, default) or not (false). + * @return self + * + * @example + * The following will produce + * `'WHERE name='allan' AND ( location='Scotland' OR location='Canada' )`: + * + * ```php + * $query + * ->where( 'name', 'allan' ) + * ->where( function ($q) { + * $q->where( 'location', 'Scotland' ); + * $q->or_where( 'location', 'Canada' ); + * } ); + * ``` + */ + public function where ( $key, $value=null, $op="=", $bind=true ) + { + if ( $key === null ) { + return $this; + } + else if ( is_callable($key) && is_object($key) ) { // is a closure + $this->_where_group( true, 'AND' ); + $key( $this ); + $this->_where_group( false, 'OR' ); + } + else if ( !is_array($key) && is_array($value) ) { + for ( $i=0 ; $iwhere( $key, $value[$i], $op, $bind ); + } + } + else { + $this->_where( $key, $value, 'AND ', $op, $bind ); + } + + return $this; + } + + + /** + * Add addition where conditions to the query with an AND operator. An alias + * of `where` for naming consistency. + * + * Can be used in two different ways, as where( field, value ) or as an array of + * conditions to use: where( array('fieldName', ...), array('value', ...) ); + * @param string|string[]|callable $key Single field name, or an array of field names. + * If given as a function (i.e. a closure), the function is called, passing the + * query itself in as the only parameter, so the function can add extra conditions + * with parentheses around the additional parameters. + * @param string|string[] $value Single field value, or an array of + * values. Can be null to search for `IS NULL` or `IS NOT NULL` (depending + * on the value of `$op` which should be `=` or `!=`. + * @param string $op Condition operator: <, >, = etc + * @param boolean $bind Escape the value (true, default) or not (false). + * @return self + */ + public function and_where ( $key, $value=null, $op="=", $bind=true ) + { + return $this->where( $key, $value, $op, $bind ); + } + + + /** + * Add addition where conditions to the query with an OR operator. + * + * Can be used in two different ways, as where( field, value ) or as an array of + * conditions to use: where( array('fieldName', ...), array('value', ...) ); + * @param string|string[]|callable $key Single field name, or an array of field names. + * If given as a function (i.e. a closure), the function is called, passing the + * query itself in as the only parameter, so the function can add extra conditions + * with parentheses around the additional parameters. + * @param string|string[] $value Single field value, or an array of + * values. Can be null to search for `IS NULL` or `IS NOT NULL` (depending + * on the value of `$op` which should be `=` or `!=`. + * @param string $op Condition operator: <, >, = etc + * @param boolean $bind Escape the value (true, default) or not (false). + * @return self + */ + public function or_where ( $key, $value=null, $op="=", $bind=true ) + { + if ( $key === null ) { + return $this; + } + else if ( is_callable($key) && is_object($key) ) { + $this->_where_group( true, 'OR' ); + $key( $this ); + $this->_where_group( false, 'OR' ); + } + else { + if ( !is_array($key) && is_array($value) ) { + for ( $i=0 ; $ior_where( $key, $value[$i], $op, $bind ); + } + return $this; + } + + $this->_where( $key, $value, 'OR ', $op, $bind ); + } + + return $this; + } + + + /** + * Provide grouping for WHERE conditions. Use it with a callback function to + * automatically group any conditions applied inside the method. + * + * For legacy reasons this method also provides the ability to explicitly + * define if a grouping bracket should be opened or closed in the query. + * This method is not prefer. + * + * @param boolean|callable $inOut If callable it will create the group + * automatically and pass the query into the called function. For + * legacy operations use `true` to open brackets, `false` to close. + * @param string $op Conditional operator to use to join to the + * preceding condition. Default `AND`. + * @return self + * + * @example + * ```php + * $query->where_group( function ($q) { + * $q->where( 'location', 'Edinburgh' ); + * $q->where( 'position', 'Manager' ); + * } ); + * ``` + */ + public function where_group ( $inOut, $op='AND' ) + { + if ( is_callable($inOut) && is_object($inOut) ) { + $this->_where_group( true, $op ); + $inOut( $this ); + $this->_where_group( false, $op ); + } + else { + $this->_where_group( $inOut, $op ); + } + + return $this; + } + + + /** + * Provide a method that can be used to perform a `WHERE ... IN (...)` query + * with bound values and parameters. + * + * Note this is only suitable for local values, not a sub-query. For that use + * `->where()` with an unbound value. + * + * @param string Field name + * @param array Values + * @param string Conditional operator to use to join to the + * preceding condition. Default `AND`. + * @return self + */ + public function where_in ( $field, $arr, $operator="AND" ) + { + if ( count($arr) === 0 ) { + return $this; + } + + $binders = array(); + $prefix = ':wherein'; + + // Need to build an array of the binders (having bound the values) so + // the query can be constructed + for ( $i=0, $ien=count($arr) ; $i<$ien ; $i++ ) { + $binder = $prefix.$this->_whereInCnt; + + $this->bind( $binder, $arr[$i] ); + + $binders[] = $binder; + $this->_whereInCnt++; + } + + $this->_where[] = array( + 'operator' => $operator, + 'group' => null, + 'field' => $this->_protect_identifiers($field), + 'query' => $this->_protect_identifiers($field) .' IN ('.implode(', ', $binders).')' + ); + + return $this; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Protected methods + */ + + /** + * Create a comma separated field list + * @param bool $addAlias Flag to add an alias + * @return string + * @internal + */ + protected function _build_field( $addAlias=false ) + { + $a = array(); + $asAlias = $this->_supportsAsAlias ? + ' as ' : + ' '; + + for ( $i=0 ; $i_field) ; $i++ ) { + $field = $this->_field[$i]; + + // Keep the name when referring to a table + if ( $addAlias && $field !== '*' && strpos($field, '(') === false ) { + $split = preg_split( '/ as (?![^\(]*\))/i', $field ); + + if ( count($split) > 1 ) { + $a[] = $this->_protect_identifiers( $split[0] ).$asAlias. + $this->_field_quote. $split[1] .$this->_field_quote; + } + else { + $a[] = $this->_protect_identifiers( $field ).$asAlias. + $this->_field_quote. $this->_escape_field($field) .$this->_field_quote; + } + } + else if ( $addAlias && strpos($field, '(') !== false && ! strpos($field, ' as ') ) { + $a[] = $this->_protect_identifiers( $field ).$asAlias. + $this->_field_quote. $this->_escape_field($field) .$this->_field_quote; + } + else { + $a[] = $this->_protect_identifiers( $field ); + } + } + + return ' '.implode(', ', $a).' '; + } + + /** + * Create a JOIN statement list + * @return string + * @internal + */ + protected function _build_join() + { + return implode(' ', $this->_join); + } + + /** + * Create the LIMIT / OFFSET string + * + * MySQL and Postgres style - anything else can have the driver override + * @return string + * @internal + */ + protected function _build_limit() + { + $out = ''; + $limit = intval($this->_limit); + $offset = intval($this->_offset); + + if ( $limit ) { + $out .= ' LIMIT '.$limit; + } + + if ( $offset ) { + $out .= ' OFFSET '.$offset; + } + + return $out; + } + + /** + * Create the GROUP BY string + * + * @return string + * @internal + */ + protected function _build_group_by() + { + $out = ''; + + if ( $this->_group_by) { + $out .= ' GROUP BY '.$this->_protect_identifiers( $this->_group_by ); + } + + return $out; + } + + /** + * Create the ORDER BY string + * @return string + * @internal + */ + protected function _build_order() + { + if ( count( $this->_order ) > 0 ) { + return ' ORDER BY '.implode(', ', $this->_order).' '; + } + return ''; + } + + /** + * Create a set list + * @return string + * @internal + */ + protected function _build_set() + { + $a = array(); + + for ( $i=0 ; $i_field) ; $i++ ) { + $field = $this->_field[$i]; + + if ( isset( $this->_noBind[ $field ] ) ) { + $a[] = $this->_protect_identifiers( $field ) .' = '. $this->_noBind[ $field ]; + } + else { + $a[] = $this->_protect_identifiers( $field ) .' = :'. $this->_safe_bind( $field ); + } + } + + return ' '.implode(', ', $a).' '; + } + + /** + * Create the TABLE list + * @return string + * @internal + */ + protected function _build_table() + { + if ( $this->_type === 'insert' ) { + // insert, update and delete statements don't need or want aliases in the table name + $a = array(); + + for ( $i=0, $ien=count($this->_table) ; $i<$ien ; $i++ ) { + $table = str_ireplace( ' as ', ' ', $this->_table[$i] ); + $tableParts = explode( ' ', $table ); + + $a[] = $tableParts[0]; + } + + return ' '.implode(', ', $a).' '; + } + + return ' '.implode(', ', $this->_table).' '; + } + + /** + * Create a bind field value list + * @return string + * @internal + */ + protected function _build_value() + { + $a = array(); + + for ( $i=0, $ien=count($this->_field) ; $i<$ien ; $i++ ) { + $a[] = ' :'.$this->_safe_bind( $this->_field[$i] ); + } + + return ' '.implode(', ', $a).' '; + } + + /** + * Create the WHERE statement + * @return string + * @internal + */ + protected function _build_where() + { + if ( count($this->_where) === 0 ) { + return ""; + } + + $condition = "WHERE "; + + for ( $i=0 ; $i_where) ; $i++ ) { + if ( $i === 0 ) { + // Nothing (simplifies the logic!) + } + else if ( $this->_where[$i]['group'] === ')' ) { + // If a group has been used but no conditions were added inside + // of, we don't want to end up with `()` in the SQL as that is + // invalid, so add a 1. + if ( $this->_where[$i-1]['group'] === '(' ) { + $condition .= '1=1'; + } + // else nothing + } + else if ( $this->_where[$i-1]['group'] === '(' ) { + // Nothing + } + else { + $condition .= $this->_where[$i]['operator'].' '; + } + + if ( $this->_where[$i]['group'] !== null ) { + $condition .= $this->_where[$i]['group']; + } + else { + $condition .= $this->_where[$i]['query'] .' '; + } + } + + return $condition; + } + + /** + * Create a DELETE statement + * @return Result + * @internal + */ + protected function _delete() + { + $this->_prepare( + 'DELETE FROM ' + .$this->_build_table() + .$this->_build_where() + ); + + return $this->_exec(); + } + + /** + * Escape quotes in a field identifier + * @internal + */ + protected function _escape_field( $field ) + { + $quote = $this->_field_quote; + + return str_replace($quote, "\\".$quote, $field); + } + + /** + * Execute the query. Provided by the driver + * @return Result + * @internal + */ + abstract protected function _exec(); + + /** + * Create an INSERT statement + * @return Result + * @internal + */ + protected function _insert() + { + $this->_prepare( + 'INSERT INTO ' + .$this->_build_table().' (' + .$this->_build_field() + .') ' + .'VALUES (' + .$this->_build_value() + .')' + ); + + return $this->_exec(); + } + + /** + * Prepare the SQL query by populating the bound variables. + * Provided by the driver + * @return void + * @internal + */ + abstract protected function _prepare( $sql ); + + /** + * Protect field names + * @param string $identifier String to be protected + * @return string + * @internal + */ + protected function _protect_identifiers( $identifier ) + { + $idl = $this->_identifier_limiter; + + // No escaping character + if ( ! $idl ) { + return $identifier; + } + + $left = $idl[0]; + $right = $idl[1]; + + // Dealing with a function or other expression? Just return immediately + if (strpos($identifier, '(') !== FALSE || strpos($identifier, '*') !== FALSE) + { + return $identifier; + } + + // Going to be operating on the spaces in strings, to simplify the white-space + $identifier = preg_replace('/[\t ]+/', ' ', $identifier); + $identifier = str_replace(' as ', ' ', $identifier); + + // If more that a single space, then return + if (substr_count($identifier, ' ') > 1) { + return $identifier; + } + + // Find if our identifier has an alias, so we don't escape that + if ( strpos($identifier, ' ') !== false ) { + $alias = strstr($identifier, ' '); + $identifier = substr($identifier, 0, - strlen($alias)); + } + else { + $alias = ''; + } + + $a = explode('.', $identifier); + return $left . implode($right.'.'.$left, $a) . $right . $alias; + } + + /** + * Passed in SQL statement + * @return Result + * @internal + */ + protected function _raw( $sql ) + { + $this->_prepare( $sql ); + + return $this->_exec(); + } + + /** + * The characters that can be used for the PDO bindValue name are quite + * limited (`[a-zA-Z0-9_]+`). We need to abstract this out to allow slightly + * more complex expressions including dots for easy aliasing + * @param string $name Field name + * @return string + * @internal + */ + protected function _safe_bind ( $name ) + { + $name = str_replace('.', '_1_', $name); + $name = str_replace('-', '_2_', $name); + $name = str_replace('/', '_3_', $name); + $name = str_replace('\\', '_4_', $name); + $name = str_replace(' ', '_5_', $name); + + return $name; + } + + /** + * Create a SELECT statement + * @return Result + * @internal + */ + protected function _select() + { + $this->_prepare( + 'SELECT '.($this->_distinct ? 'DISTINCT ' : '') + .$this->_build_field( true ) + .'FROM '.$this->_build_table() + .$this->_build_join() + .$this->_build_where() + .$this->_build_group_by() + .$this->_build_order() + .$this->_build_limit() + ); + + return $this->_exec(); + } + + /** + * Create a SELECT COUNT statement + * @return Result + * @internal + */ + protected function _count() + { + $select = $this->_supportsAsAlias ? + 'SELECT COUNT('.$this->_build_field().') as '.$this->_protect_identifiers('cnt') : + 'SELECT COUNT('.$this->_build_field().') '.$this->_protect_identifiers('cnt'); + + $this->_prepare( + $select + .' FROM '.$this->_build_table() + .$this->_build_join() + .$this->_build_where() + .$this->_build_limit() + ); + + return $this->_exec(); + } + + /** + * Create an UPDATE statement + * @return Result + * @internal + */ + protected function _update() + { + $this->_prepare( + 'UPDATE ' + .$this->_build_table() + .'SET '.$this->_build_set() + .$this->_build_where() + ); + + return $this->_exec(); + } + + /** + * Add an individual where condition to the query. + * @internal + * @param $where + * @param null $value + * @param string $type + * @param string $op + * @param bool $bind + */ + protected function _where ( $where, $value=null, $type='AND ', $op="=", $bind=true ) + { + if ( $where === null ) { + return; + } + else if ( !is_array($where) ) { + $where = array( $where => $value ); + } + + foreach ($where as $key => $value) { + $i = count( $this->_where ); + + if ( $value === null ) { + // Null query + $this->_where[] = array( + 'operator' => $type, + 'group' => null, + 'field' => $this->_protect_identifiers($key), + 'query' => $this->_protect_identifiers($key) .( $op === '=' ? + ' IS NULL' : + ' IS NOT NULL') + ); + } + else if ( $bind ) { + // Binding condition (i.e. escape data) + if ( $this->_dbHost->type() === 'Postgres' && $op === 'like' ) { + // Postgres specific a it needs a case for string searching non-text data + $this->_where[] = array( + 'operator' => $type, + 'group' => null, + 'field' => $this->_protect_identifiers($key), + 'query' => $this->_protect_identifiers($key).'::text ilike '.$this->_safe_bind(':where_'.$i) + ); + } + else { + $this->_where[] = array( + 'operator' => $type, + 'group' => null, + 'field' => $this->_protect_identifiers($key), + 'query' => $this->_protect_identifiers($key) .' '.$op.' '.$this->_safe_bind(':where_'.$i) + ); + } + $this->bind( ':where_'.$i, $value ); + } + else { + // Non-binding condition + $this->_where[] = array( + 'operator' => $type, + 'group' => null, + 'field' => null, + 'query' => $this->_protect_identifiers($key) .' '. $op .' '. $this->_protect_identifiers($value) + ); + } + } + } + + /** + * Add parentheses to a where condition + * @return string + * @internal + */ + protected function _where_group ( $inOut, $op ) + { + $this->_where[] = array( + "group" => $inOut ? '(' : ')', + "operator" => $op + ); + } + + /** + * Check if an array is associative or sequential + */ + private function _is_assoc(array $arr) + { + if (array() === $arr) { + return false; + } + + return array_keys($arr) !== range(0, count($arr) - 1); + } +}; + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Result.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Result.php.txt new file mode 100644 index 00000000..e186b245 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Database/Result.php.txt @@ -0,0 +1,68 @@ +process()} method determines what action DataTables / + * Editor is requesting from the server-side and will correctly action it. + * + * ```php + * Editor::inst( $db, 'browsers' ) + * ->fields( + * Field::inst( 'first_name' )->validator( Validate::required() ), + * Field::inst( 'last_name' )->validator( Validate::required() ), + * Field::inst( 'country' ), + * Field::inst( 'details' ) + * ) + * ->process( $_POST ) + * ->json(); + * ``` + */ +class Editor extends Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Statics + */ + + /** Request type - read */ + const ACTION_READ = 'read'; + + /** Request type - create */ + const ACTION_CREATE = 'create'; + + /** Request type - edit */ + const ACTION_EDIT = 'edit'; + + /** Request type - delete */ + const ACTION_DELETE = 'remove'; + + /** Request type - upload */ + const ACTION_UPLOAD = 'upload'; + + + /** + * Determine the request type from an HTTP request. + * + * @param array $http Typically $_POST, but can be any array used to carry + * an Editor payload + * @param string $name The parameter name that the action should be read from. + * @return string `Editor::ACTION_READ`, `Editor::ACTION_CREATE`, + * `Editor::ACTION_EDIT` or `Editor::ACTION_DELETE` indicating the request + * type. + */ + static public function action ( $http, $name='action' ) + { + if ( ! isset( $http[$name] ) ) { + return self::ACTION_READ; + } + + switch ( $http[$name] ) { + case 'create': + return self::ACTION_CREATE; + + case 'edit': + return self::ACTION_EDIT; + + case 'remove': + return self::ACTION_DELETE; + + case 'upload': + return self::ACTION_UPLOAD; + + default: + throw new \Exception("Unknown Editor action: ".$http['action']); + } + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + + /** + * Constructor. + * @param Database $db An instance of the DataTables Database class that we can + * use for the DB connection. Can be given here or with the 'db' method. + * @param string|array $table The table name in the database to read and write + * information from and to. Can be given here or with the 'table' method. + * @param string|array $pkey Primary key column name in the table given in + * the $table parameter. Can be given here or with the 'pkey' method. + */ + function __construct( $db=null, $table=null, $pkey=null ) + { + // Set constructor parameters using the API - note that the get/set will + // ignore null values if they are used (i.e. not passed in) + $this->db( $db ); + $this->table( $table ); + $this->pkey( $pkey ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public properties + */ + + /** @var string */ + public $version = '2.1.3'; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + /** @var DataTables\Database */ + private $_db = null; + + /** @var DataTables\Editor\Field[] */ + private $_fields = array(); + + /** @var array */ + private $_formData; + + /** @var array */ + private $_processData; + + /** @var string */ + private $_idPrefix = 'row_'; + + /** @var DataTables\Editor\Join[] */ + private $_join = array(); + + /** @var array */ + private $_pkey = array('id'); + + /** @var string[] */ + private $_table = array(); + + /** @var string[] */ + private $_readTableNames = array(); + + /** @var boolean */ + private $_transaction = true; + + /** @var array */ + private $_where = array(); + + /** @var boolean */ + private $_write = true; + + /** @var array */ + private $_leftJoin = array(); + + /** @var boolean - deprecated */ + private $_whereSet = false; + + /** @var array */ + private $_out = array(); + + /** @var array */ + private $_events = array(); + + /** @var boolean */ + private $_debug = false; + + /** @var array */ + private $_debugInfo = array(); + + /** @var string Log output path */ + private $_debugLog = ''; + + /** @var callback */ + private $_validator = array(); + + /** @var boolean Enable true / catch when processing */ + private $_tryCatch = true; + + /** @var boolean Enable / disable delete on left joined tables */ + private $_leftJoinRemove = false; + + /** @var string Action name allowing for configuration */ + private $_actionName = 'action'; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Get / set the action name to read in HTTP parameters. This can be useful + * to set if you are using a framework that uses the default name of `action` + * for something else (e.g. WordPress). + * @param string Value to set. If not given, then used as a getter. + * @return string|self Value, or self if used as a setter. + */ + public function actionName ( $_=null ) + { + return $this->_getSet( $this->_actionName, $_ ); + } + + + /** + * Get the data constructed in this instance. + * + * This will get the PHP array of data that has been constructed for the + * command that has been processed by this instance. Therefore only useful after + * process has been called. + * @return array Processed data array. + */ + public function data () + { + return $this->_out; + } + + + /** + * Get / set the DB connection instance + * @param Database $_ DataTable's Database class instance to use for database + * connectivity. If not given, then used as a getter. + * @return Database|self The Database connection instance if no parameter + * is given, or self if used as a setter. + */ + public function db ( $_=null ) + { + return $this->_getSet( $this->_db, $_ ); + } + + + /** + * Get / set debug mode and set a debug message. + * + * It can be useful to see the SQL statements that Editor is using. This + * method enables that ability. Information about the queries used is + * automatically added to the output data array / JSON under the property + * name `debugSql`. + * + * This method can also be called with a string parameter, which will be + * added to the debug information sent back to the client-side. This can + * be useful when debugging event listeners, etc. + * + * @param boolean|mixed $_ Debug mode state. If not given, then used as a + * getter. If given as anything other than a boolean, it will be added + * to the debug information sent back to the client. + * @param string [$path=null] Set an output path to log debug information + * @return boolean|self Debug mode state if no parameter is given, or + * self if used as a setter or when adding a debug message. + */ + public function debug ( $_=null, $path=null ) + { + if ( ! is_bool( $_ ) ) { + $this->_debugInfo[] = $_; + + return $this; + } + + if ( $path ) { + $this->_debugLog = $path; + } + + return $this->_getSet( $this->_debug, $_ ); + } + + + /** + * Get / set field instance. + * + * The list of fields designates which columns in the table that Editor will work + * with (both get and set). + * @param Field|string $_... This parameter effects the return value of the + * function: + * + * * `null` - Get an array of all fields assigned to the instance + * * `string` - Get a specific field instance whose 'name' matches the + * field passed in + * * {@see Field} - Add a field to the instance's list of fields. This + * can be as many fields as required (i.e. multiple arguments) + * * `array` - An array of {@see Field} instances to add to the list + * of fields. + * @return Field|Field[]|Editor The selected field, an array of fields, or + * the Editor instance for chaining, depending on the input parameter. + * @throws \Exception Unkown field error + * @see {@see Field} for field documentation. + */ + public function field ( $_=null ) + { + $args = func_get_args(); + + if ( is_string( $_ ) ) { + for ( $i=0, $ien=count($this->_fields) ; $i<$ien ; $i++ ) { + if ( $this->_fields[$i]->name() === $_ ) { + return $this->_fields[$i]; + } + } + + throw new \Exception('Unknown field: '.$_); + } + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_fields, $_, true ); + } + + + /** + * Get / set field instances. + * + * An alias of {@see field}, for convenience. + * @param Field $_... Instances of the {@see Field} class, given as a single + * instance of {@see Field}, an array of {@see Field} instances, or multiple + * {@see Field} instance parameters for the function. + * @return Field[]|self Array of fields, or self if used as a setter. + * @see {@see Field} for field documentation. + */ + public function fields ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_fields, $_, true ); + } + + + /** + * Get / set the DOM prefix. + * + * Typically primary keys are numeric and this is not a valid ID value in an + * HTML document - is also increases the likelihood of an ID clash if multiple + * tables are used on a single page. As such, a prefix is assigned to the + * primary key value for each row, and this is used as the DOM ID, so Editor + * can track individual rows. + * @param string $_ Primary key's name. If not given, then used as a getter. + * @return string|self Primary key value if no parameter is given, or + * self if used as a setter. + */ + public function idPrefix ( $_=null ) + { + return $this->_getSet( $this->_idPrefix, $_ ); + } + + + /** + * Get the data that is being processed by the Editor instance. This is only + * useful once the `process()` method has been called, and is available for + * use in validation and formatter methods. + * + * @return array Data given to `process()`. + */ + public function inData () + { + return $this->_processData; + } + + /** + * Get / set join instances. Note that for the majority of use cases you + * will want to use the `leftJoin()` method. It is significantly easier + * to use if you are just doing a simple left join! + * + * The list of Join instances that Editor will join the parent table to + * (i.e. the one that the {@see Editor->table()} and {@see Editor->fields} + * methods refer to in this class instance). + * + * @param Join $_,... Instances of the {@see Join} class, given as a + * single instance of {@see Join}, an array of {@see Join} instances, + * or multiple {@see Join} instance parameters for the function. + * @return Join[]|self Array of joins, or self if used as a setter. + */ + public function join ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_join, $_, true ); + } + + + /** + * Get the JSON for the data constructed in this instance. + * + * Basically the same as the {@see Editor->data()} method, but in this case we echo, or + * return the JSON string of the data. + * @param boolean $print Echo the JSON string out (true, default) or return it + * (false). + * @param int JSON encode option https://www.php.net/manual/en/json.constants.php + * @return string|self self if printing the JSON, or JSON representation of + * the processed data if false is given as the first parameter. + */ + public function json ( $print=true, $options=0 ) + { + if ( $print ) { + $json = json_encode( $this->_out, $options ); + + if ( $json !== false ) { + echo $json; + } + else { + echo json_encode( array( + "error" => "JSON encoding error: ".json_last_error_msg() + ) ); + } + + return $this; + } + return json_encode( $this->_out ); + } + + + /** + * Echo out JSONP for the data constructed and processed in this instance. + * This is basically the same as {@see Editor->json()} but wraps the return in a + * JSONP callback. + * + * @param string $callback The callback function name to use. If not given + * or `null`, then `$_GET['callback']` is used (the jQuery default). + * @return self Self for chaining. + * @throws \Exception JSONP function name validation + */ + public function jsonp ( $callback=null ) + { + if ( ! $callback ) { + $callback = $_GET['callback']; + } + + if ( preg_match('/[^a-zA-Z0-9_]/', $callback) ) { + throw new \Exception("Invalid JSONP callback function name"); + } + + echo $callback.'('.json_encode( $this->_out ).');'; + return $this; + } + + + /** + * Add a left join condition to the Editor instance, allowing it to operate + * over multiple tables. Multiple `leftJoin()` calls can be made for a + * single Editor instance to join multiple tables. + * + * A left join is the most common type of join that is used with Editor + * so this method is provided to make its use very easy to configure. Its + * parameters are basically the same as writing an SQL left join statement, + * but in this case Editor will handle the create, update and remove + * requirements of the join for you: + * + * * Create - On create Editor will insert the data into the primary table + * and then into the joined tables - selecting the required data for each + * table. + * * Edit - On edit Editor will update the main table, and then either + * update the existing rows in the joined table that match the join and + * edit conditions, or insert a new row into the joined table if required. + * * Remove - On delete Editor will remove the main row and then loop over + * each of the joined tables and remove the joined data matching the join + * link from the main table. + * + * Please note that when using join tables, Editor requires that you fully + * qualify each field with the field's table name. SQL can result table + * names for ambiguous field names, but for Editor to provide its full CRUD + * options, the table name must also be given. For example the field + * `first_name` in the table `users` would be given as `users.first_name`. + * + * @param string $table Table name to do a join onto + * @param string $field1 Field from the parent table to use as the join link + * @param string $operator Join condition (`=`, '<`, etc) + * @param string $field2 Field from the child table to use as the join link + * @return self Self for chaining. + * + * @example + * Simple join: + * + * ```php + * ->field( + * Field::inst( 'users.first_name as myField' ), + * Field::inst( 'users.last_name' ), + * Field::inst( 'users.dept_id' ), + * Field::inst( 'dept.name' ) + * ) + * ->leftJoin( 'dept', 'users.dept_id', '=', 'dept.id' ) + * ->process($_POST) + * ->json(); + * `````` + * + * This is basically the same as the following SQL statement: + * + * ```sql + * SELECT users.first_name, users.last_name, user.dept_id, dept.name + * FROM users + * LEFT JOIN dept ON users.dept_id = dept.id + * ``` + */ + public function leftJoin ( $table, $field1, $operator = null, $field2 = null ) + { + $this->_leftJoin[] = array( + "table" => $table, + "field1" => $field1, + "field2" => $field2, + "operator" => $operator + ); + + return $this; + } + + + /** + * Indicate if a remove should be performed on left joined tables when deleting + * from the parent row. Note that this is disabled by default and will be + * removed completely in v2. Use `ON DELETE CASCADE` in your database instead. + * + * @deprecated + * @param boolean $_ Value to set. If not given, then used as a getter. + * @return boolean|self Value if no parameter is given, or + * self if used as a setter. + */ + public function leftJoinRemove ( $_=null ) + { + return $this->_getSet( $this->_leftJoinRemove, $_ ); + } + + + /** + * Add an event listener. The `Editor` class will trigger an number of + * events that some action can be taken on. + * + * @param string $name Event name + * @param callable $callback Callback function to execute when the event + * occurs + * @return self Self for chaining. + */ + public function on ( $name, $callback ) + { + if ( ! isset( $this->_events[ $name ] ) ) { + $this->_events[ $name ] = array(); + } + + $this->_events[ $name ][] = $callback; + + return $this; + } + + + /** + * Get / set the primary key. + * + * The primary key must be known to Editor so it will know which rows are being + * edited / deleted upon those actions. The default value is ['id']. + * + * @param string|array $_ Primary key's name. If not given, then used as a + * getter. An array of column names can be given to allow composite keys to + * be used. + * @return string|self Primary key value if no parameter is given, or + * self if used as a setter. + */ + public function pkey ( $_=null ) + { + if ( is_string( $_ ) ) { + $this->_pkey = array( $_ ); + return $this; + } + return $this->_getSet( $this->_pkey, $_ ); + } + + + /** + * Convert a primary key array of field values to a combined value. + * + * @param string $row The row of data that the primary key value should + * be extracted from. + * @param boolean $flat Flag to indicate if the given array is flat + * (useful for `where` conditions) or nested for join tables. + * @return string The created primary key value. + * @throws \Exception If one of the values that the primary key is made up + * of cannot be found in the data set given, an Exception will be thrown. + */ + public function pkeyToValue ( $row, $flat=false ) + { + $pkey = $this->_pkey; + $id = array(); + + for ( $i=0, $ien=count($pkey) ; $i<$ien ; $i++ ) { + $column = $pkey[ $i ]; + + if ( $flat ) { + if ( isset( $row[ $column ] ) ) { + if ( $row[ $column ] === null ) { + throw new \Exception("Primary key value is null.", 1); + } + $val = $row[ $column ]; + } + else { + $val = null; + } + } + else { + $val = $this->_readProp( $column, $row ); + } + + if ( $val === null ) { + throw new \Exception("Primary key element is not available in data set.", 1); + } + + $id[] = $val; + } + + return implode( $this->_pkey_separator(), $id ); + } + + + /** + * Convert a primary key combined value to an array of field values. + * + * @param string $value The id that should be split apart + * @param boolean $flat Flag to indicate if the returned array should be + * flat (useful for `where` conditions) or nested for join tables. + * @param string[] $pkey The primary key name - will use the instance value + * if not given + * @return array Array of field values that the id was made up of. + * @throws \Exception If the primary key value does not match the expected + * length based on the primary key configuration, an exception will be + * thrown. + */ + public function pkeyToArray ( $value, $flat=false, $pkey=null ) + { + $arr = array(); + $value = str_replace( $this->idPrefix(), '', $value ); + $idParts = explode( $this->_pkey_separator(), $value ); + + if ( $pkey === null ) { + $pkey = $this->_pkey; + } + + if ( count($pkey) !== count($idParts) ) { + throw new \Exception("Primary key data doesn't match submitted data", 1); + } + + for ( $i=0, $ien=count($idParts) ; $i<$ien ; $i++ ) { + if ( $flat ) { + $arr[ $pkey[$i] ] = $idParts[$i]; + } + else { + $this->_writeProp( $arr, $pkey[$i], $idParts[$i] ); + } + } + + return $arr; + } + + + /** + * Process a request from the Editor client-side to get / set data. + * + * @param array $data Typically $_POST or $_GET as required by what is sent + * by Editor + * @return self + */ + public function process ( $data ) + { + if ( $this->_debug ) { + $debugInfo = &$this->_debugInfo; + + $debugInfo[] = 'Editor PHP libraries - version '. $this->version; + $debugVal = $this->_db->debug( function ( $mess ) use ( &$debugInfo ) { + $debugInfo[] = $mess; + } ); + } + + if ( $this->_tryCatch ) { + try { + $this->_process( $data ); + } + catch (\Exception $e) { + // Error feedback + $this->_out['error'] = $e->getMessage(); + + if ( $this->_transaction ) { + $this->_db->rollback(); + } + } + } + else { + $this->_process( $data ); + } + + if ( $this->_debug ) { + $this->_out['debug'] = $this->_debugInfo; + + // Save to a log file + if ( $this->_debugLog ) { + file_put_contents( $this->_debugLog, json_encode( $this->_debugInfo )."\n", FILE_APPEND ); + } + + $this->_db->debug( false ); + } + + return $this; + } + + + /** + * The CRUD read table name. If this method is used, Editor will create from the + * table name(s) given rather than those given by `Editor->table()`. This can be + * a useful distinction to allow a read from a VIEW (which could make use of a + * complex SELECT) while writing to a different table. + * + * @param string|array $_,... Read table names given as a single string, an array + * of strings or multiple string parameters for the function. + * @return string[]|self Array of read tables names, or self if used as a setter. + */ + public function readTable ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_readTableNames, $_, true ); + } + + + /** + * Get / set the table name. + * + * The table name designated which DB table Editor will use as its data + * source for working with the database. Table names can be given with an + * alias, which can be used to simplify larger table names. The field + * names would also need to reflect the alias, just like an SQL query. For + * example: `users as a`. + * + * @param string|array $_,... Table names given as a single string, an array of + * strings or multiple string parameters for the function. + * @return string[]|self Array of tables names, or self if used as a setter. + */ + public function table ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_table, $_, true ); + } + + + /** + * Get / set transaction support. + * + * When enabled (which it is by default) Editor will use an SQL transaction + * to ensure data integrity while it is performing operations on the table. + * This can be optionally disabled using this method, if required by your + * database configuration. + * + * @param boolean $_ Enable (`true`) or disabled (`false`) transactions. + * If not given, then used as a getter. + * @return boolean|self Transactions enabled flag, or self if used as a + * setter. + */ + public function transaction ( $_=null ) + { + return $this->_getSet( $this->_transaction, $_ ); + } + + + /** + * Enable / try catch when `process()` is called. Disabling this can be + * useful for debugging, but is not recommended for production. + * + * @param boolean $_ `true` to enable (default), otherwise false to disable + * @return boolean|Editor Value if used as a getter, otherwise `$this` when + * used as a setter. + */ + public function tryCatch ( $_=null ) + { + return $this->_getSet( $this->_tryCatch, $_ ); + } + + + /** + * Perform validation on a data set. + * + * Note that validation is performed on data only when the action is + * `create` or `edit`. Additionally, validation is performed on the _wire + * data_ - i.e. that which is submitted from the client, without formatting. + * Any formatting required by `setFormatter` is performed after the data + * from the client has been validated. + * + * @param array $errors Output array to which field error information will + * be written. Each element in the array represents a field in an error + * condition. These elements are themselves arrays with two properties + * set; `name` and `status`. + * @param array $data The format data to check + * @return boolean `true` if the data is valid, `false` if not. + */ + public function validate ( &$errors, $data ) + { + // Validation is only performed on create and edit + if ( $data[$this->_actionName] != "create" && $data[$this->_actionName] != "edit" ) { + return true; + } + + foreach( $data['data'] as $id => $values ) { + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + $validation = $field->validate( $values, $this, + str_replace( $this->idPrefix(), '', $id ) + ); + + if ( $validation !== true ) { + $errors[] = array( + "name" => $field->name(), + "status" => $validation + ); + } + } + + // MJoin validation + for ( $i=0 ; $i_join) ; $i++ ) { + $this->_join[$i]->validate( $errors, $this, $values, $data[$this->_actionName] ); + } + } + + return count( $errors ) > 0 ? false : true; + } + + + /** + * Get / set a global validator that will be triggered for the create, edit + * and remove actions performed from the client-side. Multiple validators + * can be added. + * + * @param callable $_ Function to execute when validating the input data. + * It is passed three parameters: 1. The editor instance, 2. The action + * and 3. The values. + * @return Editor|callback Editor instance if called as a setter, or the + * validator function if not. + */ + public function validator ( $_=null ) + { + return $this->_getSet( $this->_validator, $_, true ); + } + + + /** + * Where condition to add to the query used to get data from the database. + * + * Can be used in two different ways: + * + * * Simple case: `where( field, value, operator )` + * * Complex: `where( fn )` + * + * The simple case is fairly self explanatory, a condition is applied to the + * data that looks like `field operator value` (e.g. `name = 'Allan'`). The + * complex case allows full control over the query conditions by providing a + * closure function that has access to the database Query that Editor is + * using, so you can use the `where()`, `or_where()`, `and_where()` and + * `where_group()` methods as you require. + * + * Please be very careful when using this method! If an edit made by a user + * using Editor removes the row from the where condition, the result is + * undefined (since Editor expects the row to still be available, but the + * condition removes it from the result set). + * + * @param string|callable $key Single field name or a closure function + * @param string $value Single field value. + * @param string $op Condition operator: <, >, = etc + * @return string[]|self Where condition array, or self if used as a setter. + */ + public function where ( $key=null, $value=null, $op='=' ) + { + if ( $key === null ) { + return $this->_where; + } + + if ( is_callable($key) && is_object($key) ) { + $this->_where[] = $key; + } + else { + $this->_where[] = array( + "key" => $key, + "value" => $value, + "op" => $op + ); + } + + return $this; + } + + + /** + * Get / set if the WHERE conditions should be included in the create and + * edit actions. + * + * @param boolean $_ Include (`true`), or not (`false`) + * @return boolean Current value + * @deprecated Note that `whereSet` is now deprecated and replaced with the + * ability to set values for columns on create and edit. The C# libraries + * do not support this option at all. + */ + public function whereSet ( $_=null ) + { + return $this->_getSet( $this->_whereSet, $_ ); + } + + public function write ($_writeVal=null){ + return $this->_getSet($this->_write, $_writeVal); + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods + */ + + /** + * Process a request from the Editor client-side to get / set data. + * + * @param array $data Data to process + * @private + */ + private function _process( $data ) + { + $this->_out = array( + "fieldErrors" => array(), + "error" => "", + "data" => array(), + "ipOpts" => array(), + "cancelled" => array() + ); + + $action = Editor::action($data); + $this->_processData = $data; + $this->_formData = isset($data['data']) ? $data['data'] : null; + $validators = $this->_validator; + + // Sanity check that data isn't getting truncated as that can lead to data corruption + if ( $data && count($data, COUNT_RECURSIVE) >= ini_get('max_input_vars') ) { + $this->_out['error'] = 'Too many rows edited at the same time (tech info: max_input_vars exceeded).'; + } + + if ( ! $this->_out['error'] ) { + if ( $this->_transaction ) { + $this->_db->transaction(); + } + + $this->_prepJoin(); + + if ( $validators ) { + for ( $i=0 ; $i_out['error'] = $ret; + break; + } + } + } + } + + if ( ! $this->_out['error'] ) { + if ( $action === Editor::ACTION_READ ) { + /* Get data */ + $this->_out = array_merge( $this->_out, $this->_get( null, $data ) ); + } + else if ( $action === Editor::ACTION_UPLOAD && $this->_write === true ) { + /* File upload */ + $this->_upload( $data ); + } + else if ( $action === Editor::ACTION_DELETE && $this->_write === true) { + /* Remove rows */ + $this->_remove( $data ); + $this->_fileClean(); + } + else if (($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT ) && $this->_write === true ) { + /* Create or edit row */ + // Pre events so they can occur before the validation + foreach ($data['data'] as $idSrc => &$values) { + $cancel = null; + + if ( $action === Editor::ACTION_CREATE ) { + $cancel = $this->_trigger( 'preCreate', $values ); + } + else { + $id = str_replace( $this->_idPrefix, '', $idSrc ); + $cancel = $this->_trigger( 'preEdit', $id, $values ); + } + + // One of the event handlers returned false - don't continue + if ( $cancel === false ) { + // Remove the data from the data set so it won't be processed + unset( $data['data'][$idSrc] ); + + // Tell the client-side we aren't updating this row + $this->_out['cancelled'][] = $idSrc; + } + } + + // Validation + $valid = $this->validate( $this->_out['fieldErrors'], $data ); + + if ( $valid ) { + foreach ($data['data'] as $id => &$values) { + $d = $action === Editor::ACTION_CREATE ? + $this->_insert( $values ) : + $this->_update( $id, $values ); + + if ( $d !== null ) { + $this->_out['data'][] = $d; + } + } + + $this->_fileClean(); + } + } + } + + if ( $this->_transaction ) { + $this->_db->commit(); + } + + // Tidy up the reply + if ( count( $this->_out['fieldErrors'] ) === 0 ) { + unset( $this->_out['fieldErrors'] ); + } + + if ( $this->_out['error'] === '' ) { + unset( $this->_out['error'] ); + } + + if ( count( $this->_out['ipOpts'] ) === 0 ) { + unset( $this->_out['ipOpts'] ); + } + + if ( count( $this->_out['cancelled'] ) === 0 ) { + unset( $this->_out['cancelled'] ); + } + } + + + /** + * Get an array of objects from the database to be given to DataTables as a + * result of an sAjaxSource request, such that DataTables can display the information + * from the DB in the table. + * + * @param integer|string $id Primary key value to get an individual row + * (after create or update operations). Gets the full set if not given. + * If a compound key is being used, this should be the string + * representation of it (i.e. joined together) rather than an array form. + * @param array $http HTTP parameters from GET or POST request (so we can service + * server-side processing requests from DataTables). + * @return array DataTables get information + * @throws \Exception Error on SQL execution + * @private + */ + private function _get( $id=null, $http=null ) + { + $cancel = $this->_trigger( 'preGet', $id ); + if ( $cancel === false ) { + return array(); + } + + // print_r($id); + // print_r($http); + + $query = $this->_db + ->query('select') + ->table( $this->_read_table() ) + ->get( $this->_pkey ); + + // Add all fields that we need to get from the database + foreach ($this->_fields as $field) { + // Don't reselect a pkey column if it was already added + if ( in_array( $field->dbField(), $this->_pkey ) ) { + continue; + } + + if ( $field->apply('get') && $field->getValue() === null ) { + $query->get( $field->dbField() ); + } + } + + $this->_get_where( $query ); + $query->left_join($this->_leftJoin); + $ssp = $this->_ssp_query( $query, $http ); + + if ( $id !== null ) { + $query->where( $this->pkeyToArray( $id, true ) ); + } + + $res = $query->exec(); + if ( ! $res ) { + throw new \Exception('Error executing SQL for data get. Enable SQL debug using `->debug(true)`'); + } + + $out = array(); + while ( $row=$res->fetch() ) { + $inner = array(); + $inner['DT_RowId'] = $this->_idPrefix . $this->pkeyToValue( $row, true ); + + foreach ($this->_fields as $field) { + if ( $field->apply('get') ) { + $field->write( $inner, $row ); + } + } + + $out[] = $inner; + } + + // Field options + $options = array(); + $spOptions = array(); + $sbOptions = array(); + $searchPanes = array(); + + if ( $id === null ) { + foreach ($this->_fields as $field) { + $opts = $field->optionsExec( $this->_db ); + + if ( $opts !== false ) { + $options[ $field->name() ] = $opts; + } + + // SearchPanes options + $spOpts = $field->searchPaneOptionsExec( $field, $this, $http, $this->_fields, $this->_leftJoin); + + if ( $spOpts !== false ) { + $spOptions[ $field->name() ] = $spOpts; + } + + $sbOpts = $field->searchBuilderOptionsExec($field, $this, $http, $this->_fields, $this->_leftJoin); + + if ( $sbOpts !== false) { + $sbOptions[ $field->name() ] = $sbOpts; + } + } + } + + $searchPanes[ 'options' ] = $spOptions; + $searchBuilder[ 'options' ] = $sbOptions; + + // Row based "joins" + for ( $i=0 ; $i_join) ; $i++ ) { + $this->_join[$i]->data( $this, $out, $options ); + } + + $this->_trigger( 'postGet', $out, $id ); + + if (count($searchPanes['options']) > 0 && count($searchBuilder['options']) > 0) { + return array_merge( + array( + 'data' => $out, + 'options' => $options, + 'files' => $this->_fileData( null, null, $out ), + 'searchBuilder' => $searchBuilder, + 'searchPanes' => $searchPanes + ), + $ssp + ); + } + else if (count($searchBuilder['options']) > 0) { + return array_merge( + array( + 'data' => $out, + 'options' => $options, + 'files' => $this->_fileData( null, null, $out ), + 'searchBuilder' => $searchBuilder + ), + $ssp + ); + } + else if (count($searchPanes['options']) > 0) { + return array_merge( + array( + 'data' => $out, + 'options' => $options, + 'files' => $this->_fileData( null, null, $out ), + 'searchPanes' => $searchPanes + ), + $ssp + ); + } + else { + return array_merge( + array( + 'data' => $out, + 'options' => $options, + 'files' => $this->_fileData( null, null, $out ) + ), + $ssp + ); + } + + } + + + /** + * Insert a new row in the database + * @private + */ + private function _insert( $values ) + { + // Get values to generate the id, including from setValue, not just the + // submitted values + $all = array(); + foreach ($this->_fields as $field) { + if ($field->apply('set', $values)) { + $this->_writeProp($all, $field->name(), $field->val( 'set', $values )); + } + } + + // Only allow a composite insert if the values for the key are + // submitted. This is required because there is no reliable way in MySQL + // to return the newly inserted row, so we can't know any newly + // generated values. + $this->_pkey_validate_insert( $all ); + + $this->_trigger( 'validatedCreate', $values ); + + // Insert the new row + $id = $this->_insert_or_update( null, $values ); + + if ( $id === null ) { + return null; + } + + // Was the primary key altered as part of the edit, if so use the + // submitted values + $id = count( $this->_pkey ) > 1 ? + $this->pkeyToValue( $all ) : + $this->_pkey_submit_merge( $id, $all ); + + // Join tables + for ( $i=0 ; $i_join) ; $i++ ) { + $this->_join[$i]->create( $this, $id, $values ); + } + + $this->_trigger( 'writeCreate', $id, $values ); + + // Full data set for the created row + $row = $this->_get( $id ); + $row = count( $row['data'] ) > 0 ? + $row['data'][0] : + null; + + $this->_trigger( 'postCreate', $id, $values, $row ); + + return $row; + } + + + /** + * Update a row in the database + * @param string $id The DOM ID for the row that is being edited. + * @return array Row's data + * @private + */ + private function _update( $id, $values ) + { + $id = str_replace( $this->_idPrefix, '', $id ); + + $this->_trigger( 'validatedEdit', $id, $values ); + + // Update or insert the rows for the parent table and the left joined + // tables + $this->_insert_or_update( $id, $values ); + + // And the join tables + for ( $i=0 ; $i_join) ; $i++ ) { + $this->_join[$i]->update( $this, $id, $values ); + } + + // Was the primary key altered as part of the edit, if so use the + // submitted values + $getId = $this->_pkey_submit_merge( $id, $values ); + + $this->_trigger( 'writeEdit', $id, $values ); + + // Full data set for the modified row + $row = $this->_get( $getId ); + $row = count( $row['data'] ) > 0 ? + $row['data'][0] : + null; + + $this->_trigger( 'postEdit', $id, $values, $row ); + + return $row; + } + + + /** + * Delete one or more rows from the database + * @private + */ + private function _remove( $data ) + { + $ids = array(); + + // Get the ids to delete from the data source + foreach ($data['data'] as $idSrc => $rowData) { + // Strip the ID prefix that the client-side sends back + $id = str_replace( $this->_idPrefix, "", $idSrc ); + + $res = $this->_trigger( 'preRemove', $id, $rowData ); + + // Allow the event to be cancelled and inform the client-side + if ( $res === false ) { + $this->_out['cancelled'][] = $idSrc; + } + else { + $ids[] = $id; + } + } + + if ( count( $ids ) === 0 ) { + return; + } + + // Row based joins - remove first as the host row will be removed which + // is a dependency + for ( $i=0 ; $i_join) ; $i++ ) { + $this->_join[$i]->remove( $this, $ids ); + } + + // Remove from the left join tables + if ( $this->_leftJoinRemove ) { + for ( $i=0, $ien=count($this->_leftJoin) ; $i<$ien ; $i++ ) { + $join = $this->_leftJoin[$i]; + $table = $this->_alias( $join['table'], 'orig' ); + + // which side of the join refers to the parent table? + if ( strpos( $join['field1'], $join['table'] ) === 0 ) { + $parentLink = $join['field2']; + $childLink = $join['field1']; + } + else { + $parentLink = $join['field1']; + $childLink = $join['field2']; + } + + // Only delete on the primary key, since that is what the ids refer + // to - otherwise we'd be deleting random data! Note that this + // won't work with compound keys since the parent link would be + // over multiple fields. + if ( $parentLink === $this->_pkey[0] && count($this->_pkey) === 1 ) { + $this->_remove_table( $join['table'], $ids, array($childLink) ); + } + } + } + + // Remove from the primary tables + for ( $i=0, $ien=count($this->_table) ; $i<$ien ; $i++ ) { + $this->_remove_table( $this->_table[$i], $ids ); + } + + foreach ($data['data'] as $idSrc => $rowData) { + $id = str_replace( $this->_idPrefix, "", $idSrc ); + + $this->_trigger( 'postRemove', $id, $rowData ); + } + } + + + /** + * File upload + * @param array $data Upload data + * @throws \Exception File upload name error + * @private + */ + private function _upload( $data ) + { + // Search for upload field in local fields + $field = $this->_find_field( $data['uploadField'], 'name' ); + $fieldName = ''; + + if ( ! $field ) { + // Perhaps it is in a join instance + for ( $i=0 ; $i_join) ; $i++ ) { + $join = $this->_join[$i]; + $fields = $join->fields(); + + for ( $j=0, $jen=count($fields) ; $j<$jen ; $j++ ) { + $joinField = $fields[ $j ]; + $name = $join->name().'[].'.$joinField->name(); + + if ( $name === $data['uploadField'] ) { + $field = $joinField; + $fieldName = $name; + } + } + } + } + else { + $fieldName = $field->name(); + } + + if ( ! $field ) { + throw new \Exception("Unknown upload field name submitted"); + } + + $res = $this->_trigger( 'preUpload', $data ); + + // Allow the event to be cancelled and inform the client-side + if ( $res === false ) { + return; + } + + $upload = $field->upload(); + if ( ! $upload ) { + throw new \Exception("File uploaded to a field that does not have upload options configured"); + } + + $res = $upload->exec( $this ); + + if ( $res === false ) { + $this->_out['fieldErrors'][] = array( + "name" => $fieldName, // field name can be just the field's + "status" => $upload->error() // name or a join combination + ); + } + else { + $files = $this->_fileData( $upload->table(), array($res) ); + + $this->_out['files'] = $files; + $this->_out['upload']['id'] = $res; + + $this->_trigger( 'postUpload', $res, $files, $data ); + } + } + + + /** + * Get information about the files that are detailed in the database for + * the fields which have an upload method defined on them. + * + * @param string [$limitTable=null] Limit the data gathering to a single + * table only + * @param number[] [$id=null] Limit to a specific set of ids + * @return array File information + * @private + */ + private function _fileData ( $limitTable=null, $ids=null, $data=null ) + { + $files = array(); + + // The fields in this instance + $this->_fileDataFields( $files, $this->_fields, $limitTable, $ids, $data ); + + // From joined tables + for ( $i=0 ; $i_join) ; $i++ ) { + $joinData = null; + + // If we have data from the get, it is nested from the join, so we need to + // un-nest it (i.e. get the array of joined data for each row) + if ( $data ) { + $joinData = array(); + + for ( $j=0, $jen=count($data) ; $j<$jen ; $j++ ) { + $joinData = array_merge( $joinData, $data[$j][$this->_join[$i]->name()] ); + } + } + + $this->_fileDataFields( $files, $this->_join[$i]->fields(), $limitTable, $ids, $joinData ); + } + + return $files; + } + + + /** + * Common file get method for any array of fields + * @param array &$files File output array + * @param Field[] $fields Fields to get file information about + * @param string[] $limitTable Limit the data gathering to a single table + * only + * @private + */ + private function _fileDataFields ( &$files, $fields, $limitTable, $idsIn=null, $data=null ) + { + foreach ($fields as $field) { + $upload = $field->upload(); + + if ( $upload ) { + $table = $upload->table(); + + if ( ! $table ) { + continue; + } + + if ( $limitTable !== null && $table !== $limitTable ) { + continue; + } + + // Make a collection of the ids used in this data set to get a limited data set + // in return (security and performance) + $ids = $idsIn; + + if ( $ids === null ) { + $ids = array(); + } + + if ( $data !== null ) { + for ( $i=0, $ien=count($data); $i<$ien ; $i++ ) { + $val = $field->val( 'set', $data[$i] ); + + if ( $val && ! in_array($val, $ids) ) { + $ids[] = $val; + } + } + + if ( count($ids) === 0 ) { + // If no data to fetch for this field, so don't bother + continue; + } + else if ( count($ids) > 1000 ) { + // Don't use `where_in` for really large data sets + $ids = array(); + } + } + + $fileData = $upload->data( $this->_db, $ids ); + + if ( $fileData !== null ) { + if ( isset($files[$table]) ) { + $files[$table] = $files[$table] + $fileData; + } + else { + $files[$table] = $fileData; + } + } + } + } + } + + /** + * Run the file clean up + * + * @private + */ + private function _fileClean () + { + foreach ( $this->_fields as $field ) { + $upload = $field->upload(); + + if ( $upload ) { + $upload->dbCleanExec( $this, $field ); + } + } + + for ( $i=0 ; $i_join) ; $i++ ) { + foreach ( $this->_join[$i]->fields() as $field ) { + $upload = $field->upload(); + + if ( $upload ) { + $upload->dbCleanExec( $this, $field ); + } + } + } + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Server-side processing methods + */ + + /** + * When server-side processing is being used, modify the query with // the + * required extra conditions + * + * @param \DataTables\Database\Query $query Query instance to apply the SSP commands to + * @param array $http Parameters from HTTP request + * @return array Server-side processing information array + * @private + */ + private function _ssp_query ( $query, $http ) + { + if ( ! isset( $http['draw'] ) ) { + return array(); + } + + // Add the server-side processing conditions + $this->_ssp_limit( $query, $http ); + $this->_ssp_sort( $query, $http ); + $this->_ssp_filter( $query, $http ); + + // Get the number of rows in the result set + $ssp_set_count = $this->_db + ->query('count') + ->table( $this->_read_table() ) + ->get( $this->_pkey[0] ); + $this->_get_where( $ssp_set_count ); + $this->_ssp_filter( $ssp_set_count, $http ); + $ssp_set_count->left_join($this->_leftJoin); + $ssp_set_count = $ssp_set_count->exec()->fetch(); + + // Get the number of rows in the full set + $ssp_full_count = $this->_db + ->query('count') + ->table( $this->_read_table() ) + ->get( $this->_pkey[0] ); + $this->_get_where( $ssp_full_count ); + if ( count( $this->_where ) ) { // only needed if there is a where condition + $ssp_full_count->left_join($this->_leftJoin); + } + $ssp_full_count = $ssp_full_count->exec()->fetch(); + + return array( + "draw" => intval( $http['draw'] ), + "recordsTotal" => $ssp_full_count['cnt'], + "recordsFiltered" => $ssp_set_count['cnt'] + ); + } + + + /** + * Convert a column index to a database field name - used for server-side + * processing requests. + * @param array $http HTTP variables (i.e. GET or POST) + * @param int $index Index in the DataTables' submitted data + * @returns string DB field name + * @throws \Exception Unknown fields + * @private Note that it is actually public for PHP 5.3 - thread 39810 + */ + public function _ssp_field( $http, $index ) + { + $name = $http['columns'][$index]['data']; + $field = $this->_find_field( $name, 'name' ); + + if ( ! $field ) { + // Is it the primary key? + if ( $name === 'DT_RowId' ) { + return $this->_pkey[0]; + } + + throw new \Exception('Unknown field: '.$name .' (index '.$index.')'); + } + + return $field->dbField(); + } + + + /** + * Sorting requirements to a server-side processing query. + * @param \DataTables\Database\Query $query Query instance to apply sorting to + * @param array $http HTTP variables (i.e. GET or POST) + * @private + */ + private function _ssp_sort ( $query, $http ) + { + if ( isset( $http['order'] ) ) { + for ( $i=0 ; $iorder( + $this->_ssp_field( $http, $order['column'] ) .' '. + ($order['dir']==='asc' ? 'asc' : 'desc') + ); + } + } + } + + private function _constructSearchBuilderConditions($query, $data) { + $first = true; + + if(!isset($data['criteria'])) { + return; + } + // Iterate over every group or criteria in the current group + foreach($data['criteria'] as $crit) { + // If criteria is defined then this must be a group + if(isset($crit['criteria'])) { + // Check if this is the first, or if it is and logic + if($data['logic'] === 'AND' || $first) { + // Call the function for the next group + $query->where_group(function($q) use ($crit) { + $this->_constructSearchBuilderConditions($q, $crit); + }); + // Set first to false so that in future only the logic is checked + $first = false; + } + else { + $query->where_group(function ($q) use ($crit) { + $this->_constructSearchBuilderConditions($q, $crit); + }, 'OR'); + } + } + else if (isset($crit['condition']) && (isset($crit['value1']) || $crit['condition'] === 'null' || $crit['condition'] === '!null')) { + // Sometimes the structure of the object that is passed across is named in a strange way. + // This conditional assignment solves that issue + $val1 = isset($crit['value1']) ? $crit['value1'] : ''; + $val2 = isset($crit['value2']) ? $crit['value2'] : ''; + + if(strlen($val1) === 0 && $crit['condition'] !== 'null' && $crit['condition'] !== '!null') { + continue; + } + if(strlen($val2) === 0 && ($crit['condition'] === 'between' || $crit['condition'] === '!between')) { + continue; + } + + // Switch on the condition that has been passed in + switch($crit['condition']) { + case '=': + // Check if this is the first, or if it is and logic + if($data['logic'] === 'AND' || $first) { + // Call the where function for this condition + $query->where($crit['origData'], $val1, '='); + // Set first to false so that in future only the logic is checked + $first = false; + } + else { + // Call the or_where function - has to be or logic in this block + $query->or_where($crit['origData'], $val1, '='); + } + break; + case '!=': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1, '<>'); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1, '<>'); + } + break; + case 'contains': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], '%'.$val1.'%', 'LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], '%'.$val1.'%', 'LIKE'); + } + break; + case '!contains': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], '%'.$val1.'%', 'NOT LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], '%'.$val1.'%', 'NOT LIKE'); + } + break; + case 'starts': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1.'%', 'LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1.'%', 'LIKE'); + } + break; + case '!starts': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1.'%', 'NOT LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1.'%', 'NOT LIKE'); + } + break; + case 'ends': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], '%'.$val1, 'LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], '%'.$val1, 'LIKE'); + } + break; + case '!ends': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], '%'.$val1, 'NOT LIKE'); + $first = false; + } + else { + $query->or_where($crit['origData'], '%'.$val1, 'NOT LIKE'); + } + break; + case '<': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1, '<'); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1, '<'); + } + break; + case '<=': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1, '<='); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1, '<='); + } + break; + case '>=': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1, '>='); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1, '>='); + } + break; + case '>': + if($data['logic'] === 'AND' || $first) { + $query->where($crit['origData'], $val1, '>'); + $first = false; + } + else { + $query->or_where($crit['origData'], $val1, '>'); + } + break; + case 'between': + if($data['logic'] === 'AND' || $first) { + $query->where_group(function($q) use ($crit, $val1, $val2) { + $q->where($crit['origData'], is_numeric($val1) ? intval($val1) : $val1, '>')->where($crit['origData'], is_numeric($val2) ? intval($val2) : $val2, '<'); + }); + $first = false; + } + else { + $query->or_where($crit['origData'], is_numeric($val1) ? intval($val1) : $val1, '>')->where($crit['origData'], is_numeric($val2) ? intval($val2) : $val2, '<'); + } + break; + case '!between': + if($data['logic'] === 'AND' || $first) { + $query->where_group(function($q) use ($crit, $val1, $val2) { + $q->where($crit['origData'], is_numeric($val1) ? intval($val1) : $val1, '<')->or_where($crit['origData'], is_numeric($val2) ? intval($val2) : $val2, '>'); + }); + $first = false; + } + else { + $query->or_where($crit['origData'], is_numeric($val1) ? intval($val1) : $val1, '<')->or_where($crit['origData'], is_numeric($val2) ? intval($val2) : $val2, '>'); + } + break; + case 'null': + if($data['logic'] === 'AND' || $first) { + $query->where_group(function ($q) use ($crit) { + $q->where($crit['origData'], null, "="); + if (strpos($crit['type'], 'date') === false && strpos($crit['type'], 'moment') === false && strpos($crit['type'], 'luxon') === false) { + $q->or_where($crit['origData'], "", "="); + } + }); + $first = false; + } + else { + $query->where_group(function ($q) use ($crit) { + $q->where($crit['origData'], null, "="); + if (strpos($crit['type'], 'date') === false && strpos($crit['type'], 'moment') === false && strpos($crit['type'], 'luxon') === false) { + $q->or_where($crit['origData'], "", "="); + } + }, 'OR'); + } + break; + case '!null': + if($data['logic'] === 'AND' || $first) { + $query->where_group(function ($q) use ($crit) { + $q->where($crit['origData'], null, "!="); + if (strpos($crit['type'], 'date') === false && strpos($crit['type'], 'moment') === false && strpos($crit['type'], 'luxon') === false) { + $q->where($crit['origData'], "", "!="); + } + }); + $first = false; + } + else { + $query->where_group(function ($q) use ($crit) { + $q->where($crit['origData'], null, "!="); + if (strpos($crit['type'], 'date') === false && strpos($crit['type'], 'moment') === false && strpos($crit['type'], 'luxon') === false) { + $q->where($crit['origData'], "", "!="); + } + }, 'OR'); + + } + break; + default: + break; + } + } + } + return $query; + } + + + /** + * Add DataTables' 'where' condition to a server-side processing query. This + * works for both global and individual column filtering. + * @param \DataTables\Database\Query $query Query instance to apply the WHERE conditions to + * @param array $http HTTP variables (i.e. GET or POST) + * @private + */ + private function _ssp_filter ( $query, $http ) + { + $that = $this; + + // Global filter + $fields = $this->_fields; + + // Global search, add a ( ... or ... ) set of filters for each column + // in the table (not the fields, just the columns submitted) + if ( $http['search']['value'] ) { + $query->where( function ($q) use (&$that, &$fields, $http) { + for ( $i=0 ; $i_ssp_field( $http, $i ); + + if ( $fieldName ) { + $q->or_where( $fieldName, '%'.$http['search']['value'].'%', 'like' ); + } + } + } + } ); + } + + /* + foreach ($this->_fields as $field) { + // Don't reselect a pkey column if it was already added + if ( in_array( $field->dbField(), $this->_pkey ) ) { + continue; + } + + if ( $field->apply('get') && $field->getValue() === null ) { + $query->get( $field->dbField() ); + } + } + */ + + if( isset($http['searchPanes']) ) { + // Set the database from editor + $db = $this->_db; + // For every selection in every column + foreach ($this->_fields as $field) { + if( isset($http['searchPanes'][$field->name()])){ + for($i = 0; $i < count($http['searchPanes'][$field->name()]); $i++) { + // Check the number of rows... + $q = $db + ->query('select') + ->table($this->_table) + ->get('COUNT(*) as cnt'); + + $q->left_join($this->_leftJoin); + + // ... where the selected option is present... + $r = $q + ->where($field->dbField(), $http['searchPanes'][$field->name()][$i], '=') + ->exec() + ->fetchAll(); + + // ... If there are none then don't bother with this selection + if($r[0]['cnt'] == 0) { + array_splice($http['searchPanes'][$field->name()], $i, 1); + $i--; + } + } + + $query->where( function ($q) use ($field, $http) { + + for($j=0 ; $jname()]) ; $j++){ + $q->or_where( + $field->dbField(), + isset($http['searchPanes_null'][$field->name()][$j]) + ? null + : $http['searchPanes'][$field->name()][$j], + '=' + ); + } + }); + } + } + } + + if(isset($http['searchBuilder']) && $http['searchBuilder'] !== 'false') { + $query->where_group(function($q) use ($http) { + $this->_constructSearchBuilderConditions($q, $http['searchBuilder']); + }); + } + + // if ( $http['search']['value'] ) { + // $words = explode(" ", $http['search']['value']); + + // $query->where( function ($q) use (&$that, &$fields, $http, $words) { + // for ( $j=0, $jen=count($words) ; $j<$jen ; $j++ ) { + // if ( $words[$j] ) { + // $q->where_group( true ); + + // for ( $i=0, $ien=count($http['columns']) ; $i<$ien ; $i++ ) { + // if ( $http['columns'][$i]['searchable'] == 'true' ) { + // $field = $that->_ssp_field( $http, $i ); + + // $q->or_where( $field, $words[$j].'%', 'like' ); + // $q->or_where( $field, '% '.$words[$j].'%', 'like' ); + // } + // } + + // $q->where_group( false ); + // } + // } + // } ); + // } + + // Column filters + for ( $i=0, $ien=count($http['columns']) ; $i<$ien ; $i++ ) { + $column = $http['columns'][$i]; + $search = $column['search']['value']; + + if ( $search !== '' && $column['searchable'] == 'true' ) { + $query->where( $this->_ssp_field( $http, $i ), '%'.$search.'%', 'like' ); + } + } + + + } + + + /** + * Add a limit / offset to a server-side processing query + * @param \DataTables\Database\Query $query Query instance to apply the offset / limit to + * @param array $http HTTP variables (i.e. GET or POST) + * @private + */ + private function _ssp_limit ( $query, $http ) + { + if ( $http['length'] != -1 ) { // -1 is 'show all' in DataTables + $query + ->offset( $http['start'] ) + ->limit( $http['length'] ); + } + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Internal helper methods + */ + + /** + * Add local WHERE condition to query + * @param \DataTables\Database\Query $query Query instance to apply the WHERE conditions to + * @private + */ + private function _get_where ( $query ) + { + for ( $i=0 ; $i_where) ; $i++ ) { + if ( is_callable( $this->_where[$i] ) ) { + $this->_where[$i]( $query ); + } + else { + $query->where( + $this->_where[$i]['key'], + $this->_where[$i]['value'], + $this->_where[$i]['op'] + ); + } + } + } + + + /** + * Get a field instance from a known field name + * + * @param string $name Field name + * @param string $type Matching name type + * @return Field Field instance + * @private + */ + private function _find_field ( $name, $type ) + { + for ( $i=0, $ien=count($this->_fields) ; $i<$ien ; $i++ ) { + $field = $this->_fields[ $i ]; + + if ( $type === 'name' && $field->name() === $name ) { + return $field; + } + else if ( $type === 'db' && $field->dbField() === $name ) { + return $field; + } + } + + return null; + } + + + /** + * Insert or update a row for all main tables and left joined tables. + * + * @param int|string $id ID to use to condition the update. If null is + * given, the first query performed is an insert and the inserted id + * used as the value should there be any subsequent tables to operate + * on. Mote that for compound keys, this should be the "joined" value + * (i.e. a single string rather than an array). + * @return \DataTables\Database\Result Result from the query or null if no + * query performed. + * @private + */ + private function _insert_or_update ( $id, $values ) + { + // Loop over all tables in _table, doing the insert or update as needed + for ( $i=0, $ien=count( $this->_table ) ; $i<$ien ; $i++ ) { + $res = $this->_insert_or_update_table( + $this->_table[$i], + $values, + $id !== null ? + $this->pkeyToArray( $id, true ) : + null + ); + + // If we don't have an id yet, then the first insert will return + // the id we want + if ( $res !== null && $id === null ) { + $id = $res->insertId(); + } + } + + // And for the left join tables as well + for ( $i=0, $ien=count( $this->_leftJoin ) ; $i<$ien ; $i++ ) { + $join = $this->_leftJoin[$i]; + + // which side of the join refers to the parent table? + $joinTable = $this->_alias( $join['table'], 'alias' ); + $tablePart = $this->_part( $join['field1'] ); + + if ( $this->_part( $join['field1'], 'db' ) ) { + $tablePart = $this->_part( $join['field1'], 'db' ).'.'.$tablePart; + } + + if ( $tablePart === $joinTable ) { + $parentLink = $join['field2']; + $childLink = $join['field1']; + } + else { + $parentLink = $join['field1']; + $childLink = $join['field2']; + } + + if ( $parentLink === $this->_pkey[0] && count($this->_pkey) === 1 ) { + $whereVal = $id; + } + else { + // We need submitted information about the joined data to be + // submitted as well as the new value. We first check if the + // host field was submitted + $field = $this->_find_field( $parentLink, 'db' ); + + if ( ! $field || ! $field->apply( 'set', $values ) ) { + // If not, then check if the child id was submitted + $field = $this->_find_field( $childLink, 'db' ); + + // No data available, so we can't do anything + if ( ! $field || ! $field->apply( 'set', $values ) ) { + continue; + } + } + + $whereVal = $field->val('set', $values); + } + + $whereName = $this->_part( $childLink, 'field' ); + + $this->_insert_or_update_table( + $join['table'], + $values, + array( $whereName => $whereVal ) + ); + } + + return $id; + } + + + /** + * Insert or update a row in a single database table, based on the data + * given and the fields configured for the instance. + * + * The function will find the fields which are required for this specific + * table, based on the names of fields and use only the appropriate data for + * this table. Therefore the full submitted data set can be passed in. + * + * @param string $table Database table name to use (can include an alias) + * @param array $where Update condition + * @return \DataTables\Database\Result Result from the query or null if no query + * performed. + * @throws \Exception Where set error + * @private + */ + private function _insert_or_update_table ( $table, $values, $where=null ) + { + $set = array(); + $action = ($where === null) ? 'create' : 'edit'; + $tableAlias = $this->_alias( $table, 'alias' ); + + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + $tablePart = $this->_part( $field->dbField() ); + + if ( $this->_part( $field->dbField(), 'db' ) ) { + $tablePart = $this->_part( $field->dbField(), 'db' ).'.'.$tablePart; + } + + // Does this field apply to this table (only check when a join is + // being used) + if ( count($this->_leftJoin) && $tablePart !== $tableAlias ) { + continue; + } + + // Check if this field should be set, based on options and + // submitted data + if ( ! $field->apply( $action, $values ) ) { + continue; + } + + // Some db's (specifically postgres) don't like having the table + // name prefixing the column name. Todo: it might be nicer to have + // the db layer abstract this out? + $fieldPart = $this->_part( $field->dbField(), 'field' ); + $set[ $fieldPart ] = $field->val( 'set', $values ); + } + + // Add where fields if setting where values and required for this + // table + // Note that `whereSet` is now deprecated + if ( $this->_whereSet ) { + for ( $j=0, $jen=count($this->_where) ; $j<$jen ; $j++ ) { + $cond = $this->_where[$j]; + + if ( ! is_callable( $cond ) ) { + // Make sure the value wasn't in the submitted data set, + // otherwise we would be overwriting it + if ( ! isset( $set[ $cond['key'] ] ) ) + { + $whereTablePart = $this->_part( $cond['key'], 'table' ); + + // No table part on the where condition to match against + // or table operating on matches table part from cond. + if ( ! $whereTablePart || $tableAlias == $whereTablePart ) { + $set[ $cond['key'] ] = $cond['value']; + } + } + else { + throw new \Exception( 'Where condition used as a setter, '. + 'but value submitted for field: '.$cond['key'] + ); + } + } + } + } + + // If nothing to do, then do nothing! + if ( ! count( $set ) ) { + return null; + } + + // Use pkey only for the host table + $pkey = in_array( $table, $this->_table ) !== false ? + $this->_pkey : + ''; + + // Insert or update + if ( $action === 'create' ) { + return $this->_db->insert( $table, $set, $pkey ); + } + else { + return $this->_db->push( $table, $set, $where, $pkey ); + } + } + + + /** + * Delete one or more rows from the database for an individual table + * + * @param string $table Database table name to use + * @param array $ids Array of ids to remove + * @param string $pkey Database column name to match the ids on for the + * delete condition. If not given the instance's base primary key is + * used. + * @private + */ + private function _remove_table ( $table, $ids, $pkey=null ) + { + if ( $pkey === null ) { + $pkey = $this->_pkey; + } + + $tableAlias = $this->_alias($table, 'alias'); + $tableOrig = $this->_alias($table, 'orig'); + + // If using an alias we need to replace the alias'ed table name in our pkey + // with the real table name + for ($i=0 ; $i 1 && $a[0] === $tableAlias) { + $a[0] = $tableOrig; + $pkey[$i] = implode('.', $a); + } + } + + // Check there is a field which has a set option for this table + $count = 0; + + foreach ($this->_fields as $field) { + $fieldName = $field->dbField(); + $fieldDots = substr_count( $fieldName, '.' ); + + if ( $fieldDots === 0 ) { + $count++; + } + else if ( $fieldDots === 1 ) { + if ( + $field->set() !== Field::SET_NONE && + $this->_part( $fieldName, 'table' ) === $tableAlias + ) { + $count++; + } + } + else { + // db link + // note that if the table name for the constructor uses a db part, we need to also have + // the fields using the db name as Editor doesn't do any conflict resolution. + $dbTable = $this->_part( $fieldName, 'db' ) .'.'. $this->_part( $fieldName, 'table' ); + + if ( $field->set() !== Field::SET_NONE && $dbTable === $table ) { + $count++; + } + } + } + + if ( $count > 0 ) { + $q = $this->_db + ->query( 'delete' ) + ->table( $tableOrig ); + + for ( $i=0, $ien=count($ids) ; $i<$ien ; $i++ ) { + $cond = $this->pkeyToArray( $ids[$i], true, $pkey ); + + $q->or_where( function ($q2) use ($cond) { + $q2->where( $cond ); + } ); + } + + $q->exec(); + } + } + + + /** + * Check the validity of the set options if we are doing a join, since + * there are some conditions for this state. Will throw an error if not + * valid. + * + * @private + */ + private function _prepJoin () + { + if ( count( $this->_leftJoin ) === 0 ) { + return; + } + + // Check if the primary key has a table identifier - if not - add one + for ( $i=0, $ien=count($this->_pkey) ; $i<$ien ; $i++ ) { + $val = $this->_pkey[$i]; + + if ( strpos( $val, '.' ) === false ) { + $this->_pkey[$i] = $this->_alias( $this->_table[0], 'alias' ).'.'.$val; + } + } + + // Check that all fields have a table selector, otherwise, we'd need to + // know the structure of the tables, to know which fields belong in + // which. This extra requirement on the fields removes that + for ( $i=0, $ien=count($this->_fields) ; $i<$ien ; $i++ ) { + $field = $this->_fields[$i]; + $name = $field->dbField(); + + if ( strpos( $name, '.' ) === false ) { + throw new \Exception( 'Table part of the field "'.$name.'" was not found. '. + 'In Editor instances that use a join, all fields must have the '. + 'database table set explicitly.' + ); + } + } + } + + + /** + * Get one side or the other of an aliased SQL field name. + * + * @param string $name SQL field + * @param string $type Which part to get: `alias` (default) or `orig`. + * @returns string Alias + * @private + */ + private function _alias ( $name, $type='alias' ) + { + if ( stripos( $name, ' as ' ) !== false ) { + $a = preg_split( '/ as /i', $name ); + return $type === 'alias' ? + $a[1] : + $a[0]; + } + + if ( stripos( $name, ' ' ) !== false ) { + $a = preg_split( '/ /i', $name ); + return $type === 'alias' ? + $a[1] : + $a[0]; + } + + return $name; + } + + + /** + * Get part of an SQL field definition regardless of how deeply defined it + * is + * + * @param string $name SQL field + * @param string $type Which part to get: `table` (default) or `db` or + * `column` + * @return string Part name + * @private + */ + private function _part ( $name, $type='table' ) + { + $db = null; + $table = null; + $column = null; + + if ( strpos( $name, '.' ) !== false ) { + $a = explode( '.', $name ); + + if ( count($a) === 3 ) { + $db = $a[0]; + $table = $a[1]; + $column = $a[2]; + } + else if ( count($a) === 2 ) { + $table = $a[0]; + $column = $a[1]; + } + } + else { + $column = $name; + } + + if ( $type === 'db' ) { + return $db; + } + else if ( $type === 'table' ) { + return $table; + } + return $column; + } + + + /** + * Trigger an event + * + * @private + */ + private function _trigger ( $eventName, &$arg1=null, &$arg2=null, &$arg3=null, &$arg4=null, &$arg5=null ) + { + $out = null; + $argc = func_num_args(); + $args = array( $this ); + + // Hack to enable pass by reference with a "variable" number of parameters + for ( $i=1 ; $i<$argc ; $i++ ) { + $name = 'arg'.$i; + $args[] = &$$name; + } + + if ( ! isset( $this->_events[ $eventName ] ) ) { + return; + } + + $events = $this->_events[ $eventName ]; + + for ( $i=0, $ien=count($events) ; $i<$ien ; $i++ ) { + $res = call_user_func_array( $events[$i], $args ); + + if ( $res !== null ) { + $out = $res; + } + } + + return $out; + } + + + /** + * Merge a primary key value with an updated data source. + * + * @param string $pkeyVal Old primary key value to merge into + * @param array $row Data source for update + * @return string Merged value + */ + private function _pkey_submit_merge ( $pkeyVal, $row ) + { + $pkey = $this->_pkey; + $arr = $this->pkeyToArray( $pkeyVal, true ); + + for ( $i=0, $ien=count($pkey) ; $i<$ien ; $i++ ) { + $column = $pkey[ $i ]; + $field = $this->_find_field( $column, 'db' ); + + if ( $field && $field->apply( 'edit', $row ) ) { + $arr[ $column ] = $field->val( 'set', $row ); + } + } + + return $this->pkeyToValue( $arr, true ); + } + + + /** + * Validate that all primary key fields have values for create. + * + * @param array $row Row's data + * @return boolean `true` if valid, `false` otherwise + */ + private function _pkey_validate_insert ( $row ) + { + $pkey = $this->_pkey; + + if ( count( $pkey ) === 1 ) { + return true; + } + + for ( $i=0, $ien=count($pkey) ; $i<$ien ; $i++ ) { + $column = $pkey[ $i ]; + $field = $this->_find_field( $column, 'db' ); + + if ( ! $field || ! $field->apply("create", $row) ) { + throw new \Exception( "When inserting into a compound key table, ". + "all fields that are part of the compound key must be ". + "submitted with a specific value.", 1 + ); + } + } + + return true; + } + + + /** + * Create the separator value for a compound primary key. + * + * @return string Calculated separator + */ + private function _pkey_separator () + { + $str = implode(',', $this->_pkey); + + return hash( 'crc32', $str ); + } + + private function _read_table () + { + return count($this->_readTableNames) ? + $this->_readTableNames : + $this->_table; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Field.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Field.php.txt new file mode 100644 index 00000000..5a023f6d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Field.php.txt @@ -0,0 +1,961 @@ +field()} and + * {@see Join->field()} methods to describe what fields should be interacted + * with by the editable table. + * + * @example + * Simply get a column with the name "city". No validation is performed. + * ```php + * Field::inst( 'city' ) + * ``` + * + * @example + * Get a column with the name "first_name" - when edited a value must + * be given due to the "required" validation from the {@see Validate} class. + * ```php + * Field::inst( 'first_name' )->validator( 'Validate::required' ) + * ``` + * + * @example + * Working with a date field, which is validated, and also has *get* and + * *set* formatters. + * ```php + * Field::inst( 'registered_date' ) + * ->validator( 'Validate::dateFormat', 'D, d M y' ) + * ->getFormatter( 'Format::date_sql_to_format', 'D, d M y' ) + * ->setFormatter( 'Format::date_format_to_sql', 'D, d M y' ) + * ``` + * + * @example + * Using an alias in the first parameter + * ```php + * Field::inst( 'name.first as first_name' ) + * ``` + */ +class Field extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Statics + */ + + /** Set option flag (`set()`) - do not set data */ + const SET_NONE = 'none'; + + /** Set option flag (`set()`) - write to database on both create and edit */ + const SET_BOTH = 'both'; + + /** Set option flag (`set()`) - write to database only on create */ + const SET_CREATE = 'create'; + + /** Set option flag (`set()`) - write to database only on edit */ + const SET_EDIT = 'edit'; + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + + /** + * Field instance constructor. + * @param string $dbField Name of the database column + * @param string $name Name to use in the JSON output from Editor and the + * HTTP submit from the client-side when editing. If not given then the + * $dbField name is used. + */ + function __construct( $dbField=null, $name=null ) + { + if ( $dbField !== null && $name === null ) { + // Allow just a single parameter to be passed - each can be + // overridden if needed later using the API. + $this->name( $dbField ); + $this->dbField( $dbField ); + } + else { + $this->name( $name ); + $this->dbField( $dbField ); + } + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private parameters + */ + + /** @var string */ + private $_dbField = null; + + /** @var boolean */ + private $_get = true; + + /** @var mixed */ + private $_getFormatter = null; + + /** @var mixed */ + private $_getFormatterOpts = null; + + /** @var mixed */ + private $_getValue = null; + + /** @var Options */ + private $_opts = null; + + /** @var SearchPaneOptions */ + private $_spopts = null; + + /** @var SearchBuilderOptions */ + private $_sbopts = null; + + /** @var callable */ + private $_optsFn = null; + + /** @var callable */ + private $_spoptsFn = null; + + /** @var callable */ + private $_sboptsFn = null; + + /** @var string */ + private $_name = null; + + /** @var string */ + private $_set = Field::SET_BOTH; + + /** @var mixed */ + private $_setFormatter = null; + + /** @var mixed */ + private $_setFormatterOpts = null; + + /** @var mixed */ + private $_setValue = null; + + /** @var mixed */ + private $_validator = array(); + + /** @var Upload */ + private $_upload = null; + + /** @var callable */ + private $_xss = null; + + /** @var boolean */ + private $_xssFormat = true; + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + + /** + * Get / set the DB field name. + * + * Note that when used as a setter, an alias can be given for the field + * using the SQL `as` keyword - for example: `firstName as name`. In this + * situation the dbField is set to the field name before the `as`, and the + * field's name (`name()`) is set to the name after the ` as `. + * + * As a result of this, the following constructs have identical + * functionality: + * + * Field::inst( 'firstName as name' ); + * Field::inst( 'firstName', 'name' ); + * + * @param string $_ Value to set if using as a setter. + * @return string|self The name of the db field if no parameter is given, + * or self if used as a setter. + */ + public function dbField ( $_=null ) + { + if ( $_ === null ) { + return $this->_dbField; + } + + // Don't split on an `as` inside paraenthesis + $a = preg_split( '/ as (?![^\(]*\))/i', $_ ); + if ( count($a) > 1 ) { + $this->_dbField = trim( $a[0] ); + $this->_name = trim( $a[1] ); + } + else { + $this->_dbField = $_; + } + + return $this; + } + + + /** + * Get / set the 'get' property of the field. + * + * A field can be marked as write only when setting the get property to false + * here. + * @param boolean $_ Value to set if using as a setter. + * @return boolean|self The get property if no parameter is given, or self + * if used as a setter. + */ + public function get ( $_=null ) + { + return $this->_getSet( $this->_get, $_ ); + } + + + /** + * Get formatter for the field's data. + * + * When the data has been retrieved from the server, it can be passed through + * a formatter here, which will manipulate (format) the data as required. This + * can be useful when, for example, working with dates and a particular format + * is required on the client-side. + * + * Editor has a number of formatters available with the {@see Format} class + * which can be used directly with this method. + * @param callable|string $_ Value to set if using as a setter. Can be given as + * a closure function or a string with a reference to a function that will + * be called with call_user_func(). + * @param mixed $opts Variable that is passed through to the get formatting + * function - can be useful for passing through extra information such as + * date formatting string, or a required flag. The actual options available + * depend upon the formatter used. + * @return callable|string|self The get formatter if no parameter is given, or + * self if used as a setter. + */ + public function getFormatter ( $_=null, $opts=null ) + { + if ( $opts !== null ) { + $this->_getFormatterOpts = $opts; + } + return $this->_getSet( $this->_getFormatter, $_ ); + } + + + /** + * Get / set a get value. If given, then this value is used to send to the + * client-side, regardless of what value is held by the database. + * + * @param callable|string|number $_ Value to set, or no value to use as a + * getter + * @return callable|string|self Value if used as a getter, or self if used + * as a setter. + */ + public function getValue ( $_=null ) + { + return $this->_getSet( $this->_getValue, $_ ); + } + + + /** + * Get / set the 'name' property of the field. + * + * The name is typically the same as the dbField name, since it makes things + * less confusing(!), but it is possible to set a different name for the data + * which is used in the JSON returned to DataTables in a 'get' operation and + * the field name used in a 'set' operation. + * @param string $_ Value to set if using as a setter. + * @return string|self The name property if no parameter is given, or self + * if used as a setter. + */ + public function name ( $_=null ) + { + return $this->_getSet( $this->_name, $_ ); + } + + + /** + * Get a list of values that can be used for the options list in radio, + * select and checkbox inputs from the database for this field. + * + * Note that this is for simple 'label / value' pairs only. For more complex + * data, including pairs that require joins and where conditions, use a + * closure to provide a query + * + * @param string|callable $table Database table name to use to get the + * paired data from, or a closure function if providing a method + * @param string $value Table column name that contains the pair's + * value. Not used if the first parameter is given as a closure + * @param string $label Table column name that contains the pair's + * label. Not used if the first parameter is given as a closure + * @param callable $condition Function that will add `where` + * conditions to the query + * @param callable $format Function will render each label + * @param string $order SQL ordering + * @return Field Self for chaining + */ + public function options ( $table=null, $value=null, $label=null, $condition=null, $format=null, $order=null ) + { + if ( $table === null ) { + return $this->_opts; + } + + // Overloads for backwards compatibility + if ( is_a( $table, '\DataTables\Editor\Options' ) ) { + // Options class + $this->_optsFn = null; + $this->_opts = $table; + } + else if ( is_callable($table) && is_object($table) ) { + // Function + $this->_opts = null; + $this->_optsFn = $table; + } + else { + $this->_optsFn = null; + $this->_opts = Options::inst() + ->table( $table ) + ->value( $value ) + ->label( $label ); + + if ( $condition ) { + $this->_opts->where( $condition ); + } + + if ( $format ) { + $this->_opts->render( $format ); + } + + if ( $order ) { + $this->_opts->order( $order ); + } + } + + return $this; + } + + /** + * Get a list of values that can be used for the options list in SearchPanes + * + * @param SearchPaneOptions|callable $spInput SearchPaneOptions instance or a closure function if providing a method + * @return self + */ + public function searchPaneOptions ( $spInput=null ) + { + if ( $spInput === null ) { + return $this->_spopts; + } + + // Overloads for backwards compatibility + if ( is_a( $spInput, '\DataTables\Editor\SearchPaneOptions' ) ) { + // Options class + $this->_spoptsFn = null; + $this->_spopts = $spInput; + } + else if ( is_callable($spInput) && is_object($spInput) ) { + // Function + $this->_spopts = null; + $this->_spoptsFn = $spInput; + } + + return $this; + } + + /** + * Get a list of values that can be used for the options list in SearchBuilder + * + * @param SearchBuilderOptions|callable $sbInput SearchBuilderOptions instance or a closure function if providing a method + * @return self + */ + public function searchBuilderOptions ( $sbInput=null ) + { + if ( $sbInput === null ) { + return $this->_sbopts; + } + + // Overloads for backwards compatibility + if ( is_a( $sbInput, '\DataTables\Editor\SearchBuilderOptions' ) ) { + // Options class + $this->_sboptsFn = null; + $this->_sbopts = $sbInput; + } + else if ( is_callable($sbInput) && is_object($sbInput) ) { + // Function + $this->_sbopts = null; + $this->_sboptsFn = $sbInput; + } + + return $this; + } + + + + /** + * Get / set the 'set' property of the field. + * + * A field can be marked as read only using this option, to be set only + * during an create or edit action or to be set during both actions. This + * provides the ability to have fields that are only set when a new row is + * created (for example a "created" time stamp). + * @param string|boolean $_ Value to set when the method is being used as a + * setter (leave as undefined to use as a getter). This can take the + * value of: + * + * * `true` - Same as `Field::SET_BOTH` + * * `false` - Same as `Field::SET_NONE` + * * `Field::SET_BOTH` - Set the database value on both create and edit commands + * * `Field::SET_NONE` - Never set the database value + * * `Field::SET_CREATE` - Set the database value only on create + * * `Field::SET_EDIT` - Set the database value only on edit + * @return string|self The set property if no parameter is given, or self + * if used as a setter. + */ + public function set ( $_=null ) + { + if ( $_ === true ) { + $_ = Field::SET_BOTH; + } + else if ( $_ === false ) { + $_ = Field::SET_NONE; + } + + return $this->_getSet( $this->_set, $_ ); + } + + + /** + * Set formatter for the field's data. + * + * When the data has been retrieved from the server, it can be passed through + * a formatter here, which will manipulate (format) the data as required. This + * can be useful when, for example, working with dates and a particular format + * is required on the client-side. + * + * Editor has a number of formatters available with the {@see Format} class + * which can be used directly with this method. + * @param callable|string $_ Value to set if using as a setter. Can be given as + * a closure function or a string with a reference to a function that will + * be called with call_user_func(). + * @param mixed $opts Variable that is passed through to the get formatting + * function - can be useful for passing through extra information such as + * date formatting string, or a required flag. The actual options available + * depend upon the formatter used. + * @return callable|string|self The set formatter if no parameter is given, or + * self if used as a setter. + */ + public function setFormatter ( $_=null, $opts=null ) + { + if ( $opts !== null ) { + $this->_setFormatterOpts = $opts; + } + return $this->_getSet( $this->_setFormatter, $_ ); + } + + + /** + * Get / set a set value. If given, then this value is used to write to the + * database regardless of what data is sent from the client-side. + * + * @param callable|string|number $_ Value to set, or no value to use as a + * getter + * @return callable|string|self Value if used as a getter, or self if used + * as a setter. + */ + public function setValue ( $_=null ) + { + return $this->_getSet( $this->_setValue, $_ ); + } + + + /** + * Get / set the upload class for this field. + * @param Upload $_ Upload class if used as a setter + * @return Upload|self Value if used as a getter, or self if used + * as a setter. + */ + public function upload ( $_=null ) + { + return $this->_getSet( $this->_upload, $_ ); + } + + + /** + * Get / set the 'validator' of the field. + * + * The validator can be used to check if any abstract piece of data is valid + * or not according to the given rules of the validation function used. + * + * Multiple validation options can be applied to a field instance by calling + * this method multiple times. For example, it would be possible to have a + * 'required' validation and a 'maxLength' validation with multiple calls. + * + * Editor has a number of validation available with the {@see Validate} class + * which can be used directly with this method. + * @param callable|string $_ Value to set if using as the validation method. + * Can be given as a closure function or a string with a reference to a + * function that will be called with call_user_func(). + * @param mixed $opts Variable that is passed through to the validation + * function - can be useful for passing through extra information such as + * date formatting string, or a required flag. The actual options available + * depend upon the validation function used. + * @return callable|string|self The validation method if no parameter is given, + * or self if used as a setter. + */ + public function validator ( $_=null, $opts=null ) + { + if ( $_ === null ) { + return $this->_validator; + } + else { + $this->_validator[] = array( + "func" => $_, + "opts" => $opts + ); + } + + return $this; + } + + + /** + * Set a formatting method that will be used for XSS checking / removal. + * This should be a function that takes a single argument (the value to be + * cleaned) and returns the cleaned value. + * + * Editor will use HtmLawed by default for this operation, which is built + * into the software and no additional configuration is required, but a + * custom function can be used if you wish to use a different formatter such + * as HTMLPurifier. + * + * If you wish to disable this option (which you would only do if you are + * absolutely confident that your validation will pick up on any XSS inputs) + * simply provide a closure function that returns the value given to the + * function. This is _not_ recommended. + * + * @param callable|false $xssFormatter XSS cleaner function, use `false` or + * `null` to disable XSS cleaning. + * @return Field Self for chaining. + */ + public function xss ( $xssFormatter ) + { + if ( $xssFormatter === true || $xssFormatter === false || $xssFormatter === null ) { + $this->_xssFormat = $xssFormatter; + } + else { + $this->_xss = $xssFormatter; + } + + return $this; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + * Used by the Editor class and not generally for public use + */ + + /** + * Check to see if a field should be used for a particular action (get or set). + * + * Called by the Editor / Join class instances - not expected for general + * consumption - internal. + * @param string $action Direction that the data is travelling - 'get' is + * reading DB data, `create` and `edit` for writing to the DB + * @param array $data Data submitted from the client-side when setting. + * @return boolean true if the field should be used in the get / set. + * @internal + */ + public function apply ( $action, $data=null ) + { + if ( $action === 'get' ) { + // Get action - can we get this field + return $this->_get; + } + else { + // Note that validation must be done on input data before we get here + + // Create or edit action, are we configured to use this field + if ( $action === 'create' && + ($this->_set === Field::SET_NONE || $this->_set === Field::SET_EDIT) + ) { + return false; + } + else if ( $action === 'edit' && + ($this->_set === Field::SET_NONE || $this->_set === Field::SET_CREATE) + ) { + return false; + } + + // Check it was in the submitted data. If not, then not required + // (validation would have failed if it was) and therefore we don't + // set it. Check for a value as well, as it can format data from + // some other source + if ( $this->_setValue === null && ! $this->_inData( $this->name(), $data ) ) { + return false; + } + + // In the data set, so use it + return true; + } + } + + + /** + * Execute the ipOpts to get the list of options to return to the client- + * side + * + * @param \DataTables\Database $db Database instance + * @return Array Array of value / label options for the list + * @internal + */ + public function optionsExec ( $db ) + { + if ( $this->_optsFn ) { + $fn = $this->_optsFn; + return $fn($db); + } + else if ( $this->_opts ) { + return $this->_opts->exec( $db ); + } + + return false; + } + + /** + * Execute the spopts to get the list of options for SearchPanes to return + * to the client-side + * + * @param DataTables\Field $field The field to retrieve the data from + * @param DataTables\Editor $editor The editor instance + * @param DataTables\DTRequest $http The http request sent to the server + * @param DataTables\Field[] $fields All of the fields + * @param any $leftJoin Info for a leftJoin if required + * @return Promise | boolean + * @internal + */ + public function searchPaneOptionsExec ( $field, $editor, $http, $fields, $leftJoin) + { + if ( $this->_spoptsFn ) { + $fn = $this->_spoptsFn; + return $fn($editor->db(), $editor); + } + else if ( $this->_spopts ) { + return $this->_spopts->exec( $field, $editor, $http, $fields, $leftJoin ); + } + + return false; + } + + /** + * Execute the spopts to get the list of options for SearchBuilder to return + * to the client-side + * + * @param DataTables\Field $field The field to retrieve the data from + * @param DataTables\Editor $editor The editor instance + * @param DataTables\DTRequest $http The http request sent to the server + * @param DataTables\Field[] $fields All of the fields + * @param any $leftJoin Info for a leftJoin if required + * @return Promise | boolean + * @internal + */ + public function searchBuilderOptionsExec ( $field, $editor, $http, $fields, $leftJoin) + { + if ( $this->_sboptsFn ) { + $fn = $this->_sboptsFn; + return $fn($editor->db(), $editor); + } + else if ( $this->_sbopts ) { + return $this->_sbopts->exec( $field, $editor, $http, $fields, $leftJoin ); + } + + return false; + } + + + /** + * Get the value of the field, taking into account if it is coming from the + * DB or from a POST. If formatting has been specified for this field, it + * will be applied here. + * + * Called by the Editor / Join class instances - not expected for general + * consumption - internal. + * @param string $direction Direction that the data is travelling - 'get' is + * reading data, and 'set' is writing it to the DB. + * @param array $data Data submitted from the client-side when setting or the + * data for the row when getting data from the DB. + * @return string Value for the field + * @internal + */ + public function val ( $direction, $data ) + { + if ( $direction === 'get' ) { + if ( $this->_getValue !== null ) { + $val = $this->_getAssignedValue( $this->_getValue ); + } + else { + // Getting data, so the db field name + $val = isset( $data[ $this->_dbField ] ) ? + $data[ $this->_dbField ] : + null; + } + + return $this->_format( + $val, $data, $this->_getFormatter, $this->_getFormatterOpts + ); + } + else { + // Sanity check that we aren't operating on a function + if ( strpos( $this->dbField(), '(' ) !== false ) { + throw new \Exception('Cannot set the value for an SQL function field. These fields are read only: ' . $this->name()); + } + + // Setting data, so using from the payload (POST usually) and thus + // use the 'name' + $val = $this->_setValue !== null ? + $this->_getAssignedValue( $this->_setValue ) : + $this->_readProp( $this->name(), $data ); + + // XSS removal / checker + if ( $this->_xssFormat && $val ) { + $val = $this->xssSafety( $val ); + } + + return $this->_format( + $val, $data, $this->_setFormatter, $this->_setFormatterOpts + ); + } + } + + + /** + * Check the validity of the field based on the data submitted. Note that + * this validation is performed on the wire data - i.e. that which is + * submitted, before any setFormatter is run + * + * Called by the Editor / Join class instances - not expected for general + * consumption - internal. + * + * @param array $data Data submitted from the client-side + * @param Editor $editor Editor instance + * @param mixed $id Row id that is being validated + * @return boolean|string `true` if valid, string with error message if not + * @internal + */ + public function validate ( $data, $editor, $id=null ) + { + // Three cases for the validator - closure, string or null + if ( ! count( $this->_validator ) ) { + return true; + } + + // Value could be from user data, or setValue might take priority + $val = $this->_setValue !== null ? + $this->_getAssignedValue( $this->_setValue ) : + $this->_readProp( $this->name(), $data ); + + $processData = $editor->inData(); + $instances = array( + 'action' => $processData['action'], + 'id' => $id, + 'field' => $this, + 'editor' => $editor, + 'db' => $editor->db() + ); + + for ( $i=0, $ien=count( $this->_validator ) ; $i<$ien ; $i++ ) { + $validator = $this->_validator[$i]; + + // Backwards compatibility + if ( is_string( $validator['func'] ) ) { + if ( strpos($validator['func'], "Validate::") === 0 ) { + $a = explode("::", $validator['func']); + + // Validate class static methods - they have `Legacy` counter parts that + // convert from the old style to the new so the old style options still work. + if ( method_exists( "\\DataTables\\Editor\\".$a[0], $a[1].'Legacy' ) ) { + $func = call_user_func( "\\DataTables\\Editor\\".$validator['func'].'Legacy', $validator['opts'] ); + $res = call_user_func( $func, $val, $data, $this, $instances ); + } + else { + // User style legacy function. Call it directly + $func = "\\DataTables\\Editor\\".$validator['func']; + $res = call_user_func( $func, $val, $data, $this, $instances ); + } + } + else { + // And for cases where a string was used to point to a function, + // which was not in the Validate class + $res = call_user_func( $validator['func'], $val, $data, $validator['opts'], $instances ); + } + } + else { + $func = $validator['func']; + $res = $func( $val, $data, $this, $instances ); + } + + // Check if there was a validation error and if so, return it + if ( $res !== true ) { + return $res; + } + } + + // Validation methods all run, must be valid + return true; + } + + + /** + * Write the value for this field to the output array for a read operation + * + * @param array $out Row output data (to the JSON) + * @param mixed $srcData Row input data (raw, from the database) + * @internal + */ + public function write( &$out, $srcData ) + { + $this->_writeProp( $out, $this->name(), $this->val('get', $srcData) ); + } + + + /** + * Perform XSS prevention on an input. + * + * @param mixed $val Value to be escaped + * @return string Safe value + */ + public function xssSafety ( $val ) { + $xss = $this->_xss; + + if ( is_array( $val ) ) { + $res = array(); + + foreach ( $val as $individual ) { + $res[] = $xss ? + $xss( $individual ) : + Htmlaw::filter( $individual ); + } + + return $res; + } + + return $xss ? + $xss( $val ) : + Htmlaw::filter( $val ); + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods + */ + + /** + * Apply a formatter to data. The caller will decide what formatter to apply + * (get or set) + * + * @param mixed $val Value to be formatted + * @param mixed $data Full row data + * @param callable $formatter Formatting function to be called + * @param array $opts Array of options to be passed to the formatter + * @return mixed Formatted value + */ + private function _format( $val, $data, $formatter, $opts ) + { + // Three cases for the formatter - closure, string or null + if ( ! $formatter ) { + return $val; + } + + if ( ! is_string( $formatter ) ) { + return $formatter( $val, $data, $opts ); + } + + // Backwards compatibility - strings will not be supported in v2 + if ( strpos($formatter, "Format::") === 0 ) { + $a = explode( '::', $formatter ); + + // Old style Editor formatter - use the legacy functions to + // convert to the new style + if ( method_exists( "\\DataTables\\Editor\\".$a[0], $a[1].'Legacy' ) ) { + $func = call_user_func( "\\DataTables\\Editor\\".$formatter.'Legacy', $opts ); + + return $func( $val, $data ); + } + else { + // User added old style methods + return call_user_func( "\\DataTables\\Editor\\".$formatter, $val, $data, $opts ); + } + } + + // User function (string identifier) + return call_user_func( $formatter, $val, $data, $opts ); + } + + /** + * Get the value from `_[gs]etValue` - taking into account if it is callable + * function or not + * + * @param mixed $val Value to be evaluated + * @return mixed Value assigned, or returned from the function + */ + private function _getAssignedValue ( $val ) + { + return is_callable($val) && is_object($val) ? + $val() : + $val; + } + + /** + * Check is a parameter is in the submitted data set. This is functionally + * the same as the `_readProp()` method, but in this case a binary value + * is required to indicate if the value is present or not. + * + * @param string $name Javascript dotted object name to write to + * @param array $data Data source array to read from + * @return boolean `true` if present, `false` otherwise + * @private + */ + private function _inData ( $name, $data ) + { + if ( strpos($name, '.') === false ) { + return isset( $data[ $name ] ) ? + true : + false; + } + + $names = explode( '.', $name ); + $inner = $data; + + for ( $i=0 ; $ijoin()} to allow Editor to + * obtain joined information from the database. + * + * For an overview of how Join tables work, please refer to the + * {@link https://editor.datatables.net/manual/php/ Editor manual} as it is + * useful to understand how this class represents the links between tables, + * before fully getting to grips with it's API. + * + * @example + * Join the parent table (the one specified in the {@see Editor->table()} + * method) with the table *access*, with a link table *user__access*, which + * allows multiple properties to be found for each row in the parent table. + * ```php + * Join::inst( 'access', 'array' ) + * ->link( 'users.id', 'user_access.user_id' ) + * ->link( 'access.id', 'user_access.access_id' ) + * ->field( + * Field::inst( 'id' )->validator( 'Validate::required' ), + * Field::inst( 'name' ) + * ) + * ``` + * + * @example + * Single row join - here we join the parent table with a single row in + * the child table, without an intermediate link table. In this case the + * child table is called *extra* and the two fields give the columns that + * Editor will read from that table. + * ```php + * Join::inst( 'extra', 'object' ) + * ->link( 'user.id', 'extra.user_id' ) + * ->field( + * Field::inst( 'comments' ), + * Field::inst( 'review' ) + * ) + * ``` + */ +class Join extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + + /** + * Join instance constructor. + * @param string $table Table name to get the joined data from. + * @param string $type Work with a single result ('object') or an array of + * results ('array') for the join. + */ + function __construct( $table=null, $type='object' ) + { + $this->table( $table ); + $this->type( $type ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private properties + */ + + /** @var DataTables\Editor\Field[] */ + private $_fields = array(); + + /** @var array */ + private $_join = array( + "parent" => null, + "child" => null, + "table" => null + ); + + /** @var array */ + private $_leftJoin = array(); + + /** @var string */ + private $_table = null; + + /** @var string */ + private $_type = null; + + /** @var string */ + private $_name = null; + + /** @var boolean */ + private $_get = true; + + /** @var boolean */ + private $_set = true; + + /** @var string */ + private $_aliasParentTable = null; + + /** @var array */ + private $_where = array(); + + /** @var boolean */ + private $_whereSet = false; + + /** @var array */ + private $_links = array(); + + /** @var string */ + private $_customOrder = null; + + /** @var callable[] */ + private $_validators = array(); + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Get / set parent table alias. + * + * When working with a self referencing table (i.e. a column in the table contains + * a primary key value from its own table) it can be useful to set an alias on the + * parent table's name, allowing a self referencing Join. For example: + * ``` + * SELECT p2.publisher + * FROM publisher as p2 + * JOIN publisher on (publisher.idPublisher = p2.idPublisher) + * ``` + * Where, in this case, `publisher` is the table that is used by the Editor instance, + * and you want to use `Join` to link back to the table (resolving a name for example). + * This method allows that alias to be set. Fields can then use standard SQL notation + * to select a field, for example `p2.publisher` or `publisher.publisher`. + * @param string $_ Table alias to use + * @return string|self Table alias set (which is null by default), or self if used as + * a setter. + */ + public function aliasParentTable ( $_=null ) + { + return $this->_getSet( $this->_aliasParentTable, $_ ); + } + + + /** + * Get / set field instances. + * + * The list of fields designates which columns in the table that will be read + * from the joined table. + * @param Field $_... Instances of the {@see Field} class, given as a single + * instance of {@see Field}, an array of {@see Field} instances, or multiple + * {@see Field} instance parameters for the function. + * @return Field[]|self Array of fields, or self if used as a setter. + * @see {@see Field} for field documentation. + */ + public function field ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_fields, $_, true ); + } + + + /** + * Get / set field instances. + * + * An alias of {@see field}, for convenience. + * @param Field $_... Instances of the {@see Field} class, given as a single + * instance of {@see Field}, an array of {@see Field} instances, or multiple + * {@see Field} instance parameters for the function. + * @return Field[]|self Array of fields, or self if used as a setter. + * @see {@see Field} for field documentation. + */ + public function fields ( $_=null ) + { + $args = func_get_args(); + + if ( $_ !== null && !is_array($_) ) { + $_ = $args; + } + return $this->_getSet( $this->_fields, $_, true ); + } + + + /** + * Get / set get attribute. + * + * When set to false no read operations will occur on the join tables. + * @param boolean $_ Value + * @return boolean|self Name + */ + public function get ( $_=null ) + { + return $this->_getSet( $this->_get, $_ ); + } + + + /** + * Get / set join properties. + * + * Define how the SQL will be performed, on what columns. There are + * basically two types of join that are supported by Editor here, a direct + * foreign key reference in the join table to the parent table's primary + * key, or a link table that contains just primary keys for the parent and + * child tables (this approach is usually used with a {@see Join->type()} of + * 'array' since you can often have multiple links between the two tables, + * while a direct foreign key reference will typically use a type of + * 'object' (i.e. a single entry). + * + * @param string|string[] $parent Parent table's primary key names. If used + * with a link table (i.e. third parameter to this method is given, then + * an array should be used, with the first element being the pkey's name + * in the parent table, and the second element being the key's name in + * the link table. + * @param string|string[] $child Child table's primary key names. If used + * with a link table (i.e. third parameter to this method is given, then + * an array should be used, with the first element being the pkey's name + * in the child table, and the second element being the key's name in the + * link table. + * @param string $table Join table name, if using a link table + * @returns Join This for chaining + * @deprecated 1.5 Please use the {@see Join->link()} method rather than this + * method now. + */ + public function join ( $parent=null, $child=null, $table=null ) + { + if ( $parent === null && $child === null ) { + return $this->_join; + } + + $this->_join['parent'] = $parent; + $this->_join['child'] = $child; + $this->_join['table'] = $table; + return $this; + } + + + /** + * Set up a left join operation for the Mjoined data + * + * @param string $table to get the information from + * @param string $field1 the first field to get the information from + * @param string $operator the operation to perform on the two fields + * @param string $field2 the second field to get the information from + * @return self + */ + public function leftJoin ( $table, $field1, $operator, $field2 ) + { + $this->_leftJoin[] = array( + "table" => $table, + "field1" => $field1, + "field2" => $field2, + "operator" => $operator + ); + + return $this; + } + + + /** + * Create a join link between two tables. The order of the fields does not + * matter, but each field must contain the table name as well as the field + * name. + * + * This method can be called a maximum of two times for an Mjoin instance: + * + * * First time, creates a link between the Editor host table and a join + * table + * * Second time creates the links required for a link table. + * + * Please refer to the Editor Mjoin documentation for further details: + * https://editor.datatables.net/manual/php + * + * @param string $field1 Table and field name + * @param string $field2 Table and field name + * @return Join Self for chaining + * @throws \Exception Link limitations + */ + public function link ( $field1, $field2 ) + { + if ( strpos($field1, '.') === false || strpos($field2, '.') === false ) { + throw new \Exception("Link fields must contain both the table name and the column name"); + } + + if ( count( $this->_links ) >= 4 ) { + throw new \Exception("Link method cannot be called more than twice for a single instance"); + } + + $this->_links[] = $field1; + $this->_links[] = $field2; + + return $this; + } + + + /** + * Specify the property that the data will be sorted by. + * + * @param string $order SQL column name to order the data by + * @return Join Self for chaining + */ + public function order ( $_=null ) + { + // How this works is by setting the SQL order by clause, and since the + // join that is done in PHP is always done sequentially, the order is + // retained. + return $this->_getSet( $this->_customOrder, $_ ); + } + + + /** + * Get / set name. + * + * The `name` of the Join is the JSON property key that is used when + * 'getting' the data, and the HTTP property key (in a JSON style) when + * 'setting' data. Typically the name of the db table will be used here, + * but this method allows that to be overridden. + * @param string $_ Field name + * @return String|self Name + */ + public function name ( $_=null ) + { + return $this->_getSet( $this->_name, $_ ); + } + + + /** + * Get / set set attribute. + * + * When set to false no write operations will occur on the join tables. + * This can be useful when you want to display information which is joined, + * but want to only perform write operations on the parent table. + * @param boolean $_ Value + * @return boolean|self Name + */ + public function set ( $_=null ) + { + return $this->_getSet( $this->_set, $_ ); + } + + + /** + * Get / set join table name. + * + * Please note that this will also set the {@see Join->name()} used by the Join + * as well. This is for convenience as the JSON output / HTTP input will + * typically use the same name as the database name. If you want to set a + * custom name, the {@see Join->name()} method must be called ***after*** this one. + * @param string $_ Name of the table to read the join data from + * @return String|self Name of the join table, or self if used as a setter. + */ + public function table ( $_=null ) + { + if ( $_ !== null ) { + $this->_name = $_; + } + return $this->_getSet( $this->_table, $_ ); + } + + + /** + * Get / set the join type. + * + * The join type allows the data that is returned from the join to be given + * as an array (i.e. working with multiple possibly results for each record from + * the parent table), or as an object (i.e. working which one and only one result + * for each record form the parent table). + * @param string $_ Join type ('object') or an array of + * results ('array') for the join. + * @return String|self Join type, or self if used as a setter. + */ + public function type ( $_=null ) + { + return $this->_getSet( $this->_type, $_ ); + } + + + /** + * Set a validator for the array of data (not on a field basis) + * + * @param string $fieldName Name of the field that any error should be shown + * against on the client-side + * @param callable $fn Callback function for validation + * @return self Chainable + */ + public function validator ( $fieldName, $fn ) + { + $this->_validators[] = array( + 'fieldName' => $fieldName, + 'fn' => $fn + ); + + return $this; + } + + + /** + * Where condition to add to the query used to get data from the database. + * Note that this is applied to the child table. + * + * Can be used in two different ways: + * + * * Simple case: `where( field, value, operator )` + * * Complex: `where( fn )` + * + * @param string|callable $key Single field name or a closure function + * @param string|string[] $value Single field value, or an array of values. + * @param string $op Condition operator: <, >, = etc + * @return string[]|self Where condition array, or self if used as a setter. + */ + public function where ( $key=null, $value=null, $op='=' ) + { + if ( $key === null ) { + return $this->_where; + } + + if ( is_callable($key) && is_object($key) ) { + $this->_where[] = $key; + } + else { + $this->_where[] = array( + "key" => $key, + "value" => $value, + "op" => $op + ); + } + + return $this; + } + + + /** + * Get / set if the WHERE conditions should be included in the create and + * edit actions. + * + * This means that the fields which have been used as part of the 'get' + * WHERE condition (using the `where()` method) will be set as the values + * given. + * + * This is default false (i.e. they are not included). + * + * @param boolean $_ Include (`true`), or not (`false`) + * @return boolean Current value + */ + public function whereSet ( $_=null ) + { + return $this->_getSet( $this->_whereSet, $_ ); + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Get data + * @param Editor $editor Host Editor instance + * @param string[] $data Data from the parent table's get and were we need + * to add out output. + * @param array $options options array for fields + * @internal + */ + public function data( $editor, &$data, &$options ) + { + if ( ! $this->_get ) { + return; + } + + $this->_prep( $editor ); + $db = $editor->db(); + $dteTable = $editor->table(); + $pkey = $editor->pkey(); + $idPrefix = $editor->idPrefix(); + + $dteTable = $dteTable[0]; + if ( strpos($dteTable, ' as ') !== false ) { + $arr = explode(' as ', $dteTable); + $dteTable = $arr[0]; + $this->_aliasParentTable = $arr[1]; + } + + $dteTableLocal = $this->_aliasParentTable ? // Can be aliased to allow a self join + $this->_aliasParentTable : + $dteTable; + $joinField = isset($this->_join['table']) ? + $this->_join['parent'][0] : + $this->_join['parent']; + + // This is something that will likely come in a future version, but it + // is a relatively low use feature. Please get in touch if this is + // something you require. + if ( count( $pkey ) > 1 ) { + throw new \Exception("MJoin is not currently supported with a compound primary key for the main table", 1); + } + + if ( count($data) > 0 ) { + $pkey = $pkey[0]; + $pkeyIsJoin = $pkey === $joinField || $pkey === $dteTableLocal.'.'.$joinField; + + // Set up the JOIN query + $stmt = $db + ->query( 'select' ) + ->distinct( true ) + ->get( $dteTableLocal.'.'.$joinField.' as dteditor_pkey' ) + ->get( $this->_fields('get') ) + ->table( $dteTable .' as '. $dteTableLocal ); + + if ( $this->order() ) { + $stmt->order( $this->order() ); + } + + $stmt->left_join($this->_leftJoin); + $this->_apply_where( $stmt ); + + if ( isset($this->_join['table']) ) { + // Working with a link table + $stmt + ->join( + $this->_join['table'], + $dteTableLocal.'.'.$this->_join['parent'][0] .' = '. $this->_join['table'].'.'.$this->_join['parent'][1] + ) + ->join( + $this->_table, + $this->_table.'.'.$this->_join['child'][0] .' = '. $this->_join['table'].'.'.$this->_join['child'][1] + ); + } + else { + // No link table in the middle + $stmt + ->join( + $this->_table, + $this->_table.'.'.$this->_join['child'] .' = '. $dteTableLocal.'.'.$this->_join['parent'] + ); + } + + // Check that the joining field is available. The joining key can + // come from the Editor instance's primary key, or any other field, + // including a nested value (from a left join). If the instance's + // pkey, then we've got that in the DT_RowId parameter, so we can + // use that. Otherwise, the key must be in the field list. + if ( $this->_propExists( $dteTable.'.'.$joinField, $data[0] ) ) { + $readField = $dteTable.'.'.$joinField; + } + else if ( $this->_propExists( $joinField, $data[0] ) ) { + $readField = $joinField; + } + else if ( ! $pkeyIsJoin ) { + echo json_encode( array( + "sError" => "Join was performed on the field '{$joinField}' which was not " + ."included in the Editor field list. The join field must be included " + ."as a regular field in the Editor instance." + ) ); + exit(0); + } + + // Get list of pkey values and apply as a WHERE IN condition + // This is primarily useful in server-side processing mode and when filtering + // the table as it means only a sub-set will be selected + // This is only applied for "sensible" data sets. It will just complicate + // matters for really large data sets: + // https://stackoverflow.com/questions/21178390/in-clause-limitation-in-sql-server + if ( count($data) < 1000 ) { + $whereIn = array(); + + for ( $i=0 ; $i_readProp( $readField, $data[$i] ); + } + + $stmt->where_in( $dteTableLocal.'.'.$joinField, $whereIn ); + } + + // Go! + $res = $stmt->exec(); + if ( ! $res ) { + return; + } + + // Map to primary key for fast lookup + $join = array(); + while ( $row=$res->fetch() ) { + $inner = array(); + + for ( $j=0 ; $j_fields) ; $j++ ) { + $field = $this->_fields[$j]; + if ( $field->apply('get') ) { + $field->write($inner, $row); + } + } + + if ( $this->_type === 'object' ) { + $join[ $row['dteditor_pkey'] ] = $inner; + } + else { + if ( !isset( $join[ $row['dteditor_pkey'] ] ) ) { + $join[ $row['dteditor_pkey'] ] = array(); + } + $join[ $row['dteditor_pkey'] ][] = $inner; + } + } + + // Loop over the data and do a join based on the data available + for ( $i=0 ; $i_readProp( $readField, $data[$i] ); + + if ( isset( $join[$rowPKey] ) ) { + $data[$i][ $this->_name ] = $join[$rowPKey]; + } + else { + $data[$i][ $this->_name ] = ($this->_type === 'object') ? + (object)array() : array(); + } + } + } + + // Field options + foreach ($this->_fields as $field) { + $opts = $field->optionsExec( $db ); + + if ( $opts !== false ) { + $name = $this->name(). + ($this->_type === 'object' ? '.' : '[].'). + $field->name(); + $options[ $name ] = $opts; + } + } + } + + + /** + * Create a row. + * @param Editor $editor Host Editor instance + * @param int $parentId Parent row's primary key value + * @param string[] $data Data to be set for the join + * @internal + */ + public function create ( $editor, $parentId, $data ) + { + // If not settable, or the many count for the join was not submitted + // there we do nothing + if ( + ! $this->_set || + ! isset($data[$this->_name]) || + ! isset($data[$this->_name.'-many-count']) + ) { + return; + } + + $this->_prep( $editor ); + $db = $editor->db(); + + if ( $this->_type === 'object' ) { + $this->_insert( $db, $parentId, $data[$this->_name] ); + } + else { + for ( $i=0 ; $i_name]) ; $i++ ) { + $this->_insert( $db, $parentId, $data[$this->_name][$i] ); + } + } + } + + + /** + * Update a row. + * @param Editor $editor Host Editor instance + * @param int $parentId Parent row's primary key value + * @param string[] $data Data to be set for the join + * @internal + */ + public function update ( $editor, $parentId, $data ) + { + // If not settable, or the many count for the join was not submitted + // there we do nothing + if ( ! $this->_set || ! isset($data[$this->_name.'-many-count']) ) { + return; + } + + $this->_prep( $editor ); + $db = $editor->db(); + + if ( $this->_type === 'object' ) { + // update or insert + $this->_update_row( $db, $parentId, $data[$this->_name] ); + } + else { + // WARNING - this will remove rows and then readd them. Any + // data not in the field list WILL BE LOST + // todo - is there a better way of doing this? + $this->remove( $editor, array($parentId) ); + $this->create( $editor, $parentId, $data ); + } + } + + + /** + * Delete rows + * @param Editor $editor Host Editor instance + * @param int[] $ids Parent row IDs to delete + * @internal + */ + public function remove ( $editor, $ids ) + { + if ( ! $this->_set ) { + return; + } + + $that = $this; + $this->_prep( $editor ); + $db = $editor->db(); + + if ( isset($this->_join['table']) ) { + $stmt = $db + ->query( 'delete' ) + ->table( $this->_join['table'] ) + ->or_where( $this->_join['parent'][1], $ids ) + ->exec(); + } + else { + $stmt = $db + ->query( 'delete' ) + ->table( $this->_table ) + ->where_group( function ( $q ) use ( $that, $ids ) { + $q->or_where( $that->_join['child'], $ids ); + } ); + + $this->_apply_where( $stmt ); + + $stmt->exec(); + } + } + + + /** + * Validate input data + * + * @param array $errors Errors array + * @param Editor $editor Editor instance + * @param string[] $data Data to validate + * @param string $action `create` or `edit` + * @internal + */ + public function validate ( &$errors, $editor, $data, $action ) + { + if ( ! $this->_set && ! isset($data[$this->_name.'-many-count']) ) { + return; + } + + $this->_prep( $editor ); + + $joinData = isset($data[$this->_name]) ? + $data[$this->_name] : + array(); + + for ( $i=0 ; $i_validators) ; $i++ ) { + $validator = $this->_validators[$i]; + $fn = $validator['fn']; + $res = $fn( $editor, $action, $joinData ); + + if ( is_string($res) ) { + $errors[] = array( + "name" => $validator['fieldName'], + "status" => $res + ); + } + } + + if ( $this->_type === 'object' ) { + $this->_validateFields( $errors, $editor, $joinData, $this->_name.'.' ); + } + else { + for ( $i=0 ; $i_validateFields( $errors, $editor, $joinData[$i], $this->_name.'[].' ); + } + } + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods + */ + + /** + * Add local WHERE condition to query + * @param \DataTables\Database\Query $query Query instance to apply the WHERE conditions to + * @private + */ + private function _apply_where ( $query ) + { + for ( $i=0 ; $i_where) ; $i++ ) { + if ( is_callable( $this->_where[$i] ) ) { + $this->_where[$i]( $query ); + } + else { + $query->where( + $this->_where[$i]['key'], + $this->_where[$i]['value'], + $this->_where[$i]['op'] + ); + } + } + } + + + /** + * Create a row. + * @param \DataTables\Database $db Database reference to use + * @param int $parentId Parent row's primary key value + * @param string[] $data Data to be set for the join + * @private + */ + private function _insert( $db, $parentId, $data ) + { + if ( isset($this->_join['table']) ) { + // Insert keys into the join table + $stmt = $db + ->query('insert') + ->table( $this->_join['table'] ) + ->set( $this->_join['parent'][1], $parentId ) + ->set( $this->_join['child'][1], $data[$this->_join['child'][0]] ) + ->exec(); + } + else { + // Insert values into the target table + $stmt = $db + ->query('insert') + ->table( $this->_table ) + ->set( $this->_join['child'], $parentId ); + + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + + if ( $field->apply( 'set', $data ) ) { // TODO should be create or edit + $stmt->set( $field->dbField(), $field->val('set', $data) ); + } + } + + // If the where condition variables should also be added to the database + // Note that `whereSet` is now deprecated + if ( $this->_whereSet ) { + for ( $i=0, $ien=count($this->_where) ; $i<$ien ; $i++ ) { + if ( ! is_callable( $this->_where[$i] ) ) { + $stmt->set( $this->_where[$i]['key'], $this->_where[$i]['value'] ); + } + } + } + + $stmt->exec(); + } + } + + + /** + * Prepare the instance to be run. + * + * @param Editor $editor Editor instance + * @private + */ + private function _prep ( $editor ) + { + $links = $this->_links; + + // Were links used to configure this instance - if so, we need to + // back them onto the join array + if ( $this->_join['parent'] === null && count($links) ) { + $editorTable = $editor->table(); + $editorTable = $editorTable[0]; + $joinTable = $this->table(); + if ( strpos($editorTable, ' as ') !== false ) { + $arr = explode(' as ', $editorTable); + $editorTable = $arr[0]; + $this->_aliasParentTable = $arr[1]; + } + + if ( $this->_aliasParentTable ) { + $editorTable = $this->_aliasParentTable; + } + + if ( count( $links ) === 2 ) { + // No link table + $f1 = explode( '.', $links[0] ); + $f2 = explode( '.', $links[1] ); + + if ( $f1[0] === $editorTable ) { + $this->_join['parent'] = $f1[1]; + $this->_join['child'] = $f2[1]; + } + else { + $this->_join['parent'] = $f2[1]; + $this->_join['child'] = $f1[1]; + } + } + else { + // Link table + $f1 = explode( '.', $links[0] ); + $f2 = explode( '.', $links[1] ); + $f3 = explode( '.', $links[2] ); + $f4 = explode( '.', $links[3] ); + + // Discover the name of the link table + if ( $f1[0] !== $editorTable && $f1[0] !== $joinTable ) { + $this->_join['table'] = $f1[0]; + } + else if ( $f2[0] !== $editorTable && $f2[0] !== $joinTable ) { + $this->_join['table'] = $f2[0]; + } + else if ( $f3[0] !== $editorTable && $f3[0] !== $joinTable ) { + $this->_join['table'] = $f3[0]; + } + else { + $this->_join['table'] = $f4[0]; + } + + $this->_join['parent'] = array( $f1[1], $f2[1] ); + $this->_join['child'] = array( $f3[1], $f4[1] ); + } + } + } + + + /** + * Update a row. + * @param \DataTables\Database $db Database reference to use + * @param int $parentId Parent row's primary key value + * @param string[] $data Data to be set for the join + * @private + */ + private function _update_row ( $db, $parentId, $data ) + { + if ( isset($this->_join['table']) ) { + // Got a link table, just insert the pkey references + $db->push( + $this->_join['table'], + array( + $this->_join['parent'][1] => $parentId, + $this->_join['child'][1] => $data[$this->_join['child'][0]] + ), + array( + $this->_join['parent'][1] => $parentId + ) + ); + } + else { + // No link table, just a direct reference + $set = array( + $this->_join['child'] => $parentId + ); + + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + + if ( $field->apply( 'set', $data ) ) { + $set[ $field->dbField() ] = $field->val('set', $data); + } + } + + // Add WHERE conditions + $where = array($this->_join['child'] => $parentId); + for ( $i=0, $ien=count($this->_where) ; $i<$ien ; $i++ ) { + $where[ $this->_where[$i]['key'] ] = $this->_where[$i]['value']; + + // Is there any point in this? Is there any harm? + // Note that `whereSet` is now deprecated + if ( $this->_whereSet ) { + if ( ! is_callable( $this->_where[$i] ) ) { + $set[ $this->_where[$i]['key'] ] = $this->_where[$i]['value']; + } + } + } + + $db->push( $this->_table, $set, $where ); + } + } + + + /** + * Create an SQL string from the fields that this instance knows about for + * using in queries + * @param string $direction Direction: 'get' or 'set'. + * @returns array Fields to include + * @private + */ + private function _fields ( $direction ) + { + $fields = array(); + + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + + if ( $field->apply( $direction, null ) ) { + if ( strpos( $field->dbField() , "." ) === false ) { + $fields[] = $this->_table.'.'.$field->dbField() ." as ".$field->dbField();; + } + else { + $fields[] = $field->dbField();// ." as ".$field->dbField(); + } + } + } + + return $fields; + } + + + /** + * Validate input data + * + * @param array $errors Errors array + * @param Editor $editor Editor instance + * @param string[] $data Data to validate + * @param string $prefix Field error prefix for client-side to show the + * error message on the appropriate field + * @internal + */ + private function _validateFields ( &$errors, $editor, $data, $prefix ) + { + for ( $i=0 ; $i_fields) ; $i++ ) { + $field = $this->_fields[$i]; + $validation = $field->validate( $data, $editor ); + + if ( $validation !== true ) { + $errors[] = array( + "name" => $prefix.$field->name(), + "status" => $validation + ); + } + } + } +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Mjoin.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Mjoin.php.txt new file mode 100644 index 00000000..cd05eecf --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Mjoin.php.txt @@ -0,0 +1,33 @@ +leftJoin()` method. The API API is otherwise + * identical. + * + * This class is recommended over the `Join` class. + */ +class Mjoin extends Join +{ + function __construct( $table=null ) + { + parent::__construct( $table, 'array' ); + } +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Options.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Options.php.txt new file mode 100644 index 00000000..738932ee --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Options.php.txt @@ -0,0 +1,341 @@ +options()} method. + * + * @example + * Get a list of options from the `sites` table + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ) + * ``` + * + * @example + * Get a list of options with custom ordering + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ->order( 'name DESC' ) + * ) + * ``` + * + * @example + * Get a list of options showing the id and name in the label + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( [ 'name', 'id' ] ) + * ->render( function ( $row ) { + * return $row['name'].' ('.$row['id'].')'; + * } ) + * ) + * ``` + */ +class Options extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private parameters + */ + + /** @var string Table to get the information from */ + private $_table = null; + + /** @var string Column name containing the value */ + private $_value = null; + + /** @var string[] Column names for the label(s) */ + private $_label = array(); + + /** Information for left join */ + private $_leftJoin = array(); + + /** @var integer Row limit */ + private $_limit = null; + + /** @var callable Callback function to do rendering of labels */ + private $_renderer = null; + + /** @var callback Callback function to add where conditions */ + private $_where = null; + + /** @var string ORDER BY clause */ + private $_order = null; + + private $_manualAdd = array(); + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Add extra options to the list, in addition to any obtained from the database + * + * @param string $label The label to use for the option + * @param string|null $value Value for the option. If not given, the label will be used + * @return Options Self for chaining + */ + public function add ( $label, $value=null ) + { + if ( $value === null ) { + $value = $label; + } + + $this->_manualAdd[] = array( + 'label' => $label, + 'value' => $value + ); + + return $this; + } + + /** + * Get / set the column(s) to use as the label value of the options + * + * @param null|string|string[] $_ null to get the current value, string or + * array to get. + * @return Options|string[] Self if setting for chaining, array of values if + * getting. + */ + public function label ( $_=null ) + { + if ( $_ === null ) { + return $this; + } + else if ( is_string($_) ) { + $this->_label = array( $_ ); + } + else { + $this->_label = $_; + } + + return $this; + } + + /** + * Set up a left join operation for the options + * + * @param string $table to get the information from + * @param string $field1 the first field to get the information from + * @param string $operator the operation to perform on the two fields + * @param string $field2 the second field to get the information from + * @return self + */ + public function leftJoin ( $table, $field1, $operator, $field2 ) + { + $this->_leftJoin[] = array( + "table" => $table, + "field1" => $field1, + "field2" => $field2, + "operator" => $operator + ); + + return $this; + } + + /** + * Get / set the LIMIT clause to limit the number of records returned. + * + * @param null|number $_ Number of rows to limit the result to + * @return Options|string[] Self if setting for chaining, limit if getting. + */ + public function limit ( $_=null ) + { + return $this->_getSet( $this->_limit, $_ ); + } + + /** + * Get / set the ORDER BY clause to use in the SQL. If this option is not + * provided the ordering will be based on the rendered output, either + * numerically or alphabetically based on the data returned by the renderer. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function order ( $_=null ) + { + return $this->_getSet( $this->_order, $_ ); + } + + /** + * Get / set the label renderer. The renderer can be used to combine + * multiple database columns into a single string that is shown as the label + * to the end user in the list of options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function render ( $_=null ) + { + return $this->_getSet( $this->_renderer, $_ ); + } + + /** + * Get / set the database table from which to gather the options for the + * list. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function table ( $_=null ) + { + return $this->_getSet( $this->_table, $_ ); + } + + /** + * Get / set the column name to use for the value in the options list. This + * would normally be the primary key for the table. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function value ( $_=null ) + { + return $this->_getSet( $this->_value, $_ ); + } + + /** + * Get / set the method to use for a WHERE condition if it is to be + * applied to the query to get the options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function where ( $_=null ) + { + return $this->_getSet( $this->_where, $_ ); + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Execute the options (i.e. get them) + * + * @param Database $db Database connection + * @return array List of options + * @internal + */ + public function exec ( $db ) + { + $label = $this->_label; + $value = $this->_value; + $formatter = $this->_renderer; + + // Create a list of the fields that we need to get from the db + $fields = array(); + $fields[] = $value; + $fields = array_merge( $fields, $label ); + + // We need a default formatter if one isn't provided + if ( ! $formatter ) { + $formatter = function ( $row ) use ( $label ) { + $a = array(); + + for ( $i=0, $ien=count($label) ; $i<$ien ; $i++ ) { + $a[] = $row[ $label[$i] ]; + } + + return implode(' ', $a); + }; + } + + // Get the data + $q = $db + ->query('select') + ->distinct( true ) + ->table( $this->_table ) + ->left_join($this->_leftJoin) + ->get( $fields ) + ->where( $this->_where ); + + if ( $this->_order ) { + // For cases where we are ordering by a field which isn't included in the list + // of fields to display, we need to add the ordering field, due to the + // select distinct. + $orderFields = explode( ',', $this->_order ); + + for ( $i=0, $ien=count($orderFields) ; $i<$ien ; $i++ ) { + $field = strtolower( $orderFields[$i] ); + $field = str_replace( ' asc', '', $field ); + $field = str_replace( ' desc', '', $field ); + $field = trim( $field ); + + if ( ! in_array( $field, $fields ) ) { + $q->get( $field ); + } + } + + $q->order( $this->_order ); + } + + if ( $this->_limit !== null ) { + $q->limit( $this->_limit ); + } + + $rows = $q + ->exec() + ->fetchAll(); + + // Create the output array + $out = array(); + + for ( $i=0, $ien=count($rows) ; $i<$ien ; $i++ ) { + $out[] = array( + "label" => $formatter( $rows[$i] ), + "value" => $rows[$i][$value] + ); + } + + // Stick on any extra manually added options + if ( count( $this->_manualAdd ) ) { + $out = array_merge( $out, $this->_manualAdd ); + } + + // Only sort if there was no SQL order field + if ( ! $this->_order ) { + usort( $out, function ( $a, $b ) { + return is_numeric($a['label']) && is_numeric($b['label']) ? + ($a['label']*1) - ($b['label']*1) : + strcmp( $a['label'], $b['label'] ); + } ); + } + + return $out; + } +} + \ No newline at end of file diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchBuilderOptions.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchBuilderOptions.php.txt new file mode 100644 index 00000000..d6b0f63e --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchBuilderOptions.php.txt @@ -0,0 +1,335 @@ +options()} method. + * + * @example + * Get a list of options from the `sites` table + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ) + * ``` + * + * @example + * Get a list of options with custom ordering + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ->order( 'name DESC' ) + * ) + * ``` + * + * @example + * Get a list of options showing the id and name in the label + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( [ 'name', 'id' ] ) + * ->render( function ( $row ) { + * return $row['name'].' ('.$row['id'].')'; + * } ) + * ) + * ``` + */ +class SearchBuilderOptions extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private parameters + */ + + /** @var string Table to get the information from */ + private $_table = null; + + /** @var string Column name containing the value */ + private $_value = null; + + /** @var string[] Column names for the label(s) */ + private $_label = array(); + + /** @var string[] Column names for left join */ + private $_leftJoin = array(); + + /** @var callable Callback function to do rendering of labels */ + private $_renderer = null; + + /** @var callback Callback function to add where conditions */ + private $_where = null; + + /** @var string ORDER BY clause */ + private $_order = null; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Get / set the column(s) to use as the label value of the options + * + * @param null|string|string[] $_ null to get the current value, string or + * array to get. + * @return Options|string[] Self if setting for chaining, array of values if + * getting. + */ + public function label ( $_=null ) + { + if ( $_ === null ) { + return $this; + } + else if ( is_string($_) ) { + $this->_label = array( $_ ); + } + else { + $this->_label = $_; + } + + return $this; + } + + /** + * Get / set the ORDER BY clause to use in the SQL. If this option is not + * provided the ordering will be based on the rendered output, either + * numerically or alphabetically based on the data returned by the renderer. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function order ( $_=null ) + { + return $this->_getSet( $this->_order, $_ ); + } + + /** + * Get / set the label renderer. The renderer can be used to combine + * multiple database columns into a single string that is shown as the label + * to the end user in the list of options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function render ( $_=null ) + { + return $this->_getSet( $this->_renderer, $_ ); + } + + /** + * Get / set the database table from which to gather the options for the + * list. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function table ( $_=null ) + { + return $this->_getSet( $this->_table, $_ ); + } + + /** + * Get / set the column name to use for the value in the options list. This + * would normally be the primary key for the table. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function value ( $_=null ) + { + return $this->_getSet( $this->_value, $_ ); + } + + /** + * Get / set the method to use for a WHERE condition if it is to be + * applied to the query to get the options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function where ( $_=null ) + { + return $this->_getSet( $this->_where, $_ ); + } + + /** + * Get / set the array values used for a leftJoin condition if it is to be + * applied to the query to get the options. + * + * @param string $table to get the information from + * @param string $field1 the first field to get the information from + * @param string $operator the operation to perform on the two fields + * @param string $field2 the second field to get the information from + * @return self + */ + public function leftJoin ( $table, $field1, $operator, $field2 ) + { + $this->_leftJoin[] = array( + "table" => $table, + "field1" => $field1, + "field2" => $field2, + "operator" => $operator + ); + + return $this; + } + + /** + * Adds all of the where conditions to the desired query + * + * @param string $query the query being built + * @return self + */ + private function _get_where ( $query ) + { + for ( $i=0 ; $i_where) ; $i++ ) { + if ( is_callable( $this->_where[$i] ) ) { + $this->_where[$i]( $query ); + } + else { + $query->where( + $this->_where[$i]['key'], + $this->_where[$i]['value'], + $this->_where[$i]['op'] + ); + } + } + return $this; + } + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Execute the options (i.e. get them) + * + * @param Database $db Database connection + * @return array List of options + * @internal + */ + public function exec ( $field, $editor, $http, $fields, $leftJoinIn ) + { + // If the value is not yet set then set the variable to be the field name + if ( $this->_value == null) { + $value = $field->dbField(); + } + else { + $value = $this->_value; + } + + $readTable = $editor->readTable(); + + // If the table is not yet set then set the table variable to be the same as editor + // This is not taking a value from the SearchBuilderOptions instance as the table should be defined in value/label. This throws up errors if not. + if($this->_table !== null) { + $table = $this->_table; + } + else if(count($readTable) > 0) { + $table = $readTable; + } + else { + $table = $editor->table(); + } + + // If the label value has not yet been set then just set it to be the same as value + if ( $this->_label == null ) { + $label = $value; + } + else { + $label = $this->_label[0]; + } + + // Set the database from editor + $db = $editor->db(); + + $formatter = $this->_renderer; + + // We need a default formatter if one isn't provided + if ( ! $formatter ) { + $formatter = function ( $str ) { + return $str; + }; + } + + // Set up the join variable so that it will fit nicely later + $leftJoin = gettype($this->_leftJoin) === 'array' ? + $this->_leftJoin : + array($this->_leftJoin); + + foreach($leftJoinIn as $lj) { + $found = false; + foreach($leftJoin as $lje) { + if($lj['table'] === $lje['table']) { + $found = true; + } + } + if(!$found) { + array_push($leftJoin, $lj); + } + } + + // Set the query to get the current counts for viewTotal + $query = $db + ->query('select') + ->table( $table ) + ->left_join($leftJoin); + + if ( $field->apply('get') && $field->getValue() === null ) { + $query->get($value." as value", $label." as label"); + $query->group_by( $value); + } + + $res = $query + ->exec() + ->fetchAll(); + + // Create the output array + $out = array(); + + for( $j=0 ; $j $res[$j]['value'], + "label" => $res[$j]['label'] + ); + } + + // Only sort if there was no SQL order field + if ( ! $this->_order ) { + usort( $out, function ( $a, $b ) { + return is_numeric($a['label']) && is_numeric($b['label']) ? + ($a['label']*1) - ($b['label']*1) : + strcmp( $a['label'], $b['label'] ); + } ); + } + + return $out; + } +} + \ No newline at end of file diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchPaneOptions.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchPaneOptions.php.txt new file mode 100644 index 00000000..e209111f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/SearchPaneOptions.php.txt @@ -0,0 +1,467 @@ +options()} method. + * + * @example + * Get a list of options from the `sites` table + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ) + * ``` + * + * @example + * Get a list of options with custom ordering + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( 'name' ) + * ->order( 'name DESC' ) + * ) + * ``` + * + * @example + * Get a list of options showing the id and name in the label + * ```php + * Field::inst( 'users.site' ) + * ->options( Options::inst() + * ->table( 'sites' ) + * ->value( 'id' ) + * ->label( [ 'name', 'id' ] ) + * ->render( function ( $row ) { + * return $row['name'].' ('.$row['id'].')'; + * } ) + * ) + * ``` + */ +class SearchPaneOptions extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private parameters + */ + + /** @var string Table to get the information from */ + private $_table = null; + + /** @var string Column name containing the value */ + private $_value = null; + + /** @var string[] Column names for the label(s) */ + private $_label = array(); + + /** @var string[] Column names for left join */ + private $_leftJoin = array(); + + /** @var callable Callback function to do rendering of labels */ + private $_renderer = null; + + /** @var callback Callback function to add where conditions */ + private $_where = null; + + /** @var string ORDER BY clause */ + private $_order = null; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Get / set the column(s) to use as the label value of the options + * + * @param null|string|string[] $_ null to get the current value, string or + * array to get. + * @return Options|string[] Self if setting for chaining, array of values if + * getting. + */ + public function label ( $_=null ) + { + if ( $_ === null ) { + return $this; + } + else if ( is_string($_) ) { + $this->_label = array( $_ ); + } + else { + $this->_label = $_; + } + + return $this; + } + + /** + * Get / set the ORDER BY clause to use in the SQL. If this option is not + * provided the ordering will be based on the rendered output, either + * numerically or alphabetically based on the data returned by the renderer. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function order ( $_=null ) + { + return $this->_getSet( $this->_order, $_ ); + } + + /** + * Get / set the label renderer. The renderer can be used to combine + * multiple database columns into a single string that is shown as the label + * to the end user in the list of options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function render ( $_=null ) + { + return $this->_getSet( $this->_renderer, $_ ); + } + + /** + * Get / set the database table from which to gather the options for the + * list. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function table ( $_=null ) + { + return $this->_getSet( $this->_table, $_ ); + } + + /** + * Get / set the column name to use for the value in the options list. This + * would normally be the primary key for the table. + * + * @param null|string $_ String to set, null to get current value + * @return Options|string Self if setting for chaining, string if getting. + */ + public function value ( $_=null ) + { + return $this->_getSet( $this->_value, $_ ); + } + + /** + * Get / set the method to use for a WHERE condition if it is to be + * applied to the query to get the options. + * + * @param null|callable $_ Function to set, null to get current value + * @return Options|callable Self if setting for chaining, callable if + * getting. + */ + public function where ( $_=null ) + { + return $this->_getSet( $this->_where, $_ ); + } + + /** + * Get / set the array values used for a leftJoin condition if it is to be + * applied to the query to get the options. + * + * @param string $table to get the information from + * @param string $field1 the first field to get the information from + * @param string $operator the operation to perform on the two fields + * @param string $field2 the second field to get the information from + * @return self + */ + public function leftJoin ( $table, $field1, $operator, $field2 ) + { + $this->_leftJoin[] = array( + "table" => $table, + "field1" => $field1, + "field2" => $field2, + "operator" => $operator + ); + + return $this; + } + + /** + * Adds all of the where conditions to the desired query + * + * @param string $query the query being built + * @return self + */ + private function _get_where ( $query ) + { + for ( $i=0 ; $i_where) ; $i++ ) { + if ( is_callable( $this->_where[$i] ) ) { + $this->_where[$i]( $query ); + } + else { + $query->where( + $this->_where[$i]['key'], + $this->_where[$i]['value'], + $this->_where[$i]['op'] + ); + } + } + return $this; + } + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Execute the options (i.e. get them) + * + * @param Database $db Database connection + * @return array List of options + * @internal + */ + public function exec ( $field, $editor, $http, $fields, $leftJoinIn ) + { + $db = $editor->db(); + $readTable = $editor->readTable(); + $filteringActive = isset($http['searchPanes']); + $viewCount = isset($http['searchPanes_options']) + ? filter_var($http['searchPanes_options']['viewCount'], FILTER_VALIDATE_BOOLEAN) + : true; + $viewTotal = isset($http['searchPanes_options']) + ? filter_var($http['searchPanes_options']['viewTotal'], FILTER_VALIDATE_BOOLEAN) + : false; + $cascade = isset($http['searchPanes_options']) + ? filter_var($http['searchPanes_options']['cascade'], FILTER_VALIDATE_BOOLEAN) + : false; + $entries = null; + + // If the value is not yet set then set the variable to be the field name + $value = $this->_value == null + ? $field->dbField() + : $this->_value; + + + // If the table is not yet set then set the table variable to be the same as editor + // This is not taking a value from the SearchPaneOptions instance as the table should be defined in value/label. This throws up errors if not. + if($this->_table !== null) { + $table = $this->_table; + } + else if(count($readTable) > 0) { + $table = $readTable; + } + else { + $table = $editor->table(); + } + + // If the label value has not yet been set then just set it to be the same as value + $label = $this->_label == null + ? $value + : $this->_label[0]; + + $formatter = $this->_renderer + ? $this->_renderer + : function ( $str ) { + return $str; + }; + + // Set up the join variable so that it will fit nicely later + $leftJoin = gettype($this->_leftJoin) === 'array' ? + $this->_leftJoin : + array($this->_leftJoin); + + foreach($leftJoinIn as $lj) { + $found = false; + + foreach($leftJoin as $lje) { + if($lj['table'] === $lje['table']) { + $found = true; + } + } + + if(!$found) { + array_push($leftJoin, $lj); + } + } + + // Get the data for the pane options + $q = $db + ->query('select') + ->distinct(true) + ->table( $table ) + ->get( $label." as label", $value." as value" ) + ->left_join($leftJoin) + ->group_by( $value ) + ->where( $this->_where ); + + // If not cascading, then the total and count must be the same + if ($viewTotal) { + $q->get("COUNT(*) as total"); + } + + if ( $this->_order ) { + // For cases where we are ordering by a field which isn't included in the list + // of fields to display, we need to add the ordering field, due to the + // select distinct. + $orderFields = explode( ',', $this->_order ); + + for ( $i=0, $ien=count($orderFields) ; $i<$ien ; $i++ ) { + $orderField = strtolower( $orderFields[$i] ); + $orderField = str_replace( ' asc', '', $orderField ); + $orderField = str_replace( ' desc', '', $orderField ); + $orderField = trim( $orderField ); + + if ( ! in_array( $orderField, $fields ) ) { + $q->get( $orderField ); + } + } + + $q->order( $this->_order ); + } + + $rows = $q + ->exec() + ->fetchAll(); + + // Remove any filtering entries that don't exist in the database (values might have changed) + if (isset($http['searchPanes'][$field->name()])) { + $values = array_column($rows, 'value'); + $selected = $http['searchPanes'][$field->name()]; + + for ($i=0 ; $iname()], $i, 1); + } + } + } + + // Apply filters to cascade tables + if ($viewCount || $cascade) { + $query = $db + ->query('select') + ->distinct(true) + ->table($table) + ->left_join($leftJoin); + + if ( $field->apply('get') && $field->getValue() === null ) { + $query->get($value." as value"); + $query->group_by($value); + + // We viewTotal is enabled, we need to do a count to get the number of records, + // If it isn't we still need to know it exists, but don't care about the cardinality + if ($viewCount) { + $query->get("COUNT(*) as count"); + } + else { + $query->get("(1) as count"); + } + } + + // Construct the where queries based upon the options selected by the user + foreach ($fields as $fieldOpt) { + $add = false; + $fieldName = $fieldOpt->name(); + + // If there is a last value set then a slightly different set of results is required for cascade + // That panes results are based off of the results when only considering the selections of all of the others + if (isset($http['searchPanesLast']) && $field->name() === $http['searchPanesLast']) { + if (isset($http['searchPanes'][$fieldName]) && $fieldName !== $http['searchPanesLast']) { + $add = true; + } + } + else if (isset($http['searchPanes']) && isset($http['searchPanes'][$fieldName])) { + $add = true; + } + + if ($add) { + $query->where( function ($q) use ($fieldOpt, $http, $fieldName) { + for($j=0, $jen=count($http['searchPanes'][$fieldName]); $j < $jen ; $j++) { + $q->or_where( + $fieldOpt->dbField(), + isset($http['searchPanes_null'][$fieldName][$j]) + ? null + : $http['searchPanes'][$fieldName][$j], + '=' + ); + } + }); + } + } + + $entriesRows = $query + ->exec() + ->fetchAll(); + + // Key by the value for fast lookup + $entriesKeys = array_column($entriesRows, 'value'); + $entries = array_combine($entriesKeys, $entriesRows); + } + + $out = array(); + + for ( $i=0, $ien=count($rows) ; $i<$ien ; $i++ ) { + $row = $rows[$i]; + $value = $row['value']; + $total = isset($row['total']) ? $row['total'] : null; + $count = $total; + + if ($entries !== null) { + $count = isset($entries[$value]) && isset($entries[$value]['count']) + ? $entries[$value]['count'] + : 0; + + // For when viewCount is enabled and viewTotal is not + // the total needs to be the same as the count! + if ($total === null) { + $total = $count; + } + } + + $out[] = array( + "label" => $formatter($row['label']), + "total" => $total, + "value" => $value, + "count" => $count + ); + } + + // Only sort if there was no SQL order field + if ( ! $this->_order ) { + usort( $out, function ( $a, $b ) { + $aLabel = $a['label']; + $bLabel = $b['label']; + + if ($aLabel === null) { + $aLabel = ''; + } + + if ($bLabel === null) { + $bLabel = ''; + } + + return is_numeric($aLabel) && is_numeric($bLabel) ? + ($aLabel*1) - ($bLabel*1) : + strcmp( $aLabel, $bLabel ); + } ); + } + + return $out; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Upload.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Upload.php.txt new file mode 100644 index 00000000..4862e1dd --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Upload.php.txt @@ -0,0 +1,735 @@ +upload()} method. When Editor detects a file upload for that file the + * information provided for this instance is executed. + * + * The configuration is primarily driven through the {@see Upload->db()} and + * {@see Upload->action()} methods: + * + * * {@see Upload->db()} Describes how information about the uploaded file is to be + * stored on the database. + * * {@see Upload->action()} Describes where the file should be stored on the file system + * and provides the option of specifying a custom action when a file is + * uploaded. + * + * Both methods are optional - you can store the file on the server using the + * {@see Upload->db()} method only if you want to store the file in the database, or if + * you don't want to store relational data on the database us only + * {@see Upload->action()}. However, the majority of the time it is best to use + * both - store information about the file on the database for fast retrieval (using a + * {@see Editor->leftJoin()} for example) and the file on the file system for direct + * web access. + * + * @example + * Store information about a file in a table called `files` and the actual + * file in an `uploads` directory. + * ``` + * Field::inst( 'imageId' ) + * ->upload( + * Upload::inst( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' ) + * ->db( 'files', 'id', array( + * 'webPath' => Upload::DB_WEB_PATH, + * 'fileName' => Upload::DB_FILE_NAME, + * 'fileSize' => Upload::DB_FILE_SIZE, + * 'systemPath' => Upload::DB_SYSTEM_PATH + * ) ) + * ->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" ) + * ) + * ``` + * + * @example + * As above, but with PHP 5.4 (which allows chaining from new instances of a + * class) + * ``` + * newField( 'imageId' ) + * ->upload( + * new Upload( $_SERVER['DOCUMENT_ROOT'].'/uploads/__ID__.__EXTN__' ) + * ->db( 'files', 'id', array( + * 'webPath' => Upload::DB_WEB_PATH, + * 'fileName' => Upload::DB_FILE_NAME, + * 'fileSize' => Upload::DB_FILE_SIZE, + * 'systemPath' => Upload::DB_SYSTEM_PATH + * ) ) + * ->allowedExtensions( array( 'png', 'jpg' ), "Please upload an image file" ) + * ) + * ``` + */ +class Upload extends DataTables\Ext { + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Constants + */ + + /** Database value option (`Db()`) - File content. This should be written to + * a blob. Typically this should be avoided and the file saved on the file + * system, but there are cases where it can be useful to store the file in + * the database. + */ + const DB_CONTENT = 'editor-content'; + + /** Database value option (`Db()`) - Content type */ + const DB_CONTENT_TYPE = 'editor-contentType'; + + /** Database value option (`Db()`) - File extension */ + const DB_EXTN = 'editor-extn'; + + /** Database value option (`Db()`) - File name (with extension) */ + const DB_FILE_NAME = 'editor-fileName'; + + /** Database value option (`Db()`) - File size (bytes) */ + const DB_FILE_SIZE = 'editor-fileSize'; + + /** Database value option (`Db()`) - MIME type */ + const DB_MIME_TYPE = 'editor-mimeType'; + + /** Database value option (`Db()`) - Full system path to the file */ + const DB_SYSTEM_PATH = 'editor-systemPath'; + + /** Database value option (`Db()`) - HTTP path to the file. This is derived + * from the system path by removing `$_SERVER['DOCUMENT_ROOT']`. If your + * images live outside of the document root a custom value would be to be + * used. + */ + const DB_WEB_PATH = 'editor-webPath'; + + /** Read from the database - don't write to it + */ + const DB_READ_ONLY = 'editor-readOnly'; + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Private parameters + */ + + private $_action = null; + private $_dbCleanCallback = null; + private $_dbCleanTableField = null; + private $_dbTable = null; + private $_dbPKey = null; + private $_dbFields = null; + private $_dbFormat = null; + private $_extns = null; + private $_extnError = null; + private $_error = null; + private $_mode = 0644; + private $_validators = array(); + private $_where = array(); + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constructor + */ + + /** + * Upload instance constructor + * @param string|callable $action Action to take on upload - this is applied + * directly to {@see Upload->action()}. + */ + function __construct( $action=null ) + { + if ( $action ) { + $this->action( $action ); + } + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + */ + + /** + * Set the action to take when a file is uploaded. This can be either of: + * + * * A string - the value given is the full system path to where the + * uploaded file is written to. The value given can include three "macros" + * which are replaced by the script dependent on the uploaded file: + * * `__EXTN__` - the file extension + * * `__NAME__` - the uploaded file's name (including the extension) + * * `__ID__` - Database primary key value if the {@see Upload->db()} method is + * used. + * * A closure - if a function is given the responsibility of what to do + * with the uploaded file is transferred to this function. That will + * typically involve writing it to the file system so it can be used + * later. + * + * @param string|callable $action Action to take - see description above. + * @return self Current instance, used for chaining + */ + public function action ( $action ) + { + $this->_action = $action; + + return $this; + } + + + /** + * An array of valid file extensions that can be uploaded. This is for + * simple validation that the file is of the expected type - for example you + * might use `[ 'png', 'jpg', 'jpeg', 'gif' ]` for images. The check is + * case-insensitive. If no extensions are given, no validation is performed + * on the file extension. + * + * @param string[] $extn List of file extensions that are allowable for + * the upload + * @param string $error Error message if a file is uploaded that doesn't + * match the valid list of extensions. + * @return self Current instance, used for chaining + * @deprecated Use Validate::fileExtensions + */ + public function allowedExtensions ( $extn, $error="This file type cannot be uploaded" ) + { + $this->_extns = $extn; + $this->_extnError = $error; + + return $this; + } + + + /** + * Database configuration method. When used, this method will tell Editor + * what information you want written to a database on file upload, should + * you wish to store relational information about your file on the database + * (this is generally recommended). + * + * @param string $table The name of the table where the file information + * should be stored + * @param string $pkey Primary key column name. The `Upload` class + * requires that the database table have a single primary key so each + * row can be uniquely identified. + * @param array $fields A list of the fields to be written to on upload. + * The property names are the database columns and the values can be + * defined by the constants of this class. The value can also be a + * string or a closure function if you wish to send custom information + * to the database. + * @param callable Formatting function that can change the data obtained + * from the database. Only gets a single parameter passed in - the + * database row for the file that is read. + * @return self Current instance, used for chaining + */ + public function db ( $table, $pkey, $fields, $format=null ) + { + $this->_dbTable = $table; + $this->_dbPKey = $pkey; + $this->_dbFields = $fields; + $this->_dbFormat = $format; + + return $this; + } + + + /** + * Set a callback function that is used to remove files which no longer have + * a reference in a source table. + * + * @param callable $callback Function that will be executed on clean. It is + * given an array of information from the database about the orphaned + * rows, and can return true to indicate that the rows should be + * removed from the database. Any other return value (including none) + * will result in the records being retained. + * @return self Current instance, used for chaining + */ + public function dbClean( $tableField, $callback=null ) + { + // Argument swapping + if ( $callback === null ) { + $callback = $tableField; + $tableField = null; + } + + $this->_dbCleanCallback = $callback; + $this->_dbCleanTableField = $tableField; + + return $this; + } + + + /** + * Set the permissions on the file after it has been uploaded using + * chmod. + */ + public function mode( $m ) { + $this->_mode = $m; + + return $this; + } + + + /** + * Add a validation method to check file uploads. Multiple validators can be + * added by calling this method multiple times - they will be executed in + * sequence when a file has been uploaded. + * + * @param callable $fn Validation function. A PHP `$_FILES` parameter is + * passed in for the uploaded file and the return is either a string + * (validation failed and error message), or `null` (validation passed). + * @return self Current instance, used for chaining + */ + public function validator ( $fn ) + { + $this->_validators[] = $fn; + + return $this; + } + + + /** + * Add a condition to the data to be retrieved from the database. This + * must be given as a function to be executed (usually anonymous) and + * will be passed in a single argument, the `Query` object, to which + * conditions can be added. Multiple calls to this method can be made. + * + * @param callable $fn Where function. + * @return self Current instance, used for chaining + */ + public function where ( $fn ) + { + $this->_where[] = $fn; + + return $this; + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Get database information data from the table + * + * @param \DataTables\Database $db Database + * @param number[] [$ids=null] Limit to a specific set of ids + * @return array Database information + * @internal + */ + public function data ( $db, $ids=null ) + { + if ( ! $this->_dbTable ) { + return null; + } + + // Select the details requested, for the columns requested + $q = $db + ->query( 'select' ) + ->table( $this->_dbTable ) + ->get( $this->_dbPKey ); + + foreach ( $this->_dbFields as $column => $prop ) { + if ( $prop !== self::DB_CONTENT ) { + $q->get( $column ); + } + } + + if ( $ids !== null ) { + $q->where_in( $this->_dbPKey, $ids ); + } + + for ( $i=0, $ien=count($this->_where) ; $i<$ien ; $i++ ) { + $q->where( $this->_where[$i] ); + } + + $result = $q->exec()->fetchAll(); + $out = array(); + + for ( $i=0, $ien=count($result) ; $i<$ien ; $i++ ) { + if ($this->_dbFormat) { + $this->_dbFormat( $result[$i] ); + } + + $out[ $result[$i][ $this->_dbPKey ] ] = $result[$i]; + } + + return $out; + } + + + /** + * Clean the database + * @param \DataTables\Editor $editor Calling Editor instance + * @param Field $field Host field + * @internal + */ + public function dbCleanExec ( $editor, $field ) + { + // Database and file system clean up BEFORE adding the new file to + // the db, otherwise it will be removed immediately + $tables = $editor->table(); + $this->_dbClean( $editor->db(), $tables[0], $field->dbField() ); + } + + + /** + * Get the set error message + * + * @return string Class error + * @internal + */ + public function error () + { + return $this->_error; + } + + + /** + * Execute an upload + * + * @param \DataTables\Editor $editor Calling Editor instance + * @return int Primary key value + * @internal + */ + public function exec ( $editor ) + { + $id = null; + $upload = $_FILES['upload']; + + // Validation - PHP standard validation + if ( $upload['error'] !== UPLOAD_ERR_OK ) { + if ( $upload['error'] === UPLOAD_ERR_INI_SIZE ) { + $this->_error = "File exceeds maximum file upload size"; + } + else { + $this->_error = "There was an error uploading the file (".$upload['error'].")"; + } + return false; + } + + // Validation - acceptable file extensions + if ( is_array( $this->_extns ) ) { + $extn = pathinfo($upload['name'], PATHINFO_EXTENSION); + + if ( in_array( strtolower($extn), array_map( 'strtolower', $this->_extns ) ) === false ) { + $this->_error = $this->_extnError; + return false; + } + } + + // Validation - custom callback + for ( $i=0, $ien=count($this->_validators) ; $i<$ien ; $i++ ) { + $res = $this->_validators[$i]( $upload ); + + if ( is_string( $res ) ) { + $this->_error = $res; + return false; + } + } + + // Database + if ( $this->_dbTable ) { + foreach ( $this->_dbFields as $column => $prop ) { + // We can't know what the path is, if it has moved into place + // by an external function - throw an error if this does happen + if ( ! is_string( $this->_action ) && + ($prop === self::DB_SYSTEM_PATH || $prop === self::DB_WEB_PATH ) + ) { + $this->_error = "Cannot set path information in database ". + "if a custom method is used to save the file."; + + return false; + } + } + + // Commit to the database + $id = $this->_dbExec( $upload, $editor->db() ); + } + + // Perform file system actions + return $this->_actionExec( $upload, $id ); + } + + + /** + * Get the primary key column for the table + * + * @return string Primary key column name + * @internal + */ + public function pkey () + { + return $this->_dbPKey; + } + + + /** + * Get the db table name + * + * @return string DB table name + * @internal + */ + public function table () + { + return $this->_dbTable; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods + */ + + /** + * Execute the configured action for the upload + * + * @param array $upload $_FILES['upload'] + * @param int $id Primary key value + * @return int File identifier - typically the primary key + */ + private function _actionExec ( $upload, $id ) + { + if ( ! is_string( $this->_action ) ) { + // Custom function + $action = $this->_action; + return $action( $upload, $id ); + } + + // Default action - move the file to the location specified by the + // action string + $to = $this->_path( $upload['name'], $id ); + $res = rename( $upload['tmp_name'], $to ); + + if ( $res === false ) { + $this->_error = "An error occurred while moving the uploaded file."; + return false; + } + + if ($this->_mode) { + chmod($to, $this->_mode); + } + + return $id !== null ? + $id : + $to; + } + + /** + * Perform the database clean by first getting the information about the + * orphaned rows and then calling the callback function. The callback can + * then instruct the rows to be removed through the return value. + * + * @param \DataTables\Database $db Database instance + * @param string $editorTable Editor Editor instance table name + * @param string $fieldName Host field's name + */ + private function _dbClean ( $db, $editorTable, $fieldName ) + { + $callback = $this->_dbCleanCallback; + + if ( ! $this->_dbTable || ! $callback ) { + return; + } + + // If there is a table / field that we should use to check if the value + // is in use, then use that. Otherwise we'll try to use the information + // from the Editor / Field instance. + if ( $this->_dbCleanTableField ) { + $fieldName = $this->_dbCleanTableField; + } + + $a = explode('.', $fieldName); + if ( count($a) === 1 ) { + $table = $editorTable; + $field = $a[0]; + } + else if ( count($a) === 2 ) { + $table = $a[0]; + $field = $a[1]; + } + else { + $table = $a[1]; + $field = $a[2]; + } + + // Select the details requested, for the columns requested + $q = $db + ->query( 'select' ) + ->table( $this->_dbTable ) + ->get( $this->_dbPKey ); + + foreach ( $this->_dbFields as $column => $prop ) { + if ( $prop !== self::DB_CONTENT ) { + $q->get( $column ); + } + } + + $q->where( $this->_dbPKey, '(SELECT '.$field.' FROM '.$table.' WHERE '.$field.' IS NOT NULL)', 'NOT IN', false ); + + $data = $q->exec()->fetchAll(); + + if ( count( $data ) === 0 ) { + return; + } + + $result = $callback( $data ); + + // Delete the selected rows, iff the developer says to do so with the + // returned value (i.e. acknowledge that the files have be removed from + // the file system) + if ( $result === true ) { + $qDelete = $db + ->query( 'delete' ) + ->table( $this->_dbTable ); + + for ( $i=0, $ien=count( $data ) ; $i<$ien ; $i++ ) { + $qDelete->or_where( $this->_dbPKey, $data[$i][ $this->_dbPKey ] ); + } + + $qDelete->exec(); + } + } + + /** + * Add a record to the database for a newly uploaded file + * + * @param array $upload $_FILES['upload'] + * @param \DataTables\Database $db Database instance + * @return int Primary key value for the newly uploaded file + */ + private function _dbExec ( $upload, $db ) + { + $pathFields = array(); + $insertedId = null; + + // Insert the details requested, for the columns requested + $q = $db + ->query( 'insert' ) + ->table( $this->_dbTable ) + ->pkey( $this->_dbPKey ); + + foreach ( $this->_dbFields as $column => $prop ) { + switch ( $prop ) { + case self::DB_READ_ONLY: + break; + + case self::DB_CONTENT: + $q->set( $column, file_get_contents($upload['tmp_name']) ); + break; + + case self::DB_CONTENT_TYPE: + case self::DB_MIME_TYPE: + $finfo = finfo_open(FILEINFO_MIME); + $mime = finfo_file($finfo, $upload['tmp_name']); + finfo_close($finfo); + + $q->set( $column, $mime ); + break; + + case self::DB_EXTN: + $extn = pathinfo($upload['name'], PATHINFO_EXTENSION); + $q->set( $column, $extn ); + break; + + case self::DB_FILE_NAME: + $q->set( $column, $upload['name'] ); + break; + + case self::DB_FILE_SIZE: + $q->set( $column, $upload['size'] ); + break; + + case self::DB_SYSTEM_PATH: + $pathFields[ $column ] = self::DB_SYSTEM_PATH; + $q->set( $column, '-' ); // Use a temporary value to avoid cases + break; // where the db will reject empty values + + case self::DB_WEB_PATH: + $pathFields[ $column ] = self::DB_WEB_PATH; + $q->set( $column, '-' ); // Use a temporary value (as above) + break; + + default: + $val = $prop; + + // Callable function - execute to get the value + if ( is_callable($prop) && is_object($prop) ) { + $val = $prop( $db, $upload ); + } + + // If the primary key value was set - use that + if ( $column === $this->_dbPKey ) { + $insertedId = $val; + } + + if (is_string($val) && ! empty($val)) { + // Allow for replacement of __ID__, etc when the value is a string + $pathFields[ $column ] = $val; + $q->set( $column, '-' ); // Use a temporary value (as above) + } + else { + $q->set( $column, $val ); + } + + break; + } + } + + $res = $q->exec(); + $id = $insertedId !== null + ? $insertedId + : $res->insertId(); + + // Update the newly inserted row with the path information. We have to + // use a second statement here as we don't know in advance what the + // database schema is and don't want to prescribe that certain triggers + // etc be created. It makes it a bit less efficient but much more + // compatible + if ( count( $pathFields ) ) { + // For this to operate the action must be a string, which is + // validated in the `exec` method + $path = $this->_path( $upload['name'], $id ); + $webPath = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path); + $q = $db + ->query( 'update' ) + ->table( $this->_dbTable ) + ->where( $this->_dbPKey, $id ); + + foreach ( $pathFields as $column => $type ) { + $q->set( $column, $type === self::DB_WEB_PATH ? $webPath : $path ); + } + + $q->exec(); + } + + return $id; + } + + + /** + * Apply macros to a user specified path + * + * @param string $name File path + * @param int $id Primary key value for the file + * @return string Resolved path + */ + private function _path ( $name, $id ) + { + $extn = pathinfo( $name, PATHINFO_EXTENSION ); + + $to = $this->_action; + $to = str_replace( "__NAME__", $name, $to ); + $to = str_replace( "__ID__", $id, $to ); + $to = str_replace( "__EXTN__", $extn, $to ); + + return $to; + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Validate.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Validate.php.txt new file mode 100644 index 00000000..c97d749a --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/Validate.php.txt @@ -0,0 +1,1396 @@ +validator( Validate::required() ) + * ``` + * + * @example + * ``` + * // Don't require a field to be submitted, but if it is submitted, it + * // must be non-empty + * Field::inst( 'reg_date' )->validator( Validate::notEmpty() ) + * ``` + * + * @example + * ``` + * // Date validation + * Field::inst( 'reg_date' )->validator( Validate::dateFormat( 'D, d M y' ) ) + * ``` + * + * @example + * ``` + * // Date validation with a custom error message + * Field::inst( 'reg_date' )->validator( Validate::dateFormat( 'D, d M y', + * ValidateOptions::inst() + * ->message( 'Invalid date' ) + * ) ) + * ``` + * + * @example + * ``` + * // Require a non-empty e-mail address + * Field::inst( 'reg_date' )->validator( Validate::email( ValidateOptions::inst() + * ->empty( false ) + * ) ) + * ``` + * + * @example + * ``` + * // Custom validation - closure + * Field::inst( 'engine' )->validator( function($val, $data, $opts) { + * if ( ! preg_match( '/^1/', $val ) ) { + * return "Value must start with a 1"; + * } + * return true; + * } ) + * ``` + */ +class Validate { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal functions + */ + + /** + * "Magic" method to automatically apply the required check to any of the + * static methods simply by adding '_required' or '_empty' to the end of the + * method's name, depending on if you need the field to be submitted or not. + * + * This is retained for backwards compatibility, but the validation options + * are now the recommended way of indicating that a field is required. + * + * @internal + * @param string $name Function name + * @param array $arguments Function arguments + * @return mixed|string + */ + public static function __callStatic( $name, $arguments ) { + if ( preg_match( '/_required$/', $name ) ) { + if ( $arguments[0] === null || $arguments[0] === '' ) { + return 'This field is required'; + } + + return call_user_func_array( + __NAMESPACE__.'\Validate::'.str_replace( '_required', '', $name ), + $arguments + ); + } + } + + + /** + * Extend the options from the user function and the validation function + * with core defaults. + * + * @internal + */ + public static function _extend( $userOpts, $prop, $fnOpts ) { + $cfg = array( + 'message' => 'Input not valid', + 'required' => false, + 'empty' => true, + 'optional' => true + ); + + if ( ! is_array( $userOpts ) ) { + if ( $prop ) { + $cfg[ $prop ] = $userOpts; + } + + // Not an array, but the non-array case has been handled above, so + // just an empty array + $userOpts = array(); + } + + // Merge into a single array - first array gets priority if there is a + // key clash, so user first, then function commands and finally the + // global options + $cfg = $userOpts + $fnOpts + $cfg; + + return $cfg; + } + + + /** + * Perform common validation using the configuration parameters + * + * @internal + */ + public static function _common( $val, $opts ) { + $optional = $opts->optional(); + $empty = $opts->allowEmpty(); + + // Error state tests + if ( ! $optional && $val === null ) { + // Value must be given + return false; + } + else if ( $empty === false && $val === '' ) { + // Value must not be empty + return false; + } + + // Validation passed states + if ( $optional && $val === null ) { + return true; + } + else if ( $empty === true && $val === '' ) { + return true; + } + + // Have the specific validation function perform its tests + return null; + } + + /** + * Convert the old style validation parameters into ValidateOptions + * + * @internal + */ + public static function _commonLegacy( $cfg ) { + $opts = new ValidateOptions(); + + if ( is_array( $cfg ) ) { + // `required` is a legacy shortcut for optional=false, empty=false + if ( isset( $cfg['required'] ) ) { + $opts->optional( false ); + $opts->allowEmpty( false ); + } + + if ( isset( $cfg['empty'] ) ) { + $opts->allowEmpty( $cfg['empty'] ); + } + + if ( isset( $cfg['message'] ) ) { + $opts->message( $cfg['message'] ); + } + + if ( isset( $cfg['optional'] ) ) { + $opts->optional( $cfg['optional'] ); + } + } + + return $opts; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Basic validation + */ + + /** + * No validation - all inputs are valid. + * @return callable Validation function + */ + public static function none() { + return function ( $val, $data, $field, $host ) { + return true; + }; + } + + + /** + * Basic validation - this is used to perform the validation provided by the + * validation options only. If the validation options pass (e.g. `required`, + * `empty` and `optional`) then the validation will pass regardless of the + * actual value. + * + * Note that there are two helper short-cut methods that provide the same + * function as this method, but are slightly shorter: + * + * ``` + * // Required: + * Validate::required() + * + * // is the same as + * Validate::basic( $val, $data, array( + * "required" => true + * ); + * ``` + * + * ``` + * // Optional, but not empty if given: + * Validate::notEmpty() + * + * // is the same as + * Validate::basic( $val, $data, array( + * "empty" => false + * ); + * ``` + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + static function basic( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + return $common === false ? + $opts->message() : + true; + }; + } + + + /** + * Required field - there must be a value and it must be a non-empty value + * + * This is a helper short-cut method which is the same as: + * + * ``` + * Validate::basic( $val, $data, array( + * "required" => true + * ); + * ``` + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + static function required( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + $opts->allowEmpty( false ); + $opts->optional( false ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + return $common === false ? + $opts->message() : + true; + }; + } + + + /** + * Optional field, but if given there must be a non-empty value + * + * This is a helper short-cut method which is the same as: + * + * ``` + * Validate::basic( $val, $data, array( + * "empty" => false + * ); + * ``` + * + * @param ValidateOptions $cfg Validation options + * @return callable Validation function + */ + static function notEmpty( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + $opts->allowEmpty( false ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + return $common === false ? + $opts->message() : + true; + }; + } + + + /** + * Validate an input as a boolean value. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function boolean( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + if ( filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) === null ) { + return $opts->message(); + } + return true; + }; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Number validation methods + */ + + /** + * Check that any input is numeric. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. Additional options: + * * `decimal`: is available to indicate what character should be used + * as the decimal + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function numeric ( $decimal=".", $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $decimal ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + if ( $decimal !== '.' ) { + $val = str_replace( $decimal, '.', $val ); + } + + return ! is_numeric( $val ) ? + $opts->message() : + true; + }; + } + + /** + * Check for a numeric input and that it is greater than a given value. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. Additional options: + * * `min`: indicate the minimum value. If only the default validation + * options are required, this parameter can be given as an integer + * value, which will be used as the minimum value. + * * `decimal`: is available to indicate what character should be used + * as the decimal + * separator (default '.'). + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function minNum ( $min, $decimal=".", $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $min, $decimal ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $fn = Validate::numeric( $decimal, $opts ); + $numeric = $fn( $val, $data, $field, $host ); + + if ( $numeric !== true ) { + return $numeric; + } + + if ( $decimal !== '.' ) { + $val = str_replace( $decimal, '.', $val ); + } + + return $val < $min ? + $opts->message() : + true; + }; + } + + /** + * Check for a numeric input and that it is less than a given value. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. + * * `max`: indicate the maximum value. If only the default validation + * options are required, this parameter can be given as an integer + * value, which will be used as the maximum value. + * * `decimal`: is available to indicate what character should be used + * as the decimal + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function maxNum ( $max, $decimal=".", $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $max, $decimal ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $fn = Validate::numeric( $decimal, $opts ); + $numeric = $fn( $val, $data, $field, $host ); + + if ( $numeric !== true ) { + return $numeric; + } + + if ( $decimal !== '.' ) { + $val = str_replace( $decimal, '.', $val ); + } + + return $val > $max ? + $opts->message() : + true; + }; + } + + + /** + * Check for a numeric input and that it is both greater and smaller than + * given numbers. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. Additional options: + * * `min`: indicate the minimum value. + * * `max`: indicate the maximum value. + * * `decimal`: is available to indicate what character should be used + * as the decimal + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function minMaxNum ( $min, $max, $decimal='.', $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $min, $max, $decimal ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $fn = Validate::numeric( $decimal, $opts ); + $numeric = $fn( $val, $data, $field, $host ); + + if ( $numeric !== true ) { + return $numeric; + } + + $fn = Validate::minNum( $min, $decimal, $opts ); + $numeric = $fn( $val, $data, $field, $host ); + + if ( $numeric !== true ) { + return $numeric; + } + + $fn = Validate::maxNum( $max, $decimal, $opts ); + $numeric = $fn( $val, $data, $field, $host ); + + if ( $numeric !== true ) { + return $numeric; + } + + return true; + }; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * String validation methods + */ + + /** + * Validate an input as an e-mail address. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function email( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return filter_var($val, FILTER_VALIDATE_EMAIL) !== false ? + true : + $opts->message(); + }; + } + + + /** + * Validate a string has a minimum length. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional option of + * `min` is available for this method to indicate the minimum string + * length. If only the default validation options are required, this + * parameter can be given as an integer value, which will be used as the + * minimum string length. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function minLen( $min, $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $min, $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $strlen = is_callable('mb_strlen') ? + 'mb_strlen' : + 'strlen'; + + return $strlen( $val ) < $min ? + $opts->message() : + true; + }; + } + + + /** + * Validate a string does not exceed a maximum length. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional option of + * `max` is available for this method to indicate the maximum string + * length. If only the default validation options are required, this + * parameter can be given as an integer value, which will be used as the + * maximum string length. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function maxLen( $max, $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $max, $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $strlen = is_callable('mb_strlen') ? + 'mb_strlen' : + 'strlen'; + + return $strlen( $val ) > $max ? + $opts->message() : + true; + }; + } + + /** + * Require a string with a certain minimum or maximum number of characters. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `min` and `max` are available for this method to indicate the minimum + * and maximum string lengths, respectively. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function minMaxLen( $min, $max, $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $min, $max ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $fn = Validate::minLen( $min, $opts ); + $res = $fn( $val, $data, $field, $host ); + + if ( $res !== true ) { + return $res; + } + + $fn = Validate::maxLen( $max, $opts ); + $res = $fn( $val, $data, $field, $host ); + + if ( $res !== true ) { + return $res; + } + + return true; + }; + } + + + /** + * Validate as an IP address. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function ip( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return filter_var($val, FILTER_VALIDATE_IP) !== false ? + true : + $opts->message(); + }; + } + + + /** + * Validate as an URL address. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array $opts Validation options. No additional options are + * available or required for this validation method. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function url( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return filter_var($val, FILTER_VALIDATE_URL) !== false ? + true : + $opts->message(); + }; + } + + + /** + * Check if string could contain an XSS attack string + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `db` - database connection object, `table` - database table to use and + * `column` - the column to check this value against as value, are also + * available. These options are not required and if not given are + * automatically derived from the Editor and Field instances. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function xss ( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return $field->xssSafety( $val ) != $val ? + $opts->message() : + true; + }; + } + + + /** + * Confirm that the value submitted is in a list of allowable values + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `db` - database connection object, `table` - database table to use and + * `column` - the column to check this value against as value, are also + * available. These options are not required and if not given are + * automatically derived from the Editor and Field instances. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function values( $values, $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $values, $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return in_array($val, $values) ? + true : + $opts->message(); + }; + } + + + /** + * Check if there are any tags in the submitted value + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `db` - database connection object, `table` - database table to use and + * `column` - the column to check this value against as value, are also + * available. These options are not required and if not given are + * automatically derived from the Editor and Field instances. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function noTags ( $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + return strip_tags( $val ) != $val ? + $opts->message() : + true; + }; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Date validation methods + */ + + /** + * Check that a valid date input is given + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param array|string $opts If given as a string, then $opts is the date + * format to check the validity of. If given as an array, then the + * date format is in the 'format' parameter, and the return error + * message in the 'message' parameter. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function dateFormat( $format, $cfg=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $format, $opts ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $formatCreate = substr($format, 0, 1) !== '!' ? + '!'.$format : + $format; + + $date = \DateTime::createFromFormat( $formatCreate, $val ); + + return $date && $date->format( $format ) === $val ? + true : + $opts->message(); + }; + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Database validation methods + */ + + /** + * Check that the given value is unique in the database + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `db` - database connection object, `table` - database table to use and + * `column` - the column to check this value against as value, are also + * available. These options are not required and if not given are + * automatically derived from the Editor and Field instances. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function unique( $cfg=null, $column=null, $table=null, $db=null ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $column, $table, $db ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + $editor = $host['editor']; + + if ( ! $db ) { + $db = $host['db']; + } + + if ( ! $table ) { + $table = $editor->table(); // Returns an array, but `select` will take an array + } + + if ( ! $column ) { + $column = $field->dbField(); + } + + $query = $db + ->query( 'select', $table ) + ->get( $column ) + ->where( $column, $val ); + + // If doing an edit, then we need to also discount the current row, + // since it is of course already validly unique + if ( $host['action'] === 'edit' ) { + $cond = $editor->pkeyToArray( $host['id'], true ); + $query->where( $cond, null, '!=' ); + } + + $res = $query->exec(); + + return $res->count() === 0 ? + true : + $opts->message(); + }; + } + + /** + * Check that the given value is a value that is available in a database - + * i.e. a join primary key. This will attempt to automatically use the table + * name and value column from the field's `options` method (under the + * assumption that it will typically be used with a joined field), but the + * table and field can also be specified via the options. + * + * @param string $val The value to check for validity + * @param string[] $data The full data set submitted + * @param int|array $opts Validation options. The additional options of + * `db` - database connection object, `table` - database table to use and + * `column` - the column to check this value against as value, are also + * available. These options are not required and if not given are + * automatically derived from the Editor and Field instances. + * @param array $host Host information + * @return string|true true if the value is valid, a string with an error + * message otherwise. + */ + public static function dbValues( $cfg=null, $column=null, $table=null, $db=null, $values=array() ) { + $opts = ValidateOptions::select( $cfg ); + + return function ( $val, $data, $field, $host ) use ( $opts, $column, $table, $db, $values ) { + $common = Validate::_common( $val, $opts ); + + if ( $common !== null ) { + return $common === false ? + $opts->message() : + $common; + } + + // Allow local values to be defined - for example null + if ( in_array($val, $values) ) { + return true; + } + + $editor = $host['editor']; + $options = $field->options(); + + if ( ! $db ) { + $db = $host['db']; + } + + if ( ! $table ) { + $table = $options->table(); // Returns an array, but `select` will take an array + } + + if ( ! $column ) { + $column = $options->value(); + } + + if ( ! $table ) { + throw new \Exception('Table for database value check is not defined for field '.$field->name()); + } + + if ( ! $column ) { + throw new \Exception('Value column for database value check is not defined for field '.$field->name()); + } + + // Try / catch in case the submitted value can't be represented as the + // database type (e.g. an empty string as an integer) + try { + $count = $db + ->query( 'select', $table ) + ->get( $column ) + ->where( $column, $val ) + ->exec() + ->count(); + + return $count === 0 ? + $opts->message() : + true; + } + catch (\Exception $e) { + return $opts->message(); + } + }; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * File validation methods + */ + static function fileExtensions ( $extensions, $msg="This file type cannot be uploaded." ) { + return function ( $file ) use ( $extensions, $msg ) { + $extn = pathinfo($file['name'], PATHINFO_EXTENSION); + + for ( $i=0, $ien=count($extensions) ; $i<$ien ; $i++ ) { + if ( strtolower( $extn ) === strtolower( $extensions[$i] ) ) { + return true; + } + } + + return $msg; + }; + } + + static function fileSize ( $size, $msg="Uploaded file is too large." ) { + return function ( $file ) use ( $size, $msg ) { + return $file['size'] > $size ? + $msg : + true; + }; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Mjoin validation methods + */ + static function mjoinMinCount ( $count, $msg="Too few items." ) { + return function ( $editor, $action, $values ) use ( $count, $msg ) { + if ( $action === 'create' || $action === 'edit' ) { + return count($values) < $count ? + $msg : + true; + } + return true; + }; + } + + static function mjoinMaxCount ( $count, $msg="Too many items." ) { + return function ( $editor, $action, $values ) use ( $count, $msg ) { + if ( $action === 'create' || $action === 'edit' ) { + return count($values) > $count ? + $msg : + true; + } + return true; + }; + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal functions + * These legacy methods are for backwards compatibility with the old way of + * using the validation methods. They basically do argument swapping. + */ + + /** + * @internal + */ + static function noneLegacy( $legacyOpts ) { + return Validate::none(); + } + + /** + * @internal + */ + static function basicLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array() ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::required( $opts ); + } + + /** + * @internal + */ + static function requiredLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This field is required." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::required( $opts ); + } + + /** + * @internal + */ + static function notEmptyLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This field is required." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::notEmpty( $opts ); + } + + /** + * @internal + */ + static function booleanLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Please enter true or false." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::notEmpty( $opts ); + } + + /** + * @internal + */ + static function numericLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This input must be given as a number." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return isset( $legacyOpts['decimal'] ) ? + Validate::numeric( $legacyOpts['decimal'], $opts ) : + Validate::numeric( '.', $opts ); + } + + /** + * @internal + */ + static function minNumLegacy( $legacyOpts ) { + $min = is_array($legacyOpts) ? $legacyOpts['min'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Number is too small, must be ".$min." or larger." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return isset( $legacyOpts['decimal'] ) ? + Validate::minNum( $min, $legacyOpts['decimal'], $opts ) : + Validate::minNum( $min, '.', $opts ); + } + + /** + * @internal + */ + static function maxNumLegacy( $legacyOpts ) { + $max = is_array($legacyOpts) ? $legacyOpts['max'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Number is too large, must be ".$max." or smaller." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return isset( $legacyOpts['decimal'] ) ? + Validate::maxNum( $max, $legacyOpts['decimal'], $opts ) : + Validate::maxNum( $max, '.', $opts ); + } + + /** + * @internal + */ + static function minMaxNumLegacy( $legacyOpts ) { + $min = $legacyOpts['min']; + $max = $legacyOpts['max']; + $cfg = Validate::_extend( $legacyOpts, null, array() ); + $opts = Validate::_commonLegacy( $cfg ); + + return isset( $legacyOpts['decimal'] ) ? + Validate::minMaxNum( $min, $max, $legacyOpts['decimal'], $opts ) : + Validate::minMaxNum( $min, $max, '.', $opts ); + } + + /** + * @internal + */ + static function emailLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Please enter a valid e-mail address." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::email( $opts ); + } + + /** + * @internal + */ + static function minLenLegacy( $legacyOpts ) { + $min = is_array($legacyOpts) ? $legacyOpts['min'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "The input is too short. ".$min." characters required." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::minLen( $min, $opts ); + } + + /** + * @internal + */ + static function maxLenLegacy( $legacyOpts ) { + $max = is_array($legacyOpts) ? $legacyOpts['max'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "The input is too long. ".$max." characters maximum." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::maxLen( $max, $opts ); + } + + /** + * @internal + */ + static function minMaxLenLegacy( $legacyOpts ) { + $min = $legacyOpts['min']; + $max = $legacyOpts['max']; + $cfg = Validate::_extend( $legacyOpts, null, array() ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::minMaxLen( $min, $max, $opts ); + } + + /** + * @internal + */ + static function ipLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Please enter a valid IP address." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::ip( $opts ); + } + + /** + * @internal + */ + static function urlLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Please enter a valid URL." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::url( $opts ); + } + + /** + * @internal + */ + static function xssLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This field contains potentially unsafe data." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::xss( $opts ); + } + + /** + * @internal + */ + static function valuesLegacy( $legacyOpts ) { + $values = isset($legacyOpts['valid']) ? $legacyOpts['valid'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This value is not valid." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::values( $values, $opts ); + } + + /** + * @internal + */ + static function noTagsLegacy( $legacyOpts ) { + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This field may not contain HTML." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::noTags( $opts ); + } + + /** + * @internal + */ + static function dateFormatLegacy( $legacyOpts ) { + $format = is_array($legacyOpts) ? $legacyOpts['format'] : $legacyOpts; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "Date is not in the expected format." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::dateFormat( $format, $opts ); + } + + /** + * @internal + */ + static function uniqueLegacy( $legacyOpts ) { + $table = isset( $legacyOpts['table'] ) ? $legacyOpts['table'] : null; + $column = isset( $legacyOpts['column'] ) ? $legacyOpts['column'] : null; + $db = isset( $legacyOpts['db'] ) ? $legacyOpts['db'] : null; + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This field must have a unique value." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::unique( $opts, $column, $table, $db ); + } + + /** + * @internal + */ + static function dbValuesLegacy( $legacyOpts ) { + $table = isset( $legacyOpts['table'] ) ? $legacyOpts['table'] : null; + $column = isset( $legacyOpts['column'] ) ? $legacyOpts['column'] : null; + $db = isset( $legacyOpts['db'] ) ? $legacyOpts['db'] : null; + $values = isset( $legacyOpts['values'] ) ? $legacyOpts['values'] : array(); + $cfg = Validate::_extend( $legacyOpts, null, array( + 'message' => "This value is not valid." + ) ); + $opts = Validate::_commonLegacy( $cfg ); + + return Validate::dbValues( $opts, $column, $table, $db, $values ); + } +} + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/ValidateOptions.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/ValidateOptions.php.txt new file mode 100644 index 00000000..027ddcc8 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Editor/ValidateOptions.php.txt @@ -0,0 +1,99 @@ +allowEmpty( $opts['empty'] ); + } + if ( isset( $opts['message'] ) ) { + $this->message( $opts['message'] ); + } + if ( isset( $opts['optional'] ) ) { + $this->optional( $opts['optional'] ); + } + } + + return $this; + } + + /** + * Get / set the error message to use if validation fails + * @param string $msg Error message to use. If not given, the currently + * set message will be returned. + * @return ValidateOptions|string Self if setting, message if getting. + */ + public function message ( $msg=null ) { + if ( $msg === null ) { + return $this->_message; + } + + $this->_message = $msg; + return $this; + } + + /** + * Get / set the field empty option + * @param boolean $empty `false` if the field is not allowed to be + * empty. `true` if it can be. + * @return ValidateOptions|boolean Self if setting, current value if getting. + */ + public function allowEmpty ( $empty=null ) { + if ( $empty === null ) { + return $this->_empty; + } + + $this->_empty = $empty; + return $this; + } + + /** + * Get / set the field optional option + * @param boolean $optional `false` if the field does not need to be + * submitted. `true` if it must be. + * @return ValidateOptions|boolean Self if setting, current value if getting. + */ + public function optional ( $optional=null ) { + if ( $optional === null ) { + return $this->_optional; + } + + $this->_optional = $optional; + return $this; + } + + + /** + * @internal + */ + static public function select ( $user ) { + if ( $user ) { + return $user; + } + + return new ValidateOptions(); + } +} \ No newline at end of file diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/Ext.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Ext.php.txt new file mode 100644 index 00000000..4ebf6a67 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/Ext.php.txt @@ -0,0 +1,222 @@ +newInstance() : + $rc->newInstanceArgs( $args ); + } + + /** + * Static method to instantiate a new instance of a class (shorthand of + * 'instantiate'). + * + * This method performs exactly the same actions as the 'instantiate' + * static method, but is simply shorter and easier to type! + * @return \DataTables\Editor|\DataTables\Editor\Field|\DataTables\Editor\Join|\DataTables\Editor\Upload class + * @static + */ + public static function inst () + { + $rc = new \ReflectionClass( get_called_class() ); + $args = func_get_args(); + + return count( $args ) === 0 ? + $rc->newInstance() : + $rc->newInstanceArgs( $args ); + } + + /** + * Common getter / setter function for DataTables classes. + * + * This getter / setter method makes building getter / setting methods + * easier, by abstracting everything to a single function call. + * @param mixed &$prop The property to set + * @param mixed $val The value to set - if given as null, then we assume + * that the function is being used as a getter. + * @param boolean $array Treat the target property as an array or not + * (default false). If used as an array, then values passed in are added + * to the $prop array. + * @return self|mixed Class instance if setting (allowing chaining), or + * the value requested if getting. + */ + protected function _getSet( &$prop, $val, $array=false ) + { + // Get + if ( $val === null ) { + return $prop; + } + + // Set + if ( $array ) { + // Property is an array, merge or add to array + is_array( $val ) ? + $prop = array_merge( $prop, $val ) : + $prop[] = $val; + } + else { + // Property is just a value + $prop = $val; + } + + return $this; + } + + /** + * Determine if a property is available in a data set (allowing `null` to be + * a valid value) + * @param string $name Javascript dotted object name to write to + * @param array $data Data source array to read from + * @return boolean true if present, false otherwise + * @private + */ + protected function _propExists ( $name, $data ) + { + if ( strpos($name, '.') === false ) { + return isset( $data[ $name ] ); + } + + $names = explode( '.', $name ); + $inner = $data; + + for ( $i=0 ; $ixss()` method. The Vanilla forums wrapper is used + * to provide sensible defaults and a clean interface for HtmLawed. + * + * Changes: + * + * * Add `DataTables/HtmLawed` namespace to this and htmLawed - this is to ensure + * that if htmLawed is included by any other aspect of the site it will not + * result in a conflict. + * * Use the OOP version of htmLawed (required a single updated to call it) to + * make the namespacing relatively easy. + * * Change the name of the Vanilla class so it don't conflict with the + * htmLawed OOP class + * * Update all `htmLawed::` references to `\DataTables\HtmLawed\HtmLawed::` in + * the htmLawed file (to allow callbacks to operate correctly) + * * Updated Vanilla wrapper to operate on PHP 5.3 + * + * HtmLawed: + * http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/ + * Copyright: Santosh Patnaik + * License: Dual licensed with LGPL 3 and GPL 2+ + * + * Vanilla wrapper for HtmLawed: + * https://github.com/vanilla/htmlawed/ + * Author: Todd Burry + * Copyright: 2009-2014 Vanilla Forums Inc. + * License: LGPL-3.0 + */ + +namespace DataTables\HtmLawed; + +/** + * A class wrapper for the htmLawed library. + */ +class Htmlaw { + /// Methods /// + + public static $defaultConfig = array( + 'anti_link_spam' => array('`.`', ''), + 'comment' => 1, + 'cdata' => 3, + 'css_expression' => 1, + 'deny_attribute' => 'on*', + 'unique_ids' => 0, + 'elements' => '*-applet-form-input-textarea-iframe-script-style-embed-object', + 'keep_bad' => 1, + 'schemes' => 'classid:clsid; href: aim, feed, file, ftp, gopher, http, https, irc, mailto, news, nntp, sftp, ssh, telnet; style: nil; *:file, http, https', // clsid allowed in class + 'valid_xhtml' => 0, + 'direct_list_nest' => 1, + 'balance' => 1 + ); + + public static $defaultSpec = array( + 'object=-classid-type, -codebase', + 'embed=type(oneof=application/x-shockwave-flash)' + ); + + /** + * Filters a string of html with the htmLawed library. + * + * @param string $html The text to filter. + * @param array|null $config Config settings for the array. + * @param string|array|null $spec A specification to further limit the allowed attribute values in the html. + * @return string Returns the filtered html. + * @see http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/htmLawed_README.htm + */ + public static function filter($html, array $config = null, $spec = null) { + if ($config === null) { + $config = self::$defaultConfig; + } + + if (isset($config['spec']) && !$spec) { + $spec = $config['spec']; + } + + if ($spec === null) { + $spec = static::$defaultSpec; + } + + return Htmlawed::hl($html, $config, $spec); + } + + + /** + * Filter a string of html so that it can be put into an rss feed. + * + * @param $html The html text to fitlter. + * @return string Returns the filtered html. + * @see Htmlawed::filter(). + */ + public static function filterRSS($html) { + $config = array( + 'anti_link_spam' => array('`.`', ''), + 'comment' => 1, + 'cdata' => 3, + 'css_expression' => 1, + 'deny_attribute' => 'on*,style,class', + 'elements' => '*-applet-form-input-textarea-iframe-script-style-object-embed-comment-link-listing-meta-noscript-plaintext-xmp', + 'keep_bad' => 0, + 'schemes' => 'classid:clsid; href: aim, feed, file, ftp, gopher, http, https, irc, mailto, news, nntp, sftp, ssh, telnet; style: nil; *:file, http, https', // clsid allowed in class + 'valid_xml' => 2, + 'balance' => 1 + ); + $spec = static::$defaultSpec; + + $result = static::filter($html, $config, $spec); + + return $result; + } +} diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/HtmLawed/Htmlawed.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/HtmLawed/Htmlawed.php.txt new file mode 100644 index 00000000..e69de29b diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/bootstrap.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/bootstrap.html new file mode 100644 index 00000000..01fd4730 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/bootstrap.html @@ -0,0 +1,167 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                      +

                                                                      Editor PHP 2.1.3

                                                                      + + + + + +
                                                                      + +
                                                                      +
                                                                      + + + + +
                                                                      +
                                                                        +
                                                                      + +
                                                                      +

                                                                      Bootstrap.php

                                                                      + +

                                                                      DataTables PHP libraries.

                                                                      + +

                                                                      PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                      +
                                                                      + + +
                                                                      + Tags + +
                                                                      +
                                                                      +
                                                                      + author +
                                                                      +
                                                                      + +

                                                                      SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +

                                                                      Search results

                                                                      + +
                                                                      +
                                                                      +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        + + +
                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.html new file mode 100644 index 00000000..4108fdbd --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.html @@ -0,0 +1,197 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                        +

                                                                        Editor PHP 2.1.3

                                                                        + + + + + +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                          +
                                                                        + +
                                                                        +

                                                                        composer.php

                                                                        + + +
                                                                        + + + + + + + + +

                                                                        + Table of Contents + +

                                                                        + +
                                                                        +
                                                                        + DATATABLES + +  = \true +
                                                                        +
                                                                        + +
                                                                        + + + + +
                                                                        +

                                                                        + Constants + +

                                                                        +
                                                                        +

                                                                        + DATATABLES + +

                                                                        + + + + + + public + mixed + DATATABLES + = \true + + + +
                                                                        + +
                                                                        + + + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        +
                                                                        +
                                                                        +

                                                                        Search results

                                                                        + +
                                                                        +
                                                                        +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + +
                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.php.txt new file mode 100644 index 00000000..e5916e1f --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/composer.php.txt @@ -0,0 +1,12 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                          +

                                                                          Editor PHP 2.1.3

                                                                          + + + + + +
                                                                          + +
                                                                          +
                                                                          + + + + +
                                                                          +
                                                                            +
                                                                          + +
                                                                          +

                                                                          config.php

                                                                          + + +
                                                                          + + + + + + + + + + + + + + +
                                                                          +
                                                                          +
                                                                          +
                                                                          +

                                                                          Search results

                                                                          + +
                                                                          +
                                                                          +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            + + +
                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/config.php.txt b/ci4/app/ThirdParty/DatatablesEditor/docs/files/config.php.txt new file mode 100644 index 00000000..28214332 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/config.php.txt @@ -0,0 +1,30 @@ + "Mysql", // Database type: "Mysql", "Postgres", "Sqlserver", "Sqlite" or "Oracle" + "user" => "", // Database user name + "pass" => "", // Database password + "host" => "localhost", // Database host + "port" => "", // Database connection port (can be left empty for default) + "db" => "", // Database name + "dsn" => "", // PHP DSN extra information. Set as `charset=utf8mb4` if you are using MySQL + "pdoAttr" => array() // PHP PDO attributes array. See the PHP documentation for all options +); + + +// This is included for the development and deploy environment used on the DataTables +// server. You can delete this block - it just includes my own user/pass without making +// them public! +if ( is_file($_SERVER['DOCUMENT_ROOT']."/datatables/pdo.php") ) { + include( $_SERVER['DOCUMENT_ROOT']."/datatables/pdo.php" ); +} +// /End development include + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2query.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2query.html new file mode 100644 index 00000000..63146c75 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2query.html @@ -0,0 +1,161 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                            +

                                                                            Editor PHP 2.1.3

                                                                            + + + + + +
                                                                            + +
                                                                            +
                                                                            + + + + +
                                                                            +
                                                                              +
                                                                            + +
                                                                            +

                                                                            Db2Query.php

                                                                            + +

                                                                            DB2 database driver for DataTables libraries.

                                                                            + +

                                                                            BETA! Feedback welcome

                                                                            +
                                                                            + + + + + + +

                                                                            + Interfaces, Classes, Traits and Enums + +

                                                                            + +
                                                                            + +
                                                                            Db2Query
                                                                            +
                                                                            DB2 driver for DataTables Database Query class
                                                                            + + +
                                                                            + + + + + + + + +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            Search results

                                                                            + +
                                                                            +
                                                                            +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + +
                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2result.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2result.html new file mode 100644 index 00000000..13134750 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-db2result.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                              +

                                                                              Editor PHP 2.1.3

                                                                              + + + + + +
                                                                              + +
                                                                              +
                                                                              + + + + +
                                                                              +
                                                                                +
                                                                              + +
                                                                              +

                                                                              Db2Result.php

                                                                              + +

                                                                              SQL Server driver for DataTables PHP libraries +BETA! Feedback welcome

                                                                              + +

                                                                              @author SpryMedia

                                                                              +
                                                                              + + +
                                                                              + Tags + +
                                                                              +
                                                                              +
                                                                              + copyright +
                                                                              +
                                                                              + +

                                                                              2013 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + +

                                                                              + Interfaces, Classes, Traits and Enums + +

                                                                              + +
                                                                              + +
                                                                              Db2Result
                                                                              +
                                                                              SQL Server driver for DataTables Database Result class
                                                                              + + +
                                                                              + + + + + + + + +
                                                                              +
                                                                              +
                                                                              +
                                                                              +

                                                                              Search results

                                                                              + +
                                                                              +
                                                                              +
                                                                                +
                                                                                +
                                                                                +
                                                                                +
                                                                                +
                                                                                + + +
                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdquery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdquery.html new file mode 100644 index 00000000..0a30c207 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdquery.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                +

                                                                                Editor PHP 2.1.3

                                                                                + + + + + +
                                                                                + +
                                                                                +
                                                                                + + + + +
                                                                                +
                                                                                  +
                                                                                + +
                                                                                +

                                                                                FirebirdQuery.php

                                                                                + +

                                                                                DataTables PHP libraries.

                                                                                + +

                                                                                PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                +
                                                                                + + +
                                                                                + Tags + +
                                                                                +
                                                                                +
                                                                                + author +
                                                                                +
                                                                                + +

                                                                                SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + +

                                                                                + Interfaces, Classes, Traits and Enums + +

                                                                                + +
                                                                                + +
                                                                                FirebirdQuery
                                                                                +
                                                                                Firebird driver for DataTables Database Query class
                                                                                + + +
                                                                                + + + + + + + + +
                                                                                +
                                                                                +
                                                                                +
                                                                                +

                                                                                Search results

                                                                                + +
                                                                                +
                                                                                +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdresult.html new file mode 100644 index 00000000..7d7aa771 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-firebirdresult.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                  +

                                                                                  Editor PHP 2.1.3

                                                                                  + + + + + +
                                                                                  + +
                                                                                  +
                                                                                  + + + + +
                                                                                  +
                                                                                    +
                                                                                  + +
                                                                                  +

                                                                                  FirebirdResult.php

                                                                                  + +

                                                                                  DataTables PHP libraries.

                                                                                  + +

                                                                                  PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                  +
                                                                                  + + +
                                                                                  + Tags + +
                                                                                  +
                                                                                  +
                                                                                  + author +
                                                                                  +
                                                                                  + +

                                                                                  SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + +

                                                                                  + Interfaces, Classes, Traits and Enums + +

                                                                                  + +
                                                                                  + +
                                                                                  FirebirdResult
                                                                                  +
                                                                                  Firebird driver for DataTables Database Result class
                                                                                  + + +
                                                                                  + + + + + + + + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  Search results

                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlquery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlquery.html new file mode 100644 index 00000000..63bffcbb --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlquery.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                    +

                                                                                    Editor PHP 2.1.3

                                                                                    + + + + + +
                                                                                    + +
                                                                                    +
                                                                                    + + + + +
                                                                                    +
                                                                                      +
                                                                                    + +
                                                                                    +

                                                                                    MysqlQuery.php

                                                                                    + +

                                                                                    DataTables PHP libraries.

                                                                                    + +

                                                                                    PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                    +
                                                                                    + + +
                                                                                    + Tags + +
                                                                                    +
                                                                                    +
                                                                                    + author +
                                                                                    +
                                                                                    + +

                                                                                    SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    + + + + +

                                                                                    + Interfaces, Classes, Traits and Enums + +

                                                                                    + +
                                                                                    + +
                                                                                    MysqlQuery
                                                                                    +
                                                                                    MySQL driver for DataTables Database Query class
                                                                                    + + +
                                                                                    + + + + + + + + +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +

                                                                                    Search results

                                                                                    + +
                                                                                    +
                                                                                    +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + + +
                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlresult.html new file mode 100644 index 00000000..85c75e60 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-mysqlresult.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                      +

                                                                                      Editor PHP 2.1.3

                                                                                      + + + + + +
                                                                                      + +
                                                                                      +
                                                                                      + + + + +
                                                                                      +
                                                                                        +
                                                                                      + +
                                                                                      +

                                                                                      MysqlResult.php

                                                                                      + +

                                                                                      DataTables PHP libraries.

                                                                                      + +

                                                                                      PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                      +
                                                                                      + + +
                                                                                      + Tags + +
                                                                                      +
                                                                                      +
                                                                                      + author +
                                                                                      +
                                                                                      + +

                                                                                      SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      + + + + +

                                                                                      + Interfaces, Classes, Traits and Enums + +

                                                                                      + +
                                                                                      + +
                                                                                      MysqlResult
                                                                                      +
                                                                                      MySQL driver for DataTables Database Result class
                                                                                      + + +
                                                                                      + + + + + + + + +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      +

                                                                                      Search results

                                                                                      + +
                                                                                      +
                                                                                      +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + + +
                                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oraclequery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oraclequery.html new file mode 100644 index 00000000..b4f18560 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oraclequery.html @@ -0,0 +1,180 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                        +

                                                                                        Editor PHP 2.1.3

                                                                                        + + + + + +
                                                                                        + +
                                                                                        +
                                                                                        + + + + +
                                                                                        +
                                                                                          +
                                                                                        + +
                                                                                        +

                                                                                        OracleQuery.php

                                                                                        + +

                                                                                        Oracle database driver for DataTables libraries.

                                                                                        + +

                                                                                        Note that this software uses the oci_* methods in PHP and NOT the Oracle PDO +driver, which is poorly supported.

                                                                                        +
                                                                                        + + +
                                                                                        + Tags + +
                                                                                        +
                                                                                        +
                                                                                        + author +
                                                                                        +
                                                                                        + +

                                                                                        SpryMedia +@copyright 2014 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        + + + + +

                                                                                        + Interfaces, Classes, Traits and Enums + +

                                                                                        + +
                                                                                        + +
                                                                                        OracleQuery
                                                                                        +
                                                                                        Oracle driver for DataTables Database Query class
                                                                                        + + +
                                                                                        + + + + + + + + +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        +

                                                                                        Search results

                                                                                        + +
                                                                                        +
                                                                                        +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + + +
                                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oracleresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oracleresult.html new file mode 100644 index 00000000..4c937299 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-oracleresult.html @@ -0,0 +1,178 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                          +

                                                                                          Editor PHP 2.1.3

                                                                                          + + + + + +
                                                                                          + +
                                                                                          +
                                                                                          + + + + +
                                                                                          +
                                                                                            +
                                                                                          + +
                                                                                          +

                                                                                          OracleResult.php

                                                                                          + +

                                                                                          Oracle database driver for Editor

                                                                                          + +

                                                                                          @author SpryMedia

                                                                                          +
                                                                                          + + +
                                                                                          + Tags + +
                                                                                          +
                                                                                          +
                                                                                          + copyright +
                                                                                          +
                                                                                          + +

                                                                                          2014 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          + + + + +

                                                                                          + Interfaces, Classes, Traits and Enums + +

                                                                                          + +
                                                                                          + +
                                                                                          OracleResult
                                                                                          +
                                                                                          MySQL driver for DataTables Database Result class
                                                                                          + + +
                                                                                          + + + + + + + + +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          +

                                                                                          Search results

                                                                                          + +
                                                                                          +
                                                                                          +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + + +
                                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresquery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresquery.html new file mode 100644 index 00000000..156f2ff2 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresquery.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                            +

                                                                                            Editor PHP 2.1.3

                                                                                            + + + + + +
                                                                                            + +
                                                                                            +
                                                                                            + + + + +
                                                                                            +
                                                                                              +
                                                                                            + +
                                                                                            +

                                                                                            PostgresQuery.php

                                                                                            + +

                                                                                            DataTables PHP libraries.

                                                                                            + +

                                                                                            PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                            +
                                                                                            + + +
                                                                                            + Tags + +
                                                                                            +
                                                                                            +
                                                                                            + author +
                                                                                            +
                                                                                            + +

                                                                                            SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            + + + + +

                                                                                            + Interfaces, Classes, Traits and Enums + +

                                                                                            + +
                                                                                            + +
                                                                                            PostgresQuery
                                                                                            +
                                                                                            Postgres driver for DataTables Database Query class
                                                                                            + + +
                                                                                            + + + + + + + + +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +

                                                                                            Search results

                                                                                            + +
                                                                                            +
                                                                                            +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + + +
                                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresresult.html new file mode 100644 index 00000000..d7536980 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-postgresresult.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                              +

                                                                                              Editor PHP 2.1.3

                                                                                              + + + + + +
                                                                                              + +
                                                                                              +
                                                                                              + + + + +
                                                                                              +
                                                                                                +
                                                                                              + +
                                                                                              +

                                                                                              PostgresResult.php

                                                                                              + +

                                                                                              DataTables PHP libraries.

                                                                                              + +

                                                                                              PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                              +
                                                                                              + + +
                                                                                              + Tags + +
                                                                                              +
                                                                                              +
                                                                                              + author +
                                                                                              +
                                                                                              + +

                                                                                              SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              + + + + +

                                                                                              + Interfaces, Classes, Traits and Enums + +

                                                                                              + +
                                                                                              + +
                                                                                              PostgresResult
                                                                                              +
                                                                                              Postgres driver for DataTables Database Result class
                                                                                              + + +
                                                                                              + + + + + + + + +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              +

                                                                                              Search results

                                                                                              + +
                                                                                              +
                                                                                              +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + + +
                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlitequery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlitequery.html new file mode 100644 index 00000000..9288b447 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlitequery.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                +

                                                                                                Editor PHP 2.1.3

                                                                                                + + + + + +
                                                                                                + +
                                                                                                +
                                                                                                + + + + +
                                                                                                +
                                                                                                  +
                                                                                                + +
                                                                                                +

                                                                                                SqliteQuery.php

                                                                                                + +

                                                                                                DataTables PHP libraries.

                                                                                                + +

                                                                                                PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                +
                                                                                                + + +
                                                                                                + Tags + +
                                                                                                +
                                                                                                +
                                                                                                + author +
                                                                                                +
                                                                                                + +

                                                                                                SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + + + + +

                                                                                                + Interfaces, Classes, Traits and Enums + +

                                                                                                + +
                                                                                                + +
                                                                                                SqliteQuery
                                                                                                +
                                                                                                SQLite3 driver for DataTables Database Query class
                                                                                                + + +
                                                                                                + + + + + + + + +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                +

                                                                                                Search results

                                                                                                + +
                                                                                                +
                                                                                                +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + + +
                                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqliteresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqliteresult.html new file mode 100644 index 00000000..9f0ac8f4 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqliteresult.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                  +

                                                                                                  Editor PHP 2.1.3

                                                                                                  + + + + + +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + + +
                                                                                                  +
                                                                                                    +
                                                                                                  + +
                                                                                                  +

                                                                                                  SqliteResult.php

                                                                                                  + +

                                                                                                  DataTables PHP libraries.

                                                                                                  + +

                                                                                                  PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                  +
                                                                                                  + + +
                                                                                                  + Tags + +
                                                                                                  +
                                                                                                  +
                                                                                                  + author +
                                                                                                  +
                                                                                                  + +

                                                                                                  SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + + +

                                                                                                  + Interfaces, Classes, Traits and Enums + +

                                                                                                  + +
                                                                                                  + +
                                                                                                  SqliteResult
                                                                                                  +
                                                                                                  Sqlite driver for DataTables Database Result class
                                                                                                  + + +
                                                                                                  + + + + + + + + +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  +

                                                                                                  Search results

                                                                                                  + +
                                                                                                  +
                                                                                                  +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    + + +
                                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverquery.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverquery.html new file mode 100644 index 00000000..7f7be1dd --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverquery.html @@ -0,0 +1,178 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                    +

                                                                                                    Editor PHP 2.1.3

                                                                                                    + + + + + +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + + + +
                                                                                                    +
                                                                                                      +
                                                                                                    + +
                                                                                                    +

                                                                                                    SqlserverQuery.php

                                                                                                    + +

                                                                                                    SQL Server driver for DataTables PHP libraries

                                                                                                    + +

                                                                                                    @author SpryMedia

                                                                                                    +
                                                                                                    + + +
                                                                                                    + Tags + +
                                                                                                    +
                                                                                                    +
                                                                                                    + copyright +
                                                                                                    +
                                                                                                    + +

                                                                                                    2013 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + + + +

                                                                                                    + Interfaces, Classes, Traits and Enums + +

                                                                                                    + +
                                                                                                    + +
                                                                                                    SqlserverQuery
                                                                                                    +
                                                                                                    SQL Server driver for DataTables Database Query class
                                                                                                    + + +
                                                                                                    + + + + + + + + +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    +

                                                                                                    Search results

                                                                                                    + +
                                                                                                    +
                                                                                                    +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + + +
                                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverresult.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverresult.html new file mode 100644 index 00000000..ef7a6b41 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-driver-sqlserverresult.html @@ -0,0 +1,178 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                      +

                                                                                                      Editor PHP 2.1.3

                                                                                                      + + + + + +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + +
                                                                                                      +
                                                                                                        +
                                                                                                      + +
                                                                                                      +

                                                                                                      SqlserverResult.php

                                                                                                      + +

                                                                                                      SQL Server driver for DataTables PHP libraries

                                                                                                      + +

                                                                                                      @author SpryMedia

                                                                                                      +
                                                                                                      + + +
                                                                                                      + Tags + +
                                                                                                      +
                                                                                                      +
                                                                                                      + copyright +
                                                                                                      +
                                                                                                      + +

                                                                                                      2013 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + +

                                                                                                      + Interfaces, Classes, Traits and Enums + +

                                                                                                      + +
                                                                                                      + +
                                                                                                      SqlserverResult
                                                                                                      +
                                                                                                      SQL Server driver for DataTables Database Result class
                                                                                                      + + +
                                                                                                      + + + + + + + + +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      +

                                                                                                      Search results

                                                                                                      + +
                                                                                                      +
                                                                                                      +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + + +
                                                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-query.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-query.html new file mode 100644 index 00000000..6d8d09b6 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-query.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                        +

                                                                                                        Editor PHP 2.1.3

                                                                                                        + + + + + +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + +
                                                                                                        +
                                                                                                          +
                                                                                                        + +
                                                                                                        +

                                                                                                        Query.php

                                                                                                        + +

                                                                                                        DataTables PHP libraries.

                                                                                                        + +

                                                                                                        PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                        +
                                                                                                        + + +
                                                                                                        + Tags + +
                                                                                                        +
                                                                                                        +
                                                                                                        + author +
                                                                                                        +
                                                                                                        + +

                                                                                                        SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + +

                                                                                                        + Interfaces, Classes, Traits and Enums + +

                                                                                                        + +
                                                                                                        + +
                                                                                                        Query
                                                                                                        +
                                                                                                        Perform an individual query on the database.
                                                                                                        + + +
                                                                                                        + + + + + + + + +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +

                                                                                                        Search results

                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + + +
                                                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-result.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-result.html new file mode 100644 index 00000000..e52c6ffb --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database-result.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                          +

                                                                                                          Editor PHP 2.1.3

                                                                                                          + + + + + +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + +
                                                                                                          +
                                                                                                            +
                                                                                                          + +
                                                                                                          +

                                                                                                          Result.php

                                                                                                          + +

                                                                                                          DataTables PHP libraries.

                                                                                                          + +

                                                                                                          PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                          +
                                                                                                          + + +
                                                                                                          + Tags + +
                                                                                                          +
                                                                                                          +
                                                                                                          + author +
                                                                                                          +
                                                                                                          + +

                                                                                                          SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + +

                                                                                                          + Interfaces, Classes, Traits and Enums + +

                                                                                                          + +
                                                                                                          + +
                                                                                                          Result
                                                                                                          +
                                                                                                          Result object given by a {@see Query} performed on a database.
                                                                                                          + + +
                                                                                                          + + + + + + + + +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          +

                                                                                                          Search results

                                                                                                          + +
                                                                                                          +
                                                                                                          +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + + +
                                                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/database.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database.html new file mode 100644 index 00000000..92527d15 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/database.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                            +

                                                                                                            Editor PHP 2.1.3

                                                                                                            + + + + + +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + + +
                                                                                                            +
                                                                                                              +
                                                                                                            + +
                                                                                                            +

                                                                                                            Database.php

                                                                                                            + +

                                                                                                            DataTables PHP libraries.

                                                                                                            + +

                                                                                                            PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                            +
                                                                                                            + + +
                                                                                                            + Tags + +
                                                                                                            +
                                                                                                            +
                                                                                                            + author +
                                                                                                            +
                                                                                                            + +

                                                                                                            SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + + +

                                                                                                            + Interfaces, Classes, Traits and Enums + +

                                                                                                            + +
                                                                                                            + +
                                                                                                            Database
                                                                                                            +
                                                                                                            DataTables Database connection object.
                                                                                                            + + +
                                                                                                            + + + + + + + + +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            +

                                                                                                            Search results

                                                                                                            + +
                                                                                                            +
                                                                                                            +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + + +
                                                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/datatables.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/datatables.html new file mode 100644 index 00000000..56fa573c --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/datatables.html @@ -0,0 +1,237 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                              +

                                                                                                              Editor PHP 2.1.3

                                                                                                              + + + + + +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + + +
                                                                                                              +
                                                                                                                +
                                                                                                              + +
                                                                                                              +

                                                                                                              DataTables.php

                                                                                                              + +

                                                                                                              DataTables PHP libraries.

                                                                                                              + +

                                                                                                              PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                              +
                                                                                                              + + +
                                                                                                              + Tags + +
                                                                                                              +
                                                                                                              +
                                                                                                              + author +
                                                                                                              +
                                                                                                              + +

                                                                                                              SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + + + + +

                                                                                                              + Table of Contents + +

                                                                                                              + +
                                                                                                              +
                                                                                                              + DATATABLES + +  = \true +
                                                                                                              +
                                                                                                              DataTables PHP libraries.
                                                                                                              + +
                                                                                                              + + + + +
                                                                                                              +

                                                                                                              + Constants + +

                                                                                                              +
                                                                                                              +

                                                                                                              + DATATABLES + +

                                                                                                              + + + +

                                                                                                              DataTables PHP libraries.

                                                                                                              + + + public + mixed + DATATABLES + = \true + + + +

                                                                                                              PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                              +
                                                                                                              + +
                                                                                                              + + +
                                                                                                              + Tags + +
                                                                                                              +
                                                                                                              +
                                                                                                              + author +
                                                                                                              +
                                                                                                              + +

                                                                                                              SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              +

                                                                                                              Search results

                                                                                                              + +
                                                                                                              +
                                                                                                              +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + + +
                                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-field.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-field.html new file mode 100644 index 00000000..dfb1b3a6 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-field.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                +

                                                                                                                Editor PHP 2.1.3

                                                                                                                + + + + + +
                                                                                                                + +
                                                                                                                +
                                                                                                                + + + + +
                                                                                                                +
                                                                                                                  +
                                                                                                                + +
                                                                                                                +

                                                                                                                Field.php

                                                                                                                + +

                                                                                                                DataTables PHP libraries.

                                                                                                                + +

                                                                                                                PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                +
                                                                                                                + + +
                                                                                                                + Tags + +
                                                                                                                +
                                                                                                                +
                                                                                                                + author +
                                                                                                                +
                                                                                                                + +

                                                                                                                SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                + + + + +

                                                                                                                + Interfaces, Classes, Traits and Enums + +

                                                                                                                + +
                                                                                                                + +
                                                                                                                Field
                                                                                                                +
                                                                                                                Field definitions for the DataTables Editor.
                                                                                                                + + +
                                                                                                                + + + + + + + + +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                +

                                                                                                                Search results

                                                                                                                + +
                                                                                                                +
                                                                                                                +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-format.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-format.html new file mode 100644 index 00000000..0ac7c428 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-format.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  +

                                                                                                                  Editor PHP 2.1.3

                                                                                                                  + + + + + +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + +
                                                                                                                  +
                                                                                                                    +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  Format.php

                                                                                                                  + +

                                                                                                                  DataTables PHP libraries.

                                                                                                                  + +

                                                                                                                  PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  + Tags + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + author +
                                                                                                                  +
                                                                                                                  + +

                                                                                                                  SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + +

                                                                                                                  + Interfaces, Classes, Traits and Enums + +

                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  Format
                                                                                                                  +
                                                                                                                  Formatter methods for the DataTables Editor
                                                                                                                  + + +
                                                                                                                  + + + + + + + + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +

                                                                                                                  Search results

                                                                                                                  + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-join.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-join.html new file mode 100644 index 00000000..984548c7 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-join.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    +

                                                                                                                    Editor PHP 2.1.3

                                                                                                                    + + + + + +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + + + + +
                                                                                                                    +
                                                                                                                      +
                                                                                                                    + +
                                                                                                                    +

                                                                                                                    Join.php

                                                                                                                    + +

                                                                                                                    DataTables PHP libraries.

                                                                                                                    + +

                                                                                                                    PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    + Tags + +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + author +
                                                                                                                    +
                                                                                                                    + +

                                                                                                                    SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + + + + +

                                                                                                                    + Interfaces, Classes, Traits and Enums + +

                                                                                                                    + +
                                                                                                                    + +
                                                                                                                    Join
                                                                                                                    +
                                                                                                                    Join table class for DataTables Editor.
                                                                                                                    + + +
                                                                                                                    + + + + + + + + +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +

                                                                                                                    Search results

                                                                                                                    + +
                                                                                                                    +
                                                                                                                    +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-mjoin.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-mjoin.html new file mode 100644 index 00000000..8a6c8a41 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-mjoin.html @@ -0,0 +1,182 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                      +

                                                                                                                      Editor PHP 2.1.3

                                                                                                                      + + + + + +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + + + + +
                                                                                                                      +
                                                                                                                        +
                                                                                                                      + +
                                                                                                                      +

                                                                                                                      Mjoin.php

                                                                                                                      + +

                                                                                                                      DataTables PHP libraries.

                                                                                                                      + +

                                                                                                                      PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      + Tags + +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + author +
                                                                                                                      +
                                                                                                                      + +

                                                                                                                      SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + + + + +

                                                                                                                      + Interfaces, Classes, Traits and Enums + +

                                                                                                                      + +
                                                                                                                      + +
                                                                                                                      Mjoin
                                                                                                                      +
                                                                                                                      The `Mjoin` class extends the `Join` class with the join data type set to +'array', whereas the `Join` default is `object` which has been rendered +obsolete by the `Editor->leftJoin()` method. The API API is otherwise +identical.
                                                                                                                      + + +
                                                                                                                      + + + + + + + + +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +

                                                                                                                      Search results

                                                                                                                      + +
                                                                                                                      +
                                                                                                                      +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-options.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-options.html new file mode 100644 index 00000000..34ef0b4b --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-options.html @@ -0,0 +1,180 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                        +

                                                                                                                        Editor PHP 2.1.3

                                                                                                                        + + + + + +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + + + + +
                                                                                                                        +
                                                                                                                          +
                                                                                                                        + +
                                                                                                                        +

                                                                                                                        Options.php

                                                                                                                        + +

                                                                                                                        DataTables PHP libraries.

                                                                                                                        + +

                                                                                                                        PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        + Tags + +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + author +
                                                                                                                        +
                                                                                                                        + +

                                                                                                                        SpryMedia +@copyright 2016 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + + + + +

                                                                                                                        + Interfaces, Classes, Traits and Enums + +

                                                                                                                        + +
                                                                                                                        + +
                                                                                                                        Options
                                                                                                                        +
                                                                                                                        The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                        + + +
                                                                                                                        + + + + + + + + +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        Search results

                                                                                                                        + +
                                                                                                                        +
                                                                                                                        +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchbuilderoptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchbuilderoptions.html new file mode 100644 index 00000000..31cdf905 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchbuilderoptions.html @@ -0,0 +1,180 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                          +

                                                                                                                          Editor PHP 2.1.3

                                                                                                                          + + + + + +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + + + + +
                                                                                                                          +
                                                                                                                            +
                                                                                                                          + +
                                                                                                                          +

                                                                                                                          SearchBuilderOptions.php

                                                                                                                          + +

                                                                                                                          DataTables PHP libraries.

                                                                                                                          + +

                                                                                                                          PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          + Tags + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + author +
                                                                                                                          +
                                                                                                                          + +

                                                                                                                          SpryMedia +@copyright 2016 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + + + + +

                                                                                                                          + Interfaces, Classes, Traits and Enums + +

                                                                                                                          + +
                                                                                                                          + +
                                                                                                                          SearchBuilderOptions
                                                                                                                          +
                                                                                                                          The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                          + + +
                                                                                                                          + + + + + + + + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          Search results

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + + +
                                                                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchpaneoptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchpaneoptions.html new file mode 100644 index 00000000..573ae11e --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-searchpaneoptions.html @@ -0,0 +1,180 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                            +

                                                                                                                            Editor PHP 2.1.3

                                                                                                                            + + + + + +
                                                                                                                            + +
                                                                                                                            +
                                                                                                                            + + + + +
                                                                                                                            +
                                                                                                                              +
                                                                                                                            + +
                                                                                                                            +

                                                                                                                            SearchPaneOptions.php

                                                                                                                            + +

                                                                                                                            DataTables PHP libraries.

                                                                                                                            + +

                                                                                                                            PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                            +
                                                                                                                            + + +
                                                                                                                            + Tags + +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + author +
                                                                                                                            +
                                                                                                                            + +

                                                                                                                            SpryMedia +@copyright 2016 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                            +
                                                                                                                            + +
                                                                                                                            +
                                                                                                                            + + + + +

                                                                                                                            + Interfaces, Classes, Traits and Enums + +

                                                                                                                            + +
                                                                                                                            + +
                                                                                                                            SearchPaneOptions
                                                                                                                            +
                                                                                                                            The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                            + + +
                                                                                                                            + + + + + + + + +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            Search results

                                                                                                                            + +
                                                                                                                            +
                                                                                                                            +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + + +
                                                                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-upload.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-upload.html new file mode 100644 index 00000000..865ee10b --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-upload.html @@ -0,0 +1,181 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                              +

                                                                                                                              Editor PHP 2.1.3

                                                                                                                              + + + + + +
                                                                                                                              + +
                                                                                                                              +
                                                                                                                              + + + + +
                                                                                                                              +
                                                                                                                                +
                                                                                                                              + +
                                                                                                                              +

                                                                                                                              Upload.php

                                                                                                                              + +

                                                                                                                              DataTables PHP libraries.

                                                                                                                              + +

                                                                                                                              PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                              +
                                                                                                                              + + +
                                                                                                                              + Tags + +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + author +
                                                                                                                              +
                                                                                                                              + +

                                                                                                                              SpryMedia +@copyright 2015 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                              +
                                                                                                                              + +
                                                                                                                              +
                                                                                                                              + + + + +

                                                                                                                              + Interfaces, Classes, Traits and Enums + +

                                                                                                                              + +
                                                                                                                              + +
                                                                                                                              Upload
                                                                                                                              +
                                                                                                                              Upload class for Editor. This class provides the ability to easily specify +file upload information, specifically how the file should be recorded on +the server (database and file system).
                                                                                                                              + + +
                                                                                                                              + + + + + + + + +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              Search results

                                                                                                                              + +
                                                                                                                              +
                                                                                                                              +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + + +
                                                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validate.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validate.html new file mode 100644 index 00000000..d22711c9 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validate.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                +

                                                                                                                                Editor PHP 2.1.3

                                                                                                                                + + + + + +
                                                                                                                                + +
                                                                                                                                +
                                                                                                                                + + + + +
                                                                                                                                +
                                                                                                                                  +
                                                                                                                                + +
                                                                                                                                +

                                                                                                                                Validate.php

                                                                                                                                + +

                                                                                                                                DataTables PHP libraries.

                                                                                                                                + +

                                                                                                                                PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                +
                                                                                                                                + + +
                                                                                                                                + Tags + +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + author +
                                                                                                                                +
                                                                                                                                + +

                                                                                                                                SpryMedia +@copyright 2012-2014 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                +
                                                                                                                                + +
                                                                                                                                +
                                                                                                                                + + + + +

                                                                                                                                + Interfaces, Classes, Traits and Enums + +

                                                                                                                                + +
                                                                                                                                + +
                                                                                                                                Validate
                                                                                                                                +
                                                                                                                                Validation methods for DataTables Editor fields.
                                                                                                                                + + +
                                                                                                                                + + + + + + + + +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                Search results

                                                                                                                                + +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + + +
                                                                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validateoptions.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validateoptions.html new file mode 100644 index 00000000..7b9f6e70 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor-validateoptions.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                  +

                                                                                                                                  Editor PHP 2.1.3

                                                                                                                                  + + + + + +
                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  + + + + +
                                                                                                                                  +
                                                                                                                                    +
                                                                                                                                  + +
                                                                                                                                  +

                                                                                                                                  ValidateOptions.php

                                                                                                                                  + +

                                                                                                                                  DataTables PHP libraries.

                                                                                                                                  + +

                                                                                                                                  PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                  +
                                                                                                                                  + + +
                                                                                                                                  + Tags + +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + author +
                                                                                                                                  +
                                                                                                                                  + +

                                                                                                                                  SpryMedia +@copyright 2012-2014 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                  +
                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  + + + + +

                                                                                                                                  + Interfaces, Classes, Traits and Enums + +

                                                                                                                                  + +
                                                                                                                                  + +
                                                                                                                                  ValidateOptions
                                                                                                                                  +
                                                                                                                                  Common validation options that can be specified for all validation methods.
                                                                                                                                  + + +
                                                                                                                                  + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  Search results

                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor.html new file mode 100644 index 00000000..6291d754 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/editor.html @@ -0,0 +1,180 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                    +

                                                                                                                                    Editor PHP 2.1.3

                                                                                                                                    + + + + + +
                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    + + + + +
                                                                                                                                    +
                                                                                                                                      +
                                                                                                                                    + +
                                                                                                                                    +

                                                                                                                                    Editor.php

                                                                                                                                    + +

                                                                                                                                    DataTables PHP libraries.

                                                                                                                                    + +

                                                                                                                                    PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    + Tags + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + author +
                                                                                                                                    +
                                                                                                                                    + +

                                                                                                                                    SpryMedia +@version VERSION +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                    +
                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    + + + + +

                                                                                                                                    + Interfaces, Classes, Traits and Enums + +

                                                                                                                                    + +
                                                                                                                                    + +
                                                                                                                                    Editor
                                                                                                                                    +
                                                                                                                                    DataTables Editor base class for creating editable tables.
                                                                                                                                    + + +
                                                                                                                                    + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    Search results

                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/ext.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/ext.html new file mode 100644 index 00000000..55c115d9 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/ext.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                      +

                                                                                                                                      Editor PHP 2.1.3

                                                                                                                                      + + + + + +
                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      + + + + +
                                                                                                                                      +
                                                                                                                                        +
                                                                                                                                      + +
                                                                                                                                      +

                                                                                                                                      Ext.php

                                                                                                                                      + +

                                                                                                                                      DataTables PHP libraries.

                                                                                                                                      + +

                                                                                                                                      PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      + Tags + +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + author +
                                                                                                                                      +
                                                                                                                                      + +

                                                                                                                                      SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                      +
                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      + + + + +

                                                                                                                                      + Interfaces, Classes, Traits and Enums + +

                                                                                                                                      + +
                                                                                                                                      + +
                                                                                                                                      Ext
                                                                                                                                      +
                                                                                                                                      Base class for DataTables classes.
                                                                                                                                      + + +
                                                                                                                                      + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      Search results

                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + +
                                                                                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlaw.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlaw.html new file mode 100644 index 00000000..a2d0d16d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlaw.html @@ -0,0 +1,184 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                        +

                                                                                                                                        Editor PHP 2.1.3

                                                                                                                                        + + + + + +
                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        + + + + +
                                                                                                                                        +
                                                                                                                                          +
                                                                                                                                        + +
                                                                                                                                        +

                                                                                                                                        Htmlaw.php

                                                                                                                                        + +

                                                                                                                                        HtmLawed is used here to provide protection against XSS attacks with Editor +input - see the `Field->xss()` method. The Vanilla forums wrapper is used +to provide sensible defaults and a clean interface for HtmLawed.

                                                                                                                                        + +

                                                                                                                                        Changes:

                                                                                                                                        +
                                                                                                                                          +
                                                                                                                                        • Add DataTables/HtmLawed namespace to this and htmLawed - this is to ensure +that if htmLawed is included by any other aspect of the site it will not +result in a conflict.
                                                                                                                                        • +
                                                                                                                                        • Use the OOP version of htmLawed (required a single updated to call it) to +make the namespacing relatively easy.
                                                                                                                                        • +
                                                                                                                                        • Change the name of the Vanilla class so it don't conflict with the +htmLawed OOP class
                                                                                                                                        • +
                                                                                                                                        • Update all htmLawed:: references to \DataTables\HtmLawed\HtmLawed:: in +the htmLawed file (to allow callbacks to operate correctly)
                                                                                                                                        • +
                                                                                                                                        • Updated Vanilla wrapper to operate on PHP 5.3
                                                                                                                                        • +
                                                                                                                                        +

                                                                                                                                        HtmLawed: +http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/ +Copyright: Santosh Patnaik +License: Dual licensed with LGPL 3 and GPL 2+

                                                                                                                                        +

                                                                                                                                        Vanilla wrapper for HtmLawed: +https://github.com/vanilla/htmlawed/ +Author: Todd Burry todd@vanillaforums.com +Copyright: 2009-2014 Vanilla Forums Inc. +License: LGPL-3.0

                                                                                                                                        +
                                                                                                                                        + + + + + + +

                                                                                                                                        + Interfaces, Classes, Traits and Enums + +

                                                                                                                                        + +
                                                                                                                                        + +
                                                                                                                                        Htmlaw
                                                                                                                                        +
                                                                                                                                        A class wrapper for the htmLawed library.
                                                                                                                                        + + +
                                                                                                                                        + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        Search results

                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          + + +
                                                                                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlawed.html b/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlawed.html new file mode 100644 index 00000000..643c3d95 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/files/htmlawed-htmlawed.html @@ -0,0 +1,147 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                          +

                                                                                                                                          Editor PHP 2.1.3

                                                                                                                                          + + + + + +
                                                                                                                                          + +
                                                                                                                                          +
                                                                                                                                          + + + + +
                                                                                                                                          +
                                                                                                                                            +
                                                                                                                                          + +
                                                                                                                                          +

                                                                                                                                          Htmlawed.php

                                                                                                                                          + + +
                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          Search results

                                                                                                                                          + +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/graphs/classes.html b/ci4/app/ThirdParty/DatatablesEditor/docs/graphs/classes.html new file mode 100644 index 00000000..0d3e581d --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/graphs/classes.html @@ -0,0 +1,124 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + +
                                                                                                                                            +

                                                                                                                                            Editor PHP 2.1.3

                                                                                                                                            + + + + + +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + + +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            Search results

                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/index.html b/ci4/app/ThirdParty/DatatablesEditor/docs/index.html new file mode 100644 index 00000000..dfa96aaa --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/index.html @@ -0,0 +1,258 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                              +

                                                                                                                                              Editor PHP 2.1.3

                                                                                                                                              + + + + + +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + + + + +
                                                                                                                                              +

                                                                                                                                              Documentation

                                                                                                                                              + + +

                                                                                                                                              + Packages + +

                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              Application
                                                                                                                                              +
                                                                                                                                              + +

                                                                                                                                              + Namespaces + +

                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              DataTables
                                                                                                                                              +
                                                                                                                                              + + + +

                                                                                                                                              + Table of Contents + +

                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + DATATABLES + +  = \true +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              + DATATABLES + +  = \true +
                                                                                                                                              +
                                                                                                                                              DataTables PHP libraries.
                                                                                                                                              + +
                                                                                                                                              + + +
                                                                                                                                              +

                                                                                                                                              + Constants + +

                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              + DATATABLES + +

                                                                                                                                              + + + + + + public + mixed + DATATABLES + = \true + + + +
                                                                                                                                              + +
                                                                                                                                              + + + +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              + DATATABLES + +

                                                                                                                                              + + + +

                                                                                                                                              DataTables PHP libraries.

                                                                                                                                              + + + public + mixed + DATATABLES + = \true + + + +

                                                                                                                                              PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              + + +
                                                                                                                                              + Tags + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + author +
                                                                                                                                              +
                                                                                                                                              + +

                                                                                                                                              SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Search results

                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + +
                                                                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/indices/files.html b/ci4/app/ThirdParty/DatatablesEditor/docs/indices/files.html new file mode 100644 index 00000000..d81532c5 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/indices/files.html @@ -0,0 +1,206 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                +

                                                                                                                                                Editor PHP 2.1.3

                                                                                                                                                + + + + + +
                                                                                                                                                + +
                                                                                                                                                +
                                                                                                                                                + + + + + +
                                                                                                                                                + + +
                                                                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/js/search.js b/ci4/app/ThirdParty/DatatablesEditor/docs/js/search.js new file mode 100644 index 00000000..093d6d03 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/js/search.js @@ -0,0 +1,173 @@ +// Search module for phpDocumentor +// +// This module is a wrapper around fuse.js that will use a given index and attach itself to a +// search form and to a search results pane identified by the following data attributes: +// +// 1. data-search-form +// 2. data-search-results +// +// The data-search-form is expected to have a single input element of type 'search' that will trigger searching for +// a series of results, were the data-search-results pane is expected to have a direct UL child that will be populated +// with rendered results. +// +// The search has various stages, upon loading this stage the data-search-form receives the CSS class +// 'phpdocumentor-search--enabled'; this indicates that JS is allowed and indices are being loaded. It is recommended +// to hide the form by default and show it when it receives this class to achieve progressive enhancement for this +// feature. +// +// After loading this module, it is expected to load a search index asynchronously, for example: +// +// +// +// In this script the generated index should attach itself to the search module using the `appendIndex` function. By +// doing it like this the page will continue loading, unhindered by the loading of the search. +// +// After the page has fully loaded, and all these deferred indexes loaded, the initialization of the search module will +// be called and the form will receive the class 'phpdocumentor-search--active', indicating search is ready. At this +// point, the input field will also have it's 'disabled' attribute removed. +var Search = (function () { + var fuse; + var index = []; + var options = { + shouldSort: true, + threshold: 0.6, + location: 0, + distance: 100, + maxPatternLength: 32, + minMatchCharLength: 1, + keys: [ + "fqsen", + "name", + "summary", + "url" + ] + }; + + // Credit David Walsh (https://davidwalsh.name/javascript-debounce-function) + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + function debounce(func, wait, immediate) { + var timeout; + + return function executedFunction() { + var context = this; + var args = arguments; + + var later = function () { + timeout = null; + if (!immediate) func.apply(context, args); + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; + } + + function close() { + // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/ + const scrollY = document.body.style.top; + document.body.style.position = ''; + document.body.style.top = ''; + window.scrollTo(0, parseInt(scrollY || '0') * -1); + // End scroll prevention + + var form = document.querySelector('[data-search-form]'); + var searchResults = document.querySelector('[data-search-results]'); + + form.classList.toggle('phpdocumentor-search--has-results', false); + searchResults.classList.add('phpdocumentor-search-results--hidden'); + var searchField = document.querySelector('[data-search-form] input[type="search"]'); + searchField.blur(); + } + + function search(event) { + // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/ + document.body.style.position = 'fixed'; + document.body.style.top = `-${window.scrollY}px`; + // End scroll prevention + + // prevent enter's from autosubmitting + event.stopPropagation(); + + var form = document.querySelector('[data-search-form]'); + var searchResults = document.querySelector('[data-search-results]'); + var searchResultEntries = document.querySelector('[data-search-results] .phpdocumentor-search-results__entries'); + + searchResultEntries.innerHTML = ''; + + if (!event.target.value) { + close(); + return; + } + + form.classList.toggle('phpdocumentor-search--has-results', true); + searchResults.classList.remove('phpdocumentor-search-results--hidden'); + var results = fuse.search(event.target.value, {limit: 25}); + + results.forEach(function (result) { + var entry = document.createElement("li"); + entry.classList.add("phpdocumentor-search-results__entry"); + entry.innerHTML += '

                                                                                                                                                ' + result.name + "

                                                                                                                                                \n"; + entry.innerHTML += '' + result.fqsen + "\n"; + entry.innerHTML += '
                                                                                                                                                ' + result.summary + '
                                                                                                                                                '; + searchResultEntries.appendChild(entry) + }); + } + + function appendIndex(added) { + index = index.concat(added); + + // re-initialize search engine when appending an index after initialisation + if (typeof fuse !== 'undefined') { + fuse = new Fuse(index, options); + } + } + + function init() { + fuse = new Fuse(index, options); + + var form = document.querySelector('[data-search-form]'); + var searchField = document.querySelector('[data-search-form] input[type="search"]'); + + var closeButton = document.querySelector('.phpdocumentor-search-results__close'); + closeButton.addEventListener('click', function() { close() }.bind(this)); + + var searchResults = document.querySelector('[data-search-results]'); + searchResults.addEventListener('click', function() { close() }.bind(this)); + + form.classList.add('phpdocumentor-search--active'); + + searchField.setAttribute('placeholder', 'Search (Press "/" to focus)'); + searchField.removeAttribute('disabled'); + searchField.addEventListener('keyup', debounce(search, 300)); + + window.addEventListener('keyup', function (event) { + if (event.key === '/') { + searchField.focus(); + } + if (event.code === 'Escape') { + close(); + } + }.bind(this)); + } + + return { + appendIndex, + init + } +})(); + +window.addEventListener('DOMContentLoaded', function () { + var form = document.querySelector('[data-search-form]'); + + // When JS is supported; show search box. Must be before including the search for it to take effect immediately + form.classList.add('phpdocumentor-search--enabled'); +}); + +window.addEventListener('load', function () { + Search.init(); +}); diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/js/searchIndex.js b/ci4/app/ThirdParty/DatatablesEditor/docs/js/searchIndex.js new file mode 100644 index 00000000..36a03f75 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/js/searchIndex.js @@ -0,0 +1,1744 @@ +Search.appendIndex( + [ + { + "fqsen": "\\DATATABLES", + "name": "DATATABLES", + "summary": "DataTables\u0020PHP\u0020libraries.", + "url": "namespaces/default.html#constant_DATATABLES" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query", + "name": "Db2Query", + "summary": "DB2\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-Db2Query.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003Atransaction\u0028\u0029", + "name": "transaction", + "summary": "Start\u0020a\u0020database\u0020transaction", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method_transaction" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003Acommit\u0028\u0029", + "name": "commit", + "summary": "Commit\u0020a\u0020transaction.", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method_commit" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003Arollback\u0028\u0029", + "name": "rollback", + "summary": "Rollback\u0020the\u0020database\u0020state\u0020to\u0020the\u0020start\u0020of\u0020the\u0020transaction.", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method_rollback" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003A_build_table\u0028\u0029", + "name": "_build_table", + "summary": "", + "url": "classes/DataTables-Database-Driver-Db2Query.html#method__build_table" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-Db2Query.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Query\u003A\u003A\u0024_field_quote", + "name": "_field_quote", + "summary": "", + "url": "classes/DataTables-Database-Driver-Db2Query.html#property__field_quote" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result", + "name": "Db2Result", + "summary": "SQL\u0020Server\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-Db2Result.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-Db2Result.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-Db2Result.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-Db2Result.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-Db2Result.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\Db2Result\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-Db2Result.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery", + "name": "FirebirdQuery", + "summary": "Firebird\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A\u0024_field_quote", + "name": "_field_quote", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#property__field_quote" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A\u0024_supportsAsAlias", + "name": "_supportsAsAlias", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#property__supportsAsAlias" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdQuery\u003A\u003A\u0024_pkeyInsertedTo", + "name": "_pkeyInsertedTo", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdQuery.html#property__pkeyInsertedTo" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult", + "name": "FirebirdResult", + "summary": "Firebird\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\FirebirdResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-FirebirdResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlQuery", + "name": "MysqlQuery", + "summary": "MySQL\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-MysqlQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-MysqlQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-MysqlQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-MysqlQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult", + "name": "MysqlResult", + "summary": "MySQL\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-MysqlResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-MysqlResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-MysqlResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-MysqlResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-MysqlResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\MysqlResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-MysqlResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery", + "name": "OracleQuery", + "summary": "Oracle\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-OracleQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003Atransaction\u0028\u0029", + "name": "transaction", + "summary": "Start\u0020a\u0020database\u0020transaction", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method_transaction" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003Acommit\u0028\u0029", + "name": "commit", + "summary": "Commit\u0020a\u0020transaction.", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method_commit" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003Arollback\u0028\u0029", + "name": "rollback", + "summary": "Rollback\u0020the\u0020database\u0020state\u0020to\u0020the\u0020start\u0020of\u0020the\u0020transaction.", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method_rollback" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A_build_table\u0028\u0029", + "name": "_build_table", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method__build_table" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A_build_limit\u0028\u0029", + "name": "_build_limit", + "summary": "Create\u0020the\u0020LIMIT\u0020\/\u0020OFFSET\u0020string", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#method__build_limit" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A\u0024_field_quote", + "name": "_field_quote", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#property__field_quote" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleQuery\u003A\u003A\u0024_supportsAsAlias", + "name": "_supportsAsAlias", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleQuery.html#property__supportsAsAlias" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult", + "name": "OracleResult", + "summary": "MySQL\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-OracleResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-OracleResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-OracleResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-OracleResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-OracleResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\OracleResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-OracleResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery", + "name": "PostgresQuery", + "summary": "Postgres\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresQuery\u003A\u003A\u0024_field_quote", + "name": "_field_quote", + "summary": "", + "url": "classes/DataTables-Database-Driver-PostgresQuery.html#property__field_quote" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult", + "name": "PostgresResult", + "summary": "Postgres\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-PostgresResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-PostgresResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-PostgresResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-PostgresResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-PostgresResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\PostgresResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-PostgresResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteQuery", + "name": "SqliteQuery", + "summary": "SQLite3\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-SqliteQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-SqliteQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-SqliteQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqliteQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteQuery\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqliteQuery.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult", + "name": "SqliteResult", + "summary": "Sqlite\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-SqliteResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqliteResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-SqliteResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-SqliteResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-SqliteResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqliteResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-SqliteResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery", + "name": "SqlserverQuery", + "summary": "SQL\u0020Server\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Query\u0020class", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery\u003A\u003A_exec\u0028\u0029", + "name": "_exec", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html#method__exec" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery\u003A\u003A_build_limit\u0028\u0029", + "name": "_build_limit", + "summary": "Create\u0020the\u0020LIMIT\u0020\/\u0020OFFSET\u0020string", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html#method__build_limit" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverQuery\u003A\u003A\u0024_identifier_limiter", + "name": "_identifier_limiter", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqlserverQuery.html#property__identifier_limiter" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult", + "name": "SqlserverResult", + "summary": "SQL\u0020Server\u0020driver\u0020for\u0020DataTables\u0020Database\u0020Result\u0020class", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Driver\\SqlserverResult\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Driver-SqlserverResult.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database\\Query", + "name": "Query", + "summary": "Perform\u0020an\u0020individual\u0020query\u0020on\u0020the\u0020database.", + "url": "classes/DataTables-Database-Query.html" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Query\u0020instance\u0020constructor.", + "url": "classes/DataTables-Database-Query.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Acommit\u0028\u0029", + "name": "commit", + "summary": "Commit\u0020a\u0020transaction.", + "url": "classes/DataTables-Database-Query.html#method_commit" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aconnect\u0028\u0029", + "name": "connect", + "summary": "Database\u0020connection\u0020\u002D\u0020override\u0020by\u0020the\u0020database\u0020driver.", + "url": "classes/DataTables-Database-Query.html#method_connect" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Atransaction\u0028\u0029", + "name": "transaction", + "summary": "Start\u0020a\u0020database\u0020transaction", + "url": "classes/DataTables-Database-Query.html#method_transaction" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Arollback\u0028\u0029", + "name": "rollback", + "summary": "Rollback\u0020the\u0020database\u0020state\u0020to\u0020the\u0020start\u0020of\u0020the\u0020transaction.", + "url": "classes/DataTables-Database-Query.html#method_rollback" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003AdsnPostfix\u0028\u0029", + "name": "dsnPostfix", + "summary": "Common\u0020helper\u0020for\u0020the\u0020drivers\u0020to\u0020handle\u0020a\u0020PDO\u0020DSN\u0020postfix", + "url": "classes/DataTables-Database-Query.html#method_dsnPostfix" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Abind\u0028\u0029", + "name": "bind", + "summary": "Safely\u0020bind\u0020an\u0020input\u0020value\u0020to\u0020a\u0020parameter.\u0020This\u0020is\u0020evaluated\u0020when\u0020the\nquery\u0020is\u0020executed.\u0020This\u0020allows\u0020user\u0020input\u0020to\u0020be\u0020safely\u0020executed\u0020without\nrisk\u0020of\u0020an\u0020SQL\u0020injection\u0020attack.", + "url": "classes/DataTables-Database-Query.html#method_bind" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Adatabase\u0028\u0029", + "name": "database", + "summary": "Get\u0020the\u0020Database\u0020host\u0020for\u0020this\u0020query\u0020instance", + "url": "classes/DataTables-Database-Query.html#method_database" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Adistinct\u0028\u0029", + "name": "distinct", + "summary": "Set\u0020a\u0020distinct\u0020flag\u0020for\u0020a\u0020\u0060select\u0060\u0020query.\u0020Note\u0020that\u0020this\u0020has\u0020no\u0020effect\u0020on\nany\u0020of\u0020the\u0020other\u0020query\u0020types.", + "url": "classes/DataTables-Database-Query.html#method_distinct" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aexec\u0028\u0029", + "name": "exec", + "summary": "Execute\u0020the\u0020query.", + "url": "classes/DataTables-Database-Query.html#method_exec" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aget\u0028\u0029", + "name": "get", + "summary": "Get\u0020fields.", + "url": "classes/DataTables-Database-Query.html#method_get" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Ajoin\u0028\u0029", + "name": "join", + "summary": "Perform\u0020a\u0020JOIN\u0020operation", + "url": "classes/DataTables-Database-Query.html#method_join" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aleft_join\u0028\u0029", + "name": "left_join", + "summary": "Add\u0020a\u0020left\u0020join,\u0020with\u0020common\u0020logic\u0020for\u0020handling\u0020binding\u0020or\u0020not", + "url": "classes/DataTables-Database-Query.html#method_left_join" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Alimit\u0028\u0029", + "name": "limit", + "summary": "Limit\u0020the\u0020result\u0020set\u0020to\u0020a\u0020certain\u0020size.", + "url": "classes/DataTables-Database-Query.html#method_limit" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Agroup_by\u0028\u0029", + "name": "group_by", + "summary": "Group\u0020the\u0020results\u0020by\u0020the\u0020values\u0020in\u0020a\u0020field", + "url": "classes/DataTables-Database-Query.html#method_group_by" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Apkey\u0028\u0029", + "name": "pkey", + "summary": "Get\u0020\/\u0020set\u0020the\u0020primary\u0020key\u0020column\u0020name\u0028s\u0029\u0020so\u0020they\u0020can\u0020be\u0020easily\u0020returned\nafter\u0020an\u0020insert.", + "url": "classes/DataTables-Database-Query.html#method_pkey" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Set\u0020table\u0028s\u0029\u0020to\u0020perform\u0020the\u0020query\u0020on.", + "url": "classes/DataTables-Database-Query.html#method_table" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aoffset\u0028\u0029", + "name": "offset", + "summary": "Offset\u0020the\u0020return\u0020set\u0020by\u0020a\u0020given\u0020number\u0020of\u0020records\u0020\u0028useful\u0020for\u0020paging\u0029.", + "url": "classes/DataTables-Database-Query.html#method_offset" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aorder\u0028\u0029", + "name": "order", + "summary": "Order\u0020by", + "url": "classes/DataTables-Database-Query.html#method_order" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aset\u0028\u0029", + "name": "set", + "summary": "Set\u0020fields\u0020to\u0020a\u0020given\u0020value.", + "url": "classes/DataTables-Database-Query.html#method_set" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Where\u0020query\u0020\u002D\u0020multiple\u0020conditions\u0020are\u0020bound\u0020as\u0020ANDs.", + "url": "classes/DataTables-Database-Query.html#method_where" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aand_where\u0028\u0029", + "name": "and_where", + "summary": "Add\u0020addition\u0020where\u0020conditions\u0020to\u0020the\u0020query\u0020with\u0020an\u0020AND\u0020operator.\u0020An\u0020alias\nof\u0020\u0060where\u0060\u0020for\u0020naming\u0020consistency.", + "url": "classes/DataTables-Database-Query.html#method_and_where" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Aor_where\u0028\u0029", + "name": "or_where", + "summary": "Add\u0020addition\u0020where\u0020conditions\u0020to\u0020the\u0020query\u0020with\u0020an\u0020OR\u0020operator.", + "url": "classes/DataTables-Database-Query.html#method_or_where" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Awhere_group\u0028\u0029", + "name": "where_group", + "summary": "Provide\u0020grouping\u0020for\u0020WHERE\u0020conditions.\u0020Use\u0020it\u0020with\u0020a\u0020callback\u0020function\u0020to\nautomatically\u0020group\u0020any\u0020conditions\u0020applied\u0020inside\u0020the\u0020method.", + "url": "classes/DataTables-Database-Query.html#method_where_group" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003Awhere_in\u0028\u0029", + "name": "where_in", + "summary": "Provide\u0020a\u0020method\u0020that\u0020can\u0020be\u0020used\u0020to\u0020perform\u0020a\u0020\u0060WHERE\u0020...\u0020IN\u0020\u0028...\u0029\u0060\u0020query\nwith\u0020bound\u0020values\u0020and\u0020parameters.", + "url": "classes/DataTables-Database-Query.html#method_where_in" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A_build_limit\u0028\u0029", + "name": "_build_limit", + "summary": "Create\u0020the\u0020LIMIT\u0020\/\u0020OFFSET\u0020string", + "url": "classes/DataTables-Database-Query.html#method__build_limit" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A_escape_field\u0028\u0029", + "name": "_escape_field", + "summary": "Escape\u0020quotes\u0020in\u0020a\u0020field\u0020identifier", + "url": "classes/DataTables-Database-Query.html#method__escape_field" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A_prepare\u0028\u0029", + "name": "_prepare", + "summary": "Prepare\u0020the\u0020SQL\u0020query\u0020by\u0020populating\u0020the\u0020bound\u0020variables.", + "url": "classes/DataTables-Database-Query.html#method__prepare" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A\u0024_supportsAsAlias", + "name": "_supportsAsAlias", + "summary": "", + "url": "classes/DataTables-Database-Query.html#property__supportsAsAlias" + }, { + "fqsen": "\\DataTables\\Database\\Query\u003A\u003A\u0024_whereInCnt", + "name": "_whereInCnt", + "summary": "", + "url": "classes/DataTables-Database-Query.html#property__whereInCnt" + }, { + "fqsen": "\\DataTables\\Database\\Result", + "name": "Result", + "summary": "Result\u0020object\u0020given\u0020by\u0020a\u0020\u007B\u0040see\u0020Query\u007D\u0020performed\u0020on\u0020a\u0020database.", + "url": "classes/DataTables-Database-Result.html" + }, { + "fqsen": "\\DataTables\\Database\\Result\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Count\u0020the\u0020number\u0020of\u0020rows\u0020in\u0020the\u0020result\u0020set.", + "url": "classes/DataTables-Database-Result.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\\Result\u003A\u003Afetch\u0028\u0029", + "name": "fetch", + "summary": "Get\u0020the\u0020next\u0020row\u0020in\u0020a\u0020result\u0020set", + "url": "classes/DataTables-Database-Result.html#method_fetch" + }, { + "fqsen": "\\DataTables\\Database\\Result\u003A\u003AfetchAll\u0028\u0029", + "name": "fetchAll", + "summary": "Get\u0020all\u0020rows\u0020in\u0020the\u0020result\u0020set", + "url": "classes/DataTables-Database-Result.html#method_fetchAll" + }, { + "fqsen": "\\DataTables\\Database\\Result\u003A\u003AinsertId\u0028\u0029", + "name": "insertId", + "summary": "After\u0020an\u0020INSERT\u0020query,\u0020get\u0020the\u0020ID\u0020that\u0020was\u0020inserted.", + "url": "classes/DataTables-Database-Result.html#method_insertId" + }, { + "fqsen": "\\DataTables\\Database", + "name": "Database", + "summary": "DataTables\u0020Database\u0020connection\u0020object.", + "url": "classes/DataTables-Database.html" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Database\u0020instance\u0020constructor.", + "url": "classes/DataTables-Database.html#method___construct" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aany\u0028\u0029", + "name": "any", + "summary": "Determine\u0020if\u0020there\u0020is\u0020any\u0020data\u0020in\u0020the\u0020table\u0020that\u0020matches\u0020the\u0020query\ncondition", + "url": "classes/DataTables-Database.html#method_any" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Acommit\u0028\u0029", + "name": "commit", + "summary": "Commit\u0020a\u0020database\u0020transaction.", + "url": "classes/DataTables-Database.html#method_commit" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Acount\u0028\u0029", + "name": "count", + "summary": "Get\u0020a\u0020count\u0020from\u0020a\u0020table.", + "url": "classes/DataTables-Database.html#method_count" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Adebug\u0028\u0029", + "name": "debug", + "summary": "Get\u0020\/\u0020set\u0020debug\u0020mode.", + "url": "classes/DataTables-Database.html#method_debug" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Adelete\u0028\u0029", + "name": "delete", + "summary": "Perform\u0020a\u0020delete\u0020query\u0020on\u0020a\u0020table.", + "url": "classes/DataTables-Database.html#method_delete" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Ainsert\u0028\u0029", + "name": "insert", + "summary": "Insert\u0020data\u0020into\u0020a\u0020table.", + "url": "classes/DataTables-Database.html#method_insert" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Apush\u0028\u0029", + "name": "push", + "summary": "Update\u0020or\u0020Insert\u0020data.\u0020When\u0020doing\u0020an\u0020insert,\u0020the\u0020where\u0020condition\u0020is\nadded\u0020as\u0020a\u0020set\u0020field", + "url": "classes/DataTables-Database.html#method_push" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aquery\u0028\u0029", + "name": "query", + "summary": "Create\u0020a\u0020query\u0020object\u0020to\u0020build\u0020a\u0020database\u0020query.", + "url": "classes/DataTables-Database.html#method_query" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aquote\u0028\u0029", + "name": "quote", + "summary": "Quote\u0020a\u0020string\u0020for\u0020a\u0020quote.\u0020Note\u0020you\u0020should\u0020generally\u0020use\u0020a\u0020bind\u0021", + "url": "classes/DataTables-Database.html#method_quote" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Araw\u0028\u0029", + "name": "raw", + "summary": "Create\u0020a\u0020\u0060Query\u0060\u0020object\u0020that\u0020will\u0020execute\u0020a\u0020custom\u0020SQL\u0020query.\u0020This\u0020is\nsimilar\u0020to\u0020the\u0020\u0060sql\u0060\u0020method,\u0020but\u0020in\u0020this\u0020case\u0020you\u0020must\u0020call\u0020the\u0020\u0060exec\u0028\u0029\u0060\nmethod\u0020of\u0020the\u0020returned\u0020\u0060Query\u0060\u0020object\u0020manually.\u0020This\u0020can\u0020be\u0020useful\u0020if\u0020you\nwish\u0020to\u0020bind\u0020parameters\u0020using\u0020the\u0020query\u0020\u0060bind\u0060\u0020method\u0020to\u0020ensure\u0020data\u0020is\nproperly\u0020escaped.", + "url": "classes/DataTables-Database.html#method_raw" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aresource\u0028\u0029", + "name": "resource", + "summary": "Get\u0020the\u0020database\u0020resource\u0020connector.\u0020This\u0020is\u0020typically\u0020a\u0020PDO\u0020object.", + "url": "classes/DataTables-Database.html#method_resource" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Arollback\u0028\u0029", + "name": "rollback", + "summary": "Rollback\u0020the\u0020database\u0020state\u0020to\u0020the\u0020start\u0020of\u0020the\u0020transaction.", + "url": "classes/DataTables-Database.html#method_rollback" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aselect\u0028\u0029", + "name": "select", + "summary": "Select\u0020data\u0020from\u0020a\u0020table.", + "url": "classes/DataTables-Database.html#method_select" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003AselectDistinct\u0028\u0029", + "name": "selectDistinct", + "summary": "Select\u0020distinct\u0020data\u0020from\u0020a\u0020table.", + "url": "classes/DataTables-Database.html#method_selectDistinct" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Asql\u0028\u0029", + "name": "sql", + "summary": "Execute\u0020an\u0020raw\u0020SQL\u0020query\u0020\u002D\u0020i.e.\u0020give\u0020the\u0020method\u0020your\u0020own\u0020SQL,\u0020rather\nthan\u0020having\u0020the\u0020Database\u0020classes\u0020building\u0020it\u0020for\u0020you.", + "url": "classes/DataTables-Database.html#method_sql" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Atransaction\u0028\u0029", + "name": "transaction", + "summary": "Start\u0020a\u0020new\u0020database\u0020transaction.", + "url": "classes/DataTables-Database.html#method_transaction" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Atype\u0028\u0029", + "name": "type", + "summary": "Get\u0020the\u0020database\u0020type\u0020\u0028e.g.\u0020Postgres,\u0020Mysql,\u0020etc\u0029", + "url": "classes/DataTables-Database.html#method_type" + }, { + "fqsen": "\\DataTables\\Database\u003A\u003Aupdate\u0028\u0029", + "name": "update", + "summary": "Update\u0020data.", + "url": "classes/DataTables-Database.html#method_update" + }, { + "fqsen": "\\DataTables\\Editor\\Field", + "name": "Field", + "summary": "Field\u0020definitions\u0020for\u0020the\u0020DataTables\u0020Editor.", + "url": "classes/DataTables-Editor-Field.html" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Field\u0020instance\u0020constructor.", + "url": "classes/DataTables-Editor-Field.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AdbField\u0028\u0029", + "name": "dbField", + "summary": "Get\u0020\/\u0020set\u0020the\u0020DB\u0020field\u0020name.", + "url": "classes/DataTables-Editor-Field.html#method_dbField" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aget\u0028\u0029", + "name": "get", + "summary": "Get\u0020\/\u0020set\u0020the\u0020\u0027get\u0027\u0020property\u0020of\u0020the\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_get" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AgetFormatter\u0028\u0029", + "name": "getFormatter", + "summary": "Get\u0020formatter\u0020for\u0020the\u0020field\u0027s\u0020data.", + "url": "classes/DataTables-Editor-Field.html#method_getFormatter" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AgetValue\u0028\u0029", + "name": "getValue", + "summary": "Get\u0020\/\u0020set\u0020a\u0020get\u0020value.\u0020If\u0020given,\u0020then\u0020this\u0020value\u0020is\u0020used\u0020to\u0020send\u0020to\u0020the\nclient\u002Dside,\u0020regardless\u0020of\u0020what\u0020value\u0020is\u0020held\u0020by\u0020the\u0020database.", + "url": "classes/DataTables-Editor-Field.html#method_getValue" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aname\u0028\u0029", + "name": "name", + "summary": "Get\u0020\/\u0020set\u0020the\u0020\u0027name\u0027\u0020property\u0020of\u0020the\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_name" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aoptions\u0028\u0029", + "name": "options", + "summary": "Get\u0020a\u0020list\u0020of\u0020values\u0020that\u0020can\u0020be\u0020used\u0020for\u0020the\u0020options\u0020list\u0020in\u0020radio,\nselect\u0020and\u0020checkbox\u0020inputs\u0020from\u0020the\u0020database\u0020for\u0020this\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_options" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AsearchPaneOptions\u0028\u0029", + "name": "searchPaneOptions", + "summary": "Get\u0020a\u0020list\u0020of\u0020values\u0020that\u0020can\u0020be\u0020used\u0020for\u0020the\u0020options\u0020list\u0020in\u0020SearchPanes", + "url": "classes/DataTables-Editor-Field.html#method_searchPaneOptions" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AsearchBuilderOptions\u0028\u0029", + "name": "searchBuilderOptions", + "summary": "Get\u0020a\u0020list\u0020of\u0020values\u0020that\u0020can\u0020be\u0020used\u0020for\u0020the\u0020options\u0020list\u0020in\u0020SearchBuilder", + "url": "classes/DataTables-Editor-Field.html#method_searchBuilderOptions" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aset\u0028\u0029", + "name": "set", + "summary": "Get\u0020\/\u0020set\u0020the\u0020\u0027set\u0027\u0020property\u0020of\u0020the\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_set" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AsetFormatter\u0028\u0029", + "name": "setFormatter", + "summary": "Set\u0020formatter\u0020for\u0020the\u0020field\u0027s\u0020data.", + "url": "classes/DataTables-Editor-Field.html#method_setFormatter" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AsetValue\u0028\u0029", + "name": "setValue", + "summary": "Get\u0020\/\u0020set\u0020a\u0020set\u0020value.\u0020If\u0020given,\u0020then\u0020this\u0020value\u0020is\u0020used\u0020to\u0020write\u0020to\u0020the\ndatabase\u0020regardless\u0020of\u0020what\u0020data\u0020is\u0020sent\u0020from\u0020the\u0020client\u002Dside.", + "url": "classes/DataTables-Editor-Field.html#method_setValue" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aupload\u0028\u0029", + "name": "upload", + "summary": "Get\u0020\/\u0020set\u0020the\u0020upload\u0020class\u0020for\u0020this\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_upload" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Avalidator\u0028\u0029", + "name": "validator", + "summary": "Get\u0020\/\u0020set\u0020the\u0020\u0027validator\u0027\u0020of\u0020the\u0020field.", + "url": "classes/DataTables-Editor-Field.html#method_validator" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Axss\u0028\u0029", + "name": "xss", + "summary": "Set\u0020a\u0020formatting\u0020method\u0020that\u0020will\u0020be\u0020used\u0020for\u0020XSS\u0020checking\u0020\/\u0020removal.", + "url": "classes/DataTables-Editor-Field.html#method_xss" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aapply\u0028\u0029", + "name": "apply", + "summary": "Check\u0020to\u0020see\u0020if\u0020a\u0020field\u0020should\u0020be\u0020used\u0020for\u0020a\u0020particular\u0020action\u0020\u0028get\u0020or\u0020set\u0029.", + "url": "classes/DataTables-Editor-Field.html#method_apply" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003Aval\u0028\u0029", + "name": "val", + "summary": "Get\u0020the\u0020value\u0020of\u0020the\u0020field,\u0020taking\u0020into\u0020account\u0020if\u0020it\u0020is\u0020coming\u0020from\u0020the\nDB\u0020or\u0020from\u0020a\u0020POST.\u0020If\u0020formatting\u0020has\u0020been\u0020specified\u0020for\u0020this\u0020field,\u0020it\nwill\u0020be\u0020applied\u0020here.", + "url": "classes/DataTables-Editor-Field.html#method_val" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003AxssSafety\u0028\u0029", + "name": "xssSafety", + "summary": "Perform\u0020XSS\u0020prevention\u0020on\u0020an\u0020input.", + "url": "classes/DataTables-Editor-Field.html#method_xssSafety" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003ASET_NONE", + "name": "SET_NONE", + "summary": "Set\u0020option\u0020flag\u0020\u0028\u0060set\u0028\u0029\u0060\u0029\u0020\u002D\u0020do\u0020not\u0020set\u0020data", + "url": "classes/DataTables-Editor-Field.html#constant_SET_NONE" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003ASET_BOTH", + "name": "SET_BOTH", + "summary": "Set\u0020option\u0020flag\u0020\u0028\u0060set\u0028\u0029\u0060\u0029\u0020\u002D\u0020write\u0020to\u0020database\u0020on\u0020both\u0020create\u0020and\u0020edit", + "url": "classes/DataTables-Editor-Field.html#constant_SET_BOTH" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003ASET_CREATE", + "name": "SET_CREATE", + "summary": "Set\u0020option\u0020flag\u0020\u0028\u0060set\u0028\u0029\u0060\u0029\u0020\u002D\u0020write\u0020to\u0020database\u0020only\u0020on\u0020create", + "url": "classes/DataTables-Editor-Field.html#constant_SET_CREATE" + }, { + "fqsen": "\\DataTables\\Editor\\Field\u003A\u003ASET_EDIT", + "name": "SET_EDIT", + "summary": "Set\u0020option\u0020flag\u0020\u0028\u0060set\u0028\u0029\u0060\u0029\u0020\u002D\u0020write\u0020to\u0020database\u0020only\u0020on\u0020edit", + "url": "classes/DataTables-Editor-Field.html#constant_SET_EDIT" + }, { + "fqsen": "\\DataTables\\Editor\\Format", + "name": "Format", + "summary": "Formatter\u0020methods\u0020for\u0020the\u0020DataTables\u0020Editor", + "url": "classes/DataTables-Editor-Format.html" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AdateSqlToFormat\u0028\u0029", + "name": "dateSqlToFormat", + "summary": "Convert\u0020from\u0020SQL\u0020date\u0020\/\u0020date\u0020time\u0020format\u0020to\u0020a\u0020format\u0020given\u0020by\u0020the\u0020options\nparameter.", + "url": "classes/DataTables-Editor-Format.html#method_dateSqlToFormat" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AdateFormatToSql\u0028\u0029", + "name": "dateFormatToSql", + "summary": "Convert\u0020from\u0020a\u0020format\u0020given\u0020by\u0020the\u0020options\u0020parameter\u0020to\u0020a\u0020format\u0020that\nSQL\u0020servers\u0020will\u0020recognise\u0020as\u0020a\u0020date.", + "url": "classes/DataTables-Editor-Format.html#method_dateFormatToSql" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003Adatetime\u0028\u0029", + "name": "datetime", + "summary": "Convert\u0020from\u0020one\u0020date\u0020time\u0020format\u0020to\u0020another", + "url": "classes/DataTables-Editor-Format.html#method_datetime" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003Aexplode\u0028\u0029", + "name": "explode", + "summary": "Convert\u0020a\u0020string\u0020of\u0020values\u0020into\u0020an\u0020array\u0020for\u0020use\u0020with\u0020checkboxes.", + "url": "classes/DataTables-Editor-Format.html#method_explode" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003Aimplode\u0028\u0029", + "name": "implode", + "summary": "Convert\u0020an\u0020array\u0020of\u0020values\u0020from\u0020a\u0020checkbox\u0020into\u0020a\u0020string\u0020which\u0020can\u0020be\nused\u0020to\u0020store\u0020in\u0020a\u0020text\u0020field\u0020in\u0020a\u0020database.", + "url": "classes/DataTables-Editor-Format.html#method_implode" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AnullEmpty\u0028\u0029", + "name": "nullEmpty", + "summary": "Convert\u0020an\u0020empty\u0020string\u0020to\u0020\u0060null\u0060.\u0020Null\u0020values\u0020are\u0020very\u0020useful\u0020in\ndatabases,\u0020but\u0020HTTP\u0020variables\u0020have\u0020no\u0020way\u0020of\u0020representing\u0020\u0060null\u0060\u0020as\u0020a\nvalue,\u0020often\u0020leading\u0020to\u0020an\u0020empty\u0020string\u0020and\u0020null\u0020overlapping.\u0020This\u0020method\nwill\u0020check\u0020the\u0020value\u0020to\u0020operate\u0020on\u0020and\u0020return\u0020null\u0020if\u0020it\u0020is\u0020empty.", + "url": "classes/DataTables-Editor-Format.html#method_nullEmpty" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AifEmpty\u0028\u0029", + "name": "ifEmpty", + "summary": "Formatter\u0020that\u0020can\u0020be\u0020used\u0020to\u0020specify\u0020what\u0020value\u0020should\u0020be\u0020used\u0020if\u0020an\nempty\u0020value\u0020is\u0020submitted\u0020by\u0020the\u0020client\u002Dside\u0020\u0028e.g.\u0020null,\u00200,\u0020\u0027Not\u0020set\u0027,\netc\u0029", + "url": "classes/DataTables-Editor-Format.html#method_ifEmpty" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AfromDecimalChar\u0028\u0029", + "name": "fromDecimalChar", + "summary": "Convert\u0020a\u0020number\u0020from\u0020using\u0020any\u0020character\u0020other\u0020than\u0020a\u0020period\u0020\u0028dot\u0029\u0020to\none\u0020which\u0020does\u0020use\u0020a\u0020period.\u0020This\u0020is\u0020useful\u0020for\u0020allowing\u0020numeric\u0020user\ninput\u0020in\u0020regions\u0020where\u0020a\u0020comma\u0020is\u0020used\u0020as\u0020the\u0020decimal\u0020character.\u0020Use\u0020with\na\u0020set\u0020formatter.", + "url": "classes/DataTables-Editor-Format.html#method_fromDecimalChar" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003AtoDecimalChar\u0028\u0029", + "name": "toDecimalChar", + "summary": "Convert\u0020a\u0020number\u0020with\u0020a\u0020period\u0020\u0028dot\u0029\u0020as\u0020the\u0020decimal\u0020character\u0020to\u0020use\na\u0020different\u0020character\u0020\u0028typically\u0020a\u0020comma\u0029.\u0020Use\u0020with\u0020a\u0020get\u0020formatter.", + "url": "classes/DataTables-Editor-Format.html#method_toDecimalChar" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_8601", + "name": "DATE_ISO_8601", + "summary": "Date\u0020format\u003A\u00202012\u002D03\u002D09.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020yy\u002Dmm\u002Ddd", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_8601" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_822", + "name": "DATE_ISO_822", + "summary": "Date\u0020format\u003A\u0020Fri,\u00209\u0020Mar\u002012.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020D,\u0020d\u0020M\u0020y", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_822" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_850", + "name": "DATE_ISO_850", + "summary": "Date\u0020format\u003A\u0020Friday,\u002009\u002DMar\u002D12.\u0020\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020DD,\u0020dd\u002DM\u002Dy", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_850" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_1036", + "name": "DATE_ISO_1036", + "summary": "Date\u0020format\u003A\u0020Fri,\u00209\u0020Mar\u002012.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020D,\u0020d\u0020M\u0020y", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_1036" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_1123", + "name": "DATE_ISO_1123", + "summary": "Date\u0020format\u003A\u0020Fri,\u00209\u0020Mar\u00202012.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020D,\u0020d\u0020M\u0020yy", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_1123" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_ISO_2822", + "name": "DATE_ISO_2822", + "summary": "Date\u0020format\u003A\u0020Fri,\u00209\u0020Mar\u00202012.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020D,\u0020d\u0020M\u0020yy", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_ISO_2822" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_USA", + "name": "DATE_USA", + "summary": "Date\u0020format\u003A\u0020March\u002D.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020D,\u0020d\u0020M\u0020yy", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_USA" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_TIMESTAMP", + "name": "DATE_TIMESTAMP", + "summary": "Date\u0020format\u003A\u00201331251200.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020\u0040", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_TIMESTAMP" + }, { + "fqsen": "\\DataTables\\Editor\\Format\u003A\u003ADATE_EPOCH", + "name": "DATE_EPOCH", + "summary": "Date\u0020format\u003A\u00201331251200.\u0020jQuery\u0020UI\u0020equivalent\u0020format\u003A\u0020\u0040", + "url": "classes/DataTables-Editor-Format.html#constant_DATE_EPOCH" + }, { + "fqsen": "\\DataTables\\Editor\\Join", + "name": "Join", + "summary": "Join\u0020table\u0020class\u0020for\u0020DataTables\u0020Editor.", + "url": "classes/DataTables-Editor-Join.html" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Join\u0020instance\u0020constructor.", + "url": "classes/DataTables-Editor-Join.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003AaliasParentTable\u0028\u0029", + "name": "aliasParentTable", + "summary": "Get\u0020\/\u0020set\u0020parent\u0020table\u0020alias.", + "url": "classes/DataTables-Editor-Join.html#method_aliasParentTable" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Afield\u0028\u0029", + "name": "field", + "summary": "Get\u0020\/\u0020set\u0020field\u0020instances.", + "url": "classes/DataTables-Editor-Join.html#method_field" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Afields\u0028\u0029", + "name": "fields", + "summary": "Get\u0020\/\u0020set\u0020field\u0020instances.", + "url": "classes/DataTables-Editor-Join.html#method_fields" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aget\u0028\u0029", + "name": "get", + "summary": "Get\u0020\/\u0020set\u0020get\u0020attribute.", + "url": "classes/DataTables-Editor-Join.html#method_get" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Ajoin\u0028\u0029", + "name": "join", + "summary": "Get\u0020\/\u0020set\u0020join\u0020properties.", + "url": "classes/DataTables-Editor-Join.html#method_join" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003AleftJoin\u0028\u0029", + "name": "leftJoin", + "summary": "Set\u0020up\u0020a\u0020left\u0020join\u0020operation\u0020for\u0020the\u0020Mjoined\u0020data", + "url": "classes/DataTables-Editor-Join.html#method_leftJoin" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Alink\u0028\u0029", + "name": "link", + "summary": "Create\u0020a\u0020join\u0020link\u0020between\u0020two\u0020tables.\u0020The\u0020order\u0020of\u0020the\u0020fields\u0020does\u0020not\nmatter,\u0020but\u0020each\u0020field\u0020must\u0020contain\u0020the\u0020table\u0020name\u0020as\u0020well\u0020as\u0020the\u0020field\nname.", + "url": "classes/DataTables-Editor-Join.html#method_link" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aorder\u0028\u0029", + "name": "order", + "summary": "Specify\u0020the\u0020property\u0020that\u0020the\u0020data\u0020will\u0020be\u0020sorted\u0020by.", + "url": "classes/DataTables-Editor-Join.html#method_order" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aname\u0028\u0029", + "name": "name", + "summary": "Get\u0020\/\u0020set\u0020name.", + "url": "classes/DataTables-Editor-Join.html#method_name" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aset\u0028\u0029", + "name": "set", + "summary": "Get\u0020\/\u0020set\u0020set\u0020attribute.", + "url": "classes/DataTables-Editor-Join.html#method_set" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Get\u0020\/\u0020set\u0020join\u0020table\u0020name.", + "url": "classes/DataTables-Editor-Join.html#method_table" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Atype\u0028\u0029", + "name": "type", + "summary": "Get\u0020\/\u0020set\u0020the\u0020join\u0020type.", + "url": "classes/DataTables-Editor-Join.html#method_type" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Avalidator\u0028\u0029", + "name": "validator", + "summary": "Set\u0020a\u0020validator\u0020for\u0020the\u0020array\u0020of\u0020data\u0020\u0028not\u0020on\u0020a\u0020field\u0020basis\u0029", + "url": "classes/DataTables-Editor-Join.html#method_validator" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Where\u0020condition\u0020to\u0020add\u0020to\u0020the\u0020query\u0020used\u0020to\u0020get\u0020data\u0020from\u0020the\u0020database.", + "url": "classes/DataTables-Editor-Join.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003AwhereSet\u0028\u0029", + "name": "whereSet", + "summary": "Get\u0020\/\u0020set\u0020if\u0020the\u0020WHERE\u0020conditions\u0020should\u0020be\u0020included\u0020in\u0020the\u0020create\u0020and\nedit\u0020actions.", + "url": "classes/DataTables-Editor-Join.html#method_whereSet" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Adata\u0028\u0029", + "name": "data", + "summary": "Get\u0020data", + "url": "classes/DataTables-Editor-Join.html#method_data" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Acreate\u0028\u0029", + "name": "create", + "summary": "Create\u0020a\u0020row.", + "url": "classes/DataTables-Editor-Join.html#method_create" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aupdate\u0028\u0029", + "name": "update", + "summary": "Update\u0020a\u0020row.", + "url": "classes/DataTables-Editor-Join.html#method_update" + }, { + "fqsen": "\\DataTables\\Editor\\Join\u003A\u003Aremove\u0028\u0029", + "name": "remove", + "summary": "Delete\u0020rows", + "url": "classes/DataTables-Editor-Join.html#method_remove" + }, { + "fqsen": "\\DataTables\\Editor\\Mjoin", + "name": "Mjoin", + "summary": "The\u0020\u0060Mjoin\u0060\u0020class\u0020extends\u0020the\u0020\u0060Join\u0060\u0020class\u0020with\u0020the\u0020join\u0020data\u0020type\u0020set\u0020to\n\u0027array\u0027,\u0020whereas\u0020the\u0020\u0060Join\u0060\u0020default\u0020is\u0020\u0060object\u0060\u0020which\u0020has\u0020been\u0020rendered\nobsolete\u0020by\u0020the\u0020\u0060Editor\u002D\u003EleftJoin\u0028\u0029\u0060\u0020method.\u0020The\u0020API\u0020API\u0020is\u0020otherwise\nidentical.", + "url": "classes/DataTables-Editor-Mjoin.html" + }, { + "fqsen": "\\DataTables\\Editor\\Mjoin\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Join\u0020instance\u0020constructor.", + "url": "classes/DataTables-Editor-Mjoin.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\\Options", + "name": "Options", + "summary": "The\u0020Options\u0020class\u0020provides\u0020a\u0020convenient\u0020method\u0020of\u0020specifying\u0020where\u0020Editor\nshould\u0020get\u0020the\u0020list\u0020of\u0020options\u0020for\u0020a\u0020\u0060select\u0060,\u0020\u0060radio\u0060\u0020or\u0020\u0060checkbox\u0060\u0020field.", + "url": "classes/DataTables-Editor-Options.html" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Aadd\u0028\u0029", + "name": "add", + "summary": "Add\u0020extra\u0020options\u0020to\u0020the\u0020list,\u0020in\u0020addition\u0020to\u0020any\u0020obtained\u0020from\u0020the\u0020database", + "url": "classes/DataTables-Editor-Options.html#method_add" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Alabel\u0028\u0029", + "name": "label", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0028s\u0029\u0020to\u0020use\u0020as\u0020the\u0020label\u0020value\u0020of\u0020the\u0020options", + "url": "classes/DataTables-Editor-Options.html#method_label" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003AleftJoin\u0028\u0029", + "name": "leftJoin", + "summary": "Set\u0020up\u0020a\u0020left\u0020join\u0020operation\u0020for\u0020the\u0020options", + "url": "classes/DataTables-Editor-Options.html#method_leftJoin" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Alimit\u0028\u0029", + "name": "limit", + "summary": "Get\u0020\/\u0020set\u0020the\u0020LIMIT\u0020clause\u0020to\u0020limit\u0020the\u0020number\u0020of\u0020records\u0020returned.", + "url": "classes/DataTables-Editor-Options.html#method_limit" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Aorder\u0028\u0029", + "name": "order", + "summary": "Get\u0020\/\u0020set\u0020the\u0020ORDER\u0020BY\u0020clause\u0020to\u0020use\u0020in\u0020the\u0020SQL.\u0020If\u0020this\u0020option\u0020is\u0020not\nprovided\u0020the\u0020ordering\u0020will\u0020be\u0020based\u0020on\u0020the\u0020rendered\u0020output,\u0020either\nnumerically\u0020or\u0020alphabetically\u0020based\u0020on\u0020the\u0020data\u0020returned\u0020by\u0020the\u0020renderer.", + "url": "classes/DataTables-Editor-Options.html#method_order" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Arender\u0028\u0029", + "name": "render", + "summary": "Get\u0020\/\u0020set\u0020the\u0020label\u0020renderer.\u0020The\u0020renderer\u0020can\u0020be\u0020used\u0020to\u0020combine\nmultiple\u0020database\u0020columns\u0020into\u0020a\u0020single\u0020string\u0020that\u0020is\u0020shown\u0020as\u0020the\u0020label\nto\u0020the\u0020end\u0020user\u0020in\u0020the\u0020list\u0020of\u0020options.", + "url": "classes/DataTables-Editor-Options.html#method_render" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Get\u0020\/\u0020set\u0020the\u0020database\u0020table\u0020from\u0020which\u0020to\u0020gather\u0020the\u0020options\u0020for\u0020the\nlist.", + "url": "classes/DataTables-Editor-Options.html#method_table" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Avalue\u0028\u0029", + "name": "value", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0020name\u0020to\u0020use\u0020for\u0020the\u0020value\u0020in\u0020the\u0020options\u0020list.\u0020This\nwould\u0020normally\u0020be\u0020the\u0020primary\u0020key\u0020for\u0020the\u0020table.", + "url": "classes/DataTables-Editor-Options.html#method_value" + }, { + "fqsen": "\\DataTables\\Editor\\Options\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Get\u0020\/\u0020set\u0020the\u0020method\u0020to\u0020use\u0020for\u0020a\u0020WHERE\u0020condition\u0020if\u0020it\u0020is\u0020to\u0020be\napplied\u0020to\u0020the\u0020query\u0020to\u0020get\u0020the\u0020options.", + "url": "classes/DataTables-Editor-Options.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions", + "name": "SearchBuilderOptions", + "summary": "The\u0020Options\u0020class\u0020provides\u0020a\u0020convenient\u0020method\u0020of\u0020specifying\u0020where\u0020Editor\nshould\u0020get\u0020the\u0020list\u0020of\u0020options\u0020for\u0020a\u0020\u0060select\u0060,\u0020\u0060radio\u0060\u0020or\u0020\u0060checkbox\u0060\u0020field.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Alabel\u0028\u0029", + "name": "label", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0028s\u0029\u0020to\u0020use\u0020as\u0020the\u0020label\u0020value\u0020of\u0020the\u0020options", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_label" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Aorder\u0028\u0029", + "name": "order", + "summary": "Get\u0020\/\u0020set\u0020the\u0020ORDER\u0020BY\u0020clause\u0020to\u0020use\u0020in\u0020the\u0020SQL.\u0020If\u0020this\u0020option\u0020is\u0020not\nprovided\u0020the\u0020ordering\u0020will\u0020be\u0020based\u0020on\u0020the\u0020rendered\u0020output,\u0020either\nnumerically\u0020or\u0020alphabetically\u0020based\u0020on\u0020the\u0020data\u0020returned\u0020by\u0020the\u0020renderer.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_order" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Arender\u0028\u0029", + "name": "render", + "summary": "Get\u0020\/\u0020set\u0020the\u0020label\u0020renderer.\u0020The\u0020renderer\u0020can\u0020be\u0020used\u0020to\u0020combine\nmultiple\u0020database\u0020columns\u0020into\u0020a\u0020single\u0020string\u0020that\u0020is\u0020shown\u0020as\u0020the\u0020label\nto\u0020the\u0020end\u0020user\u0020in\u0020the\u0020list\u0020of\u0020options.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_render" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Get\u0020\/\u0020set\u0020the\u0020database\u0020table\u0020from\u0020which\u0020to\u0020gather\u0020the\u0020options\u0020for\u0020the\nlist.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_table" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Avalue\u0028\u0029", + "name": "value", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0020name\u0020to\u0020use\u0020for\u0020the\u0020value\u0020in\u0020the\u0020options\u0020list.\u0020This\nwould\u0020normally\u0020be\u0020the\u0020primary\u0020key\u0020for\u0020the\u0020table.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_value" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Get\u0020\/\u0020set\u0020the\u0020method\u0020to\u0020use\u0020for\u0020a\u0020WHERE\u0020condition\u0020if\u0020it\u0020is\u0020to\u0020be\napplied\u0020to\u0020the\u0020query\u0020to\u0020get\u0020the\u0020options.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\\SearchBuilderOptions\u003A\u003AleftJoin\u0028\u0029", + "name": "leftJoin", + "summary": "Get\u0020\/\u0020set\u0020the\u0020array\u0020values\u0020used\u0020for\u0020a\u0020leftJoin\u0020condition\u0020if\u0020it\u0020is\u0020to\u0020be\napplied\u0020to\u0020the\u0020query\u0020to\u0020get\u0020the\u0020options.", + "url": "classes/DataTables-Editor-SearchBuilderOptions.html#method_leftJoin" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions", + "name": "SearchPaneOptions", + "summary": "The\u0020Options\u0020class\u0020provides\u0020a\u0020convenient\u0020method\u0020of\u0020specifying\u0020where\u0020Editor\nshould\u0020get\u0020the\u0020list\u0020of\u0020options\u0020for\u0020a\u0020\u0060select\u0060,\u0020\u0060radio\u0060\u0020or\u0020\u0060checkbox\u0060\u0020field.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Alabel\u0028\u0029", + "name": "label", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0028s\u0029\u0020to\u0020use\u0020as\u0020the\u0020label\u0020value\u0020of\u0020the\u0020options", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_label" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Aorder\u0028\u0029", + "name": "order", + "summary": "Get\u0020\/\u0020set\u0020the\u0020ORDER\u0020BY\u0020clause\u0020to\u0020use\u0020in\u0020the\u0020SQL.\u0020If\u0020this\u0020option\u0020is\u0020not\nprovided\u0020the\u0020ordering\u0020will\u0020be\u0020based\u0020on\u0020the\u0020rendered\u0020output,\u0020either\nnumerically\u0020or\u0020alphabetically\u0020based\u0020on\u0020the\u0020data\u0020returned\u0020by\u0020the\u0020renderer.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_order" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Arender\u0028\u0029", + "name": "render", + "summary": "Get\u0020\/\u0020set\u0020the\u0020label\u0020renderer.\u0020The\u0020renderer\u0020can\u0020be\u0020used\u0020to\u0020combine\nmultiple\u0020database\u0020columns\u0020into\u0020a\u0020single\u0020string\u0020that\u0020is\u0020shown\u0020as\u0020the\u0020label\nto\u0020the\u0020end\u0020user\u0020in\u0020the\u0020list\u0020of\u0020options.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_render" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Get\u0020\/\u0020set\u0020the\u0020database\u0020table\u0020from\u0020which\u0020to\u0020gather\u0020the\u0020options\u0020for\u0020the\nlist.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_table" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Avalue\u0028\u0029", + "name": "value", + "summary": "Get\u0020\/\u0020set\u0020the\u0020column\u0020name\u0020to\u0020use\u0020for\u0020the\u0020value\u0020in\u0020the\u0020options\u0020list.\u0020This\nwould\u0020normally\u0020be\u0020the\u0020primary\u0020key\u0020for\u0020the\u0020table.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_value" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Get\u0020\/\u0020set\u0020the\u0020method\u0020to\u0020use\u0020for\u0020a\u0020WHERE\u0020condition\u0020if\u0020it\u0020is\u0020to\u0020be\napplied\u0020to\u0020the\u0020query\u0020to\u0020get\u0020the\u0020options.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\\SearchPaneOptions\u003A\u003AleftJoin\u0028\u0029", + "name": "leftJoin", + "summary": "Get\u0020\/\u0020set\u0020the\u0020array\u0020values\u0020used\u0020for\u0020a\u0020leftJoin\u0020condition\u0020if\u0020it\u0020is\u0020to\u0020be\napplied\u0020to\u0020the\u0020query\u0020to\u0020get\u0020the\u0020options.", + "url": "classes/DataTables-Editor-SearchPaneOptions.html#method_leftJoin" + }, { + "fqsen": "\\DataTables\\Editor\\Upload", + "name": "Upload", + "summary": "Upload\u0020class\u0020for\u0020Editor.\u0020This\u0020class\u0020provides\u0020the\u0020ability\u0020to\u0020easily\u0020specify\nfile\u0020upload\u0020information,\u0020specifically\u0020how\u0020the\u0020file\u0020should\u0020be\u0020recorded\u0020on\nthe\u0020server\u0020\u0028database\u0020and\u0020file\u0020system\u0029.", + "url": "classes/DataTables-Editor-Upload.html" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Upload\u0020instance\u0020constructor", + "url": "classes/DataTables-Editor-Upload.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003Aaction\u0028\u0029", + "name": "action", + "summary": "Set\u0020the\u0020action\u0020to\u0020take\u0020when\u0020a\u0020file\u0020is\u0020uploaded.\u0020This\u0020can\u0020be\u0020either\u0020of\u003A", + "url": "classes/DataTables-Editor-Upload.html#method_action" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003AallowedExtensions\u0028\u0029", + "name": "allowedExtensions", + "summary": "An\u0020array\u0020of\u0020valid\u0020file\u0020extensions\u0020that\u0020can\u0020be\u0020uploaded.\u0020This\u0020is\u0020for\nsimple\u0020validation\u0020that\u0020the\u0020file\u0020is\u0020of\u0020the\u0020expected\u0020type\u0020\u002D\u0020for\u0020example\u0020you\nmight\u0020use\u0020\u0060\u005B\u0020\u0027png\u0027,\u0020\u0027jpg\u0027,\u0020\u0027jpeg\u0027,\u0020\u0027gif\u0027\u0020\u005D\u0060\u0020for\u0020images.\u0020The\u0020check\u0020is\ncase\u002Dinsensitive.\u0020If\u0020no\u0020extensions\u0020are\u0020given,\u0020no\u0020validation\u0020is\u0020performed\non\u0020the\u0020file\u0020extension.", + "url": "classes/DataTables-Editor-Upload.html#method_allowedExtensions" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003Adb\u0028\u0029", + "name": "db", + "summary": "Database\u0020configuration\u0020method.\u0020When\u0020used,\u0020this\u0020method\u0020will\u0020tell\u0020Editor\nwhat\u0020information\u0020you\u0020want\u0020written\u0020to\u0020a\u0020database\u0020on\u0020file\u0020upload,\u0020should\nyou\u0020wish\u0020to\u0020store\u0020relational\u0020information\u0020about\u0020your\u0020file\u0020on\u0020the\u0020database\n\u0028this\u0020is\u0020generally\u0020recommended\u0029.", + "url": "classes/DataTables-Editor-Upload.html#method_db" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003AdbClean\u0028\u0029", + "name": "dbClean", + "summary": "Set\u0020a\u0020callback\u0020function\u0020that\u0020is\u0020used\u0020to\u0020remove\u0020files\u0020which\u0020no\u0020longer\u0020have\na\u0020reference\u0020in\u0020a\u0020source\u0020table.", + "url": "classes/DataTables-Editor-Upload.html#method_dbClean" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003Amode\u0028\u0029", + "name": "mode", + "summary": "Set\u0020the\u0020permissions\u0020on\u0020the\u0020file\u0020after\u0020it\u0020has\u0020been\u0020uploaded\u0020using\nchmod.", + "url": "classes/DataTables-Editor-Upload.html#method_mode" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003Avalidator\u0028\u0029", + "name": "validator", + "summary": "Add\u0020a\u0020validation\u0020method\u0020to\u0020check\u0020file\u0020uploads.\u0020Multiple\u0020validators\u0020can\u0020be\nadded\u0020by\u0020calling\u0020this\u0020method\u0020multiple\u0020times\u0020\u002D\u0020they\u0020will\u0020be\u0020executed\u0020in\nsequence\u0020when\u0020a\u0020file\u0020has\u0020been\u0020uploaded.", + "url": "classes/DataTables-Editor-Upload.html#method_validator" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Add\u0020a\u0020condition\u0020to\u0020the\u0020data\u0020to\u0020be\u0020retrieved\u0020from\u0020the\u0020database.\u0020This\nmust\u0020be\u0020given\u0020as\u0020a\u0020function\u0020to\u0020be\u0020executed\u0020\u0028usually\u0020anonymous\u0029\u0020and\nwill\u0020be\u0020passed\u0020in\u0020a\u0020single\u0020argument,\u0020the\u0020\u0060Query\u0060\u0020object,\u0020to\u0020which\nconditions\u0020can\u0020be\u0020added.\u0020Multiple\u0020calls\u0020to\u0020this\u0020method\u0020can\u0020be\u0020made.", + "url": "classes/DataTables-Editor-Upload.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_CONTENT", + "name": "DB_CONTENT", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020File\u0020content.\u0020This\u0020should\u0020be\u0020written\u0020to\na\u0020blob.\u0020Typically\u0020this\u0020should\u0020be\u0020avoided\u0020and\u0020the\u0020file\u0020saved\u0020on\u0020the\u0020file\nsystem,\u0020but\u0020there\u0020are\u0020cases\u0020where\u0020it\u0020can\u0020be\u0020useful\u0020to\u0020store\u0020the\u0020file\u0020in\nthe\u0020database.", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_CONTENT" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_CONTENT_TYPE", + "name": "DB_CONTENT_TYPE", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020Content\u0020type", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_CONTENT_TYPE" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_EXTN", + "name": "DB_EXTN", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020File\u0020extension", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_EXTN" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_FILE_NAME", + "name": "DB_FILE_NAME", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020File\u0020name\u0020\u0028with\u0020extension\u0029", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_FILE_NAME" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_FILE_SIZE", + "name": "DB_FILE_SIZE", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020File\u0020size\u0020\u0028bytes\u0029", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_FILE_SIZE" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_MIME_TYPE", + "name": "DB_MIME_TYPE", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020MIME\u0020type", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_MIME_TYPE" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_SYSTEM_PATH", + "name": "DB_SYSTEM_PATH", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020Full\u0020system\u0020path\u0020to\u0020the\u0020file", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_SYSTEM_PATH" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_WEB_PATH", + "name": "DB_WEB_PATH", + "summary": "Database\u0020value\u0020option\u0020\u0028\u0060Db\u0028\u0029\u0060\u0029\u0020\u002D\u0020HTTP\u0020path\u0020to\u0020the\u0020file.\u0020This\u0020is\u0020derived\nfrom\u0020the\u0020system\u0020path\u0020by\u0020removing\u0020\u0060\u0024_SERVER\u005B\u0027DOCUMENT_ROOT\u0027\u005D\u0060.\u0020If\u0020your\nimages\u0020live\u0020outside\u0020of\u0020the\u0020document\u0020root\u0020a\u0020custom\u0020value\u0020would\u0020be\u0020to\u0020be\nused.", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_WEB_PATH" + }, { + "fqsen": "\\DataTables\\Editor\\Upload\u003A\u003ADB_READ_ONLY", + "name": "DB_READ_ONLY", + "summary": "Read\u0020from\u0020the\u0020database\u0020\u002D\u0020don\u0027t\u0020write\u0020to\u0020it", + "url": "classes/DataTables-Editor-Upload.html#constant_DB_READ_ONLY" + }, { + "fqsen": "\\DataTables\\Editor\\Validate", + "name": "Validate", + "summary": "Validation\u0020methods\u0020for\u0020DataTables\u0020Editor\u0020fields.", + "url": "classes/DataTables-Editor-Validate.html" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003A_extend\u0028\u0029", + "name": "_extend", + "summary": "Extend\u0020the\u0020options\u0020from\u0020the\u0020user\u0020function\u0020and\u0020the\u0020validation\u0020function\nwith\u0020core\u0020defaults.", + "url": "classes/DataTables-Editor-Validate.html#method__extend" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003A_common\u0028\u0029", + "name": "_common", + "summary": "Perform\u0020common\u0020validation\u0020using\u0020the\u0020configuration\u0020parameters", + "url": "classes/DataTables-Editor-Validate.html#method__common" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003A_commonLegacy\u0028\u0029", + "name": "_commonLegacy", + "summary": "Convert\u0020the\u0020old\u0020style\u0020validation\u0020parameters\u0020into\u0020ValidateOptions", + "url": "classes/DataTables-Editor-Validate.html#method__commonLegacy" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Anone\u0028\u0029", + "name": "none", + "summary": "No\u0020validation\u0020\u002D\u0020all\u0020inputs\u0020are\u0020valid.", + "url": "classes/DataTables-Editor-Validate.html#method_none" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Abasic\u0028\u0029", + "name": "basic", + "summary": "Basic\u0020validation\u0020\u002D\u0020this\u0020is\u0020used\u0020to\u0020perform\u0020the\u0020validation\u0020provided\u0020by\u0020the\nvalidation\u0020options\u0020only.\u0020If\u0020the\u0020validation\u0020options\u0020pass\u0020\u0028e.g.\u0020\u0060required\u0060,\n\u0060empty\u0060\u0020and\u0020\u0060optional\u0060\u0029\u0020then\u0020the\u0020validation\u0020will\u0020pass\u0020regardless\u0020of\u0020the\nactual\u0020value.", + "url": "classes/DataTables-Editor-Validate.html#method_basic" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Arequired\u0028\u0029", + "name": "required", + "summary": "Required\u0020field\u0020\u002D\u0020there\u0020must\u0020be\u0020a\u0020value\u0020and\u0020it\u0020must\u0020be\u0020a\u0020non\u002Dempty\u0020value", + "url": "classes/DataTables-Editor-Validate.html#method_required" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AnotEmpty\u0028\u0029", + "name": "notEmpty", + "summary": "Optional\u0020field,\u0020but\u0020if\u0020given\u0020there\u0020must\u0020be\u0020a\u0020non\u002Dempty\u0020value", + "url": "classes/DataTables-Editor-Validate.html#method_notEmpty" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Aboolean\u0028\u0029", + "name": "boolean", + "summary": "Validate\u0020an\u0020input\u0020as\u0020a\u0020boolean\u0020value.", + "url": "classes/DataTables-Editor-Validate.html#method_boolean" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Anumeric\u0028\u0029", + "name": "numeric", + "summary": "Check\u0020that\u0020any\u0020input\u0020is\u0020numeric.", + "url": "classes/DataTables-Editor-Validate.html#method_numeric" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AminNum\u0028\u0029", + "name": "minNum", + "summary": "Check\u0020for\u0020a\u0020numeric\u0020input\u0020and\u0020that\u0020it\u0020is\u0020greater\u0020than\u0020a\u0020given\u0020value.", + "url": "classes/DataTables-Editor-Validate.html#method_minNum" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AmaxNum\u0028\u0029", + "name": "maxNum", + "summary": "Check\u0020for\u0020a\u0020numeric\u0020input\u0020and\u0020that\u0020it\u0020is\u0020less\u0020than\u0020a\u0020given\u0020value.", + "url": "classes/DataTables-Editor-Validate.html#method_maxNum" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AminMaxNum\u0028\u0029", + "name": "minMaxNum", + "summary": "Check\u0020for\u0020a\u0020numeric\u0020input\u0020and\u0020that\u0020it\u0020is\u0020both\u0020greater\u0020and\u0020smaller\u0020than\ngiven\u0020numbers.", + "url": "classes/DataTables-Editor-Validate.html#method_minMaxNum" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Aemail\u0028\u0029", + "name": "email", + "summary": "Validate\u0020an\u0020input\u0020as\u0020an\u0020e\u002Dmail\u0020address.", + "url": "classes/DataTables-Editor-Validate.html#method_email" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AminLen\u0028\u0029", + "name": "minLen", + "summary": "Validate\u0020a\u0020string\u0020has\u0020a\u0020minimum\u0020length.", + "url": "classes/DataTables-Editor-Validate.html#method_minLen" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AmaxLen\u0028\u0029", + "name": "maxLen", + "summary": "Validate\u0020a\u0020string\u0020does\u0020not\u0020exceed\u0020a\u0020maximum\u0020length.", + "url": "classes/DataTables-Editor-Validate.html#method_maxLen" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AminMaxLen\u0028\u0029", + "name": "minMaxLen", + "summary": "Require\u0020a\u0020string\u0020with\u0020a\u0020certain\u0020minimum\u0020or\u0020maximum\u0020number\u0020of\u0020characters.", + "url": "classes/DataTables-Editor-Validate.html#method_minMaxLen" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Aip\u0028\u0029", + "name": "ip", + "summary": "Validate\u0020as\u0020an\u0020IP\u0020address.", + "url": "classes/DataTables-Editor-Validate.html#method_ip" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Aurl\u0028\u0029", + "name": "url", + "summary": "Validate\u0020as\u0020an\u0020URL\u0020address.", + "url": "classes/DataTables-Editor-Validate.html#method_url" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Axss\u0028\u0029", + "name": "xss", + "summary": "Check\u0020if\u0020string\u0020could\u0020contain\u0020an\u0020XSS\u0020attack\u0020string", + "url": "classes/DataTables-Editor-Validate.html#method_xss" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Avalues\u0028\u0029", + "name": "values", + "summary": "Confirm\u0020that\u0020the\u0020value\u0020submitted\u0020is\u0020in\u0020a\u0020list\u0020of\u0020allowable\u0020values", + "url": "classes/DataTables-Editor-Validate.html#method_values" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AnoTags\u0028\u0029", + "name": "noTags", + "summary": "Check\u0020if\u0020there\u0020are\u0020any\u0020tags\u0020in\u0020the\u0020submitted\u0020value", + "url": "classes/DataTables-Editor-Validate.html#method_noTags" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AdateFormat\u0028\u0029", + "name": "dateFormat", + "summary": "Check\u0020that\u0020a\u0020valid\u0020date\u0020input\u0020is\u0020given", + "url": "classes/DataTables-Editor-Validate.html#method_dateFormat" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003Aunique\u0028\u0029", + "name": "unique", + "summary": "Check\u0020that\u0020the\u0020given\u0020value\u0020is\u0020unique\u0020in\u0020the\u0020database", + "url": "classes/DataTables-Editor-Validate.html#method_unique" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AdbValues\u0028\u0029", + "name": "dbValues", + "summary": "Check\u0020that\u0020the\u0020given\u0020value\u0020is\u0020a\u0020value\u0020that\u0020is\u0020available\u0020in\u0020a\u0020database\u0020\u002D\ni.e.\u0020a\u0020join\u0020primary\u0020key.\u0020This\u0020will\u0020attempt\u0020to\u0020automatically\u0020use\u0020the\u0020table\nname\u0020and\u0020value\u0020column\u0020from\u0020the\u0020field\u0027s\u0020\u0060options\u0060\u0020method\u0020\u0028under\u0020the\nassumption\u0020that\u0020it\u0020will\u0020typically\u0020be\u0020used\u0020with\u0020a\u0020joined\u0020field\u0029,\u0020but\u0020the\ntable\u0020and\u0020field\u0020can\u0020also\u0020be\u0020specified\u0020via\u0020the\u0020options.", + "url": "classes/DataTables-Editor-Validate.html#method_dbValues" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AfileExtensions\u0028\u0029", + "name": "fileExtensions", + "summary": "", + "url": "classes/DataTables-Editor-Validate.html#method_fileExtensions" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AfileSize\u0028\u0029", + "name": "fileSize", + "summary": "", + "url": "classes/DataTables-Editor-Validate.html#method_fileSize" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AmjoinMinCount\u0028\u0029", + "name": "mjoinMinCount", + "summary": "", + "url": "classes/DataTables-Editor-Validate.html#method_mjoinMinCount" + }, { + "fqsen": "\\DataTables\\Editor\\Validate\u003A\u003AmjoinMaxCount\u0028\u0029", + "name": "mjoinMaxCount", + "summary": "", + "url": "classes/DataTables-Editor-Validate.html#method_mjoinMaxCount" + }, { + "fqsen": "\\DataTables\\Editor\\ValidateOptions", + "name": "ValidateOptions", + "summary": "Common\u0020validation\u0020options\u0020that\u0020can\u0020be\u0020specified\u0020for\u0020all\u0020validation\u0020methods.", + "url": "classes/DataTables-Editor-ValidateOptions.html" + }, { + "fqsen": "\\DataTables\\Editor\\ValidateOptions\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/DataTables-Editor-ValidateOptions.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\\ValidateOptions\u003A\u003Amessage\u0028\u0029", + "name": "message", + "summary": "Get\u0020\/\u0020set\u0020the\u0020error\u0020message\u0020to\u0020use\u0020if\u0020validation\u0020fails", + "url": "classes/DataTables-Editor-ValidateOptions.html#method_message" + }, { + "fqsen": "\\DataTables\\Editor\\ValidateOptions\u003A\u003AallowEmpty\u0028\u0029", + "name": "allowEmpty", + "summary": "Get\u0020\/\u0020set\u0020the\u0020field\u0020empty\u0020option", + "url": "classes/DataTables-Editor-ValidateOptions.html#method_allowEmpty" + }, { + "fqsen": "\\DataTables\\Editor\\ValidateOptions\u003A\u003Aoptional\u0028\u0029", + "name": "optional", + "summary": "Get\u0020\/\u0020set\u0020the\u0020field\u0020optional\u0020option", + "url": "classes/DataTables-Editor-ValidateOptions.html#method_optional" + }, { + "fqsen": "\\DataTables\\Editor", + "name": "Editor", + "summary": "DataTables\u0020Editor\u0020base\u0020class\u0020for\u0020creating\u0020editable\u0020tables.", + "url": "classes/DataTables-Editor.html" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Aaction\u0028\u0029", + "name": "action", + "summary": "Determine\u0020the\u0020request\u0020type\u0020from\u0020an\u0020HTTP\u0020request.", + "url": "classes/DataTables-Editor.html#method_action" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Constructor.", + "url": "classes/DataTables-Editor.html#method___construct" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AactionName\u0028\u0029", + "name": "actionName", + "summary": "Get\u0020\/\u0020set\u0020the\u0020action\u0020name\u0020to\u0020read\u0020in\u0020HTTP\u0020parameters.\u0020This\u0020can\u0020be\u0020useful\nto\u0020set\u0020if\u0020you\u0020are\u0020using\u0020a\u0020framework\u0020that\u0020uses\u0020the\u0020default\u0020name\u0020of\u0020\u0060action\u0060\nfor\u0020something\u0020else\u0020\u0028e.g.\u0020WordPress\u0029.", + "url": "classes/DataTables-Editor.html#method_actionName" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Adata\u0028\u0029", + "name": "data", + "summary": "Get\u0020the\u0020data\u0020constructed\u0020in\u0020this\u0020instance.", + "url": "classes/DataTables-Editor.html#method_data" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Adb\u0028\u0029", + "name": "db", + "summary": "Get\u0020\/\u0020set\u0020the\u0020DB\u0020connection\u0020instance", + "url": "classes/DataTables-Editor.html#method_db" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Adebug\u0028\u0029", + "name": "debug", + "summary": "Get\u0020\/\u0020set\u0020debug\u0020mode\u0020and\u0020set\u0020a\u0020debug\u0020message.", + "url": "classes/DataTables-Editor.html#method_debug" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Afield\u0028\u0029", + "name": "field", + "summary": "Get\u0020\/\u0020set\u0020field\u0020instance.", + "url": "classes/DataTables-Editor.html#method_field" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Afields\u0028\u0029", + "name": "fields", + "summary": "Get\u0020\/\u0020set\u0020field\u0020instances.", + "url": "classes/DataTables-Editor.html#method_fields" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AidPrefix\u0028\u0029", + "name": "idPrefix", + "summary": "Get\u0020\/\u0020set\u0020the\u0020DOM\u0020prefix.", + "url": "classes/DataTables-Editor.html#method_idPrefix" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AinData\u0028\u0029", + "name": "inData", + "summary": "Get\u0020the\u0020data\u0020that\u0020is\u0020being\u0020processed\u0020by\u0020the\u0020Editor\u0020instance.\u0020This\u0020is\u0020only\nuseful\u0020once\u0020the\u0020\u0060process\u0028\u0029\u0060\u0020method\u0020has\u0020been\u0020called,\u0020and\u0020is\u0020available\u0020for\nuse\u0020in\u0020validation\u0020and\u0020formatter\u0020methods.", + "url": "classes/DataTables-Editor.html#method_inData" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Ajoin\u0028\u0029", + "name": "join", + "summary": "Get\u0020\/\u0020set\u0020join\u0020instances.\u0020Note\u0020that\u0020for\u0020the\u0020majority\u0020of\u0020use\u0020cases\u0020you\nwill\u0020want\u0020to\u0020use\u0020the\u0020\u0060leftJoin\u0028\u0029\u0060\u0020method.\u0020It\u0020is\u0020significantly\u0020easier\nto\u0020use\u0020if\u0020you\u0020are\u0020just\u0020doing\u0020a\u0020simple\u0020left\u0020join\u0021", + "url": "classes/DataTables-Editor.html#method_join" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Ajson\u0028\u0029", + "name": "json", + "summary": "Get\u0020the\u0020JSON\u0020for\u0020the\u0020data\u0020constructed\u0020in\u0020this\u0020instance.", + "url": "classes/DataTables-Editor.html#method_json" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Ajsonp\u0028\u0029", + "name": "jsonp", + "summary": "Echo\u0020out\u0020JSONP\u0020for\u0020the\u0020data\u0020constructed\u0020and\u0020processed\u0020in\u0020this\u0020instance.", + "url": "classes/DataTables-Editor.html#method_jsonp" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AleftJoin\u0028\u0029", + "name": "leftJoin", + "summary": "Add\u0020a\u0020left\u0020join\u0020condition\u0020to\u0020the\u0020Editor\u0020instance,\u0020allowing\u0020it\u0020to\u0020operate\nover\u0020multiple\u0020tables.\u0020Multiple\u0020\u0060leftJoin\u0028\u0029\u0060\u0020calls\u0020can\u0020be\u0020made\u0020for\u0020a\nsingle\u0020Editor\u0020instance\u0020to\u0020join\u0020multiple\u0020tables.", + "url": "classes/DataTables-Editor.html#method_leftJoin" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AleftJoinRemove\u0028\u0029", + "name": "leftJoinRemove", + "summary": "Indicate\u0020if\u0020a\u0020remove\u0020should\u0020be\u0020performed\u0020on\u0020left\u0020joined\u0020tables\u0020when\u0020deleting\nfrom\u0020the\u0020parent\u0020row.\u0020Note\u0020that\u0020this\u0020is\u0020disabled\u0020by\u0020default\u0020and\u0020will\u0020be\nremoved\u0020completely\u0020in\u0020v2.\u0020Use\u0020\u0060ON\u0020DELETE\u0020CASCADE\u0060\u0020in\u0020your\u0020database\u0020instead.", + "url": "classes/DataTables-Editor.html#method_leftJoinRemove" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Aon\u0028\u0029", + "name": "on", + "summary": "Add\u0020an\u0020event\u0020listener.\u0020The\u0020\u0060Editor\u0060\u0020class\u0020will\u0020trigger\u0020an\u0020number\u0020of\nevents\u0020that\u0020some\u0020action\u0020can\u0020be\u0020taken\u0020on.", + "url": "classes/DataTables-Editor.html#method_on" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Apkey\u0028\u0029", + "name": "pkey", + "summary": "Get\u0020\/\u0020set\u0020the\u0020primary\u0020key.", + "url": "classes/DataTables-Editor.html#method_pkey" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003ApkeyToValue\u0028\u0029", + "name": "pkeyToValue", + "summary": "Convert\u0020a\u0020primary\u0020key\u0020array\u0020of\u0020field\u0020values\u0020to\u0020a\u0020combined\u0020value.", + "url": "classes/DataTables-Editor.html#method_pkeyToValue" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003ApkeyToArray\u0028\u0029", + "name": "pkeyToArray", + "summary": "Convert\u0020a\u0020primary\u0020key\u0020combined\u0020value\u0020to\u0020an\u0020array\u0020of\u0020field\u0020values.", + "url": "classes/DataTables-Editor.html#method_pkeyToArray" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Aprocess\u0028\u0029", + "name": "process", + "summary": "Process\u0020a\u0020request\u0020from\u0020the\u0020Editor\u0020client\u002Dside\u0020to\u0020get\u0020\/\u0020set\u0020data.", + "url": "classes/DataTables-Editor.html#method_process" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AreadTable\u0028\u0029", + "name": "readTable", + "summary": "The\u0020CRUD\u0020read\u0020table\u0020name.\u0020If\u0020this\u0020method\u0020is\u0020used,\u0020Editor\u0020will\u0020create\u0020from\u0020the\ntable\u0020name\u0028s\u0029\u0020given\u0020rather\u0020than\u0020those\u0020given\u0020by\u0020\u0060Editor\u002D\u003Etable\u0028\u0029\u0060.\u0020This\u0020can\u0020be\na\u0020useful\u0020distinction\u0020to\u0020allow\u0020a\u0020read\u0020from\u0020a\u0020VIEW\u0020\u0028which\u0020could\u0020make\u0020use\u0020of\u0020a\ncomplex\u0020SELECT\u0029\u0020while\u0020writing\u0020to\u0020a\u0020different\u0020table.", + "url": "classes/DataTables-Editor.html#method_readTable" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Atable\u0028\u0029", + "name": "table", + "summary": "Get\u0020\/\u0020set\u0020the\u0020table\u0020name.", + "url": "classes/DataTables-Editor.html#method_table" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Atransaction\u0028\u0029", + "name": "transaction", + "summary": "Get\u0020\/\u0020set\u0020transaction\u0020support.", + "url": "classes/DataTables-Editor.html#method_transaction" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AtryCatch\u0028\u0029", + "name": "tryCatch", + "summary": "Enable\u0020\/\u0020try\u0020catch\u0020when\u0020\u0060process\u0028\u0029\u0060\u0020is\u0020called.\u0020Disabling\u0020this\u0020can\u0020be\nuseful\u0020for\u0020debugging,\u0020but\u0020is\u0020not\u0020recommended\u0020for\u0020production.", + "url": "classes/DataTables-Editor.html#method_tryCatch" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Avalidate\u0028\u0029", + "name": "validate", + "summary": "Perform\u0020validation\u0020on\u0020a\u0020data\u0020set.", + "url": "classes/DataTables-Editor.html#method_validate" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Avalidator\u0028\u0029", + "name": "validator", + "summary": "Get\u0020\/\u0020set\u0020a\u0020global\u0020validator\u0020that\u0020will\u0020be\u0020triggered\u0020for\u0020the\u0020create,\u0020edit\nand\u0020remove\u0020actions\u0020performed\u0020from\u0020the\u0020client\u002Dside.\u0020Multiple\u0020validators\ncan\u0020be\u0020added.", + "url": "classes/DataTables-Editor.html#method_validator" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Awhere\u0028\u0029", + "name": "where", + "summary": "Where\u0020condition\u0020to\u0020add\u0020to\u0020the\u0020query\u0020used\u0020to\u0020get\u0020data\u0020from\u0020the\u0020database.", + "url": "classes/DataTables-Editor.html#method_where" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AwhereSet\u0028\u0029", + "name": "whereSet", + "summary": "Get\u0020\/\u0020set\u0020if\u0020the\u0020WHERE\u0020conditions\u0020should\u0020be\u0020included\u0020in\u0020the\u0020create\u0020and\nedit\u0020actions.", + "url": "classes/DataTables-Editor.html#method_whereSet" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003Awrite\u0028\u0029", + "name": "write", + "summary": "", + "url": "classes/DataTables-Editor.html#method_write" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003A_ssp_field\u0028\u0029", + "name": "_ssp_field", + "summary": "Convert\u0020a\u0020column\u0020index\u0020to\u0020a\u0020database\u0020field\u0020name\u0020\u002D\u0020used\u0020for\u0020server\u002Dside\nprocessing\u0020requests.", + "url": "classes/DataTables-Editor.html#method__ssp_field" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AACTION_READ", + "name": "ACTION_READ", + "summary": "Request\u0020type\u0020\u002D\u0020read", + "url": "classes/DataTables-Editor.html#constant_ACTION_READ" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AACTION_CREATE", + "name": "ACTION_CREATE", + "summary": "Request\u0020type\u0020\u002D\u0020create", + "url": "classes/DataTables-Editor.html#constant_ACTION_CREATE" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AACTION_EDIT", + "name": "ACTION_EDIT", + "summary": "Request\u0020type\u0020\u002D\u0020edit", + "url": "classes/DataTables-Editor.html#constant_ACTION_EDIT" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AACTION_DELETE", + "name": "ACTION_DELETE", + "summary": "Request\u0020type\u0020\u002D\u0020delete", + "url": "classes/DataTables-Editor.html#constant_ACTION_DELETE" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003AACTION_UPLOAD", + "name": "ACTION_UPLOAD", + "summary": "Request\u0020type\u0020\u002D\u0020upload", + "url": "classes/DataTables-Editor.html#constant_ACTION_UPLOAD" + }, { + "fqsen": "\\DataTables\\Editor\u003A\u003A\u0024version", + "name": "version", + "summary": "", + "url": "classes/DataTables-Editor.html#property_version" + }, { + "fqsen": "\\DataTables\\Ext", + "name": "Ext", + "summary": "Base\u0020class\u0020for\u0020DataTables\u0020classes.", + "url": "classes/DataTables-Ext.html" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003Ainstantiate\u0028\u0029", + "name": "instantiate", + "summary": "Static\u0020method\u0020to\u0020instantiate\u0020a\u0020new\u0020instance\u0020of\u0020a\u0020class.", + "url": "classes/DataTables-Ext.html#method_instantiate" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003Ainst\u0028\u0029", + "name": "inst", + "summary": "Static\u0020method\u0020to\u0020instantiate\u0020a\u0020new\u0020instance\u0020of\u0020a\u0020class\u0020\u0028shorthand\u0020of\n\u0027instantiate\u0027\u0029.", + "url": "classes/DataTables-Ext.html#method_inst" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003A_getSet\u0028\u0029", + "name": "_getSet", + "summary": "Common\u0020getter\u0020\/\u0020setter\u0020function\u0020for\u0020DataTables\u0020classes.", + "url": "classes/DataTables-Ext.html#method__getSet" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003A_propExists\u0028\u0029", + "name": "_propExists", + "summary": "Determine\u0020if\u0020a\u0020property\u0020is\u0020available\u0020in\u0020a\u0020data\u0020set\u0020\u0028allowing\u0020\u0060null\u0060\u0020to\u0020be\na\u0020valid\u0020value\u0029", + "url": "classes/DataTables-Ext.html#method__propExists" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003A_readProp\u0028\u0029", + "name": "_readProp", + "summary": "Read\u0020a\u0020value\u0020from\u0020a\u0020data\u0020structure,\u0020using\u0020Javascript\u0020dotted\u0020object\nnotation.\u0020This\u0020is\u0020the\u0020inverse\u0020of\u0020the\u0020\u0060_writeProp\u0060\u0020method\u0020and\u0020provides\nthe\u0020same\u0020support,\u0020matching\u0020DataTables\u0027\u0020ability\u0020to\u0020read\u0020nested\u0020JSON\ndata\u0020objects.", + "url": "classes/DataTables-Ext.html#method__readProp" + }, { + "fqsen": "\\DataTables\\Ext\u003A\u003A_writeProp\u0028\u0029", + "name": "_writeProp", + "summary": "Write\u0020the\u0020field\u0027s\u0020value\u0020to\u0020an\u0020array\u0020structure,\u0020using\u0020Javascript\u0020dotted\nobject\u0020notation\u0020to\u0020indicate\u0020JSON\u0020data\u0020structure.\u0020For\u0020example\u0020\u0060name.first\u0060\ngives\u0020the\u0020data\u0020structure\u003A\u0020\u0060name\u003A\u0020\u007B\u0020first\u003A\u0020...\u0020\u007D\u0060.\u0020This\u0020matches\u0020DataTables\nown\u0020ability\u0020to\u0020do\u0020this\u0020on\u0020the\u0020client\u002Dside,\u0020although\u0020this\u0020doesn\u0027t\nimplement\u0020implement\u0020quite\u0020such\u0020a\u0020complex\u0020structure\u0020\u0028no\u0020array\u0020\/\u0020function\nsupport\u0029.", + "url": "classes/DataTables-Ext.html#method__writeProp" + }, { + "fqsen": "\\DataTables\\HtmLawed\\Htmlaw", + "name": "Htmlaw", + "summary": "A\u0020class\u0020wrapper\u0020for\u0020the\u0020htmLawed\u0020library.", + "url": "classes/DataTables-HtmLawed-Htmlaw.html" + }, { + "fqsen": "\\DataTables\\HtmLawed\\Htmlaw\u003A\u003Afilter\u0028\u0029", + "name": "filter", + "summary": "Filters\u0020a\u0020string\u0020of\u0020html\u0020with\u0020the\u0020htmLawed\u0020library.", + "url": "classes/DataTables-HtmLawed-Htmlaw.html#method_filter" + }, { + "fqsen": "\\DataTables\\HtmLawed\\Htmlaw\u003A\u003AfilterRSS\u0028\u0029", + "name": "filterRSS", + "summary": "Filter\u0020a\u0020string\u0020of\u0020html\u0020so\u0020that\u0020it\u0020can\u0020be\u0020put\u0020into\u0020an\u0020rss\u0020feed.", + "url": "classes/DataTables-HtmLawed-Htmlaw.html#method_filterRSS" + }, { + "fqsen": "\\DataTables\\HtmLawed\\Htmlaw\u003A\u003A\u0024defaultConfig", + "name": "defaultConfig", + "summary": "", + "url": "classes/DataTables-HtmLawed-Htmlaw.html#property_defaultConfig" + }, { + "fqsen": "\\DataTables\\HtmLawed\\Htmlaw\u003A\u003A\u0024defaultSpec", + "name": "defaultSpec", + "summary": "", + "url": "classes/DataTables-HtmLawed-Htmlaw.html#property_defaultSpec" + }, { + "fqsen": "\\", + "name": "\\", + "summary": "", + "url": "namespaces/default.html" + }, { + "fqsen": "\\DataTables", + "name": "DataTables", + "summary": "", + "url": "namespaces/datatables.html" + }, { + "fqsen": "\\DataTables\\Database\\Driver", + "name": "Driver", + "summary": "", + "url": "namespaces/datatables-database-driver.html" + }, { + "fqsen": "\\DataTables\\Database", + "name": "Database", + "summary": "", + "url": "namespaces/datatables-database.html" + }, { + "fqsen": "\\DataTables\\Editor", + "name": "Editor", + "summary": "", + "url": "namespaces/datatables-editor.html" + }, { + "fqsen": "\\DataTables\\HtmLawed", + "name": "HtmLawed", + "summary": "", + "url": "namespaces/datatables-htmlawed.html" + } ] +); diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database-driver.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database-driver.html new file mode 100644 index 00000000..5f40a240 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database-driver.html @@ -0,0 +1,179 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                +

                                                                                                                                                Editor PHP 2.1.3

                                                                                                                                                + + + + + +
                                                                                                                                                + +
                                                                                                                                                +
                                                                                                                                                + + + + +
                                                                                                                                                + + +
                                                                                                                                                +

                                                                                                                                                Driver

                                                                                                                                                + + + +

                                                                                                                                                + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                + +
                                                                                                                                                + +
                                                                                                                                                Db2Query
                                                                                                                                                +
                                                                                                                                                DB2 driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                Db2Result
                                                                                                                                                +
                                                                                                                                                SQL Server driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                FirebirdQuery
                                                                                                                                                +
                                                                                                                                                Firebird driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                FirebirdResult
                                                                                                                                                +
                                                                                                                                                Firebird driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                MysqlQuery
                                                                                                                                                +
                                                                                                                                                MySQL driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                MysqlResult
                                                                                                                                                +
                                                                                                                                                MySQL driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                OracleQuery
                                                                                                                                                +
                                                                                                                                                Oracle driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                OracleResult
                                                                                                                                                +
                                                                                                                                                MySQL driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                PostgresQuery
                                                                                                                                                +
                                                                                                                                                Postgres driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                PostgresResult
                                                                                                                                                +
                                                                                                                                                Postgres driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                SqliteQuery
                                                                                                                                                +
                                                                                                                                                SQLite3 driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                SqliteResult
                                                                                                                                                +
                                                                                                                                                Sqlite driver for DataTables Database Result class
                                                                                                                                                +
                                                                                                                                                SqlserverQuery
                                                                                                                                                +
                                                                                                                                                SQL Server driver for DataTables Database Query class
                                                                                                                                                +
                                                                                                                                                SqlserverResult
                                                                                                                                                +
                                                                                                                                                SQL Server driver for DataTables Database Result class
                                                                                                                                                + + +
                                                                                                                                                + + + + + + +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +

                                                                                                                                                Search results

                                                                                                                                                + +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + + +
                                                                                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database.html new file mode 100644 index 00000000..9cb29cb6 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-database.html @@ -0,0 +1,162 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  +

                                                                                                                                                  Editor PHP 2.1.3

                                                                                                                                                  + + + + + +
                                                                                                                                                  + +
                                                                                                                                                  +
                                                                                                                                                  + + + + +
                                                                                                                                                  + + +
                                                                                                                                                  +

                                                                                                                                                  Database

                                                                                                                                                  + + +

                                                                                                                                                  + Namespaces + +

                                                                                                                                                  + +
                                                                                                                                                  +
                                                                                                                                                  Driver
                                                                                                                                                  +
                                                                                                                                                  + +

                                                                                                                                                  + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                  + +
                                                                                                                                                  + +
                                                                                                                                                  Query
                                                                                                                                                  +
                                                                                                                                                  Perform an individual query on the database.
                                                                                                                                                  +
                                                                                                                                                  Result
                                                                                                                                                  +
                                                                                                                                                  Result object given by a {@see Query} performed on a database.
                                                                                                                                                  + + +
                                                                                                                                                  + + + + + + +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +

                                                                                                                                                  Search results

                                                                                                                                                  + +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    + + +
                                                                                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-editor.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-editor.html new file mode 100644 index 00000000..1d3c0262 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-editor.html @@ -0,0 +1,178 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                    +

                                                                                                                                                    Editor PHP 2.1.3

                                                                                                                                                    + + + + + +
                                                                                                                                                    + +
                                                                                                                                                    +
                                                                                                                                                    + + + + +
                                                                                                                                                    + + +
                                                                                                                                                    +

                                                                                                                                                    Editor

                                                                                                                                                    + + + +

                                                                                                                                                    + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                    + +
                                                                                                                                                    + +
                                                                                                                                                    Field
                                                                                                                                                    +
                                                                                                                                                    Field definitions for the DataTables Editor.
                                                                                                                                                    +
                                                                                                                                                    Format
                                                                                                                                                    +
                                                                                                                                                    Formatter methods for the DataTables Editor
                                                                                                                                                    +
                                                                                                                                                    Join
                                                                                                                                                    +
                                                                                                                                                    Join table class for DataTables Editor.
                                                                                                                                                    +
                                                                                                                                                    Mjoin
                                                                                                                                                    +
                                                                                                                                                    The `Mjoin` class extends the `Join` class with the join data type set to +'array', whereas the `Join` default is `object` which has been rendered +obsolete by the `Editor->leftJoin()` method. The API API is otherwise +identical.
                                                                                                                                                    +
                                                                                                                                                    Options
                                                                                                                                                    +
                                                                                                                                                    The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                    +
                                                                                                                                                    SearchBuilderOptions
                                                                                                                                                    +
                                                                                                                                                    The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                    +
                                                                                                                                                    SearchPaneOptions
                                                                                                                                                    +
                                                                                                                                                    The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                    +
                                                                                                                                                    Upload
                                                                                                                                                    +
                                                                                                                                                    Upload class for Editor. This class provides the ability to easily specify +file upload information, specifically how the file should be recorded on +the server (database and file system).
                                                                                                                                                    +
                                                                                                                                                    Validate
                                                                                                                                                    +
                                                                                                                                                    Validation methods for DataTables Editor fields.
                                                                                                                                                    +
                                                                                                                                                    ValidateOptions
                                                                                                                                                    +
                                                                                                                                                    Common validation options that can be specified for all validation methods.
                                                                                                                                                    + + +
                                                                                                                                                    + + + + + + +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +

                                                                                                                                                    Search results

                                                                                                                                                    + +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      + + +
                                                                                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-htmlawed.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-htmlawed.html new file mode 100644 index 00000000..61275fbb --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables-htmlawed.html @@ -0,0 +1,152 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      +

                                                                                                                                                      Editor PHP 2.1.3

                                                                                                                                                      + + + + + +
                                                                                                                                                      + +
                                                                                                                                                      +
                                                                                                                                                      + + + + +
                                                                                                                                                      + + +
                                                                                                                                                      +

                                                                                                                                                      HtmLawed

                                                                                                                                                      + + + +

                                                                                                                                                      + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                      + +
                                                                                                                                                      + +
                                                                                                                                                      Htmlaw
                                                                                                                                                      +
                                                                                                                                                      A class wrapper for the htmLawed library.
                                                                                                                                                      + + +
                                                                                                                                                      + + + + + + +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +

                                                                                                                                                      Search results

                                                                                                                                                      + +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        + + +
                                                                                                                                                        + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables.html new file mode 100644 index 00000000..c2c6ae91 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/datatables.html @@ -0,0 +1,165 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                        +

                                                                                                                                                        Editor PHP 2.1.3

                                                                                                                                                        + + + + + +
                                                                                                                                                        + +
                                                                                                                                                        +
                                                                                                                                                        + + + + +
                                                                                                                                                        +
                                                                                                                                                          +
                                                                                                                                                        + +
                                                                                                                                                        +

                                                                                                                                                        DataTables

                                                                                                                                                        + + +

                                                                                                                                                        + Namespaces + +

                                                                                                                                                        + +
                                                                                                                                                        +
                                                                                                                                                        Database
                                                                                                                                                        +
                                                                                                                                                        Editor
                                                                                                                                                        +
                                                                                                                                                        HtmLawed
                                                                                                                                                        +
                                                                                                                                                        + +

                                                                                                                                                        + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                        + +
                                                                                                                                                        + +
                                                                                                                                                        Database
                                                                                                                                                        +
                                                                                                                                                        DataTables Database connection object.
                                                                                                                                                        +
                                                                                                                                                        Editor
                                                                                                                                                        +
                                                                                                                                                        DataTables Editor base class for creating editable tables.
                                                                                                                                                        +
                                                                                                                                                        Ext
                                                                                                                                                        +
                                                                                                                                                        Base class for DataTables classes.
                                                                                                                                                        + + +
                                                                                                                                                        + + + + + + +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +

                                                                                                                                                        Search results

                                                                                                                                                        + +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          + + +
                                                                                                                                                          + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/default.html b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/default.html new file mode 100644 index 00000000..173417b2 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/namespaces/default.html @@ -0,0 +1,254 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                          +

                                                                                                                                                          Editor PHP 2.1.3

                                                                                                                                                          + + + + + +
                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + + + + +
                                                                                                                                                          +
                                                                                                                                                            +
                                                                                                                                                          + +
                                                                                                                                                          +

                                                                                                                                                          API Documentation

                                                                                                                                                          + + +

                                                                                                                                                          + Namespaces + +

                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          DataTables
                                                                                                                                                          +
                                                                                                                                                          + + + +

                                                                                                                                                          + Table of Contents + +

                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + DATATABLES + +  = \true +
                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          + DATATABLES + +  = \true +
                                                                                                                                                          +
                                                                                                                                                          DataTables PHP libraries.
                                                                                                                                                          + +
                                                                                                                                                          + + +
                                                                                                                                                          +

                                                                                                                                                          + Constants + +

                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          + DATATABLES + +

                                                                                                                                                          + + + + + + public + mixed + DATATABLES + = \true + + + +
                                                                                                                                                          + +
                                                                                                                                                          + + + +
                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          + DATATABLES + +

                                                                                                                                                          + + + +

                                                                                                                                                          DataTables PHP libraries.

                                                                                                                                                          + + + public + mixed + DATATABLES + = \true + + + +

                                                                                                                                                          PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          + + +
                                                                                                                                                          + Tags + +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          + author +
                                                                                                                                                          +
                                                                                                                                                          + +

                                                                                                                                                          SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + + +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          Search results

                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + +
                                                                                                                                                            + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/packages/Application.html b/ci4/app/ThirdParty/DatatablesEditor/docs/packages/Application.html new file mode 100644 index 00000000..878a3a90 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/packages/Application.html @@ -0,0 +1,324 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                            +

                                                                                                                                                            Editor PHP 2.1.3

                                                                                                                                                            + + + + + +
                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + + + + +
                                                                                                                                                            +
                                                                                                                                                              +
                                                                                                                                                            + +
                                                                                                                                                            +

                                                                                                                                                            Application

                                                                                                                                                            + + + +

                                                                                                                                                            + Interfaces, Classes, Traits and Enums + +

                                                                                                                                                            + +
                                                                                                                                                            + +
                                                                                                                                                            Db2Query
                                                                                                                                                            +
                                                                                                                                                            DB2 driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            Db2Result
                                                                                                                                                            +
                                                                                                                                                            SQL Server driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            FirebirdQuery
                                                                                                                                                            +
                                                                                                                                                            Firebird driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            FirebirdResult
                                                                                                                                                            +
                                                                                                                                                            Firebird driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            MysqlQuery
                                                                                                                                                            +
                                                                                                                                                            MySQL driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            MysqlResult
                                                                                                                                                            +
                                                                                                                                                            MySQL driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            OracleQuery
                                                                                                                                                            +
                                                                                                                                                            Oracle driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            OracleResult
                                                                                                                                                            +
                                                                                                                                                            MySQL driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            PostgresQuery
                                                                                                                                                            +
                                                                                                                                                            Postgres driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            PostgresResult
                                                                                                                                                            +
                                                                                                                                                            Postgres driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            SqliteQuery
                                                                                                                                                            +
                                                                                                                                                            SQLite3 driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            SqliteResult
                                                                                                                                                            +
                                                                                                                                                            Sqlite driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            SqlserverQuery
                                                                                                                                                            +
                                                                                                                                                            SQL Server driver for DataTables Database Query class
                                                                                                                                                            +
                                                                                                                                                            SqlserverResult
                                                                                                                                                            +
                                                                                                                                                            SQL Server driver for DataTables Database Result class
                                                                                                                                                            +
                                                                                                                                                            Query
                                                                                                                                                            +
                                                                                                                                                            Perform an individual query on the database.
                                                                                                                                                            +
                                                                                                                                                            Result
                                                                                                                                                            +
                                                                                                                                                            Result object given by a {@see Query} performed on a database.
                                                                                                                                                            +
                                                                                                                                                            Database
                                                                                                                                                            +
                                                                                                                                                            DataTables Database connection object.
                                                                                                                                                            +
                                                                                                                                                            Field
                                                                                                                                                            +
                                                                                                                                                            Field definitions for the DataTables Editor.
                                                                                                                                                            +
                                                                                                                                                            Format
                                                                                                                                                            +
                                                                                                                                                            Formatter methods for the DataTables Editor
                                                                                                                                                            +
                                                                                                                                                            Join
                                                                                                                                                            +
                                                                                                                                                            Join table class for DataTables Editor.
                                                                                                                                                            +
                                                                                                                                                            Mjoin
                                                                                                                                                            +
                                                                                                                                                            The `Mjoin` class extends the `Join` class with the join data type set to +'array', whereas the `Join` default is `object` which has been rendered +obsolete by the `Editor->leftJoin()` method. The API API is otherwise +identical.
                                                                                                                                                            +
                                                                                                                                                            Options
                                                                                                                                                            +
                                                                                                                                                            The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                            +
                                                                                                                                                            SearchBuilderOptions
                                                                                                                                                            +
                                                                                                                                                            The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                            +
                                                                                                                                                            SearchPaneOptions
                                                                                                                                                            +
                                                                                                                                                            The Options class provides a convenient method of specifying where Editor +should get the list of options for a `select`, `radio` or `checkbox` field.
                                                                                                                                                            +
                                                                                                                                                            Upload
                                                                                                                                                            +
                                                                                                                                                            Upload class for Editor. This class provides the ability to easily specify +file upload information, specifically how the file should be recorded on +the server (database and file system).
                                                                                                                                                            +
                                                                                                                                                            Validate
                                                                                                                                                            +
                                                                                                                                                            Validation methods for DataTables Editor fields.
                                                                                                                                                            +
                                                                                                                                                            ValidateOptions
                                                                                                                                                            +
                                                                                                                                                            Common validation options that can be specified for all validation methods.
                                                                                                                                                            +
                                                                                                                                                            Editor
                                                                                                                                                            +
                                                                                                                                                            DataTables Editor base class for creating editable tables.
                                                                                                                                                            +
                                                                                                                                                            Ext
                                                                                                                                                            +
                                                                                                                                                            Base class for DataTables classes.
                                                                                                                                                            +
                                                                                                                                                            Htmlaw
                                                                                                                                                            +
                                                                                                                                                            A class wrapper for the htmLawed library.
                                                                                                                                                            + + +
                                                                                                                                                            + + +

                                                                                                                                                            + Table of Contents + +

                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + DATATABLES + +  = \true +
                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            + DATATABLES + +  = \true +
                                                                                                                                                            +
                                                                                                                                                            DataTables PHP libraries.
                                                                                                                                                            + +
                                                                                                                                                            + + +
                                                                                                                                                            +

                                                                                                                                                            + Constants + +

                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            + DATATABLES + +

                                                                                                                                                            + + + + + + public + mixed + DATATABLES + = \true + + + +
                                                                                                                                                            + +
                                                                                                                                                            + + + +
                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            + DATATABLES + +

                                                                                                                                                            + + + +

                                                                                                                                                            DataTables PHP libraries.

                                                                                                                                                            + + + public + mixed + DATATABLES + = \true + + + +

                                                                                                                                                            PHP libraries for DataTables and DataTables Editor, utilising PHP 5.3+.

                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            + + +
                                                                                                                                                            + Tags + +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + author +
                                                                                                                                                            +
                                                                                                                                                            + +

                                                                                                                                                            SpryMedia +@copyright 2012 SpryMedia ( http://sprymedia.co.uk ) +@license http://editor.datatables.net/license DataTables Editor +@link http://editor.datatables.net

                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + + +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            Search results

                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + + +
                                                                                                                                                              + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/packages/default.html b/ci4/app/ThirdParty/DatatablesEditor/docs/packages/default.html new file mode 100644 index 00000000..e66b366b --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/packages/default.html @@ -0,0 +1,147 @@ + + + + + Editor PHP 2.1.3 + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              +

                                                                                                                                                              Editor PHP 2.1.3

                                                                                                                                                              + + + + + +
                                                                                                                                                              + +
                                                                                                                                                              +
                                                                                                                                                              + + + + +
                                                                                                                                                              +
                                                                                                                                                                +
                                                                                                                                                              + +
                                                                                                                                                              +

                                                                                                                                                              API Documentation

                                                                                                                                                              + +

                                                                                                                                                              + Packages + +

                                                                                                                                                              + +
                                                                                                                                                              +
                                                                                                                                                              Application
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +

                                                                                                                                                              Search results

                                                                                                                                                              + +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + + +
                                                                                                                                                                + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/reports/deprecated.html b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/deprecated.html new file mode 100644 index 00000000..5a0e2229 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/deprecated.html @@ -0,0 +1,155 @@ + + + + + Editor PHP 2.1.3 » Deprecated elements + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                +

                                                                                                                                                                Editor PHP 2.1.3

                                                                                                                                                                + + + + + +
                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                + + + + +
                                                                                                                                                                + + +
                                                                                                                                                                +

                                                                                                                                                                Deprecated

                                                                                                                                                                + +

                                                                                                                                                                Table of Contents

                                                                                                                                                                + + + + +
                                                                                                                                                                Editor/Upload.php
                                                                                                                                                                + + +

                                                                                                                                                                Upload.php

                                                                                                                                                                + + + + + + + + + + + +
                                                                                                                                                                LineElementReason
                                                                                                                                                                201Upload::allowedExtensions()

                                                                                                                                                                Use Validate::fileExtensions

                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +

                                                                                                                                                                Search results

                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  + + +
                                                                                                                                                                  + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/reports/errors.html b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/errors.html new file mode 100644 index 00000000..99058b4e --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/errors.html @@ -0,0 +1,160 @@ + + + + + Editor PHP 2.1.3 » Compilation errors + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                  +

                                                                                                                                                                  Editor PHP 2.1.3

                                                                                                                                                                  + + + + + +
                                                                                                                                                                  + +
                                                                                                                                                                  +
                                                                                                                                                                  + + + + +
                                                                                                                                                                  + + +
                                                                                                                                                                  +

                                                                                                                                                                  Errors

                                                                                                                                                                  + +

                                                                                                                                                                  Table of Contents

                                                                                                                                                                  + + + + + +
                                                                                                                                                                  HtmLawed/Htmlaw.php1
                                                                                                                                                                  + + + +

                                                                                                                                                                  Htmlaw.php

                                                                                                                                                                  + + + + + + + + + + + + + + + +
                                                                                                                                                                  TypeLineDescription
                                                                                                                                                                  ERROR0Tag "see" with body "@see Htmlawed::filter()." has error "\DataTables\HtmLawed\Htmlawed::filter()." is not a valid Fqsen.
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +

                                                                                                                                                                  Search results

                                                                                                                                                                  + +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    + + +
                                                                                                                                                                    + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/docs/reports/markers.html b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/markers.html new file mode 100644 index 00000000..ba326fb2 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/docs/reports/markers.html @@ -0,0 +1,159 @@ + + + + + Editor PHP 2.1.3 » Markers + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                    +

                                                                                                                                                                    Editor PHP 2.1.3

                                                                                                                                                                    + + + + + +
                                                                                                                                                                    + +
                                                                                                                                                                    +
                                                                                                                                                                    + + + + +
                                                                                                                                                                    + + +
                                                                                                                                                                    +

                                                                                                                                                                    Markers

                                                                                                                                                                    + +

                                                                                                                                                                    Table of Contents

                                                                                                                                                                    + + + + + +
                                                                                                                                                                    Editor/Join.php1
                                                                                                                                                                    + + +

                                                                                                                                                                    Join.php

                                                                                                                                                                    + + + + + + + + + + + + + + + +
                                                                                                                                                                    TypeLineDescription
                                                                                                                                                                    TODO854should be create or edit
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                    +

                                                                                                                                                                    Search results

                                                                                                                                                                    + +
                                                                                                                                                                    +
                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + +
                                                                                                                                                                      + + + + + + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/phpdoc.dist.xml b/ci4/app/ThirdParty/DatatablesEditor/phpdoc.dist.xml new file mode 100644 index 00000000..0bf9ba20 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/phpdoc.dist.xml @@ -0,0 +1,17 @@ + + + Editor - PHP server-side + + docs/ + + + + public + protected + + + diff --git a/ci4/app/ThirdParty/DatatablesEditor/phpstan-baseline.neon b/ci4/app/ThirdParty/DatatablesEditor/phpstan-baseline.neon new file mode 100644 index 00000000..878e3a52 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/phpstan-baseline.neon @@ -0,0 +1,405 @@ +parameters: + ignoreErrors: + - + message: "#^Variable \\$sql_details might not be defined\\.$#" + count: 1 + path: Bootstrap.php + + - + message: "#^Access to an undefined property DataTables\\\\Database\\:\\:\\$query_driver\\.$#" + count: 5 + path: Database.php + + - + message: "#^Access to an undefined property DataTables\\\\Database\\:\\:\\$type\\.$#" + count: 1 + path: Database.php + + - + message: "#^Cannot call method quote\\(\\) on resource\\.$#" + count: 1 + path: Database.php + + - + message: "#^Default value of the parameter \\#2 \\$field \\(string\\) of method DataTables\\\\Database\\:\\:select\\(\\) is incompatible with type array\\.$#" + count: 1 + path: Database.php + + - + message: "#^Default value of the parameter \\#2 \\$field \\(string\\) of method DataTables\\\\Database\\:\\:selectDistinct\\(\\) is incompatible with type array\\.$#" + count: 1 + path: Database.php + + - + message: "#^Default value of the parameter \\#2 \\$type \\(int\\) of method DataTables\\\\Database\\:\\:quote\\(\\) is incompatible with type string\\.$#" + count: 1 + path: Database.php + + - + message: "#^Default value of the parameter \\#3 \\$pkey \\(string\\) of method DataTables\\\\Database\\:\\:insert\\(\\) is incompatible with type array\\.$#" + count: 1 + path: Database.php + + - + message: "#^Default value of the parameter \\#4 \\$pkey \\(string\\) of method DataTables\\\\Database\\:\\:push\\(\\) is incompatible with type array\\.$#" + count: 1 + path: Database.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$_$#" + count: 1 + path: Database.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/Db2Query.php + + - + message: "#^Class DataTables\\\\Database\\\\Driver\\\\Db2Result constructor invoked with 3 parameters, 2 required\\.$#" + count: 1 + path: Database/Driver/Db2Query.php + + - + message: "#^Binary operation \"\\.\" between non\\-empty\\-string and DataTables\\\\Database\\\\Query results in an error\\.$#" + count: 1 + path: Database/Driver/FirebirdQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/FirebirdQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/FirebirdQuery.php + + - + message: "#^Binary operation \"\\.\" between non\\-empty\\-string and DataTables\\\\Database\\\\Query results in an error\\.$#" + count: 1 + path: Database/Driver/MysqlQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/MysqlQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/MysqlQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/OracleQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/OracleQuery.php + + - + message: "#^Binary operation \"\\.\" between non\\-empty\\-string and DataTables\\\\Database\\\\Query results in an error\\.$#" + count: 1 + path: Database/Driver/PostgresQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/PostgresQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/PostgresQuery.php + + - + message: "#^Binary operation \"\\.\" between non\\-empty\\-string and DataTables\\\\Database\\\\Query results in an error\\.$#" + count: 1 + path: Database/Driver/SqliteQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/SqliteQuery.php + + - + message: "#^Call to method getMessage\\(\\) on an unknown class DataTables\\\\Database\\\\Driver\\\\PDOException\\.$#" + count: 1 + path: Database/Driver/SqliteQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/SqliteQuery.php + + - + message: "#^Caught class DataTables\\\\Database\\\\Driver\\\\PDOException not found\\.$#" + count: 1 + path: Database/Driver/SqliteQuery.php + + - + message: "#^Binary operation \"\\.\" between non\\-empty\\-string and DataTables\\\\Database\\\\Query results in an error\\.$#" + count: 2 + path: Database/Driver/SqlserverQuery.php + + - + message: "#^Call to method debugInfo\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Driver/SqlserverQuery.php + + - + message: "#^Call to method getMessage\\(\\) on an unknown class DataTables\\\\Database\\\\Driver\\\\PDOException\\.$#" + count: 1 + path: Database/Driver/SqlserverQuery.php + + - + message: "#^Call to method resource\\(\\) on an unknown class DataTables\\\\Database\\\\DataTable\\.$#" + count: 2 + path: Database/Driver/SqlserverQuery.php + + - + message: "#^Caught class DataTables\\\\Database\\\\Driver\\\\PDOException not found\\.$#" + count: 1 + path: Database/Driver/SqlserverQuery.php + + - + message: "#^Access to an undefined property DataTables\\\\Database\\\\Query\\:\\:\\$_dbHost\\.$#" + count: 3 + path: Database/Query.php + + - + message: "#^Method DataTables\\\\Database\\\\Query\\:\\:_where_group\\(\\) should return string but return statement is missing\\.$#" + count: 1 + path: Database/Query.php + + - + message: "#^Method DataTables\\\\Database\\\\Query\\:\\:database\\(\\) has invalid return type DataTables\\\\Database\\\\DataTable\\.$#" + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param has invalid value \\(\\$where\\)\\: Unexpected token \"\\$where\", expected type at offset 81$#" + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param has invalid value \\(array Values\\)\\: Unexpected token \"Values\", expected variable at offset 295$#" + count: 1 + path: Database/Query.php + + - + message: + """ + #^PHPDoc tag @param has invalid value \\(string Conditional operator to use to join to the + preceding condition\\. Default `AND`\\.\\)\\: Unexpected token "Conditional", expected variable at offset 321$# + """ + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string Field name\\)\\: Unexpected token \"Field\", expected variable at offset 266$#" + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string The field of which the values are to be grouped\\)\\: Unexpected token \"The\", expected variable at offset 69$#" + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$db$#" + count: 1 + path: Database/Query.php + + - + message: "#^PHPDoc tag @param has invalid value \\(int PDO row fetch style \\- PDO\\:\\:FETCH_ASSOC is the default\\)\\: Unexpected token \"PDO\", expected variable at offset 55$#" + count: 1 + path: Database/Result.php + + - + message: "#^PHPDoc tag @param has invalid value \\(int PDO row fetch style \\- PDO\\:\\:FETCH_ASSOC is the default\\)\\: Unexpected token \"PDO\", expected variable at offset 57$#" + count: 1 + path: Database/Result.php + + - + message: "#^Anonymous function has an unused use \\$fields\\.$#" + count: 1 + path: Editor.php + + - + message: "#^Method DataTables\\\\Editor\\:\\:validator\\(\\) has invalid return type DataTables\\\\callback\\.$#" + count: 1 + path: Editor.php + + - + message: "#^PHPDoc tag @param has invalid value \\(int JSON encode option https\\://www\\.php\\.net/manual/en/json\\.constants\\.php\\)\\: Unexpected token \"JSON\", expected variable at offset 311$#" + count: 1 + path: Editor.php + + - + message: "#^PHPDoc tag @param has invalid value \\(number\\[\\] \\[\\$id\\=null\\] Limit to a specific set of ids\\)\\: Unexpected token \"\\[\", expected variable at offset 256$#" + count: 1 + path: Editor.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string Value to set\\. If not given, then used as a getter\\.\\)\\: Unexpected token \"Value\", expected variable at offset 220$#" + count: 1 + path: Editor.php + + - + message: + """ + #^PHPDoc tag @param has invalid value \\(string \\[\\$limitTable\\=null\\] Limit the data gathering to a single + table only\\)\\: Unexpected token "\\[", expected variable at offset 161$# + """ + count: 1 + path: Editor.php + + - + message: "#^PHPDoc tag @param has invalid value \\(string \\[\\$path\\=null\\] Set an output path to log debug information\\)\\: Unexpected token \"\\[\", expected variable at offset 735$#" + count: 1 + path: Editor.php + + - + message: "#^Property DataTables\\\\Editor\\:\\:\\$_validator has unknown class DataTables\\\\callback as its type\\.$#" + count: 1 + path: Editor.php + + - + message: "#^Cannot call method value\\(\\) on array\\\\|DataTables\\\\Editor\\|DataTables\\\\Editor\\\\Join\\|string\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid return type DataTables\\\\Editor\\\\IOption\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid return type DataTables\\\\Editor\\\\Promise\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Parameter \\$field of method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid type DataTables\\\\Field\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Parameter \\$fields of method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid type DataTables\\\\Field\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Parameter \\$http of method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid type DataTables\\\\DTRequest\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^Parameter \\$leftJoin of method DataTables\\\\Editor\\\\Field\\:\\:searchPaneOptionsExec\\(\\) has invalid type DataTables\\\\Editor\\\\any\\.$#" + count: 1 + path: Editor/Field.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$data$#" + count: 9 + path: Editor/Format.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$opts$#" + count: 9 + path: Editor/Format.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$val$#" + count: 9 + path: Editor/Format.php + + - + message: "#^Static method DataTables\\\\Editor\\\\Format\\:\\:nullEmpty\\(\\) invoked with 1 parameter, 0 required\\.$#" + count: 1 + path: Editor/Format.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$order$#" + count: 1 + path: Editor/Join.php + + - + message: "#^Variable \\$readField might not be defined\\.$#" + count: 2 + path: Editor/Join.php + + - + message: "#^Call to method query\\(\\) on an unknown class DataTables\\\\Editor\\\\Database\\.$#" + count: 1 + path: Editor/Options.php + + - + message: "#^Parameter \\$db of method DataTables\\\\Editor\\\\Options\\:\\:exec\\(\\) has invalid type DataTables\\\\Editor\\\\Database\\.$#" + count: 1 + path: Editor/Options.php + + - + message: "#^Property DataTables\\\\Editor\\\\Options\\:\\:\\$_where has unknown class DataTables\\\\Editor\\\\callback as its type\\.$#" + count: 1 + path: Editor/Options.php + + - + message: "#^Cannot call method join\\(\\) on string\\.$#" + count: 2 + path: Editor/SearchPaneOptions.php + + - + message: "#^Cannot call method where\\(\\) on string\\.$#" + count: 1 + path: Editor/SearchPaneOptions.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$db$#" + count: 1 + path: Editor/SearchPaneOptions.php + + - + message: "#^Property DataTables\\\\Editor\\\\SearchPaneOptions\\:\\:\\$_where has unknown class DataTables\\\\Editor\\\\callback as its type\\.$#" + count: 1 + path: Editor/SearchPaneOptions.php + + - + message: "#^PHPDoc tag @param has invalid value \\(number\\[\\] \\[\\$ids\\=null\\] Limit to a specific set of ids\\)\\: Unexpected token \"\\[\", expected variable at offset 122$#" + count: 1 + path: Editor/Upload.php + + - + message: "#^Method DataTables\\\\Editor\\\\Validate\\:\\:__callStatic\\(\\) should return mixed but return statement is missing\\.$#" + count: 1 + path: Editor/Validate.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$data$#" + count: 19 + path: Editor/Validate.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$host$#" + count: 19 + path: Editor/Validate.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$opts$#" + count: 19 + path: Editor/Validate.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$val$#" + count: 19 + path: Editor/Validate.php + + - + message: "#^PHPDoc tag @param has invalid value \\(\\$html The html text to fitlter\\.\\)\\: Unexpected token \"\\$html\", expected type at offset 96$#" + count: 1 + path: HtmLawed/Htmlaw.php + diff --git a/ci4/app/ThirdParty/DatatablesEditor/phpstan.neon.dist b/ci4/app/ThirdParty/DatatablesEditor/phpstan.neon.dist new file mode 100644 index 00000000..ec11ae03 --- /dev/null +++ b/ci4/app/ThirdParty/DatatablesEditor/phpstan.neon.dist @@ -0,0 +1,28 @@ +includes: + - phpstan-baseline.neon + +parameters: + level: 2 + paths: + - ./ + excludePaths: + - vendor/ + + treatPhpDocTypesAsCertain: false + + # some extra rules + checkAlwaysTrueCheckTypeFunctionCall: true + checkAlwaysTrueInstanceof: true + checkAlwaysTrueStrictComparison: true + checkExplicitMixedMissingReturn: true + checkFunctionNameCase: true + reportMaybesInMethodSignatures: true + reportStaticMethodSignatures: true + checkTooWideReturnTypesInProtectedAndPublicMethods: true + + ignoreErrors: + # - '~^Unsafe usage of new static\(\)\.$~' + + - + message: '~^.+$~' + path: HtmLawed/Htmlawed.php From a3ded71afe4f563ea9010f2e906ac6ec542fe4e3 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 12 Jun 2023 18:08:25 +0200 Subject: [PATCH 3/6] modificando tarifas acabado --- .../{viewTarifaacabadoList.php => viewTarifaAcabadoList.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/{viewTarifaacabadoList.php => viewTarifaAcabadoList.php} (100%) diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php similarity index 100% rename from ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php rename to ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php From f814ec7e2c6b72901cf7ef9effc2b3ff2e1542c6 Mon Sep 17 00:00:00 2001 From: Jaime Jimenez Date: Mon, 12 Jun 2023 18:35:42 +0200 Subject: [PATCH 4/6] tarifas acabado antes de meter lineas --- ci4/app/Config/Routes.php | 21 +- ci4/app/Controllers/Tarifas/Tarifaacabado.php | 148 +++++---- .../Tarifas/Tarifaacabadolineas.php | 289 ++++++++++++++++++ .../Entities/Tarifas/TarifaAcabadoLinea.php | 33 ++ .../Entities/Tarifas/TarifaacabadoEntity.php | 21 +- .../Tarifas/TarifaAcabadoLineaModel.php | 176 +++++++++++ ci4/app/Models/Tarifas/TarifaacabadoModel.php | 100 ++---- .../acabado/_tarifaAcabadoFormItems.php | 12 + .../acabado/_tarifaacabadoFormItems.php | 56 ---- .../tarifas/acabado/viewTarifaAcabadoForm.php | 31 ++ .../tarifas/acabado/viewTarifaAcabadoList.php | 223 +++++++------- .../tarifas/acabado/viewTarifaacabadoForm.php | 27 -- 12 files changed, 793 insertions(+), 344 deletions(-) create mode 100644 ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php create mode 100644 ci4/app/Entities/Tarifas/TarifaAcabadoLinea.php create mode 100644 ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php create mode 100644 ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaAcabadoFormItems.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaacabadoFormItems.php create mode 100644 ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php delete mode 100644 ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoForm.php diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 58388208..b35b2887 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -65,17 +65,18 @@ $routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], funct }); $routes->group('tarifaacabado', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { - $routes->get('', 'Tarifaacabado::index', ['as' => 'tarifaacabadoList']); - $routes->get('index', 'Tarifaacabado::index', ['as' => 'tarifaacabadoIndex']); - $routes->get('list', 'Tarifaacabado::index', ['as' => 'tarifaacabadoList2']); - $routes->get('add', 'Tarifaacabado::add', ['as' => 'newTarifaacabado']); - $routes->post('add', 'Tarifaacabado::add', ['as' => 'createTarifaacabado']); - $routes->get('edit/(:num)', 'Tarifaacabado::edit/$1', ['as' => 'editTarifaacabado']); - $routes->post('edit/(:num)', 'Tarifaacabado::edit/$1', ['as' => 'updateTarifaacabado']); - $routes->get('delete/(:num)', 'Tarifaacabado::delete/$1', ['as' => 'deleteTarifaacabado']); - $routes->post('allmenuitems', 'Tarifaacabado::allItemsSelect', ['as' => 'select2ItemsOfTarifasacabado']); - $routes->post('menuitems', 'Tarifaacabado::menuItems', ['as' => 'menuItemsOfTarifasacabado']); + $routes->get('', 'Tarifaacabado::index', ['as' => 'tarifaAcabadoList']); + $routes->get('add', 'Tarifaacabado::add', ['as' => 'newTarifaAcabado']); + $routes->post('add', 'Tarifaacabado::add', ['as' => 'createTarifaAcabado']); + $routes->post('create', 'Tarifaacabado::create', ['as' => 'ajaxCreateTarifaAcabado']); + $routes->put('(:num)/update', 'Tarifaacabado::update/$1', ['as' => 'ajaxUpdateTarifaAcabado']); + $routes->post('(:num)/edit', 'Tarifaacabado::edit/$1', ['as' => 'updateTarifaAcabado']); + $routes->post('datatable', 'Tarifaacabado::datatable', ['as' => 'dataTableOfTarifasAcabado']); + $routes->post('allmenuitems', 'Tarifaacabado::allItemsSelect', ['as' => 'select2ItemsOfTarifasAcabado']); + $routes->post('menuitems', 'Tarifaacabado::menuItems', ['as' => 'menuItemsOfTarifasAcabado']); }); +$routes->resource('tarifaacabado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaacabado', 'except' => 'show,new,create,update']); + $routes->group('users', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('', 'Users::index', ['as' => 'userList']); diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabado.php b/ci4/app/Controllers/Tarifas/Tarifaacabado.php index 52713db3..bc0d7224 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabado.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabado.php @@ -1,46 +1,58 @@ -viewData['pageTitle'] = lang('Tarifaacabado.moduleTitle'); - // Se indica que este controlador trabaja con soft_delete - $this->soft_delete = true; - // Se indica el flag para los ficheros borrados - $this->delete_flag = 1; + $this->viewData['usingSweetAlert'] = true; parent::initController($request, $response, $logger); - } + public function index() { - $this->viewData['usingClientSideDataTable'] = true; - - $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifaacabado.tarifaacabado')]); - parent::index(); + $viewData = [ + 'currentModule' => static::$controllerSlug, + 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Tarifaacabado.tarifaacabado')]), + 'tarifaacabadoEntity' => new TarifaacabadoEntity(), + 'usingServerSideDataTable' => true, + + ]; + $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class + + return view(static::$viewPath.'viewTarifaAcabadoList', $viewData); } + public function add() { - $session = session(); + $requestMethod = $this->request->getMethod(); @@ -49,13 +61,13 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - $sanitizedData['user_created_id'] = $session->id_user; - $sanitizedData['user_update_id'] = $session->id_user; + + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - + if ($this->canValidate()) : try { @@ -76,47 +88,44 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { $id = $this->model->db->insertID(); $message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('Tarifaacabado.tarifaacabado'))]).'.'; - $message .= anchor(route_to('editTarifaacabado', $id), lang('Basic.global.continueEditing').'?'); + $message .= anchor( "tarifasacabado/{$id}/edit" , lang('Basic.global.continueEditing').'?'); $message = ucfirst(str_replace("'", "\'", $message)); if ($thenRedirect) : if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('successMessage', $message); + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: - return $this->redirect2listView('successMessage', $message); + return $this->redirect2listView('sweet-success', $message); endif; else: - $this->viewData['successMessage'] = $message; + $this->session->setFlashData('sweet-success', $message); endif; endif; // $noException && $successfulResult endif; // ($requestMethod === 'post') - $this->viewData['tarifaacabado_'] = isset($sanitizedData) ? new TarifaacabadoEntity($sanitizedData) : new TarifaacabadoEntity(); + $this->viewData['tarifaacabadoEntity'] = isset($sanitizedData) ? new TarifaacabadoEntity($sanitizedData) : new TarifaacabadoEntity(); - $this->viewData['formAction'] = route_to('createTarifaacabado'); + $this->viewData['formAction'] = route_to('createTarifaAcabado'); - $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('Tarifaacabado.tarifaacabado').' '.lang('Basic.global.addNewSuffix'); + $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('Tarifaacabado.moduleTitle').' '.lang('Basic.global.addNewSuffix'); return $this->displayForm(__METHOD__); } // end function add() public function edit($requestedId = null) { - - // JJO - $session = session(); if ($requestedId == null) : return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); - $tarifaacabado_ = $this->model->find($id); + $tarifaacabadoEntity = $this->model->find($id); - if ($tarifaacabado_ == false) : + if ($tarifaacabadoEntity == false) : $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Tarifaacabado.tarifaacabado')), $id]); - return $this->redirect2listView('errorMessage', $message); + return $this->redirect2listView('sweet-error', $message); endif; $requestMethod = $this->request->getMethod(); @@ -126,13 +135,10 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - // JJO - if(isset($this->model->user_update_id)){ - $sanitizedData['user_update_id'] = $session->id_user; - } + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + + $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -152,49 +158,76 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { endif; - $tarifaacabado_->fill($sanitizedData); + $tarifaacabadoEntity->fill($sanitizedData); $thenRedirect = true; endif; if ($noException && $successfulResult) : - $id = $tarifaacabado_->id ?? $id; + $id = $tarifaacabadoEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Tarifaacabado.tarifaacabado'))]).'.'; - $message .= anchor(route_to('editTarifaacabado', $id), lang('Basic.global.continueEditing').'?'); + $message .= anchor( "tarifasacabado/{$id}/edit" , lang('Basic.global.continueEditing').'?'); $message = ucfirst(str_replace("'", "\'", $message)); if ($thenRedirect) : if (!empty($this->indexRoute)) : - return redirect()->to(route_to($this->indexRoute))->with('successMessage', $message); + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: - return $this->redirect2listView('successMessage', $message); + return $this->redirect2listView('sweet-success', $message); endif; else: - $this->viewData['successMessage'] = $message; + $this->session->setFlashData('sweet-success', $message); endif; endif; // $noException && $successfulResult endif; // ($requestMethod === 'post') - $this->viewData['tarifaacabado_'] = $tarifaacabado_; + $this->viewData['tarifaacabadoEntity'] = $tarifaacabadoEntity; - $this->viewData['formAction'] = route_to('updateTarifaacabado', $id); + $this->viewData['formAction'] = route_to('updateTarifaAcabado', $id); - $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('Tarifaacabado.tarifaacabado').' '.lang('Basic.global.edit3'); + $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('Tarifaacabado.moduleTitle').' '.lang('Basic.global.edit3'); return $this->displayForm(__METHOD__, $id); } // end function edit(...) - + + + public function datatable() { + if ($this->request->isAJAX()) { + $reqData = $this->request->getPost(); + if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { + $errstr = 'No data available in response to this specific request.'; + $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); + return $response; + } + $start = $reqData['start'] ?? 0; + $length = $reqData['length'] ?? 5; + $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 1; + $order = TarifaacabadoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1]; + $dir = $reqData['order']['0']['dir'] ?? 'asc'; + + $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + return $this->respond(Collection::datatable( + $resourceData, + $this->model->getResource()->countAllResults(), + $this->model->getResource($search)->countAllResults() + )); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } public function allItemsSelect() { if ($this->request->isAJAX()) { $onlyActiveOnes = true; $reqVal = $this->request->getPost('val') ?? 'id'; - $menu = $this->model->getAllForMenu($reqVal.', Select a field...', 'Select a field...', $onlyActiveOnes, false); + $menu = $this->model->getAllForMenu($reqVal.', nombre', 'nombre', $onlyActiveOnes, false); $nonItem = new \stdClass; $nonItem->id = ''; - $nonItem->Selectafield = '- '.lang('Basic.global.None').' -'; + $nonItem->nombre = '- '.lang('Basic.global.None').' -'; array_unshift($menu , $nonItem); $newTokenHash = csrf_hash(); @@ -208,14 +241,14 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { return $this->failUnauthorized('Invalid request', 403); } } - + public function menuItems() { if ($this->request->isAJAX()) { $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; $reqId = goSanitize($this->request->getPost('id'))[0]; $reqText = goSanitize($this->request->getPost('text'))[0]; $onlyActiveOnes = false; - $columns2select = [$reqId ?? 'id', $reqText ?? 'Select a field...']; + $columns2select = [$reqId ?? 'id', $reqText ?? 'nombre']; $onlyActiveOnes = false; $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); $nonItem = new \stdClass; @@ -233,5 +266,6 @@ class Tarifaacabado extends \App\Controllers\GoBaseController { } else { return $this->failUnauthorized('Invalid request', 403); } - } + } + } diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php new file mode 100644 index 00000000..59f175ad --- /dev/null +++ b/ci4/app/Controllers/Tarifas/Tarifaacabadolineas.php @@ -0,0 +1,289 @@ +viewData['pageTitle'] = lang('TarifaAcabadoLineas.moduleTitle'); + $this->viewData['usingSweetAlert'] = true; + parent::initController($request, $response, $logger); + } + + + public function index() { + + $viewData = [ + 'currentModule' => static::$controllerSlug, + 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('TarifaAcabadoLineas.tarifaAcabadoLinea')]), + 'tarifaAcabadoLinea' => new TarifaAcabadoLinea(), + 'usingServerSideDataTable' => true, + + ]; + + $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class + + return view(static::$viewPath.'viewTarifaAcabadoLineaList', $viewData); + } + + + public function add() { + + + + $requestMethod = $this->request->getMethod(); + + if ($requestMethod === 'post') : + + $nullIfEmpty = true; // !(phpversion() >= '8.1'); + + $postData = $this->request->getPost(); + + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + + + $noException = true; + if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + + + if ($this->canValidate()) : + try { + $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); + } catch (\Exception $e) { + $noException = false; + $this->dealWithException($e); + } + else: + $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('TarifaAcabadoLineas.tarifaAcabadoLinea'))]); + $this->session->setFlashdata('formErrors', $this->model->errors()); + endif; + + $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission + endif; + if ($noException && $successfulResult) : + + $id = $this->model->db->insertID(); + + $message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('TarifaAcabadoLineas.tarifaAcabadoLinea'))]).'.'; + $message .= anchor( "tarifa-acabado-lineas/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message = ucfirst(str_replace("'", "\'", $message)); + + if ($thenRedirect) : + if (!empty($this->indexRoute)) : + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); + else: + return $this->redirect2listView('sweet-success', $message); + endif; + else: + $this->session->setFlashData('sweet-success', $message); + endif; + + endif; // $noException && $successfulResult + + endif; // ($requestMethod === 'post') + + $this->viewData['tarifaAcabadoLinea'] = isset($sanitizedData) ? new TarifaAcabadoLinea($sanitizedData) : new TarifaAcabadoLinea(); + $this->viewData['tarifaAcabadoList'] = $this->getTarifaAcabadoListItems($tarifaAcabadoLinea->tarifa_acabado_id ?? null); + + $this->viewData['formAction'] = route_to('createTarifaAcabadoLinea'); + + $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('TarifaAcabadoLineas.moduleTitle').' '.lang('Basic.global.addNewSuffix'); + + + return $this->displayForm(__METHOD__); + } // end function add() + + public function edit($requestedId = null) { + + if ($requestedId == null) : + return $this->redirect2listView(); + endif; + $id = filter_var($requestedId, FILTER_SANITIZE_URL); + $tarifaAcabadoLinea = $this->model->find($id); + + if ($tarifaAcabadoLinea == false) : + $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('TarifaAcabadoLineas.tarifaAcabadoLinea')), $id]); + return $this->redirect2listView('sweet-error', $message); + endif; + + $requestMethod = $this->request->getMethod(); + + if ($requestMethod === 'post') : + + $nullIfEmpty = true; // !(phpversion() >= '8.1'); + + $postData = $this->request->getPost(); + + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + + + + $noException = true; + if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + + + + if ($this->canValidate()) : + try { + $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); + } catch (\Exception $e) { + $noException = false; + $this->dealWithException($e); + } + else: + $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('TarifaAcabadoLineas.tarifaAcabadoLinea'))]); + $this->session->setFlashdata('formErrors', $this->model->errors()); + + endif; + + $tarifaAcabadoLinea->fill($sanitizedData); + + $thenRedirect = true; + endif; + if ($noException && $successfulResult) : + $id = $tarifaAcabadoLinea->id ?? $id; + $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('TarifaAcabadoLineas.tarifaAcabadoLinea'))]).'.'; + $message .= anchor( "tarifa-acabado-lineas/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message = ucfirst(str_replace("'", "\'", $message)); + + if ($thenRedirect) : + if (!empty($this->indexRoute)) : + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); + else: + return $this->redirect2listView('sweet-success', $message); + endif; + else: + $this->session->setFlashData('sweet-success', $message); + endif; + + endif; // $noException && $successfulResult + endif; // ($requestMethod === 'post') + + $this->viewData['tarifaAcabadoLinea'] = $tarifaAcabadoLinea; + $this->viewData['tarifaAcabadoList'] = $this->getTarifaAcabadoListItems($tarifaAcabadoLinea->tarifa_acabado_id ?? null); + + $this->viewData['formAction'] = route_to('updateTarifaAcabadoLinea', $id); + + $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('TarifaAcabadoLineas.moduleTitle').' '.lang('Basic.global.edit3'); + + + return $this->displayForm(__METHOD__, $id); + } // end function edit(...) + + + + public function datatable() { + if ($this->request->isAJAX()) { + $reqData = $this->request->getPost(); + if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { + $errstr = 'No data available in response to this specific request.'; + $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); + return $response; + } + $start = $reqData['start'] ?? 0; + $length = $reqData['length'] ?? 5; + $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 1; + $order = TarifaAcabadoLineaModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; + $dir = $reqData['order']['0']['dir'] ?? 'asc'; + + $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + return $this->respond(Collection::datatable( + $resourceData, + $this->model->getResource()->countAllResults(), + $this->model->getResource($search)->countAllResults() + )); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function allItemsSelect() { + if ($this->request->isAJAX()) { + $onlyActiveOnes = true; + $reqVal = $this->request->getPost('val') ?? 'id'; + $menu = $this->model->getAllForMenu($reqVal.', tarifa_acabado_id', 'tarifa_acabado_id', $onlyActiveOnes, false); + $nonItem = new \stdClass; + $nonItem->id = ''; + $nonItem->tarifa_acabado_id = '- '.lang('Basic.global.None').' -'; + array_unshift($menu , $nonItem); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + return $this->respond($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + public function menuItems() { + if ($this->request->isAJAX()) { + $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; + $reqId = goSanitize($this->request->getPost('id'))[0]; + $reqText = goSanitize($this->request->getPost('text'))[0]; + $onlyActiveOnes = false; + $columns2select = [$reqId ?? 'id', $reqText ?? 'tarifa_acabado_id']; + $onlyActiveOnes = false; + $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); + $nonItem = new \stdClass; + $nonItem->id = ''; + $nonItem->text = '- '.lang('Basic.global.None').' -'; + array_unshift($menu , $nonItem); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'menu' => $menu, + $csrfTokenName => $newTokenHash + ]; + return $this->respond($data); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + protected function getTarifaAcabadoListItems($selId = null) { + $data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Tarifaacabado.tarifaAcabado'))])]; + if (!empty($selId)) : + $tarifaacabadoModel = model('App\Models\tarifas\TarifaacabadoModel'); + + $selOption = $tarifaacabadoModel->where('id', $selId)->findColumn('id'); + if (!empty($selOption)) : + $data[$selId] = $selOption[0]; + endif; + endif; + return $data; + } + +} diff --git a/ci4/app/Entities/Tarifas/TarifaAcabadoLinea.php b/ci4/app/Entities/Tarifas/TarifaAcabadoLinea.php new file mode 100644 index 00000000..7a8dbf13 --- /dev/null +++ b/ci4/app/Entities/Tarifas/TarifaAcabadoLinea.php @@ -0,0 +1,33 @@ + null, + "tarifa_acabado_id" => 0, + "tirada_min" => 0, + "tirada_max" => 0, + "precio_min" => 0, + "precio_max" => 0, + "precio_unidad" => 0, + "user_created_id" => 0, + "user_updated_id" => 0, + "is_deleted" => 0, + "created_at" => null, + "updated_at" => null, + ]; + protected $casts = [ + "tarifa_acabado_id" => "int", + "tirada_min" => "int", + "tirada_max" => "int", + "precio_min" => "float", + "precio_max" => "float", + "precio_unidad" => "float", + "user_created_id" => "int", + "user_updated_id" => "int", + "is_deleted" => "int", + ]; +} diff --git a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php index 93e46dbc..0ad59298 100644 --- a/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php +++ b/ci4/app/Entities/Tarifas/TarifaacabadoEntity.php @@ -1,33 +1,22 @@ null, "nombre" => null, - "tirada_min" => 0, - "precio_min" => 0, - "tirada_max" => 0, - "precio_max" => null, - "ajuste" => 0, - "formula_price" => null, "user_created_id" => 1, "user_update_id" => 1, - "deleted_at" => null, "is_deleted" => 0, "created_at" => null, "updated_at" => null, ]; protected $casts = [ - "tirada_min" => "int", - "precio_min" => "float", - "tirada_max" => "int", - "precio_max" => "float", - "ajuste" => "float", "user_created_id" => "int", "user_update_id" => "int", + "is_deleted" => "int", ]; } diff --git a/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php new file mode 100644 index 00000000..09b9fb44 --- /dev/null +++ b/ci4/app/Models/Tarifas/TarifaAcabadoLineaModel.php @@ -0,0 +1,176 @@ + "t1.tirada_min", + 2 => "t1.tirada_max", + 3 => "t1.precio_min", + 4 => "t1.precio_max", + 5 => "t1.precio_unidad", + 6 => "t1.user_created_id", + 7 => "t1.user_updated_id", + 8 => "t1.is_deleted", + 9 => "t1.created_at", + 10 => "t1.updated_at", + 11 => "t2.id", + ]; + + protected $allowedFields = [ + "tirada_min", + "tirada_max", + "precio_min", + "precio_max", + "precio_unidad", + "user_created_id", + "is_deleted", + ]; + protected $returnType = "App\Entities\Tarifas\TarifaAcabadoLinea"; + + protected $useTimestamps = true; + protected $useSoftDeletes = false; + + protected $createdField = "created_at"; + + protected $updatedField = "updated_at"; + + public static $labelField = "tarifa_acabado_id"; + + protected $validationRules = [ + "is_deleted" => [ + "label" => "TarifaAcabadoLineas.isDeleted", + "rules" => "required|integer", + ], + "precio_max" => [ + "label" => "TarifaAcabadoLineas.precioMax", + "rules" => "required|decimal", + ], + "precio_min" => [ + "label" => "TarifaAcabadoLineas.precioMin", + "rules" => "required|decimal", + ], + "precio_unidad" => [ + "label" => "TarifaAcabadoLineas.precioUnidad", + "rules" => "required|decimal", + ], + "tirada_max" => [ + "label" => "TarifaAcabadoLineas.tiradaMax", + "rules" => "required|integer", + ], + "tirada_min" => [ + "label" => "TarifaAcabadoLineas.tiradaMin", + "rules" => "required|integer", + ], + "user_created_id" => [ + "label" => "TarifaAcabadoLineas.userCreatedId", + "rules" => "required|integer", + ], + ]; + + protected $validationMessages = [ + "is_deleted" => [ + "integer" => "TarifaAcabadoLineas.validation.is_deleted.integer", + "required" => "TarifaAcabadoLineas.validation.is_deleted.required", + ], + "precio_max" => [ + "decimal" => "TarifaAcabadoLineas.validation.precio_max.decimal", + "required" => "TarifaAcabadoLineas.validation.precio_max.required", + ], + "precio_min" => [ + "decimal" => "TarifaAcabadoLineas.validation.precio_min.decimal", + "required" => "TarifaAcabadoLineas.validation.precio_min.required", + ], + "precio_unidad" => [ + "decimal" => "TarifaAcabadoLineas.validation.precio_unidad.decimal", + "required" => "TarifaAcabadoLineas.validation.precio_unidad.required", + ], + "tirada_max" => [ + "integer" => "TarifaAcabadoLineas.validation.tirada_max.integer", + "required" => "TarifaAcabadoLineas.validation.tirada_max.required", + ], + "tirada_min" => [ + "integer" => "TarifaAcabadoLineas.validation.tirada_min.integer", + "required" => "TarifaAcabadoLineas.validation.tirada_min.required", + ], + "user_created_id" => [ + "integer" => "TarifaAcabadoLineas.validation.user_created_id.integer", + "required" => "TarifaAcabadoLineas.validation.user_created_id.required", + ], + ]; + + public function findAllWithTarifaAcabado(string $selcols = "*", int $limit = null, int $offset = 0) + { + $sql = + "SELECT t1." . + $selcols . + ", t2.id AS tarifa_acabado FROM " . + $this->table . + " t1 LEFT JOIN lg_tarifa_acabado t2 ON t1.tarifa_acabado_id = t2.id"; + if (!is_null($limit) && intval($limit) > 0) { + $sql .= " LIMIT " . $limit; + } + + if (!is_null($offset) && intval($offset) > 0) { + $sql .= " OFFSET " . $offset; + } + + $query = $this->db->query($sql); + $result = $query->getResultObject(); + return $result; + } + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResource(string $search = "") + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado" + ); + $builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left"); + + return empty($search) + ? $builder + : $builder + ->groupStart() + ->like("t1.tirada_min", $search) + ->orLike("t1.tirada_max", $search) + ->orLike("t1.precio_min", $search) + ->orLike("t1.precio_max", $search) + ->orLike("t1.precio_unidad", $search) + ->orLike("t1.user_created_id", $search) + ->orLike("t1.user_updated_id", $search) + ->orLike("t1.is_deleted", $search) + ->orLike("t1.created_at", $search) + ->orLike("t1.updated_at", $search) + ->orLike("t2.id", $search) + ->orLike("t1.tirada_min", $search) + ->orLike("t1.tirada_max", $search) + ->orLike("t1.precio_min", $search) + ->orLike("t1.precio_max", $search) + ->orLike("t1.precio_unidad", $search) + ->orLike("t1.user_created_id", $search) + ->orLike("t1.user_updated_id", $search) + ->orLike("t1.is_deleted", $search) + ->orLike("t1.created_at", $search) + ->orLike("t1.updated_at", $search) + ->orLike("t2.id", $search) + ->groupEnd(); + } +} diff --git a/ci4/app/Models/Tarifas/TarifaacabadoModel.php b/ci4/app/Models/Tarifas/TarifaacabadoModel.php index 73a359a2..478b40a2 100644 --- a/ci4/app/Models/Tarifas/TarifaacabadoModel.php +++ b/ci4/app/Models/Tarifas/TarifaacabadoModel.php @@ -1,5 +1,5 @@ "t1.nombre", ]; - protected $returnType = "App\Entities\Tarifas\TarifaacabadoEntity"; + + protected $allowedFields = ["nombre"]; + protected $returnType = 'App\Entities\Tarifas\TarifaacabadoEntity'; + + protected $useTimestamps = true; + protected $useSoftDeletes = false; + + protected $createdField = "created_at"; + + protected $updatedField = "updated_at"; public static $labelField = "nombre"; protected $validationRules = [ - "ajuste" => [ - "label" => "Acabadoes.ajuste", - "rules" => "required|decimal", - ], - "formula_price" => [ - "label" => "Acabadoes.formulaPrice", - "rules" => "trim|required|max_length[1073241]", - ], "nombre" => [ "label" => "Acabadoes.nombre", "rules" => "trim|required|max_length[255]", ], - "precio_max" => [ - "label" => "Acabadoes.precioMax", - "rules" => "required|decimal", - ], - "precio_min" => [ - "label" => "Acabadoes.precioMin", - "rules" => "required|decimal", - ], - "tirada_max" => [ - "label" => "Acabadoes.tiradaMax", - "rules" => "required|integer", - ], - "tirada_min" => [ - "label" => "Acabadoes.tiradaMin", - "rules" => "required|integer", - ] ]; protected $validationMessages = [ - "ajuste" => [ - "decimal" => "Acabadoes.validation.ajuste.decimal", - "required" => "Acabadoes.validation.ajuste.required", - ], - "formula_price" => [ - "max_length" => "Acabadoes.validation.formula_price.max_length", - "required" => "Acabadoes.validation.formula_price.required", - ], "nombre" => [ "max_length" => "Acabadoes.validation.nombre.max_length", "required" => "Acabadoes.validation.nombre.required", ], - "precio_max" => [ - "decimal" => "Acabadoes.validation.precio_max.decimal", - "required" => "Acabadoes.validation.precio_max.required", - ], - "precio_min" => [ - "decimal" => "Acabadoes.validation.precio_min.decimal", - "required" => "Acabadoes.validation.precio_min.required", - ], - "tirada_max" => [ - "integer" => "Acabadoes.validation.tirada_max.integer", - "required" => "Acabadoes.validation.tirada_max.required", - ], - "tirada_min" => [ - "integer" => "Acabadoes.validation.tirada_min.integer", - "required" => "Acabadoes.validation.tirada_min.required", - ] ]; + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResource(string $search = "") + { + $builder = $this->db->table($this->table . " t1")->select("t1.id AS id, t1.nombre AS nombre"); + + return empty($search) + ? $builder + : $builder + ->groupStart() + ->like("t1.nombre", $search) + ->orLike("t1.nombre", $search) + ->groupEnd(); + } } diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaAcabadoFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaAcabadoFormItems.php new file mode 100644 index 00000000..5f83a198 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaAcabadoFormItems.php @@ -0,0 +1,12 @@ +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + +
                                                                                                                                                                      + +
                                                                                                                                                                      + +
                                                                                                                                                                      \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaacabadoFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaacabadoFormItems.php deleted file mode 100644 index 8fe282b7..00000000 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/_tarifaacabadoFormItems.php +++ /dev/null @@ -1,56 +0,0 @@ -
                                                                                                                                                                      -
                                                                                                                                                                      -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      -
                                                                                                                                                                      -
                                                                                                                                                                      - - -
                                                                                                                                                                      - -
                                                                                                                                                                      - -
                                                                                                                                                                      \ No newline at end of file diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php new file mode 100644 index 00000000..039baaab --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoForm.php @@ -0,0 +1,31 @@ +include("themes/_commonPartialsBs/select2bs5") ?> +include("themes/_commonPartialsBs/sweetalert") ?> +extend('themes/backend/vuexy/main/defaultlayout') ?> +section("content") ?> +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + + getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> + +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php index 61d8d38d..fa78f47b 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaAcabadoList.php @@ -1,99 +1,32 @@ include('themes/_commonPartialsBs/datatables') ?> +include('themes/_commonPartialsBs/sweetalert') ?> extend('themes/backend/vuexy/main/defaultlayout') ?> - section('content'); ?>
                                                                                                                                                                      -
                                                                                                                                                                      +

                                                                                                                                                                      - 'btn btn-primary float-end']); ?> + 'btn btn-primary float-end']); ?>
                                                                                                                                                                      - +
                                                                                                                                                                      - - */ ?> - - - - - - - - - - - - - - */ ?> - - - - id ?> - - */ ?> - - - - - - - - - user_created_id) ?> - - - - - - */ ?> - - - +
                                                                                                                                                                      - nombre) || strlen($item->nombre) < 51 ? esc($item->nombre) : character_limiter(esc($item->nombre), 50) ?> - - tirada_min) ?> - - tirada_max) ?> - - precio_min) ?> - - precio_max) ?> - - ajuste) ?> - - formula_price) || strlen($item->formula_price) < 51 ? esc($item->formula_price) : character_limiter(esc($item->formula_price), 50) ?> - - user_update_id) ?> - - deleted_at) ? '' : date('d/m/Y H:m:s', strtotime($item->deleted_at)) ?> - - created_at) ? '' : date('d/m/Y H:m:s', strtotime($item->created_at)) ?> - - updated_at) ? '' : date('d/m/Y H:m:s', strtotime($item->updated_at)) ?> - - id), "", ['class'=>'text-body', 'data-id'=>$item->id,]); ?> - ", ['class'=>'text-body', 'data-href'=>route_to('deleteTarifaacabado', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?> -
                                                                                                                                                                      -
                                                                                                                                                                      @@ -101,6 +34,111 @@ endSection() ?> + +section('additionalInlineJs') ?> + + const lastColNr = $('#tableOfTarifasacabado').find("tr:first th").length - 1; + const actionBtns = function(data) { + return `
                                                                                                                                                                      +
                                                                                                                                                                      + + +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + endSection() ?> + + +section("additionalInlineJs") ?> + + const lastColNr = $('#tableOfTarifasacabado').find("tr:first th").length - 1; + const url = window.location.href; + const url_parts = url.split('/'); + if(url_parts[url_parts.length-2] == 'edit'){ + id = url_parts[url_parts.length-1]; + } + else{ + id = -1; + } + + const actionBtns = function(data) { + return ` + + + + `; + }; + + + editor = new $.fn.dataTable.Editor( { + ajax: { + url: "", + headers: { + : v, + }, + }, + table : "#tableOfTarifaacabadolineas", + idSrc: 'id', + fields: [ { + name: "tirada_min" + }, { + name: "tirada_max" + }, { + name: "precio_min" + }, { + name: "precio_max" + }, { + name: "precio_unidad" + },{ + "name": "tarifa_acabado_id", + "type": "hidden" + },{ + "name": "deleted_at", + "type": "hidden" + },{ + "name": "is_deleted", + "type": "hidden" + }, + ] + } ); + + editor.on( 'preSubmit', function ( e, d, type ) { + if ( type === 'create'){ + d.data[0]['tarifa_acabado_id'] = id; + } + else if(type === 'edit' ) { + for (v in d.data){ + d.data[v]['tarifa_acabado_id'] = id; + } + } + }); + + + editor.on( 'postSubmit', function ( e, json, data, action ) { + + yeniden(json.); + }); + + editor.on( 'submitComplete', function ( e, json, data, action ) { + + theTable.clearPipeline(); + theTable.draw(); + }); + + + var theTable = $('#tableOfTarifaacabadolineas').DataTable( { + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [[ 0, "asc" ], [ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + searching: false, + paging: true, + info: false, + dom: "Bltp", + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + id_tarifaacabado: id, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'tirada_min' }, + { 'data': 'tirada_max' }, + { 'data': 'precio_min' }, + { 'data': 'precio_max' }, + { 'data': 'precio_unidad' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNr] + } + ], + language: { + url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" + }, + buttons: [ { + className: 'btn btn-primary float-end me-sm-3 me-1', + extend: "createInline", + editor: editor, + formOptions: { + submitTrigger: -1, + submitHtml: '' + } + } ] + } ); + + + + // Activate an inline edit on click of a table cell + $('#tableOfTarifaacabadolineas').on( 'click', 'tbody span.edit', function (e) { + editor.inline( + theTable.cells(this.parentNode, '*').nodes(), + { + cancelHtml: '', + cancelTrigger: 'span.cancel', + submitHtml: '', + submitTrigger: 'span.edit', + } + ); + } ); + + + // Delete row + $('#tableOfTarifaacabadolineas').on( 'click', 'tbody span.remove', function (e) { + + Swal.fire({ + title: '', + text: '', + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + confirmButtonText: '', + cancelButtonText: '', + cancelButtonColor: '#d33' + }) + .then((result) => { + const dataId = $(this).data('id'); + const row = $(this).closest('tr'); + if (result.value) { + editor + .create( false ) + .edit( this.parentNode, false) + .set( 'deleted_at', new Date().toISOString().slice(0, 19).replace('T', ' ') ) + .set( 'is_deleted', 1 ) + .submit(); + + } + }); + }); + + + + + + + +endSection() ?> + +section('css') ?> + + + +endSection() ?> + + +section('additionalExternalJs') ?> + + + + + + + + + + + + +endSection() ?> + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.css new file mode 100644 index 00000000..c7a54469 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.css @@ -0,0 +1,702 @@ +div.DTE div.DTE_Form_Error { + color: #b11f1f; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE div.DTE_Form_Buttons button { + margin-left: 0.5em; +} + +div.modal div.DTE div.DTE_Form_Error { + display: none; + float: left; + padding-top: 7px; +} + +div.DTE_Field { + position: relative; +} +div.DTE_Field div.multi-value, +div.DTE_Field div.multi-restore { + display: none; + cursor: pointer; +} +div.DTE_Field div.multi-value span, +div.DTE_Field div.multi-restore span { + display: block; + color: #666; +} +div.DTE_Field div.multi-value:hover, +div.DTE_Field div.multi-restore:hover { + background-color: #f1f1f1; +} +div.DTE_Field div.multi-restore { + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; +} +div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} +div.DTE_Field div:not([data-dte-e=msg-error]) { + color: inherit; +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE_Inline div.DTE_Field { + width: 100%; +} +div.DTE_Inline div.DTE_Field > div { + width: 100%; + padding: 0; +} +div.DTE_Inline div.DTE_Field input.form-control { + height: 30px; +} +div.DTE_Inline div.DTE_Field div.help-block { + display: none; + margin-top: 10px; + margin-bottom: 0; +} +div.DTE_Inline.DTE_Processing:after { + top: 5px; +} + +div.DTE_Field_Type_checkbox div.controls, +div.DTE_Field_Type_radio div.controls { + margin-top: 0.4em; +} +div.DTE_Field_Type_checkbox div.controls label, +div.DTE_Field_Type_radio div.controls label { + margin-left: 0.75em; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Bubble div.DTE_Bubble_Liner { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + border-radius: 6px; + padding: 1em; + border: 1px solid rgba(0, 0, 0, 0.2); +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + width: 100%; + max-width: 100%; + float: none; + clear: both; + text-align: left; + flex: none; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { + padding: 0 0 4px 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + font-size: 14px; + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + margin-top: -2px; + display: block; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.05); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + height: auto; +} +div.DTE div.editor_upload ul li button { + padding-bottom: 8px; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + font-weight: normal; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { + text-align: center; +} + +@media (min-width: 1200px) { + div.DTE_Field_Type_datatable label.control-label { + text-align: left; + } +} +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +table.dataTable tbody tr.highlight { + background-color: #3399ff !important; +} +table.dataTable tbody tr.highlight, +table.dataTable tbody tr.noHighlight, +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} + +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 20px; +} + +div.DTE div.DTE_Processing_Indicator { + top: 52px; + right: 12px; +} + +/* + * Namespace: DTED - DataTables Editor Display - Envelope + */ +div.DTED_Envelope_Wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 50%; + height: 100%; + z-index: 11; + display: none; + overflow: hidden; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { + position: absolute; + top: -10px; + left: 10px; + right: 10px; + height: 10px; + z-index: 10; + box-shadow: 0 0 20px black; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { + position: absolute; + top: 0; + left: 5%; + width: 90%; + border-left: 1px solid #777; + border-right: 1px solid #777; + border-bottom: 1px solid #777; + box-shadow: 3px 3px 10px #555; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + background-color: white; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { + right: 36px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { + color: black; +} + +div.DTED_Envelope_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTED_Envelope_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTED_Envelope_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + top: 10px; + background: transparent; + text-shadow: none; + box-shadow: none; + border: none; + font-size: 21px; + color: black; + opacity: 0.2; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { + opacity: 1; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.min.css new file mode 100644 index 00000000..73e1f121 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap.min.css @@ -0,0 +1 @@ +div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.css new file mode 100644 index 00000000..a6a37bba --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.css @@ -0,0 +1,779 @@ +div.DTE div.DTE_Form_Error { + color: #b11f1f; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE div.DTE_Form_Buttons button { + margin-left: 0.5em; +} + +div.modal div.DTE div.DTE_Form_Error { + display: none; + float: left; + padding-top: 7px; +} + +div.DTE_Field { + position: relative; +} +div.DTE_Field div.multi-value, +div.DTE_Field div.multi-restore { + display: none; + cursor: pointer; +} +div.DTE_Field div.multi-value span, +div.DTE_Field div.multi-restore span { + display: block; + color: #666; +} +div.DTE_Field div.multi-value:hover, +div.DTE_Field div.multi-restore:hover { + background-color: #f1f1f1; +} +div.DTE_Field div.multi-restore { + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; +} +div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} +div.DTE_Field div:not([data-dte-e=msg-error]) { + color: inherit; +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE_Inline div.DTE_Field { + width: 100%; +} +div.DTE_Inline div.DTE_Field > div { + width: 100%; + padding: 0; +} +div.DTE_Inline div.DTE_Field input.form-control { + height: 30px; +} +div.DTE_Inline div.DTE_Field div.help-block { + display: none; + margin-top: 10px; + margin-bottom: 0; +} +div.DTE_Inline.DTE_Processing:after { + top: 5px; +} + +div.DTE_Field_Type_checkbox div.controls, +div.DTE_Field_Type_radio div.controls { + margin-top: 0.4em; +} +div.DTE_Field_Type_checkbox div.controls label, +div.DTE_Field_Type_radio div.controls label { + margin-left: 0.75em; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Bubble div.DTE_Bubble_Liner { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + border-radius: 6px; + padding: 1em; + border: 1px solid rgba(0, 0, 0, 0.2); +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + width: 100%; + max-width: 100%; + float: none; + clear: both; + text-align: left; + flex: none; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { + padding: 0 0 4px 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + font-size: 14px; + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + margin-top: -2px; + display: block; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.05); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + height: auto; +} +div.DTE div.editor_upload ul li button { + padding-bottom: 8px; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + font-weight: normal; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { + text-align: center; +} + +@media (min-width: 1200px) { + div.DTE_Field_Type_datatable label.control-label { + text-align: left; + } +} +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +table.dataTable tbody tr.highlight { + background-color: #3399ff !important; +} +table.dataTable tbody tr.highlight, +table.dataTable tbody tr.noHighlight, +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} + +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 20px; +} + +div.DTE div.DTE_Processing_Indicator { + top: 52px; + right: 12px; +} + +/* + * Namespace: DTED - DataTables Editor Display - Envelope + */ +div.DTED_Envelope_Wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 50%; + height: 100%; + z-index: 11; + display: none; + overflow: hidden; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { + position: absolute; + top: -10px; + left: 10px; + right: 10px; + height: 10px; + z-index: 10; + box-shadow: 0 0 20px black; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { + position: absolute; + top: 0; + left: 5%; + width: 90%; + border-left: 1px solid #777; + border-right: 1px solid #777; + border-bottom: 1px solid #777; + box-shadow: 3px 3px 10px #555; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + background-color: white; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { + right: 36px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { + color: black; +} + +div.DTED_Envelope_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTED_Envelope_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTED_Envelope_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + top: 10px; + background: transparent; + text-shadow: none; + box-shadow: none; + border: none; + font-size: 21px; + color: black; + opacity: 0.2; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { + opacity: 1; +} + +div.multi-value, +div.multi-restore { + padding: 0.5em; +} +div.multi-value span, +div.multi-restore span { + line-height: 1.2em; +} + +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + margin: 0 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + margin-top: 1em; +} + +div.DTE_Inline div.DTE_Field { + width: 100%; + margin: 0; +} +div.DTE_Inline div.DTE_Field > div { + max-width: 100%; + flex: none; +} +div.DTE_Inline div.DTE_Field input { + margin: -5px 0 -10px !important; +} + +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label, +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div { + max-width: 100%; + flex: 0 0 100%; +} + +div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, +div.DTE_Field_Type_radio div.DTE_Field_InputControl { + padding-top: 5px; +} +div.DTE_Field_Type_checkbox div label, +div.DTE_Field_Type_radio div label { + margin-bottom: 0.2em; + margin-left: 0.75em; + vertical-align: middle; +} + +div.DTE div.DTE_Processing_Indicator { + top: 20px; + right: 36px; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 0; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper > table { + border: 1px solid #ced4da; + border-radius: 3px; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper > table thead th, +div.DTE_Field_Type_datatable div.dataTables_wrapper > table tbody td { + border-top: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination { + justify-content: center; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.min.css new file mode 100644 index 00000000..a7f634b4 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap4.min.css @@ -0,0 +1 @@ +div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1}div.multi-value,div.multi-restore{padding:.5em}div.multi-value span,div.multi-restore span{line-height:1.2em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{margin:0 1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:1em}div.DTE_Inline div.DTE_Field{width:100%;margin:0}div.DTE_Inline div.DTE_Field>div{max-width:100%;flex:none}div.DTE_Inline div.DTE_Field input{margin:-5px 0 -10px !important}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div{max-width:100%;flex:0 0 100%}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:5px}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-bottom:.2em;margin-left:.75em;vertical-align:middle}div.DTE div.DTE_Processing_Indicator{top:20px;right:36px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:0}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper>table{border:1px solid #ced4da;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_wrapper>table thead th,div.DTE_Field_Type_datatable div.dataTables_wrapper>table tbody td{border-top:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.css new file mode 100644 index 00000000..3183ec1a --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.css @@ -0,0 +1,782 @@ +div.DTE div.DTE_Form_Error { + color: #b11f1f; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE div.DTE_Form_Buttons button { + margin-left: 0.5em; +} + +div.modal div.DTE div.DTE_Form_Error { + display: none; + float: left; + padding-top: 7px; +} + +div.DTE_Field { + position: relative; +} +div.DTE_Field div.multi-value, +div.DTE_Field div.multi-restore { + display: none; + cursor: pointer; +} +div.DTE_Field div.multi-value span, +div.DTE_Field div.multi-restore span { + display: block; + color: #666; +} +div.DTE_Field div.multi-value:hover, +div.DTE_Field div.multi-restore:hover { + background-color: #f1f1f1; +} +div.DTE_Field div.multi-restore { + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; +} +div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} +div.DTE_Field div:not([data-dte-e=msg-error]) { + color: inherit; +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE_Inline div.DTE_Field { + width: 100%; +} +div.DTE_Inline div.DTE_Field > div { + width: 100%; + padding: 0; +} +div.DTE_Inline div.DTE_Field input.form-control { + height: 30px; +} +div.DTE_Inline div.DTE_Field div.help-block { + display: none; + margin-top: 10px; + margin-bottom: 0; +} +div.DTE_Inline.DTE_Processing:after { + top: 5px; +} + +div.DTE_Field_Type_checkbox div.controls, +div.DTE_Field_Type_radio div.controls { + margin-top: 0.4em; +} +div.DTE_Field_Type_checkbox div.controls label, +div.DTE_Field_Type_radio div.controls label { + margin-left: 0.75em; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Bubble div.DTE_Bubble_Liner { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + border-radius: 6px; + padding: 1em; + border: 1px solid rgba(0, 0, 0, 0.2); +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + width: 100%; + max-width: 100%; + float: none; + clear: both; + text-align: left; + flex: none; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { + padding: 0 0 4px 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + font-size: 14px; + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + margin-top: -2px; + display: block; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.05); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + height: auto; +} +div.DTE div.editor_upload ul li button { + padding-bottom: 8px; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + font-weight: normal; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { + text-align: center; +} + +@media (min-width: 1200px) { + div.DTE_Field_Type_datatable label.control-label { + text-align: left; + } +} +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +table.dataTable tbody tr.highlight { + background-color: #3399ff !important; +} +table.dataTable tbody tr.highlight, +table.dataTable tbody tr.noHighlight, +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} + +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 20px; +} + +div.DTE div.DTE_Processing_Indicator { + top: 52px; + right: 12px; +} + +/* + * Namespace: DTED - DataTables Editor Display - Envelope + */ +div.DTED_Envelope_Wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 50%; + height: 100%; + z-index: 11; + display: none; + overflow: hidden; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { + position: absolute; + top: -10px; + left: 10px; + right: 10px; + height: 10px; + z-index: 10; + box-shadow: 0 0 20px black; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { + position: absolute; + top: 0; + left: 5%; + width: 90%; + border-left: 1px solid #777; + border-right: 1px solid #777; + border-bottom: 1px solid #777; + box-shadow: 3px 3px 10px #555; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + background-color: white; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { + right: 36px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { + color: black; +} + +div.DTED_Envelope_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTED_Envelope_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTED_Envelope_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + top: 10px; + background: transparent; + text-shadow: none; + box-shadow: none; + border: none; + font-size: 21px; + color: black; + opacity: 0.2; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover { + opacity: 1; +} + +div.multi-value, +div.multi-restore { + padding: 0.5em; +} +div.multi-value span, +div.multi-restore span { + line-height: 1.2em; +} + +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + margin: 0 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + margin-top: 1em; +} + +div.DTE_Inline div.DTE_Field { + width: 100%; + margin: 0; +} +div.DTE_Inline div.DTE_Field > div { + max-width: 100%; + flex: none; +} +div.DTE_Inline div.DTE_Field input { + font-size: 1em; + margin: -5px 0 -10px !important; +} + +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label, +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div { + max-width: 100%; + flex: 0 0 100%; +} + +div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, +div.DTE_Field_Type_radio div.DTE_Field_InputControl { + padding-top: 5px; +} +div.DTE_Field_Type_checkbox div label, +div.DTE_Field_Type_radio div label { + margin-left: 0.75em; + vertical-align: middle; +} + +div.DTE div.DTE_Processing_Indicator { + top: 20px; + right: 36px; +} + +div.DTE_Field_Type_datatable div.dataTables_filter { + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 0; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper > table { + border: 1px solid #ced4da; + border-radius: 3px; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper > table thead th, +div.DTE_Field_Type_datatable div.dataTables_wrapper > table tbody td { + border-top: none; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination { + justify-content: center; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.min.css new file mode 100644 index 00000000..37c4eed4 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bootstrap5.min.css @@ -0,0 +1 @@ +div.DTE div.DTE_Form_Error{color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.modal div.DTE div.DTE_Form_Error{display:none;float:left;padding-top:7px}div.DTE_Field{position:relative}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Field div:not([data-dte-e=msg-error]){color:inherit}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field{width:100%}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input.form-control{height:30px}div.DTE_Inline div.DTE_Field div.help-block{display:none;margin-top:10px;margin-bottom:0}div.DTE_Inline.DTE_Processing:after{top:5px}div.DTE_Field_Type_checkbox div.controls,div.DTE_Field_Type_radio div.controls{margin-top:.4em}div.DTE_Field_Type_checkbox div.controls label,div.DTE_Field_Type_radio div.controls label{margin-left:.75em;margin-bottom:0;vertical-align:middle;font-weight:normal}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;max-width:100%;float:none;clear:both;text-align:left;flex:none}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding:0 0 4px 0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;font-weight:normal}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{text-align:center}@media(min-width: 1200px){div.DTE_Field_Type_datatable label.control-label{text-align:left}}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight{background-color:#39f !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:20px}div.DTE div.DTE_Processing_Indicator{top:52px;right:12px}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{top:10px;background:transparent;text-shadow:none;box-shadow:none;border:none;font-size:21px;color:black;opacity:.2}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover{opacity:1}div.multi-value,div.multi-restore{padding:.5em}div.multi-value span,div.multi-restore span{line-height:1.2em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{margin:0 1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:1em}div.DTE_Inline div.DTE_Field{width:100%;margin:0}div.DTE_Inline div.DTE_Field>div{max-width:100%;flex:none}div.DTE_Inline div.DTE_Field input{font-size:1em;margin:-5px 0 -10px !important}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div{max-width:100%;flex:0 0 100%}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:5px}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-left:.75em;vertical-align:middle}div.DTE div.DTE_Processing_Indicator{top:20px;right:36px}div.DTE_Field_Type_datatable div.dataTables_filter{padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:0}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper>table{border:1px solid #ced4da;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_wrapper>table thead th,div.DTE_Field_Type_datatable div.dataTables_wrapper>table tbody td{border-top:none}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.css new file mode 100644 index 00000000..afa57bb8 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.css @@ -0,0 +1,466 @@ +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +div.modal-content { + padding: 20px; + background: white; + border-radius: 5px; +} +div.modal-content div.modal-header { + padding-bottom: 20px; +} +div.modal-content div.modal-footer { + padding-top: 6px; +} +div.modal-content div.field.is-grouped { + display: none; +} +div.modal-content div.dataTables_info { + font-weight: 1; + font-size: 0.8em; + padding-left: 2px; +} +div.modal-content div.dataTables_info span.select-item { + padding-left: 0.5em; +} + +div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; + padding-top: 10px; +} +div.DTE_Form_Buttons button { + margin-left: 0.5em; +} + +div.card { + border-color: #888; +} + +table.dataTable div.field { + margin-bottom: 0px; +} +table.dataTable div.field input.input { + padding: 0px; +} +table.dataTable div.field input.is-small { + font-size: 1em; + height: 2em; +} + +div.DTE_Field_Type_checkbox div label, +div.DTE_Field_Type_radio div label { + margin-left: 0.75em; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.min.css new file mode 100644 index 00000000..1be29df8 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.bulma.min.css @@ -0,0 +1 @@ +div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.modal-content{padding:20px;background:white;border-radius:5px}div.modal-content div.modal-header{padding-bottom:20px}div.modal-content div.modal-footer{padding-top:6px}div.modal-content div.field.is-grouped{display:none}div.modal-content div.dataTables_info{font-weight:1;font-size:.8em;padding-left:2px}div.modal-content div.dataTables_info span.select-item{padding-left:.5em}div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse;padding-top:10px}div.DTE_Form_Buttons button{margin-left:.5em}div.card{border-color:#888}table.dataTable div.field{margin-bottom:0px}table.dataTable div.field input.input{padding:0px}table.dataTable div.field input.is-small{font-size:1em;height:2em}div.DTE_Field_Type_checkbox div label,div.DTE_Field_Type_radio div label{margin-left:.75em} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.css new file mode 100644 index 00000000..d497dbd2 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.css @@ -0,0 +1,1279 @@ +div.DTE { + position: relative; +} +div.DTE div.DTE_Header { + position: absolute; + top: 0; + left: 0; + height: 52px; + width: 100%; + background-color: #e8e9eb; + border-bottom: 1px solid rgba(0, 0, 0, 0.15); + padding: 16px 10px 2px 16px; + font-size: 1.3em; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE div.DTE_Body { + position: relative; +} +div.DTE div.DTE_Footer { + position: absolute; + bottom: 0; + left: 0; + height: 52px; + width: 100%; + background-color: #e8e9eb; + border-top: 1px solid rgba(0, 0, 0, 0.15); + padding: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE div.DTE_Form_Info { + margin-bottom: 0.5em; + display: none; +} +div.DTE div.DTE_Form_Content { + position: relative; + padding: 1em; +} +div.DTE div.DTE_Form_Error { + float: left; + padding: 5px; + display: none; + color: #b11f1f; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE button.btn, +div.DTE div.DTE_Form_Buttons button { + position: relative; + text-align: center; + display: block; + margin-top: 0; + padding: 0.5em 1em; + cursor: pointer; + margin-left: 0.75em; + color: inherit; + font-size: 14px; + white-space: nowrap; + border: 1px solid #999; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 1px 1px 3px #ccc; + -moz-box-shadow: 1px 1px 3px #ccc; + box-shadow: 1px 1px 3px #ccc; + background-color: #dcdcdc; /* Fallback */ + background-image: -webkit-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* FF3.6 */ + background-image: -ms-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* IE10 */ + background-image: -o-linear-gradient(top, #ffffff 0%, #dcdcdc 100%); /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, #ffffff 0%, #dcdcdc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#ffffff", EndColorStr="#dcdcdc"); +} +div.DTE button.btn:hover, +div.DTE div.DTE_Form_Buttons button:hover { + border: 1px solid #666; + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; + background-color: #cccccc; /* Fallback */ + background-image: -webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* FF3.6 */ + background-image: -ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* IE10 */ + background-image: -o-linear-gradient(top, #eaeaea 0%, #cccccc 100%); /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, #eaeaea 0%, #cccccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#eaeaea", EndColorStr="#cccccc"); +} +div.DTE button.btn:active, +div.DTE div.DTE_Form_Buttons button:active { + -webkit-box-shadow: inset 1px 1px 3px #999; + -moz-box-shadow: inset 1px 1px 3px #999; + box-shadow: inset 1px 1px 3px #999; +} +div.DTE button.btn:focus, +div.DTE div.DTE_Form_Buttons button:focus { + border: 1px solid #426c9e; + text-shadow: 0 1px 0 #c4def1; + background-color: #79ace9; /* Fallback */ + background-image: -webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* FF3.6 */ + background-image: -ms-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* IE10 */ + background-image: -o-linear-gradient(top, #bddef4 0%, #79ace9 100%); /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, #bddef4 0%, #79ace9 100%); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#bddef4", EndColorStr="#79ace9"); + outline: none; +} +div.DTE button.btn:focus:after, +div.DTE div.DTE_Form_Buttons button:focus:after { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: white; + display: block; + content: " "; + -webkit-animation-duration: 1s; + -webkit-animation-name: buttonPulse; + -webkit-animation-fill-mode: forwards; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; + -webkit-animation-direction: alternate; + -moz-animation-duration: 1s; + -moz-animation-name: buttonPulse; + -moz-animation-fill-mode: forwards; + -moz-animation-iteration-count: infinite; + -moz-animation-timing-function: linear; + -moz-animation-direction: alternate; + -o-animation-duration: 1s; + -o-animation-name: buttonPulse; + -o-animation-fill-mode: forwards; + -o-animation-iteration-count: infinite; + -o-animation-timing-function: linear; + -o-animation-direction: alternate; + animation-duration: 1s; + animation-name: buttonPulse; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-timing-function: linear; + animation-direction: alternate; +} +div.DTE.DTE_Action_Remove div.DTE_Body_Content { + text-align: center; + padding: 20px 0; +} + +@-webkit-keyframes buttonPulse { + 0% { + opacity: 0; + } + 100% { + opacity: 0.2; + } +} +@-moz-keyframes buttonPulse { + 0% { + opacity: 0; + } + 100% { + opacity: 0.2; + } +} +@-o-keyframes buttonPulse { + 0% { + opacity: 0; + } + 100% { + opacity: 0.2; + } +} +@keyframes buttonPulse { + 0% { + opacity: 0; + } + 100% { + opacity: 0.2; + } +} +div.DTTT_container { + float: left; +} + +div.DTE_Field input, +div.DTE_Field textarea { + box-sizing: border-box; + background-color: white; + -webkit-transition: background-color ease-in-out 0.15s; + transition: background-color ease-in-out 0.15s; +} +div.DTE_Field input:focus, +div.DTE_Field textarea:focus { + background-color: #ffffee; +} +div.DTE_Field input[type=color], +div.DTE_Field input[type=date], +div.DTE_Field input[type=datetime], +div.DTE_Field input[type=datetime-local], +div.DTE_Field input[type=email], +div.DTE_Field input[type=month], +div.DTE_Field input[type=number], +div.DTE_Field input[type=password], +div.DTE_Field input[type=search], +div.DTE_Field input[type=tel], +div.DTE_Field input[type=text], +div.DTE_Field input[type=time], +div.DTE_Field input[type=url], +div.DTE_Field input[type=week] { + padding: 5px 4px; + width: 100%; + border: 1px solid #aaa; + border-radius: 3px; +} +div.DTE_Field input[type=checkbox], +div.DTE_Field input[type=radio] { + vertical-align: middle; +} +div.DTE_Field select { + padding: 5px 4px; + border-radius: 3px; + border: 1px solid #aaa; + background: white; + max-width: 100%; +} +div.DTE_Field label div.DTE_Label_Info { + font-size: 0.85em; + margin-top: 0.25em; +} +div.DTE_Field label div.DTE_Label_Info:empty { + margin-top: 0; +} +div.DTE_Field div.DTE_Field_Info, +div.DTE_Field div.DTE_Field_Message, +div.DTE_Field div.DTE_Field_Error { + font-size: 11px; + line-height: 1em; + margin-top: 5px; +} +div.DTE_Field div.DTE_Field_Info:empty, +div.DTE_Field div.DTE_Field_Message:empty, +div.DTE_Field div.DTE_Field_Error:empty { + margin-top: 0; +} +div.DTE_Field div.DTE_Field_Error { + display: none; + color: #b11f1f; +} +div.DTE_Field div.multi-value { + display: none; + border: 1px dotted #666; + border-radius: 3px; + padding: 5px; + background-color: #fafafa; + cursor: pointer; +} +div.DTE_Field div.multi-value span { + font-size: 0.8em; + line-height: 1.25em; + display: block; + color: #666; +} +div.DTE_Field div.multi-value.multi-noEdit { + border: 1px solid #ccc; + cursor: auto; + background-color: #fcfcfc; +} +div.DTE_Field div.multi-value.multi-noEdit:hover { + background-color: #fcfcfc; +} +div.DTE_Field div.multi-value:hover { + background-color: #f1f1f1; +} +div.DTE_Field.disabled { + color: grey; +} +div.DTE_Field.disabled div.multi-value { + cursor: default; + border: 1px dotted #aaa; + background-color: transparent; +} +div.DTE_Field div.multi-restore { + display: none; + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; + color: #3879d9; +} +div.DTE_Field div.multi-restore:hover { + text-decoration: underline; + cursor: pointer; +} + +div.DTE_Field_Type_textarea textarea { + padding: 3px; + width: 100%; + height: 80px; + border: 1px solid #aaa; +} + +div.DTE_Field.DTE_Field_Type_date img { + vertical-align: middle; + cursor: pointer; +} + +div.DTE_Field_Type_checkbox div.DTE_Field_Input, +div.DTE_Field_Type_radio div.DTE_Field_Input { + padding-top: 1px; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div { + margin-bottom: 0.25em; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div:last-child, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div:last-child { + margin-bottom: 0; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div label, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div label { + margin-left: 0.75em; + vertical-align: middle; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dataTables_filter { + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dataTables_filter input { + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dt-buttons button { + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + padding-bottom: 0; +} +div.DTE_Field_Type_datatable div.dataTables_paginate { + float: none; + text-align: center; + font-size: 0.8em; +} +div.DTE_Field_Type_datatable table.dataTable.no-footer { + border-bottom: 1px solid #aaa !important; +} +div.DTE_Field_Type_datatable table.dataTable thead th, div.DTE_Field_Type_datatable table.dataTable thead td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-bottom: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tbody th:first-child, +div.DTE_Field_Type_datatable table.dataTable tbody td:first-child { + border-left: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tbody th:last-child, +div.DTE_Field_Type_datatable table.dataTable tbody td:last-child { + border-right: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tfoot th, div.DTE_Field_Type_datatable table.dataTable tfoot td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-top: 1px solid #aaa; +} +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable, +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th, +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td { + border-bottom: none !important; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody { + border: 1px solid #aaa !important; + border-radius: 3px; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable { + border-bottom: none !important; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child, +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child { + border-left: none; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child, +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child { + border-right: none; +} + +div.DTE_Body { + padding: 52px 0; +} +div.DTE_Body div.DTE_Body_Content { + position: relative; + overflow: auto; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info { + padding: 1em 1em 0 1em; + margin: 0; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field { + position: relative; + clear: both; + padding: 5px 10%; + border: 1px solid transparent; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover { + background-color: #f9f9f9; + border: 1px solid #f3f3f3; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: left; + width: 33%; + padding-top: 3px; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: right; + width: 66%; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0 5px 10%; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + float: none; + clear: both; + width: 100%; +} + +html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: right; +} +html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: left; +} +html[dir=rtl] div.DTE div.DTE_Form_Buttons button { + float: left; +} + +@media only screen and (max-width: 768px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + padding: 5px 10%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0 5px 10%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { + width: 35.5%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { + width: 64.5%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +@media only screen and (max-width: 640px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { + width: 40%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { + width: 60%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +@media only screen and (max-width: 580px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + position: relative; + clear: both; + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: none; + width: auto; + padding-top: 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: none; + width: auto; + margin-top: 4px; + margin-bottom: 6px; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block { + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label, + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > label, + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 50%; + margin-left: -390px; + width: 780px; + height: 100%; + z-index: 11; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container { + display: table; + height: 100%; + width: 100%; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper { + display: table-cell; + vertical-align: middle; + width: 100%; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content { + position: relative; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE { + background: white; + border-radius: 6px; + border: 1px solid #666; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header { + right: 0; + width: auto; + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content { + box-sizing: border-box; + background: #fcfcfc; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer { + right: 0; + width: auto; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:hover:after { + color: black; +} + +div.DTED_Lightbox_Wrapper div.DTE_Footer { + display: flex; + justify-content: flex-end; +} +div.DTED_Lightbox_Wrapper div.DTE_Footer_Content { + display: none; +} +div.DTED_Lightbox_Wrapper div.DTE.inFormError div.DTE_Footer { + justify-content: space-between; +} + +div.DTED_Lightbox_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTED_Lightbox_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTED_Lightbox_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Background { + height: 0; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Shown { + display: none; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: auto; + height: auto; + margin-left: 0; + -webkit-overflow-scrolling: touch; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container { + display: block; + height: 100%; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper { + display: block; + height: 100%; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content { + border-radius: 0; + box-shadow: none; + height: 100% !important; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE { + border-radius: 0; + height: 100%; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content { + padding-bottom: 52px; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close { + top: 11px; + right: 15px; + background-color: transparent; + border: none; + box-shadow: none; +} + +@media only screen and (max-width: 780px) { + body div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 0; + width: 90%; + margin-left: 5%; + } +} +@media only screen and (max-width: 580px) { + body div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + margin-left: 0; + } +} +/* + * Namespace: DTED - DataTables Editor Display - Envelope + */ +div.DTED_Envelope_Wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 50%; + height: 100%; + z-index: 11; + display: none; + overflow: hidden; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow { + position: absolute; + top: -10px; + left: 10px; + right: 10px; + height: 10px; + z-index: 10; + box-shadow: 0 0 20px black; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container { + position: absolute; + top: 0; + left: 5%; + width: 90%; + border-left: 1px solid #777; + border-right: 1px solid #777; + border-bottom: 1px solid #777; + box-shadow: 3px 3px 10px #555; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + background-color: white; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator { + right: 36px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after { + color: black; +} + +div.DTED_Envelope_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTED_Envelope_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTED_Envelope_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +table.dataTable tbody tr.highlight { + background-color: #FFFBCC !important; +} +table.dataTable tbody tr.highlight, +table.dataTable tbody tr.noHighlight, +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} +table.dataTable.stripe tbody tr.odd.highlight, table.dataTable.display tbody tr.odd.highlight { + background-color: #f9f5c7; +} +table.dataTable.hover tbody tr:hover.highlight, +table.dataTable.hover tbody tr.odd:hover.highlight, +table.dataTable.hover tbody tr.even:hover.highlight, table.dataTable.display tbody tr:hover.highlight, +table.dataTable.display tbody tr.odd:hover.highlight, +table.dataTable.display tbody tr.even:hover.highlight { + background-color: #f6f2c5; +} +table.dataTable.order-column tbody tr.highlight > .sorting_1, +table.dataTable.order-column tbody tr.highlight > .sorting_2, +table.dataTable.order-column tbody tr.highlight > .sorting_3, table.dataTable.display tbody tr.highlight > .sorting_1, +table.dataTable.display tbody tr.highlight > .sorting_2, +table.dataTable.display tbody tr.highlight > .sorting_3 { + background-color: #faf6c8; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_1 { + background-color: #f1edc1; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_2 { + background-color: #f3efc2; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_3 { + background-color: #f5f1c4; +} +table.dataTable.display tbody tr.even.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_1 { + background-color: #faf6c8; +} +table.dataTable.display tbody tr.even.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_2 { + background-color: #fcf8ca; +} +table.dataTable.display tbody tr.even.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_3 { + background-color: #fefacb; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_1, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_1, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_1, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_1, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_1 { + background-color: #eae6bb; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_2, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_2, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_2, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_2, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_2 { + background-color: #ece8bd; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_3, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_3, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_3, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_3, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_3 { + background-color: #efebbf; +} +table.dataTable tr.dte-inlineAdd td, +table.dataTable tr.dte-inlineAdd th { + vertical-align: top; +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.min.css new file mode 100644 index 00000000..0d538bff --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.dataTables.min.css @@ -0,0 +1 @@ +div.DTE{position:relative}div.DTE div.DTE_Header{position:absolute;top:0;left:0;height:52px;width:100%;background-color:#e8e9eb;border-bottom:1px solid rgba(0, 0, 0, 0.15);padding:16px 10px 2px 16px;font-size:1.3em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE div.DTE_Body{position:relative}div.DTE div.DTE_Footer{position:absolute;bottom:0;left:0;height:52px;width:100%;background-color:#e8e9eb;border-top:1px solid rgba(0, 0, 0, 0.15);padding:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE div.DTE_Form_Info{margin-bottom:.5em;display:none}div.DTE div.DTE_Form_Content{position:relative;padding:1em}div.DTE div.DTE_Form_Error{float:left;padding:5px;display:none;color:#b11f1f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE button.btn,div.DTE div.DTE_Form_Buttons button{position:relative;text-align:center;display:block;margin-top:0;padding:.5em 1em;cursor:pointer;margin-left:.75em;color:inherit;font-size:14px;white-space:nowrap;border:1px solid #999;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background-color:#dcdcdc;background-image:-webkit-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-moz-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-ms-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:-o-linear-gradient(top, #ffffff 0%, #dcdcdc 100%);background-image:linear-gradient(to bottom, #ffffff 0%, #dcdcdc 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#ffffff", EndColorStr="#dcdcdc")}div.DTE button.btn:hover,div.DTE div.DTE_Form_Buttons button:hover{border:1px solid #666;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background-color:#ccc;background-image:-webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:-o-linear-gradient(top, #eaeaea 0%, #cccccc 100%);background-image:linear-gradient(to bottom, #eaeaea 0%, #cccccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#eaeaea", EndColorStr="#cccccc")}div.DTE button.btn:active,div.DTE div.DTE_Form_Buttons button:active{-webkit-box-shadow:inset 1px 1px 3px #999;-moz-box-shadow:inset 1px 1px 3px #999;box-shadow:inset 1px 1px 3px #999}div.DTE button.btn:focus,div.DTE div.DTE_Form_Buttons button:focus{border:1px solid #426c9e;text-shadow:0 1px 0 #c4def1;background-color:#79ace9;background-image:-webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:-o-linear-gradient(top, #bddef4 0%, #79ace9 100%);background-image:linear-gradient(to bottom, #bddef4 0%, #79ace9 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="#bddef4", EndColorStr="#79ace9");outline:none}div.DTE button.btn:focus:after,div.DTE div.DTE_Form_Buttons button:focus:after{position:absolute;top:0;left:0;right:0;bottom:0;background:white;display:block;content:" ";-webkit-animation-duration:1s;-webkit-animation-name:buttonPulse;-webkit-animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-webkit-animation-direction:alternate;-moz-animation-duration:1s;-moz-animation-name:buttonPulse;-moz-animation-fill-mode:forwards;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear;-moz-animation-direction:alternate;-o-animation-duration:1s;-o-animation-name:buttonPulse;-o-animation-fill-mode:forwards;-o-animation-iteration-count:infinite;-o-animation-timing-function:linear;-o-animation-direction:alternate;animation-duration:1s;animation-name:buttonPulse;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-timing-function:linear;animation-direction:alternate}div.DTE.DTE_Action_Remove div.DTE_Body_Content{text-align:center;padding:20px 0}@-webkit-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@-moz-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@-o-keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}@keyframes buttonPulse{0%{opacity:0}100%{opacity:.2}}div.DTTT_container{float:left}div.DTE_Field input,div.DTE_Field textarea{box-sizing:border-box;background-color:white;-webkit-transition:background-color ease-in-out .15s;transition:background-color ease-in-out .15s}div.DTE_Field input:focus,div.DTE_Field textarea:focus{background-color:#ffe}div.DTE_Field input[type=color],div.DTE_Field input[type=date],div.DTE_Field input[type=datetime],div.DTE_Field input[type=datetime-local],div.DTE_Field input[type=email],div.DTE_Field input[type=month],div.DTE_Field input[type=number],div.DTE_Field input[type=password],div.DTE_Field input[type=search],div.DTE_Field input[type=tel],div.DTE_Field input[type=text],div.DTE_Field input[type=time],div.DTE_Field input[type=url],div.DTE_Field input[type=week]{padding:5px 4px;width:100%;border:1px solid #aaa;border-radius:3px}div.DTE_Field input[type=checkbox],div.DTE_Field input[type=radio]{vertical-align:middle}div.DTE_Field select{padding:5px 4px;border-radius:3px;border:1px solid #aaa;background:white;max-width:100%}div.DTE_Field label div.DTE_Label_Info{font-size:.85em;margin-top:.25em}div.DTE_Field label div.DTE_Label_Info:empty{margin-top:0}div.DTE_Field div.DTE_Field_Info,div.DTE_Field div.DTE_Field_Message,div.DTE_Field div.DTE_Field_Error{font-size:11px;line-height:1em;margin-top:5px}div.DTE_Field div.DTE_Field_Info:empty,div.DTE_Field div.DTE_Field_Message:empty,div.DTE_Field div.DTE_Field_Error:empty{margin-top:0}div.DTE_Field div.DTE_Field_Error{display:none;color:#b11f1f}div.DTE_Field div.multi-value{display:none;border:1px dotted #666;border-radius:3px;padding:5px;background-color:#fafafa;cursor:pointer}div.DTE_Field div.multi-value span{font-size:.8em;line-height:1.25em;display:block;color:#666}div.DTE_Field div.multi-value.multi-noEdit{border:1px solid #ccc;cursor:auto;background-color:#fcfcfc}div.DTE_Field div.multi-value.multi-noEdit:hover{background-color:#fcfcfc}div.DTE_Field div.multi-value:hover{background-color:#f1f1f1}div.DTE_Field.disabled{color:grey}div.DTE_Field.disabled div.multi-value{cursor:default;border:1px dotted #aaa;background-color:transparent}div.DTE_Field div.multi-restore{display:none;margin-top:.5em;font-size:.8em;line-height:1.25em;color:#3879d9}div.DTE_Field div.multi-restore:hover{text-decoration:underline;cursor:pointer}div.DTE_Field_Type_textarea textarea{padding:3px;width:100%;height:80px;border:1px solid #aaa}div.DTE_Field.DTE_Field_Type_date img{vertical-align:middle;cursor:pointer}div.DTE_Field_Type_checkbox div.DTE_Field_Input,div.DTE_Field_Type_radio div.DTE_Field_Input{padding-top:1px}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div{margin-bottom:.25em}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div:last-child,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div:last-child{margin-bottom:0}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div label,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div label{margin-left:.75em;vertical-align:middle}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_filter{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100%}div.DTE_Field_Type_datatable div.dt-buttons{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons button{width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{padding-bottom:0}div.DTE_Field_Type_datatable div.dataTables_paginate{float:none;text-align:center;font-size:.8em}div.DTE_Field_Type_datatable table.dataTable.no-footer{border-bottom:1px solid #aaa !important}div.DTE_Field_Type_datatable table.dataTable thead th,div.DTE_Field_Type_datatable table.dataTable thead td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-bottom:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable table.dataTable tbody td:first-child{border-left:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable table.dataTable tbody td:last-child{border-right:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tfoot th,div.DTE_Field_Type_datatable table.dataTable tfoot td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-top:1px solid #aaa}div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody{border:1px solid #aaa !important;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child{border-left:none}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child{border-right:none}div.DTE_Body{padding:52px 0}div.DTE_Body div.DTE_Body_Content{position:relative;overflow:auto}div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info{padding:1em 1em 0 1em;margin:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 10%;border:1px solid transparent}div.DTE_Body div.DTE_Body_Content div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover{background-color:#f9f9f9;border:1px solid #f3f3f3}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:left;width:33%;padding-top:3px}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:right;width:66%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{float:none;clear:both;width:100%}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:right}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:left}html[dir=rtl] div.DTE div.DTE_Form_Buttons button{float:left}@media only screen and (max-width: 768px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:35.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:64.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 640px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:40%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:60%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 580px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:none;width:auto;padding-top:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:none;width:auto;margin-top:4px;margin-bottom:6px}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:50%;margin-left:-390px;width:780px;height:100%;z-index:11}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container{display:table;height:100%;width:100%}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper{display:table-cell;vertical-align:middle;width:100%}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content{position:relative;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE{background:white;border-radius:6px;border:1px solid #666;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header{right:0;width:auto;border-top-left-radius:6px;border-top-right-radius:6px}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content{box-sizing:border-box;background:#fcfcfc}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer{right:0;width:auto;border-bottom-left-radius:6px;border-bottom-right-radius:6px}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close:hover:after{color:black}div.DTED_Lightbox_Wrapper div.DTE_Footer{display:flex;justify-content:flex-end}div.DTED_Lightbox_Wrapper div.DTE_Footer_Content{display:none}div.DTED_Lightbox_Wrapper div.DTE.inFormError div.DTE_Footer{justify-content:space-between}div.DTED_Lightbox_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Lightbox_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Lightbox_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Background{height:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Shown{display:none}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper{position:fixed;top:0px;left:0px;right:0px;bottom:0px;width:auto;height:auto;margin-left:0;-webkit-overflow-scrolling:touch}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container{display:block;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper{display:block;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content{border-radius:0;box-shadow:none;height:100% !important}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE{border-radius:0;height:100%}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Header{border-top-left-radius:0;border-top-right-radius:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Body_Content{padding-bottom:52px}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTE div.DTE_Footer{border-bottom-left-radius:0;border-bottom-right-radius:0}body.DTED_Lightbox_Mobile div.DTED_Lightbox_Wrapper div.DTED_Lightbox_Container div.DTED_Lightbox_Content_Wrapper div.DTED_Lightbox_Content div.DTED_Lightbox_Close{top:11px;right:15px;background-color:transparent;border:none;box-shadow:none}@media only screen and (max-width: 780px){body div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:0;width:90%;margin-left:5%}}@media only screen and (max-width: 580px){body div.DTED_Lightbox_Wrapper{position:fixed;top:0;left:0;width:100%;margin-left:0}}div.DTED_Envelope_Wrapper{position:absolute;top:0;bottom:0;left:50%;height:100%;z-index:11;display:none;overflow:hidden}div.DTED_Envelope_Wrapper div.DTED_Envelope_Shadow{position:absolute;top:-10px;left:10px;right:10px;height:10px;z-index:10;box-shadow:0 0 20px black}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container{position:absolute;top:0;left:5%;width:90%;border-left:1px solid #777;border-right:1px solid #777;border-bottom:1px solid #777;box-shadow:3px 3px 10px #555;border-bottom-left-radius:5px;border-bottom-right-radius:5px;background-color:white}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Processing_Indicator{right:36px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTE_Footer{border-bottom-left-radius:5px;border-bottom-right-radius:5px}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTED_Envelope_Wrapper div.DTED_Envelope_Container div.DTED_Envelope_Close:hover:after{color:black}div.DTED_Envelope_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTED_Envelope_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTED_Envelope_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}table.dataTable tbody tr.highlight{background-color:#fffbcc !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}table.dataTable.stripe tbody tr.odd.highlight,table.dataTable.display tbody tr.odd.highlight{background-color:#f9f5c7}table.dataTable.hover tbody tr:hover.highlight,table.dataTable.hover tbody tr.odd:hover.highlight,table.dataTable.hover tbody tr.even:hover.highlight,table.dataTable.display tbody tr:hover.highlight,table.dataTable.display tbody tr.odd:hover.highlight,table.dataTable.display tbody tr.even:hover.highlight{background-color:#f6f2c5}table.dataTable.order-column tbody tr.highlight>.sorting_1,table.dataTable.order-column tbody tr.highlight>.sorting_2,table.dataTable.order-column tbody tr.highlight>.sorting_3,table.dataTable.display tbody tr.highlight>.sorting_1,table.dataTable.display tbody tr.highlight>.sorting_2,table.dataTable.display tbody tr.highlight>.sorting_3{background-color:#faf6c8}table.dataTable.display tbody tr.odd.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_1{background-color:#f1edc1}table.dataTable.display tbody tr.odd.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_2{background-color:#f3efc2}table.dataTable.display tbody tr.odd.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_3{background-color:#f5f1c4}table.dataTable.display tbody tr.even.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_1{background-color:#faf6c8}table.dataTable.display tbody tr.even.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_2{background-color:#fcf8ca}table.dataTable.display tbody tr.even.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_3{background-color:#fefacb}table.dataTable.display tbody tr:hover.highlight>.sorting_1,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.display tbody tr.even:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_1{background-color:#eae6bb}table.dataTable.display tbody tr:hover.highlight>.sorting_2,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.display tbody tr.even:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_2{background-color:#ece8bd}table.dataTable.display tbody tr:hover.highlight>.sorting_3,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.display tbody tr.even:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_3{background-color:#efebbf}table.dataTable tr.dte-inlineAdd td,table.dataTable tr.dte-inlineAdd th{vertical-align:top}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.css new file mode 100644 index 00000000..75ddc350 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.css @@ -0,0 +1,590 @@ +div.DTE div.DTE_Form_Error { + display: none; + color: #b11f1f; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE div.DTE_Form_Buttons button { + margin-left: 0.5em; +} + +div.DTE_Field div.multi-value, +div.DTE_Field div.multi-restore { + display: none; + cursor: pointer; + padding: 0.75rem; +} +div.DTE_Field div.multi-value span, +div.DTE_Field div.multi-restore span { + display: block; + color: #666; + font-size: 0.8em; + line-height: 1.25em; +} +div.DTE_Field div.multi-value:hover, +div.DTE_Field div.multi-restore:hover { + background-color: #e5e5e5; +} +div.DTE_Field div.multi-restore { + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; + padding: 0.5rem 0.75rem; +} +div.DTE_Field div.label { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} +div.DTE_Field div.label:empty { + padding: 0; + margin: 0; +} +div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} + +div.reveal-modal button.close { + position: absolute; + top: -1.5em; + right: -2.5em; +} +div.reveal-modal button.close.close-button { + right: 1rem; + top: 0.5rem; + z-index: 100; +} +div.reveal-modal div.DTE_Header { + position: relative; + top: -0.5em; + font-size: 2.05556rem; + line-height: 1.4; +} +div.reveal-modal div.DTE_Form_Content { + width: 75%; + margin: 0 auto; +} +div.reveal-modal div.DTE_Footer { + position: relative; + bottom: -0.5em; + float: right; +} +div.reveal-modal div.DTE_Footer button { + margin-bottom: 0; +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE_Inline div.DTE_Field > div { + width: 100%; + padding: 0; +} +div.DTE_Inline div.DTE_Field input { + height: 30px; + margin-bottom: 0; +} +div.DTE_Inline div.DTE_Field div.label:empty { + display: none; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Bubble div.DTE_Bubble_Liner { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, 0.2); +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + width: 100%; + float: none; + clear: both; + text-align: left; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { + padding-bottom: 4px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + margin-top: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + font-size: 14px; + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + margin-top: -2px; + display: block; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + border-color: rgba(0, 0, 0, 0.2); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.05); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.editor_upload button.button, +div.DTE div.editor_upload input[type=file] { + width: 100%; + font-size: 0.8em; + margin-bottom: 0; +} +div.DTE div.editor_upload ul li button { + width: 63px; +} + +div.DTE_Field_Type_datatable div.dataTables_filter input { + height: 1.75rem; + margin-bottom: 0.333rem; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-bottom: 0.5em; + width: 100%; + padding-right: 1em; + margin-bottom: 0; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { + float: none; + text-align: center; +} + +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +div.DTE div.DTE_Processing_Indicator { + top: 26px; + right: 95px; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.min.css new file mode 100644 index 00000000..846045c1 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.foundation.min.css @@ -0,0 +1 @@ +div.DTE div.DTE_Form_Error{display:none;color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE div.DTE_Form_Buttons button{margin-left:.5em}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer;padding:.75rem}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666;font-size:.8em;line-height:1.25em}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#e5e5e5}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em;padding:.5rem .75rem}div.DTE_Field div.label{margin-top:.5rem;margin-bottom:.5rem}div.DTE_Field div.label:empty{padding:0;margin:0}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.reveal-modal button.close{position:absolute;top:-1.5em;right:-2.5em}div.reveal-modal button.close.close-button{right:1rem;top:.5rem;z-index:100}div.reveal-modal div.DTE_Header{position:relative;top:-0.5em;font-size:2.05556rem;line-height:1.4}div.reveal-modal div.DTE_Form_Content{width:75%;margin:0 auto}div.reveal-modal div.DTE_Footer{position:relative;bottom:-0.5em;float:right}div.reveal-modal div.DTE_Footer button{margin-bottom:0}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE_Inline div.DTE_Field>div{width:100%;padding:0}div.DTE_Inline div.DTE_Field input{height:30px;margin-bottom:0}div.DTE_Inline div.DTE_Field div.label:empty{display:none}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{width:100%;float:none;clear:both;text-align:left}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding-bottom:4px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{margin-top:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{background-color:#f7f7f7;border-bottom:1px solid #ebebeb;font-size:14px;width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{margin-top:-2px;display:block}div.DTE_Bubble div.DTE_Bubble_Triangle{border-color:rgba(0, 0, 0, 0.2)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10;background-color:rgba(0, 0, 0, 0.05)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.button,div.DTE div.editor_upload input[type=file]{width:100%;font-size:.8em;margin-bottom:0}div.DTE div.editor_upload ul li button{width:63px}div.DTE_Field_Type_datatable div.dataTables_filter input{height:1.75rem;margin-bottom:.333rem}div.DTE_Field_Type_datatable div.dt-buttons{padding-bottom:.5em;width:100%;padding-right:1em;margin-bottom:0}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{float:none;text-align:center}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.DTE div.DTE_Processing_Indicator{top:26px;right:95px} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.css new file mode 100644 index 00000000..9e123399 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.css @@ -0,0 +1,865 @@ +div.DTE_Field input, +div.DTE_Field textarea { + box-sizing: border-box; + background-color: white; + -webkit-transition: background-color ease-in-out 0.15s; + transition: background-color ease-in-out 0.15s; +} +div.DTE_Field input:focus, +div.DTE_Field textarea:focus { + background-color: #ffffee; +} +div.DTE_Field input[type=color], +div.DTE_Field input[type=date], +div.DTE_Field input[type=datetime], +div.DTE_Field input[type=datetime-local], +div.DTE_Field input[type=email], +div.DTE_Field input[type=month], +div.DTE_Field input[type=number], +div.DTE_Field input[type=password], +div.DTE_Field input[type=search], +div.DTE_Field input[type=tel], +div.DTE_Field input[type=text], +div.DTE_Field input[type=time], +div.DTE_Field input[type=url], +div.DTE_Field input[type=week] { + padding: 5px 4px; + width: 100%; + border: 1px solid #aaa; + border-radius: 3px; +} +div.DTE_Field input[type=checkbox], +div.DTE_Field input[type=radio] { + vertical-align: middle; +} +div.DTE_Field select { + padding: 5px 4px; + border-radius: 3px; + border: 1px solid #aaa; + background: white; + max-width: 100%; +} +div.DTE_Field label div.DTE_Label_Info { + font-size: 0.85em; + margin-top: 0.25em; +} +div.DTE_Field label div.DTE_Label_Info:empty { + margin-top: 0; +} +div.DTE_Field div.DTE_Field_Info, +div.DTE_Field div.DTE_Field_Message, +div.DTE_Field div.DTE_Field_Error { + font-size: 11px; + line-height: 1em; + margin-top: 5px; +} +div.DTE_Field div.DTE_Field_Info:empty, +div.DTE_Field div.DTE_Field_Message:empty, +div.DTE_Field div.DTE_Field_Error:empty { + margin-top: 0; +} +div.DTE_Field div.DTE_Field_Error { + display: none; + color: #b11f1f; +} +div.DTE_Field div.multi-value { + display: none; + border: 1px dotted #666; + border-radius: 3px; + padding: 5px; + background-color: #fafafa; + cursor: pointer; +} +div.DTE_Field div.multi-value span { + font-size: 0.8em; + line-height: 1.25em; + display: block; + color: #666; +} +div.DTE_Field div.multi-value.multi-noEdit { + border: 1px solid #ccc; + cursor: auto; + background-color: #fcfcfc; +} +div.DTE_Field div.multi-value.multi-noEdit:hover { + background-color: #fcfcfc; +} +div.DTE_Field div.multi-value:hover { + background-color: #f1f1f1; +} +div.DTE_Field.disabled { + color: grey; +} +div.DTE_Field.disabled div.multi-value { + cursor: default; + border: 1px dotted #aaa; + background-color: transparent; +} +div.DTE_Field div.multi-restore { + display: none; + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; + color: #3879d9; +} +div.DTE_Field div.multi-restore:hover { + text-decoration: underline; + cursor: pointer; +} + +div.DTE_Field_Type_textarea textarea { + padding: 3px; + width: 100%; + height: 80px; + border: 1px solid #aaa; +} + +div.DTE_Field.DTE_Field_Type_date img { + vertical-align: middle; + cursor: pointer; +} + +div.DTE_Field_Type_checkbox div.DTE_Field_Input, +div.DTE_Field_Type_radio div.DTE_Field_Input { + padding-top: 1px; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div { + margin-bottom: 0.25em; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div:last-child, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div:last-child { + margin-bottom: 0; +} +div.DTE_Field_Type_checkbox div.DTE_Field_Input > div > div label, +div.DTE_Field_Type_radio div.DTE_Field_Input > div > div label { + margin-left: 0.75em; + vertical-align: middle; +} + +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dataTables_filter { + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dataTables_filter input { + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons { + padding-right: 1em; + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dt-buttons button { + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + padding-bottom: 0; +} +div.DTE_Field_Type_datatable div.dataTables_paginate { + float: none; + text-align: center; + font-size: 0.8em; +} +div.DTE_Field_Type_datatable table.dataTable.no-footer { + border-bottom: 1px solid #aaa !important; +} +div.DTE_Field_Type_datatable table.dataTable thead th, div.DTE_Field_Type_datatable table.dataTable thead td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-bottom: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tbody th:first-child, +div.DTE_Field_Type_datatable table.dataTable tbody td:first-child { + border-left: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tbody th:last-child, +div.DTE_Field_Type_datatable table.dataTable tbody td:last-child { + border-right: 1px solid #aaa; +} +div.DTE_Field_Type_datatable table.dataTable tfoot th, div.DTE_Field_Type_datatable table.dataTable tfoot td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-top: 1px solid #aaa; +} +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable, +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th, +div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td { + border-bottom: none !important; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody { + border: 1px solid #aaa !important; + border-radius: 3px; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable { + border-bottom: none !important; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child, +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child { + border-left: none; +} +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child, +div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child { + border-right: none; +} + +div.DTE_Body { + padding: 52px 0; +} +div.DTE_Body div.DTE_Body_Content { + position: relative; + overflow: auto; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info { + padding: 1em 1em 0 1em; + margin: 0; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field { + position: relative; + clear: both; + padding: 5px 10%; + border: 1px solid transparent; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover { + background-color: #f9f9f9; + border: 1px solid #f3f3f3; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: left; + width: 33%; + padding-top: 3px; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: right; + width: 66%; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0 5px 10%; +} +div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + float: none; + clear: both; + width: 100%; +} + +html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: right; +} +html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: left; +} +html[dir=rtl] div.DTE div.DTE_Form_Buttons button { + float: left; +} + +@media only screen and (max-width: 768px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + padding: 5px 10%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0 5px 10%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { + width: 35.5%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { + width: 64.5%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +@media only screen and (max-width: 640px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full { + padding: 5px 0%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label { + width: 40%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input { + width: 60%; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +@media only screen and (max-width: 580px) { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + position: relative; + clear: both; + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field > label { + float: none; + width: auto; + padding-top: 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field > div.DTE_Field_Input { + float: none; + width: auto; + margin-top: 4px; + margin-bottom: 6px; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block { + padding: 5px 0; + } + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > label, + div.DTE_Body div.DTE_Body_Content div.DTE_Field.full > div.DTE_Field_Input, div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > label, + div.DTE_Body div.DTE_Body_Content div.DTE_Field.block > div.DTE_Field_Input { + width: 100%; + } +} +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +table.dataTable tbody tr.highlight { + background-color: #FFFBCC !important; +} +table.dataTable tbody tr.highlight, +table.dataTable tbody tr.noHighlight, +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} +table.dataTable.stripe tbody tr.odd.highlight, table.dataTable.display tbody tr.odd.highlight { + background-color: #f9f5c7; +} +table.dataTable.hover tbody tr:hover.highlight, +table.dataTable.hover tbody tr.odd:hover.highlight, +table.dataTable.hover tbody tr.even:hover.highlight, table.dataTable.display tbody tr:hover.highlight, +table.dataTable.display tbody tr.odd:hover.highlight, +table.dataTable.display tbody tr.even:hover.highlight { + background-color: #f6f2c5; +} +table.dataTable.order-column tbody tr.highlight > .sorting_1, +table.dataTable.order-column tbody tr.highlight > .sorting_2, +table.dataTable.order-column tbody tr.highlight > .sorting_3, table.dataTable.display tbody tr.highlight > .sorting_1, +table.dataTable.display tbody tr.highlight > .sorting_2, +table.dataTable.display tbody tr.highlight > .sorting_3 { + background-color: #faf6c8; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_1 { + background-color: #f1edc1; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_2 { + background-color: #f3efc2; +} +table.dataTable.display tbody tr.odd.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.highlight > .sorting_3 { + background-color: #f5f1c4; +} +table.dataTable.display tbody tr.even.highlight > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_1 { + background-color: #faf6c8; +} +table.dataTable.display tbody tr.even.highlight > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_2 { + background-color: #fcf8ca; +} +table.dataTable.display tbody tr.even.highlight > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.highlight > .sorting_3 { + background-color: #fefacb; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_1, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_1, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_1, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_1, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_1 { + background-color: #eae6bb; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_2, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_2, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_2, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_2, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_2 { + background-color: #ece8bd; +} +table.dataTable.display tbody tr:hover.highlight > .sorting_3, +table.dataTable.display tbody tr.odd:hover.highlight > .sorting_3, +table.dataTable.display tbody tr.even:hover.highlight > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.highlight > .sorting_3, +table.dataTable.order-column.hover tbody tr.odd:hover.highlight > .sorting_3, +table.dataTable.order-column.hover tbody tr.even:hover.highlight > .sorting_3 { + background-color: #efebbf; +} +table.dataTable tr.dte-inlineAdd td, +table.dataTable tr.dte-inlineAdd th { + vertical-align: top; +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +div.DTE { + font-size: 0.91em; +} +div.DTE div.DTE_Header { + display: none; +} +div.DTE div.DTE_Body { + padding: 0; +} +div.DTE div.DTE_Body div.DTE_Body_Content { + overflow: hidden; +} +div.DTE div.DTE_Body div.DTE_Body_Content div.DTE_Field { + padding: 5px 5%; +} +div.DTE div.DTE_Footer { + display: none; +} +div.DTE div.DTE_Form_Error { + padding-top: 1em; + color: red; + display: none; + color: #b11f1f; +} +div.DTE div.DTE_Processing_Indicator { + top: 12px; + right: 2px; + font-size: 0.8em; +} +div.DTE div.DTE_Form_Buttons { + text-align: right; + padding: 0; + display: flex; + flex-direction: row-reverse; +} + +div.DTE_Field_Type_datatable div.dataTables_filter { + padding-bottom: 0.5em; +} +div.DTE_Field_Type_datatable div.dt-buttons { + float: none; +} +div.DTE_Field_Type_datatable div.dt-buttons button { + margin-bottom: 3px; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.min.css new file mode 100644 index 00000000..bf12892a --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.jqueryui.min.css @@ -0,0 +1 @@ +div.DTE_Field input,div.DTE_Field textarea{box-sizing:border-box;background-color:white;-webkit-transition:background-color ease-in-out .15s;transition:background-color ease-in-out .15s}div.DTE_Field input:focus,div.DTE_Field textarea:focus{background-color:#ffe}div.DTE_Field input[type=color],div.DTE_Field input[type=date],div.DTE_Field input[type=datetime],div.DTE_Field input[type=datetime-local],div.DTE_Field input[type=email],div.DTE_Field input[type=month],div.DTE_Field input[type=number],div.DTE_Field input[type=password],div.DTE_Field input[type=search],div.DTE_Field input[type=tel],div.DTE_Field input[type=text],div.DTE_Field input[type=time],div.DTE_Field input[type=url],div.DTE_Field input[type=week]{padding:5px 4px;width:100%;border:1px solid #aaa;border-radius:3px}div.DTE_Field input[type=checkbox],div.DTE_Field input[type=radio]{vertical-align:middle}div.DTE_Field select{padding:5px 4px;border-radius:3px;border:1px solid #aaa;background:white;max-width:100%}div.DTE_Field label div.DTE_Label_Info{font-size:.85em;margin-top:.25em}div.DTE_Field label div.DTE_Label_Info:empty{margin-top:0}div.DTE_Field div.DTE_Field_Info,div.DTE_Field div.DTE_Field_Message,div.DTE_Field div.DTE_Field_Error{font-size:11px;line-height:1em;margin-top:5px}div.DTE_Field div.DTE_Field_Info:empty,div.DTE_Field div.DTE_Field_Message:empty,div.DTE_Field div.DTE_Field_Error:empty{margin-top:0}div.DTE_Field div.DTE_Field_Error{display:none;color:#b11f1f}div.DTE_Field div.multi-value{display:none;border:1px dotted #666;border-radius:3px;padding:5px;background-color:#fafafa;cursor:pointer}div.DTE_Field div.multi-value span{font-size:.8em;line-height:1.25em;display:block;color:#666}div.DTE_Field div.multi-value.multi-noEdit{border:1px solid #ccc;cursor:auto;background-color:#fcfcfc}div.DTE_Field div.multi-value.multi-noEdit:hover{background-color:#fcfcfc}div.DTE_Field div.multi-value:hover{background-color:#f1f1f1}div.DTE_Field.disabled{color:grey}div.DTE_Field.disabled div.multi-value{cursor:default;border:1px dotted #aaa;background-color:transparent}div.DTE_Field div.multi-restore{display:none;margin-top:.5em;font-size:.8em;line-height:1.25em;color:#3879d9}div.DTE_Field div.multi-restore:hover{text-decoration:underline;cursor:pointer}div.DTE_Field_Type_textarea textarea{padding:3px;width:100%;height:80px;border:1px solid #aaa}div.DTE_Field.DTE_Field_Type_date img{vertical-align:middle;cursor:pointer}div.DTE_Field_Type_checkbox div.DTE_Field_Input,div.DTE_Field_Type_radio div.DTE_Field_Input{padding-top:1px}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div{margin-bottom:.25em}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div:last-child,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div:last-child{margin-bottom:0}div.DTE_Field_Type_checkbox div.DTE_Field_Input>div>div label,div.DTE_Field_Type_radio div.DTE_Field_Input>div>div label{margin-left:.75em;vertical-align:middle}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;line-height:1.3em;padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_filter{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100%}div.DTE_Field_Type_datatable div.dt-buttons{padding-right:1em;padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons button{width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{padding-bottom:0}div.DTE_Field_Type_datatable div.dataTables_paginate{float:none;text-align:center;font-size:.8em}div.DTE_Field_Type_datatable table.dataTable.no-footer{border-bottom:1px solid #aaa !important}div.DTE_Field_Type_datatable table.dataTable thead th,div.DTE_Field_Type_datatable table.dataTable thead td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-bottom:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable table.dataTable tbody td:first-child{border-left:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable table.dataTable tbody td:last-child{border-right:1px solid #aaa}div.DTE_Field_Type_datatable table.dataTable tfoot th,div.DTE_Field_Type_datatable table.dataTable tfoot td{font-weight:normal;padding-top:3px;padding-bottom:3px;border-top:1px solid #aaa}div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead th,div.DTE_Field_Type_datatable div.dataTables_scrollHead table.dataTable thead td{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody{border:1px solid #aaa !important;border-radius:3px}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable{border-bottom:none !important}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:first-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:first-child{border-left:none}div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody th:last-child,div.DTE_Field_Type_datatable div.dataTables_scrollBody table.dataTable tbody td:last-child{border-right:none}div.DTE_Body{padding:52px 0}div.DTE_Body div.DTE_Body_Content{position:relative;overflow:auto}div.DTE_Body div.DTE_Body_Content div.DTE_Form_Info{padding:1em 1em 0 1em;margin:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 10%;border:1px solid transparent}div.DTE_Body div.DTE_Body_Content div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Body div.DTE_Body_Content div.DTE_Field:hover{background-color:#f9f9f9;border:1px solid #f3f3f3}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:left;width:33%;padding-top:3px}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:right;width:66%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{float:none;clear:both;width:100%}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:right}html[dir=rtl] div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:left}html[dir=rtl] div.DTE div.DTE_Form_Buttons button{float:left}@media only screen and (max-width: 768px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0 5px 10%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:35.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:64.5%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 640px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full{padding:5px 0%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label{width:40%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input{width:60%}div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}@media only screen and (max-width: 580px){div.DTE_Body div.DTE_Body_Content div.DTE_Field{position:relative;clear:both;padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>label{float:none;width:auto;padding-top:0}div.DTE_Body div.DTE_Body_Content div.DTE_Field>div.DTE_Field_Input{float:none;width:auto;margin-top:4px;margin-bottom:6px}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block{padding:5px 0}div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.full>div.DTE_Field_Input,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>label,div.DTE_Body div.DTE_Body_Content div.DTE_Field.block>div.DTE_Field_Input{width:100%}}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}table.dataTable tbody tr.highlight{background-color:#fffbcc !important}table.dataTable tbody tr.highlight,table.dataTable tbody tr.noHighlight,table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}table.dataTable.stripe tbody tr.odd.highlight,table.dataTable.display tbody tr.odd.highlight{background-color:#f9f5c7}table.dataTable.hover tbody tr:hover.highlight,table.dataTable.hover tbody tr.odd:hover.highlight,table.dataTable.hover tbody tr.even:hover.highlight,table.dataTable.display tbody tr:hover.highlight,table.dataTable.display tbody tr.odd:hover.highlight,table.dataTable.display tbody tr.even:hover.highlight{background-color:#f6f2c5}table.dataTable.order-column tbody tr.highlight>.sorting_1,table.dataTable.order-column tbody tr.highlight>.sorting_2,table.dataTable.order-column tbody tr.highlight>.sorting_3,table.dataTable.display tbody tr.highlight>.sorting_1,table.dataTable.display tbody tr.highlight>.sorting_2,table.dataTable.display tbody tr.highlight>.sorting_3{background-color:#faf6c8}table.dataTable.display tbody tr.odd.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_1{background-color:#f1edc1}table.dataTable.display tbody tr.odd.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_2{background-color:#f3efc2}table.dataTable.display tbody tr.odd.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.highlight>.sorting_3{background-color:#f5f1c4}table.dataTable.display tbody tr.even.highlight>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_1{background-color:#faf6c8}table.dataTable.display tbody tr.even.highlight>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_2{background-color:#fcf8ca}table.dataTable.display tbody tr.even.highlight>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.highlight>.sorting_3{background-color:#fefacb}table.dataTable.display tbody tr:hover.highlight>.sorting_1,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.display tbody tr.even:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_1{background-color:#eae6bb}table.dataTable.display tbody tr:hover.highlight>.sorting_2,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.display tbody tr.even:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_2{background-color:#ece8bd}table.dataTable.display tbody tr:hover.highlight>.sorting_3,table.dataTable.display tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.display tbody tr.even:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.highlight>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.highlight>.sorting_3{background-color:#efebbf}table.dataTable tr.dte-inlineAdd td,table.dataTable tr.dte-inlineAdd th{vertical-align:top}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}div.DTE{font-size:.91em}div.DTE div.DTE_Header{display:none}div.DTE div.DTE_Body{padding:0}div.DTE div.DTE_Body div.DTE_Body_Content{overflow:hidden}div.DTE div.DTE_Body div.DTE_Body_Content div.DTE_Field{padding:5px 5%}div.DTE div.DTE_Footer{display:none}div.DTE div.DTE_Form_Error{padding-top:1em;color:red;display:none;color:#b11f1f}div.DTE div.DTE_Processing_Indicator{top:12px;right:2px;font-size:.8em}div.DTE div.DTE_Form_Buttons{text-align:right;padding:0;display:flex;flex-direction:row-reverse}div.DTE_Field_Type_datatable div.dataTables_filter{padding-bottom:.5em}div.DTE_Field_Type_datatable div.dt-buttons{float:none}div.DTE_Field_Type_datatable div.dt-buttons button{margin-bottom:3px} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.css new file mode 100644 index 00000000..ad00ca84 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.css @@ -0,0 +1,602 @@ +div.DTE div.DTE_Form_Error { + display: none; + color: #b11f1f; +} +div.DTE div.DTE_Form_Buttons { + display: flex; + flex-direction: row-reverse; +} +div.DTE label { + padding-top: 9px !important; + align-self: flex-start; + justify-content: flex-end; +} +div.DTE div.eight.wide.field { + flex-direction: column; +} +div.DTE div.DTE_Field_InputControl { + width: 100%; + margin: 0 !important; +} +div.DTE div.ui.message:empty { + display: none; +} + +div.DTE_Field div.ui.message { + width: 100%; +} +div.DTE_Field div.multi-value, +div.DTE_Field div.multi-restore { + display: none; + cursor: pointer; + margin-top: 0; +} +div.DTE_Field div.multi-value span, +div.DTE_Field div.multi-restore span { + display: block; + color: #666; + font-size: 0.85em; + line-height: 1.35em; +} +div.DTE_Field div.multi-value:hover, +div.DTE_Field div.multi-restore:hover { + background-color: #f1f1f1; +} +div.DTE_Field div.multi-restore { + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; +} +div.DTE_Field:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; +} + +div.DTE_Inline { + position: relative; + display: table; + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field, +div.DTE_Inline div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field { + padding: 0; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field > label, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field > label { + display: none; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week] { + width: 100%; +} +div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button, +div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; +} +div.DTE_Inline div.DTE_Field input[type=color], +div.DTE_Inline div.DTE_Field input[type=date], +div.DTE_Inline div.DTE_Field input[type=datetime], +div.DTE_Inline div.DTE_Field input[type=datetime-local], +div.DTE_Inline div.DTE_Field input[type=email], +div.DTE_Inline div.DTE_Field input[type=month], +div.DTE_Inline div.DTE_Field input[type=number], +div.DTE_Inline div.DTE_Field input[type=password], +div.DTE_Inline div.DTE_Field input[type=search], +div.DTE_Inline div.DTE_Field input[type=tel], +div.DTE_Inline div.DTE_Field input[type=text], +div.DTE_Inline div.DTE_Field input[type=time], +div.DTE_Inline div.DTE_Field input[type=url], +div.DTE_Inline div.DTE_Field input[type=week] { + margin: -6px 0; +} +div.DTE_Inline div.DTE_Field_Error, +div.DTE_Inline div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; +} +div.DTE_Inline div.DTE_Field_Error:empty, +div.DTE_Inline div.DTE_Form_Error:empty { + margin-top: 0; +} + +span.dtr-data div.DTE_Inline { + display: inline-table; +} + +div.DTE.DTE_Inline.ui.form label { + display: none !important; +} +div.DTE.DTE_Inline.ui.form div.DTE_Field { + width: 100%; + margin: 0 !important; +} +div.DTE.DTE_Inline.ui.form div.DTE_Field div.DTE_Field_Input { + width: 100% !important; + box-sizing: border-box; +} +div.DTE.DTE_Inline.ui.form div.DTE_Field > div { + width: 100%; + padding: 0; +} +div.DTE.DTE_Inline.ui.form.DTE_Processing:after { + top: 5px; +} + +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0, 0, 0, 0.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table { + width: 100%; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + position: relative; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:last-child { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > label { + padding-top: 0; + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div input { + margin: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button { + margin-bottom: 0; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Form_Info, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after { + content: "×"; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: "Courier New", Courier, monospace; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after { + color: black; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +div.DTE_Bubble.below div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; +} +div.DTE_Bubble.below div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} + +div.DTE_Bubble_Background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7))); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); /* W3C Markup, IE10 Release Preview */ + z-index: 10; +} +div.DTE_Bubble_Background > div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; +} +div.DTE_Bubble_Background > div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled="false"); +} + +div.DTE_Bubble { + z-index: 1001; +} +div.DTE_Bubble div.DTE_Bubble_Liner { + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + border-radius: 6px; + padding: 1em; + border: 1px solid rgba(0, 0, 0, 0.2); +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field { + flex-direction: column; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label, +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field > div { + justify-content: flex-start; + width: 100% !important; + float: none; + clear: both; + text-align: left; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field label { + padding-bottom: 4px; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table > form div.DTE_Form_Content div.DTE_Field:first-child label { + padding-top: 0 !important; +} +div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons { + text-align: right; + padding: 0; +} +div.DTE_Bubble div.DTE_Bubble_Triangle { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-left: 1px solid rgba(0, 0, 0, 0.2); +} + +div.DTE div.editor_upload { + padding-top: 4px; +} +div.DTE div.editor_upload div.eu_table { + display: table; + width: 100%; +} +div.DTE div.editor_upload div.row { + display: table-row; +} +div.DTE div.editor_upload div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; +} +div.DTE div.editor_upload div.cell + div.cell { + padding-left: 10px; +} +div.DTE div.editor_upload div.row + div.row div.cell { + padding-top: 10px; +} +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; +} +div.DTE div.editor_upload input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; +} +div.DTE div.editor_upload div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; +} +div.DTE div.editor_upload div.drop.over { + border: 3px dashed #111; + color: #111; +} +div.DTE div.editor_upload div.drop span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; +} +div.DTE div.editor_upload div.rendered img { + max-width: 8em; + margin: 0 auto; +} +div.DTE div.editor_upload.noDrop div.drop { + display: none; +} +div.DTE div.editor_upload.noDrop div.row.second { + display: none; +} +div.DTE div.editor_upload.noDrop div.rendered { + margin-top: 10px; +} +div.DTE div.editor_upload.noClear div.clearValue button { + display: none; +} +div.DTE div.editor_upload.multi div.cell { + display: block; + width: 100%; +} +div.DTE div.editor_upload.multi div.cell div.drop { + min-height: 0; +} +div.DTE div.editor_upload.multi div.clearValue { + display: none; +} +div.DTE div.editor_upload.multi ul { + list-style-type: none; + margin: 0; + padding: 0; +} +div.DTE div.editor_upload.multi ul li { + position: relative; + margin-top: 0.5em; +} +div.DTE div.editor_upload.multi ul li:first-child { + margin-top: 0; +} +div.DTE div.editor_upload.multi ul li img { + vertical-align: middle; +} +div.DTE div.editor_upload.multi ul li button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; +} + +div.DTE div.editor_upload button.btn, +div.DTE div.editor_upload input[type=file] { + height: auto; +} +div.DTE div.editor_upload ul li button { + padding-bottom: 8px; +} + +div.DTE_Field_Type_datatable label { + display: block !important; + text-align: right; +} +div.DTE_Field_Type_datatable div.dataTables_filter { + display: block !important; + text-align: left; + margin-bottom: 6px; +} +div.DTE_Field_Type_datatable div.dataTables_filter input { + width: 100% !important; +} +div.DTE_Field_Type_datatable div.dt-buttons { + margin-bottom: 6px; + width: 100%; +} +div.DTE_Field_Type_datatable div.dt-buttons:empty { + display: none; +} +div.DTE_Field_Type_datatable div.dataTables_info { + font-size: 0.8em; + font-weight: normal; + line-height: 1.3em; +} +div.DTE_Field_Type_datatable div.dataTables_info span.select-info { + display: block; +} +div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate { + margin-top: 0.3em; + text-align: center; +} + +div.DTE div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +div.DTE.processing div.DTE_Processing_Indicator { + display: block; +} +div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator { + display: none; +} +div.DTE div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; +} +div.DTE.DTE_Inline div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; +} +div.DTE.DTE_Bubble div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; +} +div.DTE div.DTE_Processing_Indicator span, +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.1); + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; +} +div.DTE div.DTE_Processing_Indicator:before, +div.DTE div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ""; +} +div.DTE div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} +div.DTE div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; +} +div.DTE div.DTE_Processing_Indicator:after { + left: 1em; +} +@-webkit-keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} +@keyframes editorProcessing { + 0%, 80%, 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } +} + +table.dataTable tbody tr.highlight th, +table.dataTable tbody tr.highlight td { + background-color: #2185D0 !important; +} +table.dataTable tbody tr.highlight td, +table.dataTable tbody tr.noHighlight td { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} + +div.DTE div.DTE_Processing_Indicator { + top: 22px; + right: 12px; +} + +div.DTE_Field_Type_checkbox div.DTE_Field_InputControl, +div.DTE_Field_Type_radio div.DTE_Field_InputControl { + padding-top: 7px; +} +div.DTE_Field_Type_checkbox > div > div, +div.DTE_Field_Type_radio > div > div { + margin-bottom: 0.2em; +} +div.DTE_Field_Type_checkbox > div > div input, +div.DTE_Field_Type_radio > div > div input { + vertical-align: baseline !important; +} +div.DTE_Field_Type_checkbox > div > div label, +div.DTE_Field_Type_radio > div > div label { + margin-left: 0.75em; + padding-top: 11px !important; +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.min.css b/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.min.css new file mode 100644 index 00000000..cf19b5d6 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/editor.semanticui.min.css @@ -0,0 +1 @@ +div.DTE div.DTE_Form_Error{display:none;color:#b11f1f}div.DTE div.DTE_Form_Buttons{display:flex;flex-direction:row-reverse}div.DTE label{padding-top:9px !important;align-self:flex-start;justify-content:flex-end}div.DTE div.eight.wide.field{flex-direction:column}div.DTE div.DTE_Field_InputControl{width:100%;margin:0 !important}div.DTE div.ui.message:empty{display:none}div.DTE_Field div.ui.message{width:100%}div.DTE_Field div.multi-value,div.DTE_Field div.multi-restore{display:none;cursor:pointer;margin-top:0}div.DTE_Field div.multi-value span,div.DTE_Field div.multi-restore span{display:block;color:#666;font-size:.85em;line-height:1.35em}div.DTE_Field div.multi-value:hover,div.DTE_Field div.multi-restore:hover{background-color:#f1f1f1}div.DTE_Field div.multi-restore{margin-top:.5em;font-size:.8em;line-height:1.25em}div.DTE_Field:after{display:block;content:".";height:0;line-height:0;clear:both;visibility:hidden}div.DTE_Inline{position:relative;display:table;width:100%}div.DTE_Inline div.DTE_Inline_Field,div.DTE_Inline div.DTE_Inline_Buttons{display:table-cell;vertical-align:middle}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field{padding:0}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field>label,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field>label{display:none}div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Field div.DTE_Field input[type=week],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Field input[type=week]{width:100%}div.DTE_Inline div.DTE_Inline_Field div.DTE_Form_Buttons button,div.DTE_Inline div.DTE_Inline_Buttons div.DTE_Form_Buttons button{margin:-6px 0 -6px 4px;padding:5px}div.DTE_Inline div.DTE_Field input[type=color],div.DTE_Inline div.DTE_Field input[type=date],div.DTE_Inline div.DTE_Field input[type=datetime],div.DTE_Inline div.DTE_Field input[type=datetime-local],div.DTE_Inline div.DTE_Field input[type=email],div.DTE_Inline div.DTE_Field input[type=month],div.DTE_Inline div.DTE_Field input[type=number],div.DTE_Inline div.DTE_Field input[type=password],div.DTE_Inline div.DTE_Field input[type=search],div.DTE_Inline div.DTE_Field input[type=tel],div.DTE_Inline div.DTE_Field input[type=text],div.DTE_Inline div.DTE_Field input[type=time],div.DTE_Inline div.DTE_Field input[type=url],div.DTE_Inline div.DTE_Field input[type=week]{margin:-6px 0}div.DTE_Inline div.DTE_Field_Error,div.DTE_Inline div.DTE_Form_Error{font-size:11px;line-height:1.2em;padding:0;margin-top:10px}div.DTE_Inline div.DTE_Field_Error:empty,div.DTE_Inline div.DTE_Form_Error:empty{margin-top:0}span.dtr-data div.DTE_Inline{display:inline-table}div.DTE.DTE_Inline.ui.form label{display:none !important}div.DTE.DTE_Inline.ui.form div.DTE_Field{width:100%;margin:0 !important}div.DTE.DTE_Inline.ui.form div.DTE_Field div.DTE_Field_Input{width:100% !important;box-sizing:border-box}div.DTE.DTE_Inline.ui.form div.DTE_Field>div{width:100%;padding:0}div.DTE.DTE_Inline.ui.form.DTE_Processing:after{top:5px}div.DTE_Bubble{position:absolute;z-index:11;margin-top:-6px;opacity:0;transition:top .5s ease-in-out 0s}div.DTE_Bubble div.DTE_Bubble_Liner{position:absolute;bottom:0;border:1px solid black;width:300px;margin-left:-150px;background-color:white;box-shadow:0 12px 30px 0 rgba(0, 0, 0, 0.5);border-radius:6px;border:1px solid #666;padding:1em;background:#fcfcfc;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table{width:100%}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{position:relative;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:last-child{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>label{padding-top:0;margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{padding:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div input{margin:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;margin-top:1em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons button{margin-bottom:0}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header{border-top-left-radius:5px;border-top-right-radius:5px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Form_Info,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Header+div.DTE_Bubble_Table{padding-top:42px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Form_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:19px;right:19px;cursor:pointer;z-index:12}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:rgba(0, 0, 0, 0.5);font-weight:bold;font-size:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover:after{color:black}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble{z-index:1001}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border:1px solid rgba(0, 0, 0, 0.2)}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field{flex-direction:column}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label,div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field>div{justify-content:flex-start;width:100% !important;float:none;clear:both;text-align:left}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field label{padding-bottom:4px}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table>form div.DTE_Form_Content div.DTE_Field:first-child label{padding-top:0 !important}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Table div.DTE_Form_Buttons{text-align:right;padding:0}div.DTE_Bubble div.DTE_Bubble_Triangle{border-bottom:1px solid rgba(0, 0, 0, 0.2);border-left:1px solid rgba(0, 0, 0, 0.2)}div.DTE div.editor_upload{padding-top:4px}div.DTE div.editor_upload div.eu_table{display:table;width:100%}div.DTE div.editor_upload div.row{display:table-row}div.DTE div.editor_upload div.cell{display:table-cell;position:relative;width:50%;vertical-align:top}div.DTE div.editor_upload div.cell+div.cell{padding-left:10px}div.DTE div.editor_upload div.row+div.row div.cell{padding-top:10px}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{width:100%;height:2.3em;font-size:.8em;text-align:center;line-height:1em;margin:0}div.DTE div.editor_upload input[type=file]{position:absolute;top:0;left:0;width:100%;opacity:0}div.DTE div.editor_upload div.drop{position:relative;box-sizing:border-box;width:100%;height:100%;border:3px dashed #ccc;border-radius:6px;min-height:4em;color:#999;text-align:center;padding:1em 2em;line-height:1.1em}div.DTE div.editor_upload div.drop.over{border:3px dashed #111;color:#111}div.DTE div.editor_upload div.drop span{max-width:75%;font-size:.85em;line-height:1em}div.DTE div.editor_upload div.rendered img{max-width:8em;margin:0 auto}div.DTE div.editor_upload.noDrop div.drop{display:none}div.DTE div.editor_upload.noDrop div.row.second{display:none}div.DTE div.editor_upload.noDrop div.rendered{margin-top:10px}div.DTE div.editor_upload.noClear div.clearValue button{display:none}div.DTE div.editor_upload.multi div.cell{display:block;width:100%}div.DTE div.editor_upload.multi div.cell div.drop{min-height:0}div.DTE div.editor_upload.multi div.clearValue{display:none}div.DTE div.editor_upload.multi ul{list-style-type:none;margin:0;padding:0}div.DTE div.editor_upload.multi ul li{position:relative;margin-top:.5em}div.DTE div.editor_upload.multi ul li:first-child{margin-top:0}div.DTE div.editor_upload.multi ul li img{vertical-align:middle}div.DTE div.editor_upload.multi ul li button{position:absolute;width:40px;right:0;top:50%;margin-top:-1.5em}div.DTE div.editor_upload button.btn,div.DTE div.editor_upload input[type=file]{height:auto}div.DTE div.editor_upload ul li button{padding-bottom:8px}div.DTE_Field_Type_datatable label{display:block !important;text-align:right}div.DTE_Field_Type_datatable div.dataTables_filter{display:block !important;text-align:left;margin-bottom:6px}div.DTE_Field_Type_datatable div.dataTables_filter input{width:100% !important}div.DTE_Field_Type_datatable div.dt-buttons{margin-bottom:6px;width:100%}div.DTE_Field_Type_datatable div.dt-buttons:empty{display:none}div.DTE_Field_Type_datatable div.dataTables_info{font-size:.8em;font-weight:normal;line-height:1.3em}div.DTE_Field_Type_datatable div.dataTables_info span.select-info{display:block}div.DTE_Field_Type_datatable div.dataTables_wrapper div.dataTables_paginate{margin-top:.3em;text-align:center}div.DTE div.DTE_Processing_Indicator{position:absolute;top:17px;right:42px;height:2em;width:2em;z-index:20;font-size:12px;display:none;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}div.DTE.processing div.DTE_Processing_Indicator{display:block}div.DTE.processing div.DTE_Field div.DTE_Processing_Indicator{display:none}div.DTE div.DTE_Field div.DTE_Processing_Indicator{top:13px;right:0;font-size:8px}div.DTE.DTE_Inline div.DTE_Processing_Indicator{top:5px;right:6px;font-size:6px}div.DTE.DTE_Bubble div.DTE_Processing_Indicator{top:10px;right:14px;font-size:8px}div.DTE div.DTE_Processing_Indicator span,div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{display:block;background:black;width:.5em;height:1.5em;border:1px solid rgba(0, 0, 0, 0.4);background-color:rgba(0, 0, 0, 0.1);-webkit-animation:editorProcessing .9s infinite ease-in-out;animation:editorProcessing .9s infinite ease-in-out}div.DTE div.DTE_Processing_Indicator:before,div.DTE div.DTE_Processing_Indicator:after{position:absolute;top:0;content:""}div.DTE div.DTE_Processing_Indicator:before{left:-1em;-webkit-animation-delay:-0.3s;animation-delay:-0.3s}div.DTE div.DTE_Processing_Indicator span{-webkit-animation-delay:-0.15s;animation-delay:-0.15s}div.DTE div.DTE_Processing_Indicator:after{left:1em}@-webkit-keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}@keyframes editorProcessing{0%,80%,100%{transform:scale(1, 1)}40%{transform:scale(1, 1.5)}}table.dataTable tbody tr.highlight th,table.dataTable tbody tr.highlight td{background-color:#2185d0 !important}table.dataTable tbody tr.highlight td,table.dataTable tbody tr.noHighlight td{-webkit-transition:background-color 500ms linear;-moz-transition:background-color 500ms linear;-ms-transition:background-color 500ms linear;-o-transition:background-color 500ms linear;transition:background-color 500ms linear}div.DTE div.DTE_Processing_Indicator{top:22px;right:12px}div.DTE_Field_Type_checkbox div.DTE_Field_InputControl,div.DTE_Field_Type_radio div.DTE_Field_InputControl{padding-top:7px}div.DTE_Field_Type_checkbox>div>div,div.DTE_Field_Type_radio>div>div{margin-bottom:.2em}div.DTE_Field_Type_checkbox>div>div input,div.DTE_Field_Type_radio>div>div input{vertical-align:baseline !important}div.DTE_Field_Type_checkbox>div>div label,div.DTE_Field_Type_radio>div>div label{margin-left:.75em;padding-top:11px !important} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/bubble.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/bubble.scss new file mode 100644 index 00000000..727deb1b --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/bubble.scss @@ -0,0 +1,130 @@ + +// Bubble form editing +// Very similar to the main form, but attached to a particular node and the +// form layout is slightly different with the fields container and buttons +// making up a table of a single row and two columns. This allows the buttons +// to be removed from the display and under this condition the fields will +// take up the full width available. +div.DTE_Bubble { + position: absolute; + z-index: 11; + margin-top: -6px; + opacity: 0; + transition: top 0.5s ease-in-out 0s; + + div.DTE_Bubble_Liner { + position: absolute; + bottom: 0; + border: 1px solid black; + width: 300px; + margin-left: -150px; + background-color: white; + box-shadow: 0 12px 30px 0 rgba(0,0,0,.5); + border-radius: 6px; + border: 1px solid #666; + padding: 1em; + background: #fcfcfc; + @include box-sizing(border-box); + + div.DTE_Bubble_Table { + width: 100%; + + > form { + div.DTE_Form_Content { + padding: 0; + + div.DTE_Field { + position: relative; + margin-bottom: 0.5em; + + &:last-child { + margin-bottom: 0; + } + + > label { + padding-top: 0; + margin-bottom: 0; + } + + > div { + padding: 0; + + input { + margin: 0; + } + } + } + } + } + + div.DTE_Form_Buttons { + text-align: right; + margin-top: 1em; + + button { + margin-bottom: 0; + } + } + } + + div.DTE_Header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + } + + div.DTE_Header + div.DTE_Form_Info, + div.DTE_Header + div.DTE_Bubble_Table { + padding-top: 42px; + } + + + div.DTE_Form_Error { + float: none; + display: none; + padding: 0; + margin-bottom: 0.5em; + } + + div.DTE_Bubble_Close { + @include close-icon(); + } + } + + div.DTE_Bubble_Triangle { + position: absolute; + height: 10px; + width: 10px; + top: -6px; + background-color: white; + border: 1px solid #666; + border-top: none; + border-right: none; + + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); + } + + &.below { + div.DTE_Bubble_Liner { + top: 10px; + bottom: auto; + } + + div.DTE_Bubble_Triangle { + top: 4px; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); + } + } +} + +div.DTE_Bubble_Background { + @include overlay-background(); +} + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/datatable.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/datatable.scss new file mode 100644 index 00000000..3b42c085 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/datatable.scss @@ -0,0 +1,100 @@ + +// Row highlighting on edit styles +// +// To change the colour of the highlight, simply modify the variable below and +// recompile the SCSS stylesheet (if you don't have SASS installed, you can use +// the online service at http://sassmeister.com/ . +// +// The DataTables styles below match the default DataTables stylesheet: +// http://next.datatables.net/manual/styling/classes so you can retain the full +// benefits of the DataTables styling options. + +$table-row-highlight: #FFFBCC; + +table.dataTable { + tbody { + tr.highlight { + background-color: $table-row-highlight !important; + } + + tr.highlight, + tr.noHighlight, + tr.highlight td, + tr.noHighlight td { + @include background-transision(); + } + } + + &.stripe tbody, + &.display tbody { + tr.odd { + &.highlight { + background-color: shade($table-row-highlight, 2.35%); + } + } + } + + // Hover classes - add "hover" class to the table to activate + &.hover tbody, + &.display tbody { + tr:hover, + tr.odd:hover, + tr.even:hover { + &.highlight { + background-color: shade($table-row-highlight, 3.6%); + } + } + } + + + // Sort column highlighting - add "hover" class to the table to activate + &.order-column, + &.display { + tbody { + tr.highlight>.sorting_1, + tr.highlight>.sorting_2, + tr.highlight>.sorting_3 { + background-color: shade($table-row-highlight, 2%); + } + } + } + + &.display tbody, + &.order-column.stripe tbody { + tr.odd { + &.highlight { + >.sorting_1 { background-color: shade($table-row-highlight, 5.4%);} + >.sorting_2 { background-color: shade($table-row-highlight, 4.7%);} + >.sorting_3 { background-color: shade($table-row-highlight, 3.9%);} + } + } + + tr.even { + &.highlight { + >.sorting_1 { background-color: shade($table-row-highlight, 2%); } + >.sorting_2 { background-color: shade($table-row-highlight, 1.2%); } + >.sorting_3 { background-color: shade($table-row-highlight, 0.4%); } + } + } + } + + &.display tbody, + &.order-column.hover tbody { + tr:hover, + tr.odd:hover, + tr.even:hover { + &.highlight { + >.sorting_1 { background-color: shade($table-row-highlight, 8.2%); } + >.sorting_2 { background-color: shade($table-row-highlight, 7.5%); } + >.sorting_3 { background-color: shade($table-row-highlight, 6.3%); } + } + } + } + + tr.dte-inlineAdd { + td, + th { + vertical-align: top; + } + } +} \ No newline at end of file diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/envelope.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/envelope.scss new file mode 100644 index 00000000..a4d234e3 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/envelope.scss @@ -0,0 +1,63 @@ + +/* + * Namespace: DTED - DataTables Editor Display - Envelope + */ + +div.DTED_Envelope_Wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 50%; + height: 100%; + z-index: 11; + display: none; + overflow: hidden; + + // Create a shadow display at the top of the evelope to make it look like it has + // come from under the element that it is attached to/ Left and right to give a + // slight fade and the two ends + div.DTED_Envelope_Shadow { + position: absolute; + top: -10px; + left: 10px; + right: 10px; + height: 10px; + z-index: 10; + box-shadow: 0 0 20px black; + } + + div.DTED_Envelope_Container { + position: absolute; + top: 0; + left: 5%; + width: 90%; + + border-left: 1px solid #777; + border-right: 1px solid #777; + border-bottom: 1px solid #777; + box-shadow: 3px 3px 10px #555; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + background-color: white; + + div.DTE_Processing_Indicator { + right: 36px; + } + + div.DTE_Footer { + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + } + + div.DTED_Envelope_Close { + @include close-icon(); + } + } +} + + +div.DTED_Envelope_Background { + @include overlay-background(); +} + + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/fields.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/fields.scss new file mode 100644 index 00000000..4dfa5286 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/fields.scss @@ -0,0 +1,280 @@ + +$input-border: 1px solid #aaa; + +$input-border: 1px solid #aaa; + +// Generic field styling +div.DTE_Field { + input, + textarea { + box-sizing: border-box; + background-color: white; + -webkit-transition: background-color ease-in-out .15s; + transition: background-color ease-in-out .15s; + } + + input:focus, + textarea:focus { + background-color: #ffffee; + } + + input[type="color"], + input[type="date"], + input[type="datetime"], + input[type="datetime-local"], + input[type="email"], + input[type="month"], + input[type="number"], + input[type="password"], + input[type="search"], + input[type="tel"], + input[type="text"], + input[type="time"], + input[type="url"], + input[type="week"] { + padding: 5px 4px; + width: 100%; + + // Chrome 83 introduces some really ugly borders + border: $input-border; + border-radius: 3px; + } + + input[type="checkbox"], + input[type="radio"] { + vertical-align: middle; + } + + select { + padding: 5px 4px; + border-radius: 3px; + border: $input-border; + background: white; + max-width: 100%; + } + + label div.DTE_Label_Info { + font-size: 0.85em; + margin-top: 0.25em; + + &:empty { + margin-top: 0; + } + } + + div.DTE_Field_Info, + div.DTE_Field_Message, + div.DTE_Field_Error { + font-size: 11px; + line-height: 1em; + margin-top: 5px; + + &:empty { + margin-top: 0; + } + } + + div.DTE_Field_Error { + display: none; + color: #b11f1f; + } + + div.multi-value { + display: none; + border: 1px dotted #666; + border-radius: 3px; + padding: 5px; + background-color: #fafafa; + cursor: pointer; + + span { + font-size: 0.8em; + line-height: 1.25em; + display: block; + color: #666; + } + + &.multi-noEdit { + border: 1px solid #ccc; + cursor: auto; + background-color: #fcfcfc; + + &:hover { + background-color: #fcfcfc; + } + } + + &:hover { + background-color: #f1f1f1; + } + } + + &.disabled { + color: grey; + + div.multi-value { + cursor: default; + border: 1px dotted #aaa; + background-color: transparent; + } + } + + div.multi-restore { + display: none; + margin-top: 0.5em; + font-size: 0.8em; + line-height: 1.25em; + color: #3879d9; + + &:hover { + text-decoration: underline; + cursor: pointer; + } + } +} + +// Specific field type styling +div.DTE_Field_Type_textarea { + textarea { + padding: 3px; + width: 100%; + height: 80px; + border: $input-border; + } +} + +div.DTE_Field.DTE_Field_Type_date { + img { + vertical-align: middle; + cursor: pointer; + } +} + +div.DTE_Field_Type_checkbox, +div.DTE_Field_Type_radio { + div.DTE_Field_Input { + padding-top: 1px; + + > div > div { + margin-bottom: 0.25em; + + &:last-child { + margin-bottom: 0; + } + + input { + } + + label { + margin-left: 0.75em; + vertical-align: middle; + } + } + } +} + +div.DTE_Field_Type_datatable { + div.dataTables_info { + font-size: 0.8em; + line-height: 1.3em; + padding-right: 1em; + padding-bottom: 0.5em; + + span.select-info { + display: block; + } + } + + div.dataTables_filter { + padding-right: 1em; + padding-bottom: 0.5em; + + input { + width: 100%; + } + } + + div.dt-buttons { + padding-right: 1em; + padding-bottom: 0.5em; + + button { + width: 100%; + } + + &:empty { + padding-bottom: 0; + } + } + + div.dataTables_paginate { + float: none; + text-align: center; + font-size: 0.8em; + } + + table.dataTable { + &.no-footer { + border-bottom: 1px solid #aaa !important; + } + + thead { + th, td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-bottom: 1px solid #aaa; + } + } + + tbody { + th:first-child, + td:first-child { + border-left: 1px solid #aaa; + } + + th:last-child, + td:last-child { + border-right: 1px solid #aaa; + } + } + + tfoot { + th, td { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + border-top: 1px solid #aaa; + } + } + } + + div.dataTables_scrollHead { + table.dataTable, + table.dataTable thead th, + table.dataTable thead td { + border-bottom: none !important; + } + } + + div.dataTables_scrollBody { + border: 1px solid #aaa !important; + border-radius: 3px;; + + table.dataTable { + border-bottom: none !important; + + tbody { + th:first-child, + td:first-child { + border-left: none; + } + + th:last-child, + td:last-child { + border-right: none; + } + } + } + } +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/inline.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/inline.scss new file mode 100644 index 00000000..8131a3a9 --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/inline.scss @@ -0,0 +1,79 @@ + +// Inline form editing +// Hide the label and allow the field to take the full width +div.DTE_Inline { + position: relative; + display: table; + width: 100%; + + div.DTE_Inline_Field, + div.DTE_Inline_Buttons { + display: table-cell; + vertical-align: middle; + + div.DTE_Field { + padding: 0; + + >label { + display: none; + } + + input[type="color"], + input[type="date"], + input[type="datetime"], + input[type="datetime-local"], + input[type="email"], + input[type="month"], + input[type="number"], + input[type="password"], + input[type="search"], + input[type="tel"], + input[type="text"], + input[type="time"], + input[type="url"], + input[type="week"] { + width: 100%; + } + } + + div.DTE_Form_Buttons button { + margin: -6px 0 -6px 4px; + padding: 5px; + } + } + + // Have the input types take up full space, taking into account the cell padding + div.DTE_Field input[type="color"], + div.DTE_Field input[type="date"], + div.DTE_Field input[type="datetime"], + div.DTE_Field input[type="datetime-local"], + div.DTE_Field input[type="email"], + div.DTE_Field input[type="month"], + div.DTE_Field input[type="number"], + div.DTE_Field input[type="password"], + div.DTE_Field input[type="search"], + div.DTE_Field input[type="tel"], + div.DTE_Field input[type="text"], + div.DTE_Field input[type="time"], + div.DTE_Field input[type="url"], + div.DTE_Field input[type="week"] { + margin: -6px 0; + } + + div.DTE_Field_Error, + div.DTE_Form_Error { + font-size: 11px; + line-height: 1.2em; + padding: 0; + margin-top: 10px; + + &:empty { + margin-top: 0; + } + } +} + +// Responsive integration +span.dtr-data div.DTE_Inline { + display: inline-table; +} \ No newline at end of file diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/lightbox.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/lightbox.scss new file mode 100644 index 00000000..bbab24ea --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/lightbox.scss @@ -0,0 +1,174 @@ + + +div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 50%; + margin-left: -390px; + width: 780px; + height: 100%; + z-index: 11; + + div.DTED_Lightbox_Container { + display: table; + height: 100%; + width: 100%; + + div.DTED_Lightbox_Content_Wrapper { + display: table-cell; + vertical-align: middle; + width: 100%; + + div.DTED_Lightbox_Content { + position: relative; + box-shadow: 0 12px 30px 0 rgba(0,0,0,.5); + border-radius: 6px; + @include box-sizing(border-box); + + div.DTE { + background: white; + border-radius: 6px; + border: 1px solid #666; + background: #fcfcfc; + @include box-sizing(border-box); + + div.DTE_Header { + right: 0; + width: auto; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + } + + div.DTE_Body_Content { + box-sizing: border-box; + background: #fcfcfc; + } + + div.DTE_Footer { + right: 0; + width: auto; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + } + } + + div.DTED_Lightbox_Close { + @include close-icon(); + } + } + } + } +} + +div.DTED_Lightbox_Wrapper { + div.DTE_Footer { + display: flex; + justify-content: flex-end; + } + + div.DTE_Footer_Content { + display: none; + } + + div.DTE.inFormError div.DTE_Footer { + justify-content: space-between; + } +} + + +div.DTED_Lightbox_Background { + @include overlay-background(); +} + + +body.DTED_Lightbox_Mobile { + div.DTED_Lightbox_Background { + height: 0; + } + + div.DTED_Lightbox_Shown { + display: none; + } + + div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: auto; + height: auto; + margin-left: 0; + -webkit-overflow-scrolling: touch; + + div.DTED_Lightbox_Container { + display: block; + height: 100%; + + div.DTED_Lightbox_Content_Wrapper { + display: block; + height: 100%; + + div.DTED_Lightbox_Content { + border-radius: 0; + box-shadow: none; + height: 100% !important; + + div.DTE { + border-radius: 0; + height: 100%; + + div.DTE_Header { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + div.DTE_Body_Content { + padding-bottom: 52px; + } + + div.DTE_Footer { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + } + + div.DTED_Lightbox_Close { + top: 11px; + right: 15px; + + background-color: transparent; + border: none; + box-shadow: none; + } + } + } + } + } +} + +@media only screen +and (max-width: 780px) { + body div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 0; + width: 90%; + margin-left: 5%; + } +} + +@media only screen +and (max-width: 580px) { + body div.DTED_Lightbox_Wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + margin-left: 0; + } +} + + + + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/main.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/main.scss new file mode 100644 index 00000000..2e9d4dda --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/main.scss @@ -0,0 +1,180 @@ + + +// The main form. +// Most of the styles for display of the main form come from the display +// controller (lightbox and envelope are the two built in options). +div.DTE_Body { + padding: 52px 0; // space for hte header and footer which are position: absolute + + div.DTE_Body_Content { + position: relative; + overflow: auto; + + div.DTE_Form_Info { + padding: 1em 1em 0 1em; + margin: 0; + } + + div.DTE_Field { + position: relative; + + clear: both; + padding: 5px 10%; + border: 1px solid transparent; + + &:after { + display: block; + content: "."; + height: 0; + line-height: 0; + clear: both; + visibility: hidden; + } + + &:hover { + background-color: #f9f9f9; + border: 1px solid #f3f3f3; + } + + >label { + float: left; + width: 33%; + padding-top: 3px; + } + + >div.DTE_Field_Input { + float: right; + width: 66%; + } + + // Field in error state + &.DTE_Field_StateError { } + + &.full { + padding: 5px 0 5px 10%; + } + + &.block { + >div.DTE_Field_Input { + float: none; + clear: both; + width: 100%; + } + } + } + } +} + +html[dir="rtl"] { + div.DTE_Body div.DTE_Body_Content div.DTE_Field { + > label { + float: right; + } + + >div.DTE_Field_Input { + float: left; + } + } + + div.DTE div.DTE_Form_Buttons button { + float: left; + } +} + +// iPad in portrait +@media only screen +and (max-width : 768px) { + div.DTE_Body { + div.DTE_Body_Content { + div.DTE_Field { + padding: 5px 10%; + + &.full { + padding: 5px 0 5px 10%; + + >label { + width: 35.5%; + } + + >div.DTE_Field_Input { + width: 64.5%; + } + } + + &.block { + >div.DTE_Field_Input { + width: 100%; + } + } + } + } + } +} + +@media only screen +and (max-width : 640px) { + div.DTE_Body { + div.DTE_Body_Content { + div.DTE_Field { + padding: 5px 0; + + &.full { + padding: 5px 0%; + + >label { + width: 40%; + } + + >div.DTE_Field_Input { + width: 60%; + } + } + + &.block { + >div.DTE_Field_Input { + width: 100%; + } + } + } + } + } +} + +// For devices with smaller screens, the fields should be shown stacked +@media only screen +and (max-width : 580px) { + div.DTE_Body { + div.DTE_Body_Content { + div.DTE_Field { + position: relative; + + clear: both; + padding: 5px 0; + + >label { + float: none; + width: auto; + padding-top: 0; + } + + >div.DTE_Field_Input { + float: none; + width: auto; + margin-top: 4px; + margin-bottom: 6px; + } + + &.full, + &.block { + padding: 5px 0; + + >label, + >div.DTE_Field_Input { + width: 100%; + } + } + } + } + } +} + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/mixins.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/mixins.scss new file mode 100644 index 00000000..8338541b --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/mixins.scss @@ -0,0 +1,178 @@ + + +@function tint( $color, $percent ) { + @return mix(white, $color, $percent); +} + +@function shade( $color, $percent ) { + @return mix(black, $color, $percent); +} + + +@mixin border-radius ( $radius ) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + -ms-border-radius: $radius; + -o-border-radius: $radius; + border-radius: $radius; +} + +@mixin box-sizing($box-model) { + -webkit-box-sizing: $box-model; // Safari <= 5 + -moz-box-sizing: $box-model; // Firefox <= 19 + box-sizing: $box-model; +} + +@mixin box-shadow($top, $left, $blur, $color, $inset: false) { + @if $inset { + -webkit-box-shadow:inset $top $left $blur $color; + -moz-box-shadow:inset $top $left $blur $color; + box-shadow:inset $top $left $blur $color; + } @else { + -webkit-box-shadow: $top $left $blur $color; + -moz-box-shadow: $top $left $blur $color; + box-shadow: $top $left $blur $color; + } +} + +@mixin two-stop-gradient($fromColor, $toColor) { + background-color: $toColor; /* Fallback */ + background-image: -webkit-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, $fromColor 0%, $toColor 100%); /* FF3.6 */ + background-image: -ms-linear-gradient(top, $fromColor 0%, $toColor 100%); /* IE10 */ + background-image: -o-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, $fromColor 0%, $toColor 100%); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}'); +} + +@mixin three-stop-gradient($fromColor, $middleColor, $toColor) { + background-color: $toColor; /* Fallback */ + background-image: -webkit-linear-gradient(top, $fromColor, $middleColor, $toColor); /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, $fromColor, $middleColor, $toColor); /* FF3.6 */ + background-image: -ms-linear-gradient(top, $fromColor, $middleColor, $toColor); /* IE10 */ + background-image: -o-linear-gradient(top, $fromColor, $middleColor, $toColor); /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, $fromColor, $middleColor, $toColor); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}'); +} + +@mixin radial-gradient ($fromColor, $toColor ) { + background: $toColor; /* Fallback */ + background: -ms-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* IE10 Consumer Preview */ + background: -moz-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Firefox */ + background: -o-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Opera */ + background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, $fromColor), color-stop(1, $toColor)); /* Webkit (Safari/Chrome 10) */ + background: -webkit-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Webkit (Chrome 11+) */ + background: radial-gradient(ellipse farthest-corner at center, $fromColor 0%, $toColor 100%); /* W3C Markup, IE10 Release Preview */ +} + +@mixin keyframe ($animation_name) { + @-webkit-keyframes #{$animation_name} { + @content; + } + + @-moz-keyframes #{$animation_name} { + @content; + } + + @-o-keyframes #{$animation_name} { + @content; + } + + @keyframes #{$animation_name} { + @content; + } +} + +@mixin animation ($duration, $animation) { + -webkit-animation-duration: $duration; + -webkit-animation-name: $animation; + -webkit-animation-fill-mode: forwards; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; + -webkit-animation-direction: alternate; + + -moz-animation-duration: $duration; + -moz-animation-name: $animation; + -moz-animation-fill-mode: forwards; + -moz-animation-iteration-count: infinite; + -moz-animation-timing-function: linear; + -moz-animation-direction: alternate; + + -o-animation-duration: $duration; + -o-animation-name: $animation; + -o-animation-fill-mode: forwards; + -o-animation-iteration-count: infinite; + -o-animation-timing-function: linear; + -o-animation-direction: alternate; + + animation-duration: $duration; + animation-name: $animation; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-timing-function: linear; + animation-direction: alternate; +} + +@mixin close-icon () { + position: absolute; + top: 19px; + right: 19px; + cursor: pointer; + z-index: 12; + + &:after { + content: '\00d7'; + color: rgba(0, 0, 0, 0.5); + font-weight: bold; + font-size: 22px; + font-family: 'Courier New', Courier, monospace; + } + + &:hover { + &:after { + color: black; + } + } +} + +@mixin overlay-background () { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + + @include radial-gradient( rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.7) ); + + z-index: 10; + + // IE8- doesn't support RGBA and jQuery uses `filter:` for the fade-in + // animation, so we need a child element that is used just for the display + >div { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + + // IE7- + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); + + // IE8 + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; + } + + // IE9 has both filter and rgba support, so we need a hack to disable the filter + >div:not([dummy]) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled='false'); + } +} + +@mixin background-transision () { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + transition: background-color 500ms linear; +} + diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/processing.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/processing.scss new file mode 100644 index 00000000..f63538eb --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/processing.scss @@ -0,0 +1,106 @@ + +div.DTE { + div.DTE_Processing_Indicator { + position: absolute; + top: 17px; + right: 42px; + height: 2em; + width: 2em; + z-index: 20; + font-size: 12px; + display: none; + + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + } + + &.processing { + div.DTE_Processing_Indicator { + display: block; + } + + div.DTE_Field div.DTE_Processing_Indicator { + display: none; + } + } + + div.DTE_Field div.DTE_Processing_Indicator { + top: 13px; + right: 0; + font-size: 8px; + } + + &.DTE_Inline { + div.DTE_Processing_Indicator { + top: 5px; + right: 6px; + font-size: 6px; + } + } + + &.DTE_Bubble { + div.DTE_Processing_Indicator { + top: 10px; + right: 14px; + font-size: 8px; + } + } + + div.DTE_Processing_Indicator span, + div.DTE_Processing_Indicator:before, + div.DTE_Processing_Indicator:after { + display: block; + background: black; + width: 0.5em; + height: 1.5em; + border: 1px solid rgba( 0, 0, 0, 0.4 ); + background-color: rgba( 0, 0, 0, 0.1 ); + + -webkit-animation: editorProcessing 0.9s infinite ease-in-out; + animation: editorProcessing 0.9s infinite ease-in-out; + } + + div.DTE_Processing_Indicator:before, + div.DTE_Processing_Indicator:after { + position: absolute; + top: 0; + content: ''; + } + + div.DTE_Processing_Indicator:before { + left: -1em; + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; + } + + div.DTE_Processing_Indicator span { + -webkit-animation-delay: -0.15s; + animation-delay: -0.15s; + } + + div.DTE_Processing_Indicator:after { + left: 1em; + } + + @-webkit-keyframes editorProcessing { + 0%, + 80%, + 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } + } + @keyframes editorProcessing { + 0%, + 80%, + 100% { + transform: scale(1, 1); + } + 40% { + transform: scale(1, 1.5); + } + } +} diff --git a/httpdocs/themes/vuexy/css/datatables-editor/scss/upload.scss b/httpdocs/themes/vuexy/css/datatables-editor/scss/upload.scss new file mode 100644 index 00000000..9255e98f --- /dev/null +++ b/httpdocs/themes/vuexy/css/datatables-editor/scss/upload.scss @@ -0,0 +1,143 @@ + +div.DTE div.editor_upload { + padding-top: 4px; + + div.eu_table { + display: table; + width: 100%; + } + + div.row { + display: table-row; + } + + div.cell { + display: table-cell; + position: relative; + width: 50%; + vertical-align: top; + } + + div.cell + div.cell { + padding-left: 10px; + } + + div.row + div.row { + div.cell { + padding-top: 10px; + } + } + + button.btn, + input[type=file] { + width: 100%; + height: 2.3em; + font-size: 0.8em; + text-align: center; + line-height: 1em; + margin: 0; + } + + input[type=file] { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; + } + + div.drop { + position: relative; + box-sizing: border-box; + width: 100%; + height: 100%; + border: 3px dashed #ccc; + border-radius: 6px; + min-height: 4em; + color: #999; + text-align: center; + padding: 1em 2em; + line-height: 1.1em; + + &.over { + border: 3px dashed #111; + color: #111; + } + + span { + max-width: 75%; + font-size: 0.85em; + line-height: 1em; + } + } + + div.rendered { + img { + max-width: 8em; + margin: 0 auto; + } + } + + &.noDrop { + div.drop { + display: none; + } + + div.row.second { + display: none; + } + + div.rendered { + margin-top: 10px; + } + } + + &.noClear { + div.clearValue button { + display: none; + } + } + + &.multi { + div.cell { + display: block; + width: 100%; + + div.drop { + min-height: 0; + } + } + + div.clearValue { + display: none; + } + + ul { + list-style-type: none; + margin: 0; + padding: 0; + + li { + position: relative; + margin-top: 0.5em; + + &:first-child { + margin-top: 0; + } + + img { + vertical-align: middle; + } + + button { + position: absolute; + width: 40px; + right: 0; + top: 50%; + margin-top: -1.5em; + } + } + } + } +} + diff --git a/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.js b/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.js new file mode 100644 index 00000000..8c4343a8 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.js @@ -0,0 +1,6830 @@ +/*! DataTables Editor v2.1.3 + * + * ©2012-2023 SpryMedia Ltd, all rights reserved. + * License: editor.datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + var jq = require('jquery'); + var cjsRequires = function (root, $) { + if ( ! $.fn.dataTable ) { + require('datatables.net')(root, $); + } + }; + + if (typeof window === 'undefined') { + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = jq( root ); + } + + cjsRequires( root, $ ); + return factory( $, root, root.document ); + }; + } + else { + cjsRequires( window, jq ); + module.exports = factory( jq, window, window.document ); + } + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + +var formOptions = { + buttons: true, + drawType: false, + focus: 0, + message: true, + nest: false, + onBackground: 'blur', + onBlur: 'close', + onComplete: 'close', + onEsc: 'close', + onFieldError: 'focus', + onReturn: 'submit', + scope: 'row', + submit: 'all', + submitHtml: '▶', + submitTrigger: null, + title: true +}; + +var defaults$1 = { + /** + * Parameter name to use to submit data to the server. + * + * @type string + */ + actionName: 'action', + /** + * Control how the Ajax call to update data on the server. + * + * This option matches the `dt-init ajax` option in that is can be provided + * in one of three different ways: + * + * * string - As a string, the value given is used as the url to target + * the Ajax request to, using the default Editor Ajax options. Note that + * for backwards compatibility you can use the form "METHOD URL" - for + * example: `"PUT api/users"`, although it is recommended you use the + * object form described below. + * * object - As an object, the `ajax` property has two forms: + * * Used to extend and override the default Ajax options that Editor + * uses. This can be very useful for adding extra data for example, or + * changing the HTTP request type. + * * With `create`, `edit` and `remove` properties, Editor will use the + * option for the action that it is taking, which can be useful for + * REST style interfaces. The value of each property can be a string, + * object or function, using exactly the same options as the main `ajax` + * option. All three options must be defined if this form is to be used. + * * function - As a function this gives complete control over the method + * used to update the server (if indeed a server is being used!). For + * example, you could use a different data store such as localStorage, + * Firebase or route the data through a web-socket. + * + * @example + * // As a string - all actions are submitted to this URI as POST requests + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": 'php/index.php', + * "table": "#example" + * } ); + * } ); + * + * @example + * // As an object - using GET rather than POST + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": { + * "type": 'GET', + * "url": 'php/index.php + * }, + * "table": "#example" + * } ); + * } ); + * + * @example + * // As an object - each action is submitted to a different URI as POST requests + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": { + * "create": "/rest/user/create", + * "edit": "/rest/user/_id_/edit", + * "remove": "/rest/user/_id_/delete" + * }, + * "table": "#example" + * } ); + * } ); + * + * @example + * // As an object - with different HTTP methods for each action + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": { + * "create": { + * type: 'POST', + * url: '/rest/user/create' + * }, + * "edit": { + * type: 'PUT', + * url: '/rest/user/edit/_id_' + * }, + * "remove": { + * type: 'DELETE', + * url: '/rest/user/delete' + * } + * }, + * "table": "#example" + * } ); + * } ); + * + * // As a function - Making a custom `$.ajax` call + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "table": "#example", + * "ajax": function ( method, url, data, successCallback, errorCallback ) { + * $.ajax( { + * "type": method, + * "url": url, + * "data": data, + * "dataType": "json", + * "success": function (json) { + * successCallback( json ); + * }, + * "error": function (xhr, error, thrown) { + * errorCallback( xhr, error, thrown ); + * } + * } ); + * } + * } ); + * } ); + */ + ajax: null, + /** + * The display controller for the form. The form itself is just a collection of + * DOM elements which require a display container. This display controller allows + * the visual appearance of the form to be significantly altered without major + * alterations to the Editor code. There are two display controllers built into + * Editor *lightbox* and *envelope*. The value of this property will + * be used to access the display controller defined in {@link Editor.display} + * for the given name. Additional display controllers can be added by adding objects + * to that object, through extending the displayController model: + * {@link Editor.models.displayController}. + * + * @type string + * @default lightbox + * + * @example + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example", + * "display": 'envelope' + * } ); + * } ); + */ + display: 'lightbox', + /** + * Events / callbacks - event handlers can be assigned as an individual function + * during initialisation using the parameters in this name space. The names, and + * the parameters passed to each callback match their event equivalent in the + * {@link Editor} object. + * + * @namespace + * @deprecated Since 1.3. Use the `on()` API method instead. Note that events + * passed in do still operate as they did in 1.2- but are no longer + * individually documented. + */ + events: {}, + /** + * Fields to initialise the form with - see {@link Editor.models.field} for + * a full list of the options available to each field. Note that if fields are not + * added to the form at initialisation time using this option, they can be added using + * the {@link Editor#add} API method. + * + * @type array + * @default [] + * + * @example + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example", + * "fields": [ { + * "label": "User name:", + * "name": "username" + * } + * // More fields would typically be added here! + * } ] + * } ); + * } ); + */ + fields: [], + formOptions: { + bubble: $.extend({}, formOptions, { + buttons: '_basic', + message: false, + submit: 'changed', + title: false + }), + inline: $.extend({}, formOptions, { + buttons: false, + submit: 'changed' + }), + main: $.extend({}, formOptions) + }, + /** + * Internationalisation options for Editor. All client-side strings that the + * end user can see in the interface presented by Editor can be modified here. + * + * You may also wish to refer to the + * DataTables internationalisation options to provide a fully language + * customised table interface. + * + * @namespace + * + * @example + * // Set the 'create' button text. All other strings used are the + * // default values. + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "create": { + * "button": "New user" + * } + * } + * } ); + * + * @example + * // Set the submit text for all three actions + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "create": { + * "submit": "Create new user" + * }, + * "edit": { + * "submit": "Update user" + * }, + * "remove": { + * "submit": "Remove user" + * } + * } + * } ); + */ + i18n: { + /** + * Close button title text + * + * @type string + * @default Close + */ + close: 'Close', + /** + * Strings used when working with the Editor 'create' action (creating new + * records). + * + * @namespace + */ + create: { + /** + * Buttons button text + * + * @type string + * @default New + */ + button: 'New', + /** + * Submit button text + * + * @type string + * @default Create + */ + submit: 'Create', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Create new entry + */ + title: 'Create new entry' + }, + datetime: { + amPm: ['am', 'pm'], + hours: 'Hour', + minutes: 'Minute', + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December' + ], + next: 'Next', + previous: 'Previous', + seconds: 'Second', + unknown: '-', + weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + }, + /** + * Strings used when working with the Editor 'edit' action (editing existing + * records). + * + * @namespace + */ + edit: { + /** + * Buttons button text + * + * @type string + * @default Edit + */ + button: 'Edit', + /** + * Submit button text + * + * @type string + * @default Update + */ + submit: 'Update', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Edit entry + */ + title: 'Edit entry' + }, + /** + * Strings used for error conditions. + * + * @namespace + */ + error: { + /** + * Generic server error message + * + * @type string + * @default + * A system error has occurred (More information) + */ + system: 'A system error has occurred (More information).' + }, + /** + * Strings used for multi-value editing + * + * @namespace + */ + multi: { + /** + * Shown below the multi title text, although only the first + * instance of this text is shown in the form to reduce redundancy + */ + info: 'The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.', + /** + * Disabled for multi-row editing + */ + noMulti: 'This input can be edited individually, but not part of a group.', + /** + * Shown below the field input when group editing a value to allow + * the user to return to the original multiple values + */ + restore: 'Undo changes', + /** + * Shown in place of the field value when a field has multiple values + */ + title: 'Multiple values' + }, + /** + * Strings used when working with the Editor 'delete' action (deleting + * existing records). + * + * @namespace + */ + remove: { + /** + * Buttons button text + * + * @type string + * @default Delete + */ + button: 'Delete', + /** + * Deletion confirmation message. + * + * As Editor has the ability to delete either a single or multiple rows + * at a time, this option can be given as either a string (which will be + * used regardless of how many records are selected) or as an object + * where the property "_" will be used (with %d substituted for the number + * of records to be deleted) as the delete message, unless there is a + * key with the number of records to be deleted. This allows Editor + * to consider the different pluralisation characteristics of different + * languages. + * + * @type object|string + * @default Are you sure you wish to delete %d rows? + * + * @example + * // String - no plural consideration + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": "Are you sure you wish to delete %d record(s)?" + * } + * } + * } ); + * + * @example + * // Basic 1 (singular) or _ (plural) + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": { + * "_": "Confirm deletion of %d records.", + * "1": "Confirm deletion of record." + * } + * } + * } ); + * + * @example + * // Singular, dual and plural + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": { + * "_": "Confirm deletion of %d records.", + * "1": "Confirm deletion of record.", + * "2": "Confirm deletion of both record." + * } + * } + * } ); + * + */ + confirm: { + 1: 'Are you sure you wish to delete 1 row?', + _: 'Are you sure you wish to delete %d rows?' + }, + /** + * Submit button text + * + * @type string + * @default Delete + */ + submit: 'Delete', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Delete + */ + title: 'Delete', + } + }, + /** + * JSON property from which to read / write the row's ID property (i.e. its + * unique column index that identifies the row to the database). By default + * Editor will use the `DT_RowId` property from the data source object + * (DataTable's magic property to set the DOM id for the row). + * + * If you want to read a parameter from the data source object instead of + * using `DT_RowId`, set this option to the property name to use. + * + * Like other data source options the `srcId` option can be given in dotted + * object notation to read nested objects. + * + * @type null|string + * @default DT_RowId + * + * @example + * // Using a data source such as: + * // { "id":12, "browser":"Chrome", ... } + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example", + * "idSrc": "id" + * } ); + * } ); + */ + idSrc: 'DT_RowId', + /** + * jQuery selector that can be used to identify the table you wish to apply + * this editor instance to. + * + * In previous versions of Editor (1.2 and earlier), this parameter was + * called `table`. The name has been altered in 1.3+ to simplify the + * initialisation. This is a backwards compatible change - if you pass in + * a `table` option it will be used. + * + * @type string + * @default Empty string + * + * @example + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example" + * } ); + * } ); + */ + table: null, +}; + +var settings = { + action: null, + actionName: 'action', + ajax: null, + bubbleNodes: [], + bubbleBottom: false, + closeCb: null, + closeIcb: null, + dataSource: null, + displayController: null, + displayed: false, + editCount: 0, + editData: {}, + editFields: {}, + editOpts: {}, + fields: {}, + formOptions: { + bubble: $.extend({}, formOptions), + inline: $.extend({}, formOptions), + main: $.extend({}, formOptions), + }, + globalError: '', + id: -1, + idSrc: null, + includeFields: [], + mode: null, + modifier: null, + opts: null, + order: [], + processing: false, + setFocus: null, + table: null, + template: null, + unique: 0 +}; + +var DataTable$6 = $.fn.dataTable; +var DtInternalApi = DataTable$6.ext.oApi; +function objectKeys(o) { + var out = []; + for (var key in o) { + if (o.hasOwnProperty(key)) { + out.push(key); + } + } + return out; +} +function el(tag, ctx) { + if (ctx === undefined) { + ctx = document; + } + return $('*[data-dte-e="' + tag + '"]', ctx); +} +function safeDomId(id, prefix) { + if (prefix === void 0) { prefix = '#'; } + return typeof id === 'string' ? + prefix + id.replace(/\./g, '-') : + prefix + id; +} +function safeQueryId(id, prefix) { + if (prefix === void 0) { prefix = '#'; } + return typeof id === 'string' ? + prefix + id.replace(/(:|\.|\[|\]|,)/g, '\\$1') : + prefix + id; +} +function dataGet(src) { + return DtInternalApi._fnGetObjectDataFn(src); +} +function dataSet(src) { + return DtInternalApi._fnSetObjectDataFn(src); +} +var extend = DtInternalApi._fnExtend; +function pluck(a, prop) { + var out = []; + $.each(a, function (idx, elIn) { + out.push(elIn[prop]); + }); + return out; +} +/** + * Compare parameters for difference - diving into arrays and objects if + * needed, allowing the object reference to be different, but the contents to + * match. + * + * Please note that LOOSE type checking is used + */ +function deepCompare(o1, o2) { + if (typeof o1 !== 'object' || typeof o2 !== 'object') { + return o1 == o2; + } + var o1Props = objectKeys(o1); + var o2Props = objectKeys(o2); + if (o1Props.length !== o2Props.length) { + return false; + } + for (var i = 0, ien = o1Props.length; i < ien; i++) { + var propName = o1Props[i]; + if (typeof o1[propName] === 'object') { + if (!deepCompare(o1[propName], o2[propName])) { + return false; + } + } + else if (o1[propName] != o2[propName]) { + return false; + } + } + return true; +} + +/* - - - - - - - - - - + * DataTables editor interface + */ +var _dtIsSsp = function (dt, editor) { + // If the draw type is `none`, then we still need to use the DT API to + // update the display with the new data + return dt.settings()[0].oFeatures.bServerSide && + editor.s.editOpts.drawType !== 'none'; +}; +var _dtApi = function (table) { + return table instanceof $.fn.dataTable.Api + ? table + : $(table).DataTable(); +}; +var _dtHighlight = function (node) { + // Highlight a row using CSS transitions. The timeouts need to match the + // transition duration from the CSS + node = $(node); + setTimeout(function () { + node.addClass('highlight'); + setTimeout(function () { + node + .addClass('noHighlight') + .removeClass('highlight'); + setTimeout(function () { + node.removeClass('noHighlight'); + }, 550); + }, 500); + }, 20); +}; +var _dtRowSelector = function (out, dt, identifier, fields, idFn) { + dt.rows(identifier).indexes().each(function (idx) { + var row = dt.row(idx); + var data = row.data(); + var idSrc = idFn(data); + if (idSrc === undefined) { + Editor.error('Unable to find row identifier', 14); + } + out[idSrc] = { + data: data, + fields: fields, + idSrc: idSrc, + node: row.node(), + type: 'row' + }; + }); +}; +var _dtFieldsFromIdx = function (dt, fields, idx, ignoreUnknown) { + var col = dt.settings()[0].aoColumns[idx]; + var dataSrc = col.editField !== undefined ? + col.editField : + col.mData; + var resolvedFields = {}; + var run = function (field, dataSrcIn) { + if (field.name() === dataSrcIn) { + resolvedFields[field.name()] = field; + } + }; + $.each(fields, function (name, fieldInst) { + if (Array.isArray(dataSrc)) { + for (var _i = 0, dataSrc_1 = dataSrc; _i < dataSrc_1.length; _i++) { + var data = dataSrc_1[_i]; + run(fieldInst, data); + } + } + else { + run(fieldInst, dataSrc); + } + }); + if ($.isEmptyObject(resolvedFields) && !ignoreUnknown) { + Editor.error('Unable to automatically determine field from source. Please specify the field name.', 11); + } + return resolvedFields; +}; +var _dtCellSelector = function (out, dt, identifier, allFields, idFn, forceFields) { + if (forceFields === void 0) { forceFields = null; } + var cells = dt.cells(identifier); + cells.indexes().each(function (idx) { + var cell = dt.cell(idx); + var row = dt.row(idx.row); + var data = row.data(); + var idSrc = idFn(data); + var fields = forceFields || _dtFieldsFromIdx(dt, allFields, idx.column, cells.count() > 1); + var isNode = (typeof identifier === 'object' && identifier.nodeName) || identifier instanceof $; + var prevDisplayFields; + var prevAttach; + var prevAttachFields; + // Only add if a field was found to edit + if (Object.keys(fields).length) { + // The row selector will create a new `out` object for the identifier, and the + // cell selector might be called multiple times for a row, so we need to save + // our specific items + if (out[idSrc]) { + prevAttach = out[idSrc].attach; + prevAttachFields = out[idSrc].attachFields; + prevDisplayFields = out[idSrc].displayFields; + } + // Use the row selector to get the row information + _dtRowSelector(out, dt, idx.row, allFields, idFn); + out[idSrc].attachFields = prevAttachFields || []; + out[idSrc].attachFields.push(Object.keys(fields)); + out[idSrc].attach = prevAttach || []; + out[idSrc].attach.push(isNode ? + $(identifier).get(0) : + cell.fixedNode ? // If its under a fixed column, get the floating node + cell.fixedNode() : + cell.node()); + out[idSrc].displayFields = prevDisplayFields || {}; + $.extend(out[idSrc].displayFields, fields); + } + }); +}; +var _dtColumnSelector = function (out, dt, identifier, fields, idFn) { + dt.cells(null, identifier).indexes().each(function (idx) { + _dtCellSelector(out, dt, idx, fields, idFn); + }); +}; +var dataSource$1 = { + commit: function (action, identifier, data, store) { + // Updates complete - redraw + var that = this; + var dt = _dtApi(this.s.table); + var ssp = dt.settings()[0].oFeatures.bServerSide; + var ids = store.rowIds; + // On edit, if there are any rows left in the `store.rowIds`, then they + // were not returned by the server and should be removed (they might not + // meet filtering requirements any more for example) + if (!_dtIsSsp(dt, this) && action === 'edit' && store.rowIds.length) { + var row = void 0; + var compare = function (id) { + return function (rowIdx, rowData, rowNode) { + return id == dataSource$1.id.call(that, rowData); + }; + }; + for (var i = 0, ien = ids.length; i < ien; i++) { + // Find the row to edit - attempt to do an id look up first for speed + try { + row = dt.row(safeQueryId(ids[i])); + } + catch (e) { + row = dt; + } + // If not found, then we need to do it the slow way + if (!row.any()) { + row = dt.row(compare(ids[i])); + } + if (row.any() && !ssp) { + row.remove(); + } + } + } + var drawType = this.s.editOpts.drawType; + if (drawType !== 'none') { + var dtAny = dt; + // SSP highlighting has to go after the draw, but this can't be + // merged with client-side processing highlight as we want that + // to work even when there isn't a draw happening. + if (ssp && ids && ids.length) { + dt.one('draw', function () { + for (var i = 0, ien = ids.length; i < ien; i++) { + var row = dt.row(safeQueryId(ids[i])); + if (row.any()) { + _dtHighlight(row.node()); + } + } + }); + } + dt.draw(drawType); + // Responsive needs to take account of new data column widths + if (dtAny.responsive) { + dtAny.responsive.recalc(); + } + // Rebuild searchpanes + if (typeof dtAny.searchPanes === 'function' && !ssp) { + dtAny.searchPanes.rebuildPane(undefined, true); + } + // Rebuild searchbuilder + if (dtAny.searchBuilder !== undefined && typeof dtAny.searchBuilder.rebuild === 'function' && !ssp) { + dtAny.searchBuilder.rebuild(dtAny.searchBuilder.getDetails()); + } + } + }, + create: function (fields, data) { + var dt = _dtApi(this.s.table); + if (!_dtIsSsp(dt, this)) { + var row = dt.row.add(data); + _dtHighlight(row.node()); + } + }, + edit: function (identifier, fields, data, store) { + var that = this; + var dt = _dtApi(this.s.table); + // No point in doing anything when server-side processing - the commit + // will redraw the table + if (!_dtIsSsp(dt, this) || this.s.editOpts.drawType === 'none') { + // The identifier can select one or more rows, but the data will + // refer to just a single row. We need to determine which row from + // the set is the one to operator on. + var rowId_1 = dataSource$1.id.call(this, data); + var row = void 0; + // Find the row to edit - attempt to do an id look up first for speed + try { + row = dt.row(safeQueryId(rowId_1)); + } + catch (e) { + row = dt; + } + // If not found, then we need to do it the slow way + if (!row.any()) { + row = dt.row(function (rowIdx, rowData, rowNode) { + return rowId_1 == dataSource$1.id.call(that, rowData); + }); + } + if (row.any()) { + // Merge data to allow for a sub-set to be returned + var toSave = extend({}, row.data(), true); + toSave = extend(toSave, data, true); + row.data(toSave); + // Remove the item from the list of indexes now that is has been + // updated + var idx = $.inArray(rowId_1, store.rowIds); + store.rowIds.splice(idx, 1); + } + else { + // If not found, then its a new row (change in pkey possibly) + row = dt.row.add(data); + } + _dtHighlight(row.node()); + } + }, + fakeRow: function (insertPoint) { + var dt = _dtApi(this.s.table); + var tr = $('
                                                                                                                                                                      ').appendTo(tr); + var fields = _dtFieldsFromIdx(dt, this.s.fields, visIdx, true); + var settings = dt.settings()[0]; + var className = settings.aoColumns[visIdx].sClass; + if (className) { + td.addClass(className); + } + if (Object.keys(fields).length) { + attachFields.push(Object.keys(fields)); + attach.push(td[0]); + $.extend(displayFields, fields); + } + } + var append = function () { + // Remove the data empty message + if (dt.page.info().recordsDisplay === 0) { + $(tbody).empty(); + } + var action = insertPoint === 'end' + ? 'appendTo' + : 'prependTo'; + tr[action](tbody); + }; + this.__dtFakeRow = tr; + // Insert into the table + append(); + dt.on('draw.dte-createInline', function () { + append(); + }); + return { + 0: { + attach: attach, + attachFields: attachFields, + displayFields: displayFields, + fields: this.s.fields, + type: 'row' + } + }; + }, + fakeRowEnd: function () { + var dt = _dtApi(this.s.table); + dt.off('draw.dte-createInline'); + this.__dtFakeRow.remove(); + this.__dtFakeRow = null; + // Restore data empty row + if (dt.page.info().recordsDisplay === 0) { + dt.draw(false); + } + }, + // get idSrc, fields to edit, data and node for each item + fields: function (identifier) { + var idFn = dataGet(this.s.idSrc); + var dt = _dtApi(this.s.table); + var fields = this.s.fields; + var out = {}; + if ($.isPlainObject(identifier) && + (identifier.rows !== undefined || identifier.columns !== undefined || identifier.cells !== undefined)) { + // Multi-item type selector + if (identifier.rows !== undefined) { + _dtRowSelector(out, dt, identifier.rows, fields, idFn); + } + if (identifier.columns !== undefined) { + _dtColumnSelector(out, dt, identifier.columns, fields, idFn); + } + if (identifier.cells !== undefined) { + _dtCellSelector(out, dt, identifier.cells, fields, idFn); + } + } + else { + // Just a rows selector + _dtRowSelector(out, dt, identifier, fields, idFn); + } + return out; + }, + id: function (data) { + var idFn = dataGet(this.s.idSrc); + return idFn(data); + }, + individual: function (identifier, fieldNames) { + var idFn = dataGet(this.s.idSrc); + var dt = _dtApi(this.s.table); + var fields = this.s.fields; + var out = {}; + var forceFields; + if (fieldNames) { + if (!Array.isArray(fieldNames)) { + fieldNames = [fieldNames]; + } + forceFields = {}; + $.each(fieldNames, function (i, name) { + forceFields[name] = fields[name]; + }); + } + _dtCellSelector(out, dt, identifier, fields, idFn, forceFields); + return out; + }, + prep: function (action, identifier, submit, json, store) { + var _this = this; + // Get the id of the rows created / edited + if (action === 'create') { + store.rowIds = $.map(json.data, function (row) { return dataSource$1.id.call(_this, row); }); + } + if (action === 'edit') { + var cancelled_1 = json.cancelled || []; + store.rowIds = $.map(submit.data, function (val, key) { + return !$.isEmptyObject(submit.data[key]) && // was submitted + $.inArray(key, cancelled_1) === -1 ? // was not cancelled on the server-side + key : + undefined; + }); + } + else if (action === 'remove') { + store.cancelled = json.cancelled || []; + } + }, + refresh: function () { + // Reload a table's data - used when nested data is changed + var dt = _dtApi(this.s.table); + dt.ajax.reload(null, false); + }, + remove: function (identifier, fields, store) { + // No confirmation from the server + var that = this; + var dt = _dtApi(this.s.table); + var cancelled = store.cancelled; + if (cancelled.length === 0) { + // No rows were cancelled on the server-side, remove them all + dt.rows(identifier).remove(); + } + else { + // One or more rows were cancelled, so we need to identify them + // and not remove those rows + var indexes_1 = []; + dt.rows(identifier).every(function () { + var id = dataSource$1.id.call(that, this.data()); + if ($.inArray(id, cancelled) === -1) { + // Don't use `remove` here - it messes up the indexes + indexes_1.push(this.index()); + } + }); + dt.rows(indexes_1).remove(); + } + } +}; + +/* - - - - - - - - + * HTML editor interface + */ +function _htmlId(identifier) { + if (identifier === 'keyless') { + return $(document); + } + var specific = $('[data-editor-id="' + identifier + '"]'); + if (specific.length === 0) { + specific = typeof identifier === 'string' ? + $(safeQueryId(identifier)) : + $(identifier); + } + if (specific.length === 0) { + throw new Error('Could not find an element with `data-editor-id` or `id` of: ' + identifier); + } + return specific; +} +function _htmlEl(identifier, name) { + var context = _htmlId(identifier); + return $('[data-editor-field="' + name + '"]', context); +} +function _htmlEls(identifier, names) { + var out = $(); + for (var i = 0, ien = names.length; i < ien; i++) { + out = out.add(_htmlEl(identifier, names[i])); + } + return out; +} +function _htmlGet(identifier, dataSrc) { + var el = _htmlEl(identifier, dataSrc); + return el.filter('[data-editor-value]').length ? + el.attr('data-editor-value') : + el.html(); +} +function _htmlSet(identifier, fields, data) { + $.each(fields, function (name, field) { + var val = field.valFromData(data); + if (val !== undefined) { + var el = _htmlEl(identifier, field.dataSrc()); + if (el.filter('[data-editor-value]').length) { + el.attr('data-editor-value', val); + } + else { + el.each(function () { + // This is very frustrating, but in IE if you just write directly + // to innerHTML, and elements that are overwritten are GC'ed, + // even if there is a reference to them elsewhere + while (this.childNodes.length) { + this.removeChild(this.firstChild); + } + }) + .html(val); + } + } + }); +} +var dataSource = { + create: function (fields, data) { + // If there is an element with the id that has been created, then use it + // to assign the values + if (data) { + var id = dataSource.id.call(this, data); + try { + if (_htmlId(id).length) { + _htmlSet(id, fields, data); + } + } + catch (e) { + // noop - use `postCreate` to add items to the DOM + } + } + }, + edit: function (identifier, fields, data) { + // Get the ids from the returned data or `keyless` if not found + var id = dataSource.id.call(this, data) || 'keyless'; + _htmlSet(id, fields, data); + }, + // get idSrc, fields to edit, data and node for each item + fields: function (identifier) { + var out = {}; + // Allow multi-point editing + if (Array.isArray(identifier)) { + for (var i = 0, ien = identifier.length; i < ien; i++) { + var res = dataSource.fields.call(this, identifier[i]); + out[identifier[i]] = res[identifier[i]]; + } + return out; + } + // else + var data = {}; + var fields = this.s.fields; + if (!identifier) { + identifier = 'keyless'; + } + $.each(fields, function (name, field) { + var val = _htmlGet(identifier, field.dataSrc()); + // If no HTML element is present, jQuery returns null. We want undefined + field.valToData(data, val === null ? undefined : val); + }); + out[identifier] = { + data: data, + fields: fields, + idSrc: identifier, + node: document, + type: 'row' + }; + return out; + }, + id: function (data) { + var idFn = dataGet(this.s.idSrc); + return idFn(data); + }, + individual: function (identifier, fieldNames) { + var attachEl; + // Auto detection of the field name and id + if (identifier instanceof $ || identifier.nodeName) { + attachEl = identifier; + if (!fieldNames) { + fieldNames = [$(identifier).attr('data-editor-field')]; + } + var back = $.fn.addBack ? 'addBack' : 'andSelf'; + identifier = $(identifier).parents('[data-editor-id]')[back]().data('editor-id'); + } + // no id given and none found + if (!identifier) { + identifier = 'keyless'; + } + // no field name - cannot continue + if (fieldNames && !Array.isArray(fieldNames)) { + fieldNames = [fieldNames]; + } + if (!fieldNames || fieldNames.length === 0) { + throw new Error('Cannot automatically determine field name from data source'); + } + var out = dataSource.fields.call(this, identifier); + var fields = this.s.fields; + var forceFields = {}; + $.each(fieldNames, function (i, name) { + forceFields[name] = fields[name]; + }); + $.each(out, function (id, set) { + set.type = 'cell'; + set.attachFields = [fieldNames]; + set.attach = attachEl ? + $(attachEl) : + _htmlEls(identifier, fieldNames).toArray(); + set.fields = fields; + set.displayFields = forceFields; + }); + return out; + }, + initField: function (cfg) { + // This is before the field has been initialised so can't use it API + var label = $('[data-editor-label="' + (cfg.data || cfg.name) + '"]'); + if (!cfg.label && label.length) { + cfg.label = label.html(); + } + }, + remove: function (identifier, fields) { + // If there is an element with an ID property matching the identifier, + // remove it + if (identifier !== 'keyless') { + _htmlId(identifier).remove(); + } + } +}; + +/** + * Class names that are used by Editor for its various display components. + * A copy of this object is taken when an Editor instance is initialised, thus + * allowing different classes to be used in different instances if required. + * Class name changes can be useful for easy integration with CSS frameworks, + * for example Twitter Bootstrap. + * + * @namespace + */ +var classNames = { + /** + * Action classes - these are added to the Editor base element ("wrapper") + * and allows styling based on the type of form view that is being employed. + * + * @namespace + */ + actions: { + /** + * Editor is in 'create' state + */ + create: 'DTE_Action_Create', + /** + * Editor is in 'edit' state + */ + edit: 'DTE_Action_Edit', + /** + * Editor is in 'remove' state + */ + remove: 'DTE_Action_Remove' + }, + /** + * Display body classes + * + * @namespace + */ + body: { + /** + * Liner for the body content + */ + content: 'DTE_Body_Content', + /** + * Container for the body elements + */ + wrapper: 'DTE_Body' + }, + /** + * Bubble editing classes - these are used to display the bubble editor + * + * @namespace + */ + bubble: { + /** + * Fixed background + */ + bg: 'DTE_Bubble_Background', + /** + * Close button + */ + close: 'icon close', + /** + * Bubble content liner + */ + liner: 'DTE_Bubble_Liner', + /** + * Pointer shown which node is being edited + */ + pointer: 'DTE_Bubble_Triangle', + /** + * Bubble table display wrapper, so the buttons and form can be shown + * as table cells (via css) + */ + table: 'DTE_Bubble_Table', + /** + * Bubble container element + */ + wrapper: 'DTE DTE_Bubble' + }, + /** + * Field classes + * + * @namespace + */ + field: { + /** + * Field is disabled + */ + 'disabled': 'disabled', + /** + * Field error state (added to the field.wrapper element when in error state + */ + 'error': 'DTE_Field_StateError', + /** + * Field input container + */ + 'input': 'DTE_Field_Input', + /** + * Input elements wrapper + */ + 'inputControl': 'DTE_Field_InputControl', + /** + * Field label + */ + 'label': 'DTE_Label', + /** + * Error information text + */ + 'msg-error': 'DTE_Field_Error', + /** + * General information text + */ + 'msg-info': 'DTE_Field_Info', + /** + * Label information text + */ + 'msg-label': 'DTE_Label_Info', + /** + * Live messaging (API) information text + */ + 'msg-message': 'DTE_Field_Message', + /** + * Multi-value information descriptive text + */ + 'multiInfo': 'multi-info', + /** + * Multi-value not editable (field.multiEditable) + */ + 'multiNoEdit': 'multi-noEdit', + /** + * Multi-value information display + */ + 'multiRestore': 'multi-restore', + /** + * Multi-value information display wrapper + */ + 'multiValue': 'multi-value', + /** + * Class prefix for the field name - field name is added to the end allowing + * styling based on field name. + */ + 'namePrefix': 'DTE_Field_Name_', + /** + * Field's processing element + */ + 'processing': 'DTE_Processing_Indicator', + /** + * Class prefix for the field type - field type is added to the end allowing + * styling based on field type. + */ + 'typePrefix': 'DTE_Field_Type_', + /** + * Container for each field + */ + 'wrapper': 'DTE_Field' + }, + /** + * Display footer classes + * + * @namespace + */ + footer: { + /** + * Liner for the footer content + */ + content: 'DTE_Footer_Content', + /** + * Container for the footer elements + */ + wrapper: 'DTE_Footer' + }, + /** + * Form classes + * + * @namespace + */ + form: { + /** + * Button + */ + button: 'btn', + /** + * Button inside the form + */ + buttonInternal: 'btn', + /** + * Buttons container + */ + buttons: 'DTE_Form_Buttons', + /** + * Liner for the form content + */ + content: 'DTE_Form_Content', + /** + * Global error imformation + */ + error: 'DTE_Form_Error', + /** + * Global form information + */ + info: 'DTE_Form_Info', + /** + * Applied to the
                                                                                                                                                                      tag + */ + tag: '', + /** + * Container for the form elements + */ + wrapper: 'DTE_Form' + }, + /** + * Display header classes + * + * @namespace + */ + header: { + /** + * Liner for the header content + */ + content: 'DTE_Header_Content', + /** + * Title tag + */ + title: { + tag: null, + class: '' + }, + /** + * Container for the header elements + */ + wrapper: 'DTE_Header' + }, + /** + * Inline editing classes - these are used to display the inline editor + * + * @namespace + */ + inline: { + buttons: 'DTE_Inline_Buttons', + liner: 'DTE_Inline_Field', + wrapper: 'DTE DTE_Inline', + }, + /** + * Processing classes + * + * @namespace + */ + processing: { + /** + * Added to the base element ("wrapper") when the form is "processing" + */ + active: 'processing', + /** + * Processing indicator element + */ + indicator: 'DTE_Processing_Indicator' + }, + /** + * Applied to the base DIV element that contains all other Editor elements + */ + wrapper: 'DTE' +}; + +var displayed$2 = false; +var cssBackgroundOpacity = 1; +var dom$1 = { + background: $('
                                                                                                                                                                      ')[0], + close: $('
                                                                                                                                                                      ')[0], + content: null, + wrapper: $('
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ')[0] +}; +function findAttachRow(editor, attach) { + var dt = new $.fn.dataTable.Api(editor.s.table); + // Figure out where we want to put the form display + if (attach === 'head') { + return dt.table(undefined).header(); // typing error in DT type file + } + else if (editor.s.action === 'create') { + return dt.table(undefined).header(); + } + else { + return dt.row(editor.s.modifier).node(); + } +} +function heightCalc$1(dte) { + // Set the max-height for the form content + var header = $('div.DTE_Header', dom$1.wrapper).outerHeight(); + var footer = $('div.DTE_Footer', dom$1.wrapper).outerHeight(); + var maxHeight = $(window).height() - (envelope.conf.windowPadding * 2) - + header - footer; + $('div.DTE_Body_Content', dom$1.wrapper).css('maxHeight', maxHeight); + return $(dte.dom.wrapper).outerHeight(); +} +function hide$2(dte, callback) { + if (!callback) { + callback = function () { }; + } + if (displayed$2) { + $(dom$1.content).animate({ + top: -(dom$1.content.offsetHeight + 50) + }, 600, function () { + $([dom$1.wrapper, dom$1.background]).fadeOut('normal', function () { + $(this).detach(); + callback(); + }); + }); + displayed$2 = false; + } +} +function init$1() { + dom$1.content = $('div.DTED_Envelope_Container', dom$1.wrapper)[0]; + cssBackgroundOpacity = $(dom$1.background).css('opacity'); +} +function show$2(dte, callback) { + if (!callback) { + callback = function () { }; + } + $('body') + .append(dom$1.background) + .append(dom$1.wrapper); + // Adjust size for the content + dom$1.content.style.height = 'auto'; + if (!displayed$2) { + var style = dom$1.wrapper.style; + style.opacity = '0'; + style.display = 'block'; + var height = heightCalc$1(dte); + var targetRow = findAttachRow(dte, envelope.conf.attach); + var width = targetRow.offsetWidth; + style.display = 'none'; + style.opacity = '1'; + // Prep the display + dom$1.wrapper.style.width = width + 'px'; + dom$1.wrapper.style.marginLeft = -(width / 2) + 'px'; + dom$1.wrapper.style.top = ($(targetRow).offset().top + targetRow.offsetHeight) + 'px'; + dom$1.content.style.top = ((-1 * height) - 20) + 'px'; + // Start animating in the background + dom$1.background.style.opacity = '0'; + dom$1.background.style.display = 'block'; + $(dom$1.background).animate({ + opacity: cssBackgroundOpacity + }, 'normal'); + // Animate in the display + $(dom$1.wrapper).fadeIn(); + $(dom$1.content).animate({ top: 0 }, 600, callback); + } + // Event handlers + $(dom$1.close) + .attr('title', dte.i18n.close) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + dte.close(); + }); + $(dom$1.background) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + dte.background(); + }); + $('div.DTED_Lightbox_Content_Wrapper', dom$1.wrapper) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + if ($(e.target).hasClass('DTED_Envelope_Content_Wrapper')) { + dte.background(); + } + }); + $(window) + .off('resize.DTED_Envelope') + .on('resize.DTED_Envelope', function () { + heightCalc$1(dte); + }); + displayed$2 = true; +} +var envelope = { + close: function (dte, callback) { + hide$2(dte, callback); + }, + conf: { + attach: 'row', + windowPadding: 50 + }, + destroy: function (dte) { + hide$2(); + }, + init: function (dte) { + init$1(); + return envelope; + }, + node: function (dte) { + return dom$1.wrapper[0]; + }, + open: function (dte, append, callback) { + $(dom$1.content).children().detach(); + dom$1.content.appendChild(append); + dom$1.content.appendChild(dom$1.close); + show$2(dte, callback); + } +}; + +function isMobile() { + return typeof window.orientation !== 'undefined' && window.outerWidth <= 576 + ? true + : false; +} +var displayed$1 = false; +var ready = false; +var scrollTop = 0; +var dom = { + background: $('
                                                                                                                                                                      '), + close: $('
                                                                                                                                                                      '), + content: null, + wrapper: $('
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ') +}; +function heightCalc() { + var headerFooter = $('div.DTE_Header', dom.wrapper).outerHeight() + + $('div.DTE_Footer', dom.wrapper).outerHeight(); + if (isMobile()) { + $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', 'calc(100vh - ' + headerFooter + 'px)'); + } + else { + // Set the max-height for the form content + var maxHeight = $(window).height() - (self.conf.windowPadding * 2) - headerFooter; + $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', maxHeight); + } +} +function hide$1(dte, callback) { + if (!callback) { + callback = function () { }; + } + // Restore scroll state + $('body').scrollTop(scrollTop); + dte._animate(dom.wrapper, { + opacity: 0, + top: self.conf.offsetAni + }, function () { + $(this).detach(); + callback(); + }); + dte._animate(dom.background, { + opacity: 0 + }, function () { + $(this).detach(); + }); + displayed$1 = false; + $(window).off('resize.DTED_Lightbox'); +} +function init() { + if (ready) { + return; + } + dom.content = $('div.DTED_Lightbox_Content', dom.wrapper); + dom.wrapper.css('opacity', 0); + dom.background.css('opacity', 0); + ready = true; +} +function show$1(dte, callback) { + // Mobiles have very poor position fixed abilities, so we need to know + // when using mobile A media query isn't good enough + if (isMobile()) { + $('body').addClass('DTED_Lightbox_Mobile'); + } + $('body') + .append(dom.background) + .append(dom.wrapper); + heightCalc(); + if (!displayed$1) { + displayed$1 = true; + dom.content.css('height', 'auto'); + dom.wrapper.css({ + top: -self.conf.offsetAni + }); + dte._animate(dom.wrapper, { + opacity: 1, + top: 0 + }, callback); + dte._animate(dom.background, { + opacity: 1 + }); + $(window).on('resize.DTED_Lightbox', function () { + heightCalc(); + }); + scrollTop = $('body').scrollTop(); + } + // Event handlers - assign on show, premoving previous bindings + dom.close + .attr('title', dte.i18n.close) + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + dte.close(); + }); + dom.background + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + e.stopImmediatePropagation(); + dte.background(); + }); + $('div.DTED_Lightbox_Content_Wrapper', dom.wrapper) + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + if ($(e.target).hasClass('DTED_Lightbox_Content_Wrapper')) { + e.stopImmediatePropagation(); + dte.background(); + } + }); +} +var self = { + close: function (dte, callback) { + hide$1(dte, callback); + }, + conf: { + offsetAni: 25, + windowPadding: 25 + }, + destroy: function (dte) { + if (displayed$1) { + hide$1(dte); + } + }, + init: function (dte) { + init(); + return self; + }, + node: function (dte) { + return dom.wrapper[0]; + }, + open: function (dte, append, callback) { + var content = dom.content; + content.children().detach(); + content + .append(append) + .append(dom.close); + show$1(dte, callback); + }, +}; + +var DataTable$5 = $.fn.dataTable; +/** + * Add a new field to the from. This is the method that is called automatically when + * fields are given in the initialisation objects as `Editor.defaults.fields`. + * + * @param this Editor instance + * @param cfg The object that describes the field (the full + * object is described by `Editor.model.field`. Note that multiple + * fields can be given by passing in an array of field definitions. + * @param after Existing field to insert the new field after. This + * can be `undefined` (insert at end), `null` (insert at start) or `string` + * the field name to insert after. + * @param reorder INTERNAL for array adding performance only + * @returns Editor instance + */ +function add(cfg, after, reorder) { + if (reorder === void 0) { reorder = true; } + // Allow multiple fields to be added at the same time + if (Array.isArray(cfg)) { + // Do it in reverse to allow fields to appear in the same order given, otherwise, + // the would appear in reverse if given an `after` + if (after !== undefined) { + cfg.reverse(); + } + for (var _i = 0, cfg_1 = cfg; _i < cfg_1.length; _i++) { + var cfgDp = cfg_1[_i]; + this.add(cfgDp, after, false); + } + this._displayReorder(this.order()); + return this; + } + var name = cfg.name; + if (name === undefined) { + throw new Error('Error adding field. The field requires a `name` option'); + } + if (this.s.fields[name]) { + throw new Error('Error adding field \'' + name + '\'. A field already exists with this name'); + } + // Allow the data source to add / modify the field properties + // Dev: would this be better as an event `preAddField`? And have the + // data sources init only once, but can listen for such events? More + // complexity, but probably more flexible... + this._dataSource('initField', cfg); + var editorField = new Editor.Field(cfg, this.classes.field, this); + // If in an editing mode, we need to set the field up for the data + if (this.s.mode) { + var editFields = this.s.editFields; + editorField.multiReset(); + $.each(editFields, function (idSrc, editIn) { + var value; + if (editIn.data) { + value = editorField.valFromData(editIn.data); + } + editorField.multiSet(idSrc, value !== undefined ? + value : + editorField.def()); + }); + } + this.s.fields[name] = editorField; + if (after === undefined) { + this.s.order.push(name); + } + else if (after === null) { + this.s.order.unshift(name); + } + else { + var idx = $.inArray(after, this.s.order); + this.s.order.splice(idx + 1, 0, name); + } + if (reorder !== false) { + this._displayReorder(this.order()); + } + return this; +} +function ajax(newAjax) { + if (newAjax) { + this.s.ajax = newAjax; + return this; + } + return this.s.ajax; +} +/** + * Perform background activation tasks. + * + * This is NOT publicly documented on the Editor web-site, but rather can be + * used by display controller plug-ins to perform the required task on + * background activation. + * + * @param this Editor instance + * @returns Editor instance + */ +function background() { + var onBackground = this.s.editOpts.onBackground; + if (typeof onBackground === 'function') { + onBackground(this); + } + else if (onBackground === 'blur') { + this.blur(); + } + else if (onBackground === 'close') { + this.close(); + } + else if (onBackground === 'submit') { + this.submit(); + } + return this; +} +/** + * Blur the currently displayed editor. + * + * A blur is different from a `close()` in that it might cause either a close or + * the form to be submitted. A typical example of a blur would be clicking on + * the background of the bubble or main editing forms - i.e. it might be a + * close, or it might submit depending upon the configuration, while a click on + * the close box is a very definite close. + * + * @returns Editor instance + */ +function blur() { + this._blur(); + return this; +} +function bubble(cells, fieldNames, showIn, opts) { + var _this = this; + if (showIn === void 0) { showIn = true; } + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.bubble(cells, fieldNames, opts); + })) { + return this; + } + // Argument shifting + if ($.isPlainObject(fieldNames)) { + opts = fieldNames; + fieldNames = undefined; + showIn = true; + } + else if (typeof fieldNames === 'boolean') { + showIn = fieldNames; + fieldNames = undefined; + opts = undefined; + } + if ($.isPlainObject(showIn)) { + opts = showIn; + showIn = true; + } + if (showIn === undefined) { + showIn = true; + } + opts = $.extend({}, this.s.formOptions.bubble, opts); + var editFields = this._dataSource('individual', cells, fieldNames); + this._edit(cells, editFields, 'bubble', opts, function () { + var namespace = _this._formOptions(opts); + var ret = _this._preopen('bubble'); + if (!ret) { + return _this; + } + // Keep the bubble in position on resize + $(window).on('resize.' + namespace + ' scroll.' + namespace, function () { + _this.bubblePosition(); + }); + // Store the nodes this are being used so the bubble can be positioned + var nodes = []; + _this.s.bubbleNodes = nodes.concat.apply(nodes, pluck(editFields, 'attach')); + // Create container display + var classes = _this.classes.bubble; + var backgroundNode = $('
                                                                                                                                                                      '); + var container = $('
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      '); + if (showIn) { + container.appendTo('body'); + backgroundNode.appendTo('body'); + } + var liner = container.children().eq(0); + var tableNode = liner.children(); + var closeNode = tableNode.children(); + liner.append(_this.dom.formError); + tableNode.prepend(_this.dom.form); + if (opts.message) { + liner.prepend(_this.dom.formInfo); + } + if (opts.title) { + liner.prepend(_this.dom.header); + } + if (opts.buttons) { + tableNode.append(_this.dom.buttons); + } + // Need to use a small anon function here as the animate callback is the scope + // of the element being animated and TS won't allow access to the private methods + var finish = function () { + _this._clearDynamicInfo(); + _this._event('closed', ['bubble']); + }; + var pair = $().add(container).add(backgroundNode); + _this._closeReg(function (submitComplete) { + _this._animate(pair, { opacity: 0 }, function () { + if (this === container[0]) { + pair.detach(); + $(window).off('resize.' + namespace + ' scroll.' + namespace); + finish(); + } + }); + }); + // Close event handlers + backgroundNode.on('click', function () { + _this.blur(); + }); + closeNode.on('click', function () { + _this._close(); + }); + _this.bubblePosition(); + _this._postopen('bubble', false); + var opened = function () { + _this._focus(_this.s.includeFields, opts.focus); + _this._event('opened', ['bubble', _this.s.action]); + }; + _this._animate(pair, { opacity: 1 }, function () { + // Otherwise the callback will happen on both elements + if (this === container[0]) { + opened(); + } + }); + }); + return this; +} +/** + * Reposition the editing bubble (`bubble()`) when it is visible. This can be + * used to update the bubble position if other elements on the page change + * position. Editor will automatically call this method on window resize. + * + * @returns Editor instance + */ +function bubblePosition() { + var wrapper = $('div.DTE_Bubble'); + var liner = $('div.DTE_Bubble_Liner'); + var nodes = this.s.bubbleNodes; + // Average the node positions to insert the container + var position = { bottom: 0, left: 0, right: 0, top: 0 }; + $.each(nodes, function (i, nodeIn) { + var pos = $(nodeIn).offset(); + nodeIn = $(nodeIn).get(0); + position.top += pos.top; + position.left += pos.left; + position.right += pos.left + nodeIn.offsetWidth; + position.bottom += pos.top + nodeIn.offsetHeight; + }); + position.top /= nodes.length; + position.left /= nodes.length; + position.right /= nodes.length; + position.bottom /= nodes.length; + var top = position.top; + var left = (position.left + position.right) / 2; + var width = liner.outerWidth(); + var height = liner.outerHeight(); + var visLeft = left - (width / 2); + var visRight = visLeft + width; + var docWidth = $(window).width(); + var viewportTop = $(window).scrollTop(); + var padding = 15; + // Show above or below depending on bubbleBottom + wrapper.css({ + left: left, + top: this.s.bubbleBottom ? position.bottom : top + }); + if (this.s.bubbleBottom) { + wrapper.addClass('below'); + } + var curPosition = wrapper.position(); + // Correct for overflow below the fold + if (liner.length && curPosition.top + height > viewportTop + window.innerHeight) { + wrapper + .css('top', top) + .removeClass('below'); + this.s.bubbleBottom = false; + } + else if (liner.length && curPosition.top - height < viewportTop) { + // Correct for overflow from the top of the document by positioning below + // the field if needed + wrapper + .css('top', position.bottom) + .addClass('below'); + this.s.bubbleBottom = true; + } + // Attempt to correct for overflow to the right of the document + if (visRight + padding > docWidth) { + var diff = visRight - docWidth; + // If left overflowing, that takes priority + liner.css('left', visLeft < padding ? + -(visLeft - padding) : + -(diff + padding)); + } + else { + // Correct overflow to the left + liner.css('left', visLeft < padding ? -(visLeft - padding) : 0); + } + return this; +} +/** + * Setup the buttons that will be shown in the footer of the form - calling this + * method will replace any buttons which are currently shown in the form. + * + * @param this Editor instance + * @param buttonsIn A single button definition to add to the form or + * an array of objects with the button definitions to add more than one button. + * The options for the button definitions are fully defined by the + * @returns Editor instance + */ +function buttons(buttonsIn) { + var _this = this; + if (buttonsIn === '_basic') { + // Special string to create a basic button - undocumented + buttonsIn = [{ + action: function () { + this.submit(); + }, + text: this.i18n[this.s.action].submit + }]; + } + else if (!Array.isArray(buttonsIn)) { + // Allow a single button to be passed in as an object with an array + buttonsIn = [buttonsIn]; + } + $(this.dom.buttons).empty(); + $.each(buttonsIn, function (i, btn) { + if (typeof btn === 'string') { + btn = { + action: function () { + this.submit(); + }, + text: btn + }; + } + var text = btn.text || btn.label; // legacy support + var action = btn.action || btn.fn; // legacy support + var attr = btn.attr || {}; + $('', { + class: _this.classes.form.button + (btn.className ? ' ' + btn.className : '') + }) + .html(typeof text === 'function' ? + text(_this) : + text || '') + .attr('tabindex', btn.tabIndex !== undefined ? btn.tabIndex : 0) + .attr(attr) + .on('keyup', function (e) { + if (e.which === 13 && action) { + action.call(_this); + } + }) + .on('keypress', function (e) { + // Stop the browser activating the click event - if we don't + // have this and the Ajax return is fast, the keyup in + // `_formOptions()` might trigger another submit + if (e.which === 13) { + e.preventDefault(); + } + }) + .on('click', function (e) { + e.preventDefault(); + if (action) { + action.call(_this, e); + } + }) + .appendTo(_this.dom.buttons); + }); + return this; +} +/** + * Remove fields from the form. + * + * @param this Editor instance + * @param fieldName Field to remove + * @returns Editor instance + */ +function clear(fieldName) { + var that = this; + var sFields = this.s.fields; + if (typeof fieldName === 'string') { + // Remove an individual form element + that.field(fieldName).destroy(); + delete sFields[fieldName]; + var orderIdx = $.inArray(fieldName, this.s.order); + this.s.order.splice(orderIdx, 1); + var includeIdx = $.inArray(fieldName, this.s.includeFields); + if (includeIdx !== -1) { + this.s.includeFields.splice(includeIdx, 1); + } + } + else { + $.each(this._fieldNames(fieldName), function (i, name) { + that.clear(name); + }); + } + return this; +} +/** + * Close the form display. + * + * @param this Editor instance + * @returns Editor instance + */ +function close() { + this._close(false); + return this; +} +function create(arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + var sFields = this.s.fields; + var count = 1; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.create(arg1, arg2, arg3, arg4); + })) { + return this; + } + // Multi-row creation support (only supported by the 1.3+ style of calling + // this method, so a max of three arguments + if (typeof arg1 === 'number') { + count = arg1; + arg1 = arg2; + arg2 = arg3; + } + // Set up the edit fields for submission + this.s.editFields = {}; + for (var i = 0; i < count; i++) { + this.s.editFields[i] = { + fields: this.s.fields + }; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + this.s.mode = 'main'; + this.s.action = 'create'; + this.s.modifier = null; + this.dom.form.style.display = 'block'; + this._actionClass(); + // Allow all fields to be displayed for the create form + this._displayReorder(this.fields()); + // Set the default for the fields + $.each(sFields, function (name, fieldIn) { + var def = fieldIn.def(); + fieldIn.multiReset(); + // Set a value marker for each multi, so the field + // knows what the id's are (ints in this case) + for (var i = 0; i < count; i++) { + fieldIn.multiSet(i, def); + } + fieldIn.set(def); + }); + this._event('initCreate', null, function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + }); + return this; +} +/** + * Remove dependent links from a field + * + * @param this Editor instance + * @param parent The name of the field to remove the existing dependencies + * @returns Editor instance + */ +function undependent(parent) { + if (Array.isArray(parent)) { + for (var i = 0, ien = parent.length; i < ien; i++) { + this.undependent(parent[i]); + } + return this; + } + $(this.field(parent).node()).off('.edep'); + return this; +} +/** + * Create a dependent link between two or more fields. This method is used to + * listen for a change in a field's value which will trigger updating of the + * form. This update can consist of updating an options list, changing values + * or making fields hidden / visible. + * + * @param this Editor instance + * @param parent Field(s) to attach a dependency to + * @param url Action to perform on data change + * @param optsIn Configuration options + * @returns Editor instance + */ +function dependent(parent, url, optsIn) { + var _this = this; + if (Array.isArray(parent)) { + for (var i = 0, ien = parent.length; i < ien; i++) { + this.dependent(parent[i], url, optsIn); + } + return this; + } + var that = this; + var parentField = this.field(parent); + var ajaxOpts = { + dataType: 'json', + type: 'POST' + }; + var opts = $.extend({}, { + data: null, + event: 'change', + postUpdate: null, + preUpdate: null + }, optsIn); + var update = function (json) { + if (opts.preUpdate) { + opts.preUpdate(json); + } + // Field specific + $.each({ + errors: 'error', + labels: 'label', + messages: 'message', + options: 'update', + values: 'val' + }, function (jsonProp, fieldFn) { + if (json[jsonProp]) { + $.each(json[jsonProp], function (fieldIn, valIn) { + that.field(fieldIn)[fieldFn](valIn); + }); + } + }); + // Form level + $.each(['hide', 'show', 'enable', 'disable'], function (i, key) { + if (json[key]) { + that[key](json[key], json.animate); + } + }); + if (opts.postUpdate) { + opts.postUpdate(json); + } + parentField.processing(false); + }; + // Use a delegate handler to account for field elements which are added and + // removed after `depenedent` has been called + $(parentField.node()).on(opts.event + '.edep', function (e) { + // Make sure that it was one of the field's elements that triggered the ev + if ($(parentField.node()).find(e.target).length === 0) { + return; + } + parentField.processing(true); + var data = {}; + data.rows = _this.s.editFields ? + pluck(_this.s.editFields, 'data') : + null; + data.row = data.rows ? + data.rows[0] : + null; + data.values = _this.val(); + if (opts.data) { + var ret = opts.data(data); + if (ret) { + data = ret; + } + } + if (typeof url === 'function') { + var o = url.call(_this, parentField.val(), data, update, e); + if (o) { + if (typeof o === 'object' && typeof o.then === 'function') { + o.then(function (resolved) { + if (resolved) { + update(resolved); + } + }); + } + else { + update(o); + } + } + } + else { + if ($.isPlainObject(url)) { + $.extend(ajaxOpts, url); + } + else { + ajaxOpts.url = url; + } + $.ajax($.extend(ajaxOpts, { + data: data, + success: update + })); + } + }); + return this; +} +/** + * Destroy the Editor instance, cleaning up fields, display and event handlers + */ +function destroy() { + if (this.s.displayed) { + this.close(); + } + this.clear(); + // Stick the template back into the document so it can be reused + if (this.s.template) { + $('body').append(this.s.template); + } + var controller = this.s.displayController; + if (controller.destroy) { + controller.destroy(this); + } + $(document).off('.dte' + this.s.unique); + this.dom = null; + this.s = null; +} +/** + * Disable one or more field inputs, disallowing subsequent user interaction with the + * fields until they are re-enabled. + * + * @param this Editor instance + * @param name Field(s) to disable. Disables all if not given. + * @returns Editor instance + */ +function disable(name) { + var that = this; + $.each(this._fieldNames(name), function (i, n) { + that.field(n).disable(); + }); + return this; +} +function display(showIn) { + if (showIn === undefined) { + return this.s.displayed; + } + return this[showIn ? 'open' : 'close'](); +} +/** + * Get a list of the fields that are currently shown in the Editor form. + * + * @param this Editor instance + * @returns Array of field names + */ +function displayed() { + return $.map(this.s.fields, function (fieldIn, name) { + return fieldIn.displayed() ? name : null; + }); +} +/** + * Get display controller node + * + * @returns Display controller host element + */ +function displayNode() { + return this.s.displayController.node(this); +} +function edit(items, arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.edit(items, arg1, arg2, arg3, arg4); + })) { + return this; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + this._edit(items, this._dataSource('fields', items), 'main', argOpts.opts, function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + }); + return this; +} +/** + * Enable one or more field inputs, restoring user interaction with the fields. + * + * @param this Editor instance + * @param name Field(s) to enable. If not given, all fields in the form are enabled + * @returns Editor instance + */ +function enable(name) { + var that = this; + $.each(this._fieldNames(name), function (i, n) { + that.field(n).enable(); + }); + return this; +} +function error$1(name, msg) { + var wrapper = $(this.dom.wrapper); + if (msg === undefined) { + // Global error + this._message(this.dom.formError, name, true, function () { + wrapper.toggleClass('inFormError', name !== undefined && name !== ''); + }); + // Store the error message so `inError` can check if there is an + // error or not without considering animation + this.s.globalError = name; + } + else { + // Field error + this.field(name).error(msg); + } + return this; +} +/** + * Get a field object, configured for a named field, which can then be + * manipulated through its API. + * + * @param this Editor instance + * @param name Field to get + * @returns Field instance + */ +function field(name) { + var sFields = this.s.fields; + if (!sFields[name]) { + throw new Error('Unknown field name - ' + name); + } + return sFields[name]; +} +/** + * Get a list of the fields that are used by the Editor instance. + * + * @param this Editor instance + * @returns Editor instance + */ +function fields() { + return $.map(this.s.fields, function (fieldIn, name) { + return name; + }); +} +/** + * Get data object for a file from a table and id + * + * @param name Table name + * @param id Primary key identifier + * @returns File information + */ +function file(name, id) { + var tableFromFile = this.files(name); // can throw. `this` will be Editor or + var fileFromTable = tableFromFile[id]; // DataTables.Api context. Both work. + if (!fileFromTable) { + throw new Error('Unknown file id ' + id + ' in table ' + name); + } + return tableFromFile[id]; +} +function files(name) { + if (!name) { + return Editor.files; + } + var editorTable = Editor.files[name]; + if (!editorTable) { + throw new Error('Unknown file table name: ' + name); + } + return editorTable; +} +function get(name) { + var that = this; + if (!name) { + name = this.fields(); + } + if (Array.isArray(name)) { + var out_1 = {}; + $.each(name, function (i, n) { + out_1[n] = that.field(n).get(); + }); + return out_1; + } + return this.field(name).get(); +} +/** + * Hide one or more fields from the form display. + * + * @param this Editor instance + * @param names Fields to hide. Will hide all if not given + * @param animate Animate (default true) + * @returns Editor instance + */ +function hide(names, animate) { + var that = this; + $.each(this._fieldNames(names), function (i, n) { + that.field(n).hide(animate); + }); + return this; +} +/** + * Get the ids of the rows being edited + * + * @param includeHash Include a prefixed `#`, useful if to be used as a selector + */ +function ids(includeHash) { + if (includeHash === void 0) { includeHash = false; } + return $.map(this.s.editFields, function (editIn, idSrc) { + return includeHash === true ? + '#' + idSrc : + idSrc; + }); +} +/** + * Determine if there is an error state in the form, either the form's global + * error message, or one or more fields. + * + * @param this Editor instance + * @param inNames Fields to check. All checked if not given + * @returns true if in error, false otherwise + */ +function inError(inNames) { + $(this.dom.formError); + // Is there a global error? + if (this.s.globalError) { + return true; + } + // Field specific + var names = this._fieldNames(inNames); + for (var i = 0, ien = names.length; i < ien; i++) { + if (this.field(names[i]).inError()) { + return true; + } + } + return false; +} +function inline(cell, fieldName, opts) { + var _this = this; + var that = this; + // Argument shifting + if ($.isPlainObject(fieldName)) { + opts = fieldName; + fieldName = undefined; + } + opts = $.extend({}, this.s.formOptions.inline, opts); + var editFields = this._dataSource('individual', cell, fieldName); + var keys = Object.keys(editFields); + // Only a single row + if (keys.length > 1) { + throw new Error('Cannot edit more than one row inline at a time'); + } + var editRow = editFields[keys[0]]; + // Remap so easier to use + var hosts = []; + for (var _i = 0, _a = editRow.attach; _i < _a.length; _i++) { + var row = _a[_i]; + hosts.push(row); + } + // Already in edit mode for this cell? + if ($('div.DTE_Field', hosts).length) { + return this; + } + // Some other field in inline edit mode? + if (this._tidy(function () { + that.inline(cell, fieldName, opts); + })) { + return this; + } + // Start a full row edit, but don't display - we will be showing the field + this._edit(cell, editFields, 'inline', opts, function () { + _this._inline(editFields, opts); + }); + return this; +} +/** + * Inline creation of data. + * + * @param this Editor instance + * @param insertPoint Where to insert the create row + * @param opts Form options + * @returns Editor instance + */ +function inlineCreate(insertPoint, opts) { + var _this = this; + // Argument juggling - allow no insert point, just options + if ($.isPlainObject(insertPoint)) { + opts = insertPoint; + insertPoint = null; + } + if (this._tidy(function () { + _this.inlineCreate(insertPoint, opts); + })) { + return this; + } + // Set the default for the fields + $.each(this.s.fields, function (name, fieldIn) { + fieldIn.multiReset(); + fieldIn.multiSet(0, fieldIn.def()); + fieldIn.set(fieldIn.def()); + }); + this.s.mode = 'main'; + this.s.action = 'create'; + this.s.modifier = null; + this.s.editFields = this._dataSource('fakeRow', insertPoint); + opts = $.extend({}, this.s.formOptions.inline, opts); + this._actionClass(); + this._inline(this.s.editFields, opts, function () { + // When the form is closed (cancelled or submitted) we need to remove the + // fake row + _this._dataSource('fakeRowEnd'); + }); + this._event('initCreate', null); + return this; +} +function message(name, msg) { + if (msg === undefined) { + // Global message + this._message(this.dom.formInfo, name); + } + else { + // Field message + this.field(name).message(msg); + } + return this; +} +function mode(modeIn) { + if (!modeIn) { + return this.s.action; + } + if (!this.s.action) { + throw new Error('Not currently in an editing mode'); + } + else if (this.s.action === 'create' && modeIn !== 'create') { + throw new Error('Changing from create mode is not supported'); + } + this.s.action = modeIn; + return this; +} +/** + * Get the modifier that was used to trigger the edit or delete action. + * + * @returns The identifier that was used for the editing / remove method + * called. + */ +function modifier() { + return this.s.modifier; +} +/** + * Get the values for one or more fields (multi-row editing aware). + * + * @param this Editor instance + * @param fieldNames Fields to get values for, or all fields if not given + * @returns Editor instance + */ +function multiGet(fieldNames) { + var that = this; + if (fieldNames === undefined) { + fieldNames = this.fields(); + } + if (Array.isArray(fieldNames)) { + var out_2 = {}; + $.each(fieldNames, function (i, name) { + out_2[name] = that.field(name).multiGet(); + }); + return out_2; + } + // String + return this.field(fieldNames).multiGet(); +} +function multiSet(fieldNames, valIn) { + var that = this; + if ($.isPlainObject(fieldNames) && valIn === undefined) { + $.each(fieldNames, function (name, value) { + that.field(name).multiSet(value); + }); + } + else { + this.field(fieldNames).multiSet(valIn); + } + return this; +} +function node(name) { + var that = this; + if (!name) { + name = this.order(); + } + return Array.isArray(name) ? + $.map(name, function (n) { + return that.field(n).node(); + }) : + this.field(name).node(); +} +/** + * Remove a bound event listener to the editor instance. + * + * @param this Editor instance + * @param name Event name to remove + * @param fn Handler to remove, or all if not specified + * @returns Editor instance + */ +function off(name, fn) { + $(this).off(this._eventName(name), fn); + return this; +} +/** + * Listen for an event which is fired off by Editor when it performs certain + * actions. + * + * @param this Editor instance + * @param name Event to listen for + * @param fn Event handler to apply + * @returns Editor instance + */ +function on(name, fn) { + $(this).on(this._eventName(name), fn); + return this; +} +/** + * Listen for a single event event which is fired off by Editor when it performs + * certain actions + * + * @param this Editor instance + * @param name Event to listen for + * @param fn Event handler to apply + * @returns Editor instance + */ +function one(name, fn) { + $(this).one(this._eventName(name), fn); + return this; +} +/** + * Display the main form editor to the end user in the web-browser. + * + * @param this Editor instance + * @returns Editor instance + */ +function open() { + var _this = this; + // Insert the display elements in order + this._displayReorder(); + // Define how to do a close + this._closeReg(function () { + _this._nestedClose(function () { + _this._clearDynamicInfo(); + _this._event('closed', ['main']); + }); + }); + // Run the standard open with common events + var ret = this._preopen('main'); + if (!ret) { + return this; + } + this._nestedOpen(function () { + _this._focus($.map(_this.s.order, function (name) { return _this.s.fields[name]; }), _this.s.editOpts.focus); + _this._event('opened', ['main', _this.s.action]); + }, this.s.editOpts.nest); + this._postopen('main', false); + return this; +} +function order(setIn /* , ... */) { + if (!setIn) { + return this.s.order; + } + // Allow new layout to be passed in as arguments + if (arguments.length && !Array.isArray(setIn)) { + setIn = Array.prototype.slice.call(arguments); + } + // Sanity check - array must exactly match the fields we have available + if (this.s.order.slice().sort().join('-') !== setIn.slice().sort().join('-')) { + throw new Error('All fields, and no additional fields, must be provided for ordering.'); + } + // Copy the new array into the order (so the reference is maintained) + $.extend(this.s.order, setIn); + this._displayReorder(); + return this; +} +function remove(items, arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.remove(items, arg1, arg2, arg3, arg4); + })) { + return this; + } + if (!items && !this.s.table) { + items = 'keyless'; + } + // Allow a single row node to be passed in to remove, Can't use Array.isArray + // as we also allow array like objects to be passed in (API, jQuery) + if (items.length === undefined) { + items = [items]; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + var editFields = this._dataSource('fields', items); + this.s.action = 'remove'; + this.s.modifier = items; + this.s.editFields = editFields; + this.dom.form.style.display = 'none'; + this._actionClass(); + this._event('initRemove', [ + pluck(editFields, 'node'), + pluck(editFields, 'data'), + items + ], function () { + _this._event('initMultiRemove', // undocumented and to be removed in v2 + [editFields, items], function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + var opts = _this.s.editOpts; + if (opts.focus !== null) { + $('button', _this.dom.buttons).eq(opts.focus).focus(); + } + }); + }); + return this; +} +function set(setIn, valIn) { + var that = this; + if (!$.isPlainObject(setIn)) { + var o = {}; + o[setIn] = valIn; + setIn = o; + } + $.each(setIn, function (n, v) { + that.field(n).set(v); + }); + return this; +} +/** + * Show fields in the display that were previously hidden. + * + * @param this Editor instance + * @param names Field(s) to show. All if not given. + * @param animate Animate the visual change or not + * @returns Editor instance + */ +function show(names, animate) { + var that = this; + $.each(this._fieldNames(names), function (i, n) { + that.field(n).show(animate); + }); + return this; +} +/** + * Submit a form for processing. + * + * @param this Editor instance + * @param successCallback Function executed when submit is completed + * @param errorCallback Function executed on error + * @param formatdata Data formatting function + * @param hideIn Disable default close action by passing in false + * @returns Editor instance + */ +function submit(successCallback, errorCallback, formatdata, hideIn) { + var _this = this; + var fields = this.s.fields; + var errorFields = []; + var errorReady = 0; + var sent = false; + if (this.s.processing || !this.s.action) { + return this; + } + this._processing(true); + // If there are fields in error, we want to wait for the error notification + // to be cleared before the form is submitted - errorFields tracks the + // fields which are in the error state, while errorReady tracks those which + // are ready to submit + var send = function () { + if (errorFields.length !== errorReady || sent) { + return; + } + _this._event('initSubmit', [_this.s.action], function (result) { + if (result === false) { + _this._processing(false); + return; + } + sent = true; + _this._submit(successCallback, errorCallback, formatdata, hideIn); + }); + }; + // Blur the current focus if it is a form input element - this allows any + // actions on change event (e.g. dpendent) to happen + var active = document.activeElement; + if ($(active).closest('div.DTE_Field').length !== 0) { + active.blur(); + } + // Remove the global error (don't know if the form is still in an error + // state!) + this.error(); + // Count how many fields are in error + $.each(fields, function (name, fieldIn) { + if (fieldIn.inError()) { + errorFields.push(name); + } + }); + // Remove the error display + $.each(errorFields, function (i, name) { + fields[name].error('', function () { + errorReady++; + send(); + }); + }); + send(); + return this; +} +function table(setIn) { + if (setIn === undefined) { + return this.s.table; + } + this.s.table = setIn; + return this; +} +function template(setIn) { + if (setIn === undefined) { + return this.s.template; + } + this.s.template = setIn === null ? + null : + $(setIn); + return this; +} +function title(titleIn) { + var header = $(this.dom.header).children('div.' + this.classes.header.content); + var titleClass = this.classes.header.title; + if (titleIn === undefined) { + return header.data('title'); + } + if (typeof titleIn === 'function') { + titleIn = titleIn(this, new DataTable$5.Api(this.s.table)); + } + var set = titleClass.tag + ? $("<" + titleClass.tag + ">Uploading file'); + reader.onload = function (e) { + var data = new FormData(); + var ajax; + data.append('action', 'upload'); + data.append('uploadField', conf.name); + data.append('upload', files[counter]); + if (conf.ajaxData) { + conf.ajaxData(data, files[counter], counter); + } + if (conf.ajax) { + ajax = conf.ajax; + } + else if ($.isPlainObject(editor.s.ajax)) { + ajax = editor.s.ajax.upload ? + editor.s.ajax.upload : + editor.s.ajax; + } + else if (typeof editor.s.ajax === 'string') { + ajax = editor.s.ajax; + } + if (!ajax) { + throw new Error('No Ajax option specified for upload plug-in'); + } + if (typeof ajax === 'string') { + ajax = { url: ajax }; + } + // Handle the case when the ajax data is given as a function + if (typeof ajax.data === 'function') { + var d = {}; + var ret = ajax.data(d); + // Allow the return to be used, or the object passed in + if (ret !== undefined && typeof ret !== 'string') { + d = ret; + } + $.each(d, function (key, value) { + data.append(key, value); + }); + } + else if ($.isPlainObject(ajax.data)) { + throw new Error('Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.'); + } + // Dev cancellable event + editor._event('preUpload', [conf.name, files[counter], data], function (preRet) { + // Upload was cancelled + if (preRet === false) { + // If there are other files still to read, spin through them + if (counter < files.length - 1) { + counter++; + reader.readAsDataURL(files[counter]); + } + else { + completeCallback.call(editor, ids); + } + return; + } + // Use preSubmit to stop form submission during an upload, since the + // value won't be known until that point. + var submit = false; + editor + .on('preSubmit.DTE_Upload', function () { + submit = true; + return false; + }); + $.ajax($.extend({}, ajax, { + contentType: false, + data: data, + dataType: 'json', + error: function (xhr) { + var errors = conf.errors; + editor.off('preSubmit.DTE_Upload'); + editor.error(conf.name, errors && errors[xhr.status] + ? errors[xhr.status] + : generalError); + editor._event('uploadXhrError', [conf.name, xhr]); + progressCallback(conf); + }, + processData: false, + success: function (json) { + editor.off('preSubmit.DTE_Upload'); + editor._event('uploadXhrSuccess', [conf.name, json]); + if (json.fieldErrors && json.fieldErrors.length) { + var errors = json.fieldErrors; + for (var i = 0, ien = errors.length; i < ien; i++) { + editor.error(errors[i].name, errors[i].status); + } + completeCallback.call(editor, ids, true); + } + else if (json.error) { + editor.error(json.error); + completeCallback.call(editor, ids, true); + } + else if (!json.upload || !json.upload.id) { + editor.error(conf.name, generalError); + completeCallback.call(editor, ids, true); + } + else { + if (json.files) { + // Loop over the tables that are defined + $.each(json.files, function (table, filesIn) { + if (!Editor.files[table]) { + Editor.files[table] = {}; + } + $.extend(Editor.files[table], filesIn); + }); + } + ids.push(json.upload.id); + if (counter < files.length - 1) { + counter++; + reader.readAsDataURL(files[counter]); + } + else { + completeCallback.call(editor, ids); + if (submit) { + editor.submit(); + } + } + } + progressCallback(conf); + }, + type: 'post', + xhr: function () { + var xhr = $.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.onprogress = function (e) { + if (e.lengthComputable) { + var percent = (e.loaded / e.total * 100).toFixed(0) + '%'; + progressCallback(conf, files.length === 1 ? + percent : + counter + ':' + files.length + ' ' + percent); + } + }; + xhr.upload.onloadend = function () { + progressCallback(conf, conf.processingText || 'Processing'); + }; + } + return xhr; + } + })); + }); + }; + // Convert to a plain array + files = $.map(files, function (val) { + return val; + }); + // Truncate the selected files if needed + if (conf._limitLeft !== undefined) { + files.splice(conf._limitLeft, files.length); + } + reader.readAsDataURL(files[0]); +} +/** + * CommonJS factory function pass through. Matches DataTables. + * @param {*} root Window + * @param {*} jq jQUery + * @returns {boolean} Indicator + */ +function factory(root, jq) { + var is = false; + // Test if the first parameter is a window object + if (root && root.document) { + window = root; + document = root.document; + } + // Test if the second parameter is a jQuery object + if (jq && jq.fn && jq.fn.jquery) { + $ = jq; + is = true; + } + return is; +} + +var DataTable$4 = $.fn.dataTable; +var _inlineCounter = 0; +/** + * Set the class on the form to relate to the action that is being performed. + * This allows styling to be applied to the form to reflect the state that + * it is in. + * + * @private + */ +function _actionClass() { + var classesActions = this.classes.actions; + var action = this.s.action; + var wrapper = $(this.dom.wrapper); + wrapper.removeClass([classesActions.create, classesActions.edit, classesActions.remove].join(' ')); + if (action === 'create') { + wrapper.addClass(classesActions.create); + } + else if (action === 'edit') { + wrapper.addClass(classesActions.edit); + } + else if (action === 'remove') { + wrapper.addClass(classesActions.remove); + } +} +/** + * Create an Ajax request in the same style as DataTables 1.10, with full + * backwards compatibility for Editor 1.2. + * + * @param {object} data Data to submit + * @param {function} success Success callback + * @param {function} error Error callback + * @param {object} submitParams Submitted data + * @private + */ +function _ajax(data, success, error, submitParams) { + var action = this.s.action; + var thrown; + var opts = { + complete: [function (xhr, text) { + // Use `complete` rather than `success` so that all status codes are + // caught and can return valid JSON (useful when working with REST + // services). + var json = null; + if (xhr.status === 204 || xhr.responseText === 'null') { + json = {}; + } + else { + try { + // jQuery 1.12 or newer for responseJSON, but its the only + // way to get the JSON from a JSONP. So if you want to use + // JSONP with Editor you have to use jQuery 1.12+. + json = xhr.responseJSON ? + xhr.responseJSON : + JSON.parse(xhr.responseText); + } + catch (e) { } + } + if ($.isPlainObject(json) || Array.isArray(json)) { + success(json, xhr.status >= 400, xhr); + } + else { + error(xhr, text, thrown); + } + }], + data: null, + dataType: 'json', + error: [function (xhr, text, err) { + thrown = err; + }], + success: [], + type: 'POST' + }; + var a; + var ajaxSrc = this.s.ajax; + var id = action === 'edit' || action === 'remove' ? + pluck(this.s.editFields, 'idSrc').join(',') : + null; + // Get the correct object for rest style + if ($.isPlainObject(ajaxSrc) && ajaxSrc[action]) { + ajaxSrc = ajaxSrc[action]; + } + if (typeof ajaxSrc === 'function') { + // As a function, execute it, passing in the required parameters + ajaxSrc.call(this, null, null, data, success, error); + return; + } + else if (typeof ajaxSrc === 'string') { + // As a string it gives the URL. For backwards compatibility it can also + // give the method. + if (ajaxSrc.indexOf(' ') !== -1) { + a = ajaxSrc.split(' '); + opts.type = a[0]; + opts.url = a[1]; + } + else { + opts.url = ajaxSrc; + } + } + else { + // As an object, we extend the Editor defaults - with the exception of + // the error and complete functions which get added in so the user can + // specify their own in addition to ours + var optsCopy = $.extend({}, ajaxSrc || {}); + if (optsCopy.complete) { + opts.complete.unshift(optsCopy.complete); + delete optsCopy.complete; + } + if (optsCopy.error) { + opts.error.unshift(optsCopy.error); + delete optsCopy.error; + } + opts = $.extend({}, opts, optsCopy); + } + // URL macros + if (opts.replacements) { + $.each(opts.replacements, function (key, repl) { + opts.url = opts.url.replace('{' + key + '}', repl.call(this, key, id, action, data)); + }); + } + opts.url = opts.url + .replace(/_id_/, id) + .replace(/{id}/, id); + // Data processing option like in DataTables + if (opts.data) { + var isFn = typeof opts.data === 'function'; + var newData = isFn ? + opts.data(data) : // fn can manipulate data or return an object + opts.data; // object or array to merge + // If the function returned something, use that alone + data = isFn && newData ? + newData : + $.extend(true, data, newData); + } + opts.data = data; + // If a DELETE method is used there are a number of servers which will + // reject the request if it has a body. So we need to append to the URL. + // + // http://stackoverflow.com/questions/15088955 + // http://bugs.jquery.com/ticket/11586 + if (opts.type === 'DELETE' && (opts.deleteBody === undefined || opts.deleteBody === true)) { + var params = $.param(opts.data); + opts.url += opts.url.indexOf('?') === -1 ? + '?' + params : + '&' + params; + delete opts.data; + } + // Finally, make the ajax call + $.ajax(opts); +} +/** + * Abstraction for jQuery's animate method, to support jQuery slim which doesn't + * include the animate module + * + * @private + */ +function _animate(target, style, time, callback) { + if ($.fn.animate) { + target + .stop() + .animate(style, time, callback); + } + else { + target.css(style); + var scope = target.length && target.length > 1 + ? target[0] + : target; + if (typeof time === 'function') { + time.call(scope); + } + else if (callback) { + callback.call(scope); + } + } +} +/** + * Create the DOM structure from the source elements for the main form. + * This is required since the elements can be moved around for other form types + * (bubble). + * + * @private + */ +function _assembleMain() { + var dom = this.dom; + $(dom.wrapper) + .prepend(dom.header); + $(dom.footer) + .append(dom.formError) + .append(dom.buttons); + $(dom.bodyContent) + .append(dom.formInfo) + .append(dom.form); +} +/** + * Blur the editing window. A blur is different from a close in that it might + * cause either a close or the form to be submitted. A typical example of a + * blur would be clicking on the background of the bubble or main editing forms + * - i.e. it might be a close, or it might submit depending upon the + * configuration, while a click on the close box is a very definite close. + * + * @private + */ +function _blur() { + var opts = this.s.editOpts; + var onBlur = opts.onBlur; + if (this._event('preBlur') === false) { + return; + } + if (typeof onBlur === 'function') { + onBlur(this); + } + else if (onBlur === 'submit') { + this.submit(); + } + else if (onBlur === 'close') { + this._close(); + } +} +/** + * Clear all of the information that might have been dynamically set while + * the form was visible - specifically errors and dynamic messages + * + * @private + */ +function _clearDynamicInfo(errorsOnly) { + if (errorsOnly === void 0) { errorsOnly = false; } + // Can be triggered due to a destroy if the editor is open + if (!this.s) { + return; + } + var errorClass = this.classes.field.error; + var fields = this.s.fields; + $('div.' + errorClass, this.dom.wrapper).removeClass(errorClass); + $.each(fields, function (name, field) { + field.error(''); + if (!errorsOnly) { + field.message(''); + } + }); + this.error(''); + if (!errorsOnly) { + this.message(''); + } +} +/** + * Close an editing display, firing callbacks and events as needed + * + * @param {function} submitComplete Function to call after the preClose event + * @param {string} mode Editing mode that is just finished + * @private + */ +function _close(submitComplete, mode) { + var closed; + // Allow preClose event to cancel the opening of the display + if (this._event('preClose') === false) { + return; + } + if (this.s.closeCb) { + closed = this.s.closeCb(submitComplete, mode); + this.s.closeCb = null; + } + if (this.s.closeIcb) { + this.s.closeIcb(); + this.s.closeIcb = null; + } + // Remove focus control + $('body').off('focus.editor-focus'); + this.s.displayed = false; + this._event('close'); + if (closed) { + // Note that `bubble` will call this itself due to the animation + this._event('closed', [closed]); + } +} +/** + * Register a function to be called when the editing display is closed. This is + * used by function that create the editing display to tidy up the display on + * close - for example removing event handlers to prevent memory leaks. + * + * @param {function} fn Function to call on close + * @private + */ +function _closeReg(fn) { + this.s.closeCb = fn; +} +/** + * Argument shifting for the create(), edit() and remove() methods. In Editor + * 1.3 the preferred form of calling those three methods is with just two + * parameters (one in the case of create() - the id and the show flag), while in + * previous versions four / three parameters could be passed in, including the + * buttons and title options. In 1.3 the chaining API is preferred, but we want + * to support the old form as well, so this function is provided to perform + * that argument shifting, common to all three. + * + * @private + */ +function _crudArgs(arg1, arg2, arg3, arg4) { + var that = this; + var title; + var buttons; + var show; + var opts; + if ($.isPlainObject(arg1)) { + // Form options passed in as the first option + opts = arg1; + } + else if (typeof arg1 === 'boolean') { + // Show / hide passed in as the first option - form options second + show = arg1; + opts = arg2; // can be undefined + } + else { + // Old style arguments + title = arg1; // can be undefined + buttons = arg2; // can be undefined + show = arg3; // can be undefined + opts = arg4; // can be undefined + } + // If all undefined, then fall into here + if (show === undefined) { + show = true; + } + if (title) { + that.title(title); + } + if (buttons) { + that.buttons(buttons); + } + return { + maybeOpen: function () { + if (show) { + that.open(); + } + }, + opts: $.extend({}, this.s.formOptions.main, opts) + }; +} +/** + * Execute the data source abstraction layer functions. This is simply a case + * of executing the function with the Editor scope, passing in the remaining + * parameters. + * + * @param {string} name Function name to execute + * @private + */ +function _dataSource(name) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var dataSource = this.s.table + ? Editor.dataSources.dataTable + : Editor.dataSources.html; + var fn = dataSource[name]; + if (fn) { + return fn.apply(this, args); + } +} +/** + * Insert the fields into the DOM, in the correct order + * + * @private + */ +function _displayReorder(includeFields) { + var _this = this; + var formContent = $(this.dom.formContent); + var fields = this.s.fields; + var order = this.s.order; + var template = this.s.template; + var mode = this.s.mode || 'main'; + if (includeFields) { + this.s.includeFields = includeFields; + } + else { + includeFields = this.s.includeFields; + } + // Empty before adding in the required fields + formContent.children().detach(); + $.each(order, function (i, name) { + if (_this._weakInArray(name, includeFields) !== -1) { + if (template && mode === 'main') { + template.find('editor-field[name="' + name + '"]').after(fields[name].node()); + template.find('[data-editor-template="' + name + '"]').append(fields[name].node()); + } + else { + formContent.append(fields[name].node()); + } + } + }); + if (template && mode === 'main') { + template.appendTo(formContent); + } + this._event('displayOrder', [ + this.s.displayed, + this.s.action, + formContent + ]); +} +/** + * Generic editing handler. This can be called by the three editing modes (main, + * bubble and inline) to configure Editor for a row edit, and fire the required + * events to ensure that the editing interfaces all provide a common API. + * + * @param {*} rows Identifier for the item(s) to be edited + * @param {string} type Editing type - for the initEdit event + * @private + */ +function _edit(items, editFields, type, formOptions, setupDone) { + var _this = this; + var fields = this.s.fields; + var usedFields = []; + var includeInOrder; + var editData = {}; + this.s.editFields = editFields; + this.s.editData = editData; + this.s.modifier = items; + this.s.action = 'edit'; + this.dom.form.style.display = 'block'; + this.s.mode = type; + this._actionClass(); + // Setup the field values for editing + $.each(fields, function (name, field) { + field.multiReset(); + includeInOrder = false; + editData[name] = {}; + $.each(editFields, function (idSrc, edit) { + if (edit.fields[name]) { + var val = field.valFromData(edit.data); + var nullDefault = field.nullDefault(); + // Save the set data values so we can decided in submit if data has changed + // Note that `null` is stored as an empty string since fields do not currently + // have the ability to store a null value - when they are read back (in the + // submit) they would be an empty string. When null handling is added to + // fields, this will need to be removed. + editData[name][idSrc] = val === null ? + '' : + Array.isArray(val) ? + val.slice() : + val; + // If scoped to edit the whole row, then set all of the fields + if (!formOptions || formOptions.scope === 'row') { + field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? + field.def() : + val, false); + if (!edit.displayFields || edit.displayFields[name]) { + includeInOrder = true; + } + } + else { + // Limit editing to only those fields selected if any are selected + if (!edit.displayFields || edit.displayFields[name]) { + field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? + field.def() : + val, false); + includeInOrder = true; + } + } + } + }); + // Loop finished - can do a multi-value check for display of the field now + field._multiValueCheck(); + // If the field is used, then add it to the fields to be shown + if (field.multiIds().length !== 0 && includeInOrder) { + usedFields.push(name); + } + }); + // Remove the fields that are not required from the display + var currOrder = this.order().slice(); + for (var i = currOrder.length - 1; i >= 0; i--) { + // Use `toString()` to convert numbers to strings, since usedFields + // contains strings (object property names) + if ($.inArray(currOrder[i].toString(), usedFields) === -1) { + currOrder.splice(i, 1); + } + } + this._displayReorder(currOrder); + // Events + this._event('initEdit', [ + pluck(editFields, 'node')[0], + pluck(editFields, 'data')[0], + items, + type + ], function () { + _this._event('initMultiEdit', // undocumented and to be removed in v2 + [editFields, items, type], function () { + setupDone(); + }); + }); +} +/** + * Fire callback functions and trigger events. + * + * @param {string|array} trigger Name(s) of the jQuery custom event to trigger + * @param {array} args Array of arguments to pass to the triggered event + * @return {*} Return from the event + * @private + */ +function _event(trigger, args, promiseComplete) { + if (args === void 0) { args = []; } + if (promiseComplete === void 0) { promiseComplete = undefined; } + // Allow an array to be passed in for the trigger to fire multiple events + if (Array.isArray(trigger)) { + for (var i = 0, ien = trigger.length; i < ien; i++) { + this._event(trigger[i], args); + } + } + else { + var e = $.Event(trigger); + $(this).triggerHandler(e, args); + var result = e.result; + // Automatically trigger a cancelled event if a `pre` event handler + // was cancelled by the callback + if (trigger.indexOf('pre') === 0 && result === false) { + $(this).triggerHandler($.Event(trigger + 'Cancelled'), args); + } + // Allow for a promise to be returned and execute a callback + if (promiseComplete) { + if (result && typeof result === 'object' && result.then) { + // jQuery and "real" promises both provide "then" + result.then(promiseComplete); + } + else { + // If there wasn't a promise returned, then execute immediately + promiseComplete(result); + } + } + return result; + } +} +/** + * 'Modernise' event names, from the old style `on[A-Z]` names to camelCase. + * This is done to provide backwards compatibility with Editor 1.2- event names. + * The names themselves were updated for consistency with DataTables. + * + * @param {string} Event name to modernise + * @return {string} String with new event name structure + * @private + */ +function _eventName(input) { + var name; + var names = input.split(' '); + for (var i = 0, ien = names.length; i < ien; i++) { + name = names[i]; + // Strip the 'on' part and lowercase the first character + var onStyle = name.match(/^on([A-Z])/); + if (onStyle) { + name = onStyle[1].toLowerCase() + name.substring(3); + } + names[i] = name; + } + return names.join(' '); +} +/** + * Find a field from a DOM node. All children are searched. + * + * @param {node} node DOM node to search for + * @return {Field} Field instance + */ +function _fieldFromNode(node) { + var foundField = null; + $.each(this.s.fields, function (name, field) { + if ($(field.node()).find(node).length) { + foundField = field; + } + }); + return foundField; +} +/** + * Convert a field name input parameter to an array of field names. + * + * Many of the API methods provide the ability to pass `undefined` a string or + * array of strings to identify fields. This method harmonises that. + * + * @param {array|string} [fieldNames] Field names to get + * @return {array} Field names + * @private + */ +function _fieldNames(fieldNames) { + if (fieldNames === undefined) { + return this.fields(); + } + else if (!Array.isArray(fieldNames)) { + return [fieldNames]; + } + return fieldNames; +} +/** + * Focus on a field. Providing the logic to allow complex focus expressions + * + * @param {array} fields Array of Field instances or field names for the fields + * that are shown + * @param {null|string|integer} focus Field identifier to focus on + * @private + */ +function _focus(fieldsIn, focus) { + var _this = this; + // Can't focus on a field when in remove mode (they aren't shown). + if (this.s.action === 'remove') { + return; + } + var field; + var fields = $.map(fieldsIn, function (fieldOrName) { return typeof fieldOrName === 'string' ? + _this.s.fields[fieldOrName] : + fieldOrName; }); + if (typeof focus === 'number') { + field = fields[focus]; + } + else if (focus) { + if (focus.indexOf('jq:') === 0) { + field = $('div.DTE ' + focus.replace(/^jq:/, '')); + } + else { + field = this.s.fields[focus]; + } + } + else { + document.activeElement.blur(); + } + this.s.setFocus = field; + if (field) { + field.focus(); + } +} +/** + * Form options - common function so all editing methods can provide the same + * basic options, DRY. + * + * @param {object} opts Editing options. See model.formOptions + * @private + */ +function _formOptions(opts) { + var _this = this; + var that = this; + var inlineCount = _inlineCounter++; + var namespace = '.dteInline' + inlineCount; + // Backwards compatibility with 1.4 + // if ( opts.closeOnComplete !== undefined ) { + // opts.onComplete = opts.closeOnComplete ? 'close' : 'none'; + // } + // if ( opts.submitOnBlur !== undefined ) { + // opts.onBlur = opts.submitOnBlur ? 'submit' : 'close'; + // } + // if ( opts.submitOnReturn !== undefined ) { + // opts.onReturn = opts.submitOnReturn ? 'submit' : 'none'; + // } + // if ( opts.blurOnBackground !== undefined ) { + // opts.onBackground = opts.blurOnBackground ? 'blur' : 'none'; + // } + this.s.editOpts = opts; + // When submitting by Ajax we don't want to close a form that has been + // opened during the ajax request, so we keep a count of the form opening + this.s.editCount = inlineCount; + if (typeof opts.title === 'string' || typeof opts.title === 'function') { + this.title(opts.title); + opts.title = true; + } + if (typeof opts.message === 'string' || typeof opts.message === 'function') { + this.message(opts.message); + opts.message = true; + } + if (typeof opts.buttons !== 'boolean') { + this.buttons(opts.buttons); + opts.buttons = true; + } + // Prevent submit by a host `` + $(document).on('keydown' + namespace, function (e) { + if (e.which === 13 && _this.s.displayed) { // return + var el = $(document.activeElement); + if (el) { + var field = _this._fieldFromNode(el); + if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { + e.preventDefault(); + } + } + } + }); + $(document).on('keyup' + namespace, function (e) { + var el = $(document.activeElement); + if (e.which === 13 && _this.s.displayed) { // return + var field = _this._fieldFromNode(el); + // Allow the field plug-in to say if we can submit or not + if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { + if (opts.onReturn === 'submit') { + e.preventDefault(); + _this.submit(); + } + else if (typeof opts.onReturn === 'function') { + e.preventDefault(); + opts.onReturn(_this, e); + } + } + } + else if (e.which === 27) { // esc + e.preventDefault(); + if (typeof opts.onEsc === 'function') { + opts.onEsc(that, e); + } + else if (opts.onEsc === 'blur') { + that.blur(); + } + else if (opts.onEsc === 'close') { + that.close(); + } + else if (opts.onEsc === 'submit') { + that.submit(); + } + } + else if (el.parents('.DTE_Form_Buttons').length) { + if (e.which === 37) { // left + el.prev('button').trigger('focus'); + } + else if (e.which === 39) { // right + el.next('button').trigger('focus'); + } + } + }); + this.s.closeIcb = function () { + $(document).off('keydown' + namespace); + $(document).off('keyup' + namespace); + }; + return namespace; +} +/** + * Inline editing insertion of fields + */ +function _inline(editFields, opts, closeCb) { + var _this = this; + if (closeCb === void 0) { closeCb = null; } + var closed = false; + var classes = this.classes.inline; + var keys = Object.keys(editFields); + var editRow = editFields[keys[0]]; + var lastAttachPoint; + var elements = []; + for (var i = 0; i < editRow.attach.length; i++) { + var name_1 = editRow.attachFields[i][0]; + elements.push({ + field: this.s.fields[name_1], + name: name_1, + node: $(editRow.attach[i]), + }); + } + var namespace = this._formOptions(opts); + var ret = this._preopen('inline'); + if (!ret) { + return this; + } + for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { + var el = elements_1[_i]; + var node = el.node; + el.children = node.contents().detach(); + // Note the wdith setting shouldn't be required, but Edge increases the column's + // width if a % width is used (even 1%). This is the workaround + var style = navigator.userAgent.indexOf('Edge/') !== -1 ? + 'style="width:' + node.width() + 'px"' : + ''; + node.append($('
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ')); + node.find('div.' + classes.liner.replace(/ /g, '.')) + .append(el.field.node()) + .append(this.dom.formError); + // Need the last insert point to allow for number submitTrigger + lastAttachPoint = el.field.node(); + if (opts.buttons) { + // Use prepend for the CSS, so we can float the buttons right + node.find('div.' + classes.buttons.replace(/ /g, '.')).append(this.dom.buttons); + } + } + // If there is a submit trigger target, we need to modify the document to allow submission + var submitClose = this._inputTrigger('submit', opts, lastAttachPoint); + var cancelClose = this._inputTrigger('cancel', opts, lastAttachPoint); + this._closeReg(function (submitComplete, action) { + // Mark that this specific inline edit has closed + closed = true; + $(document).off('click' + namespace); + // If there was no submit, we need to put the DOM back as it was. If + // there was a submit, the write of the new value will set the DOM to + // how it should be. Note also, check if it was an edit action, if not + // a create will create new row so we tidy this one up + if (!submitComplete || action !== 'edit') { + elements.forEach(function (el) { + el.node.contents().detach(); + el.node.append(el.children); + }); + } + submitClose(); + cancelClose(); + // Clear error messages "offline" + _this._clearDynamicInfo(); + if (closeCb) { + closeCb(); + } + return 'inline'; // trigger `closed` + }); + // Submit and blur actions + setTimeout(function () { + // If already closed, possibly due to some other aspect of the event + // that triggered the inline call, don't add the event listener - it + // isn't needed (and is dangerous) + if (closed) { + return; + } + // andSelf is deprecated in jQ1.8, but we want 1.7 compat + var back = $.fn.addBack ? 'addBack' : 'andSelf'; + // Chrome uses the target as the element where the mouse up happens, + // but we want the target being where the mouse down is, to allow for + // text selection in an input - so listen on mousedown as well. + var target; + $(document) + .on('mousedown' + namespace, function (e) { + target = e.target; + }) + .on('keydown' + namespace, function (e) { + target = e.target; + }) + .on('click' + namespace, function (e) { + // Was the click inside or owned by one of the editing nodes? If + // not, then come out of editing mode. + var isIn = false; + for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { + var el = elements_2[_i]; + if (el.field._typeFn('owns', target) || + $.inArray(el.node[0], $(target).parents()[back]()) !== -1) { + isIn = true; + } + } + if (!isIn) { + _this.blur(); + } + }); + }, 0); + this._focus($.map(elements, function (el) { return el.field; }), opts.focus); + this._postopen('inline', true); +} +/** + * Add a triggering action for inline editing, with a return function that + * will tidy up the events. + * + * @param type Action + * @param opts Form options object + * @param insertPoint Insert point in the DOM + * @private + */ +function _inputTrigger(type, opts, insertPoint) { + var _this = this; + var trigger = opts[type + 'Trigger']; + var html = opts[type + 'Html']; + var event = 'click.dte-' + type; + var tr = $(insertPoint).closest('tr'); + if (trigger === undefined) { + return function () { }; + } + // Allow the input to be a column index, including a negative to count from right + if (typeof trigger === 'number') { + var kids = tr.children(); + trigger = trigger < 0 + ? kids[kids.length + trigger] + : kids[trigger]; + } + // Use childNodes to get text nodes as well + var children = $(trigger, tr).length + ? Array.prototype.slice.call($(trigger, tr)[0].childNodes) + : []; + $(children).detach(); + // Event handler to submit the form and do nothing else + var triggerEl = $(trigger, tr) + .on(event, function (e) { + e.stopImmediatePropagation(); + if (type === 'cancel') { + _this.close(); + } + else { + _this.submit(); + } + }) + .append(html); + return function () { + triggerEl + .off(event) + .empty() + .append(children); + }; +} +/** + * Update the field options from a JSON data source + * + * @param {object} json JSON object from the server + * @private + */ +function _optionsUpdate(json) { + var that = this; + if (json && json.options) { + $.each(this.s.fields, function (name, field) { + if (json.options[name] !== undefined) { + var fieldInst = that.field(name); + if (fieldInst && fieldInst.update) { + fieldInst.update(json.options[name]); + } + } + }); + } +} +/** + * Show a message in the form. This can be used for error messages or dynamic + * messages (information display) as the structure for each is basically the + * same. This method will take into account if the form is visible or not - if + * so then the message is shown with an effect for the end user, otherwise + * it is just set immediately. + * + * @param {element} el The field display node to use + * @param {string|function} msg The message to show + * @private + */ +function _message(el, msg, title, fn) { + // Allow for jQuery slim + var canAnimate = $.fn.animate ? true : false; + if (title === undefined) { + title = false; + } + if (!fn) { + fn = function () { }; + } + if (typeof msg === 'function') { + msg = msg(this, new DataTable$4.Api(this.s.table)); + } + el = $(el); + if (canAnimate) { + el.stop(); + } + if (!msg) { + if (this.s.displayed && canAnimate) { + // Clear the message with visual effect since the form is visible + el + .fadeOut(function () { + el.html(''); + fn(); + }); + } + else { + // Clear the message without visual effect + el + .html('') + .css('display', 'none'); + fn(); + } + if (title) { + el.removeAttr('title'); + } + } + else { + fn(); + if (this.s.displayed && canAnimate) { + // Show the message with visual effect + el + .html(msg) + .fadeIn(); + } + else { + // Show the message without visual effect + el + .html(msg) + .css('display', 'block'); + } + if (title) { + el.attr('title', msg); + } + } +} +/** + * Update the multi-value information display to not show redundant information + * + * @private + */ +function _multiInfo() { + var fields = this.s.fields; + var include = this.s.includeFields; + var show = true; + var state; + if (!include) { + return; + } + for (var i = 0, ien = include.length; i < ien; i++) { + var field = fields[include[i]]; + var multiEditable = field.multiEditable(); + if (field.isMultiValue() && multiEditable && show) { + // Multi-row editable. Only show first message + state = true; + show = false; + } + else if (field.isMultiValue() && !multiEditable) { + // Not multi-row editable. Always show message + state = true; + } + else { + state = false; + } + fields[include[i]].multiInfoShown(state); + } +} +/** + * Close the current form, which can result in the display controller + * hiding its display, or showing a form from a level up if nesting + */ +function _nestedClose(cb) { + var disCtrl = this.s.displayController; + var show = disCtrl._show; + if (!show || !show.length) { + // Nothing shown just now + if (cb) { + cb(); + } + } + else if (show.length > 1) { + // Got nested forms - remove current and go one layer up + show.pop(); + // Get the one to show + var last = show[show.length - 1]; + if (cb) { + cb(); + } + this.s.displayController.open(last.dte, last.append, last.callback); + } + else { + this.s.displayController.close(this, cb); + show.length = 0; + } +} +/** + * Display a form, adding it to the display stack for nesting + */ +function _nestedOpen(cb, nest) { + var disCtrl = this.s.displayController; + // This needs to be per display controller, but the controller + // itself doesn't know anything about the nesting, so we add a + // "hidden" property to it, used here, but not by the controller + // itself. + if (!disCtrl._show) { + disCtrl._show = []; + } + if (!nest) { + disCtrl._show.length = 0; + } + disCtrl._show.push({ + append: this.dom.wrapper, + callback: cb, + dte: this, + }); + this.s.displayController.open(this, this.dom.wrapper, cb); +} +/** + * Common display editing form method called by all editing methods after the + * form has been configured and displayed. This is to ensure all fire the same + * events. + * + * @param {string} type Editing type + * @param {boolean} immediate indicate if the open is immediate (in which case + * `opened` is also triggered). + * @return {boolean} `true` + * @private + */ +function _postopen(type, immediate) { + var _this = this; + var focusCapture = this.s.displayController.captureFocus; + if (focusCapture === undefined) { + focusCapture = true; + } + $(this.dom.form) + .off('submit.editor-internal') + .on('submit.editor-internal', function (e) { + e.preventDefault(); + }); + // Focus capture - when the Editor form is shown we capture the browser's + // focus action. Without doing this is would result in the user being able + // to control items under the Editor display - triggering actions that + // shouldn't be possible while the editing is shown. + if (focusCapture && (type === 'main' || type === 'bubble')) { + $('body').on('focus.editor-focus', function () { + if ($(document.activeElement).parents('.DTE').length === 0 && + $(document.activeElement).parents('.DTED').length === 0) { + if (_this.s.setFocus) { + _this.s.setFocus.focus(); + } + } + }); + } + this._multiInfo(); + this._event('open', [type, this.s.action]); + if (immediate) { + this._event('opened', [type, this.s.action]); + } + return true; +} +/** + * Common display editing form method called by all editing methods before the + * form has been configured and displayed. This is to ensure all fire the same + * events. + * + * @param {string} Editing type + * @return {boolean} `false` if the open is cancelled by the preOpen event, + * otherwise `true` + * @private + */ +function _preopen(type) { + // Allow preOpen event to cancel the opening of the display + if (this._event('preOpen', [type, this.s.action]) === false) { + // Tidy- this would normally be done on close, but we never get that far + this._clearDynamicInfo(); + this._event('cancelOpen', [type, this.s.action]); + // inline and bubble methods cannot be opened using `open()`, they + // have to be called again, so we need to clean up the event + // listener added by _formOptions + if ((this.s.mode === 'inline' || this.s.mode === 'bubble') && this.s.closeIcb) { + this.s.closeIcb(); + } + this.s.closeIcb = null; + return false; + } + this._clearDynamicInfo(true); + this.s.displayed = type; + return true; +} +/** + * Set the form into processing mode or take it out of processing mode. In + * processing mode a processing indicator is shown and user interaction with the + * form buttons is blocked + * + * @param {boolean} processing true if to go into processing mode and false if + * to come out of processing mode + * @private + */ +function _processing(processing) { + var procClass = this.classes.processing.active; + $(['div.DTE', this.dom.wrapper]).toggleClass(procClass, processing); + this.s.processing = processing; + this._event('processing', [processing]); +} +/** + * Check if any of the fields are processing for the submit to carry on. It + * can recurse. + * + * @private + */ +function _noProcessing(args) { + var processing = false; + $.each(this.s.fields, function (name, field) { + if (field.processing()) { + processing = true; + } + }); + if (processing) { + this.one('processing-field', function () { + // Are any other fields in a processing state? - Might need to wait again + if (this._noProcessing(args) === true) { + this._submit.apply(this, args); + } + }); + } + return !processing; +} +/** + * Submit a form to the server for processing. This is the private method that is used + * by the 'submit' API method, which should always be called in preference to calling + * this method directly. + * + * @param {function} [successCallback] Callback function that is executed once the + * form has been successfully submitted to the server and no errors occurred. + * @param {function} [errorCallback] Callback function that is executed if the + * server reports an error due to the submission (this includes a JSON formatting + * error should the error return invalid JSON). + * @param {function} [formatdata] Callback function that is passed in the data + * that will be submitted to the server, allowing pre-formatting of the data, + * removal of data or adding of extra fields. + * @param {boolean} [hide=true] When the form is successfully submitted, by default + * the form display will be hidden - this option allows that to be overridden. + * @private + */ +function _submit(successCallback, errorCallback, formatdata, hide) { + var _this = this; + var changed = false; + var allData = {}; + var changedData = {}; + var setBuilder = dataSet; + var fields = this.s.fields; + var editCount = this.s.editCount; + var editFields = this.s.editFields; + var editData = this.s.editData; + var opts = this.s.editOpts; + var changedSubmit = opts.submit; + var submitParamsLocal; + // First - are any of the fields currently "processing"? If so, then we + // want to let them complete before submitting + if (this._noProcessing(arguments) === false) { + Editor.error('Field is still processing', 16, false); + return; + } + // After initSubmit to allow `mode()` to be used as a setter + var action = this.s.action; + var submitParams = { + data: {} + }; + submitParams[this.s.actionName] = action; + // Gather the data that is to be submitted + if (action === 'create' || action === 'edit') { + $.each(editFields, function (idSrc, edit) { + var allRowData = {}; + var changedRowData = {}; + $.each(fields, function (name, field) { + if (edit.fields[name] && field.submittable()) { + var multiGet = field.multiGet(); + var builder = setBuilder(name); + // If it wasn't an edit field, we still need to get the original + // data, so we can submit it if `all` or `allIfChanged` + if (multiGet[idSrc] === undefined) { + var originalVal = field.valFromData(edit.data); + builder(allRowData, originalVal); + return; + } + var value = multiGet[idSrc]; + var manyBuilder = Array.isArray(value) && typeof name === 'string' && name.indexOf('[]') !== -1 ? + setBuilder(name.replace(/\[.*$/, '') + '-many-count') : + null; + builder(allRowData, value); + // We need to tell the server-side if an array submission + // actually has no elements so it knows if the array was + // being submitted or not (since otherwise it doesn't know + // if the array was empty, or just not being submitted) + if (manyBuilder) { + manyBuilder(allRowData, value.length); + } + // Build a changed object for if that is the selected data + // type + if (action === 'edit' && (!editData[name] || !field.compare(value, editData[name][idSrc]))) { + builder(changedRowData, value); + changed = true; + if (manyBuilder) { + manyBuilder(changedRowData, value.length); + } + } + } + }); + if (!$.isEmptyObject(allRowData)) { + allData[idSrc] = allRowData; + } + if (!$.isEmptyObject(changedRowData)) { + changedData[idSrc] = changedRowData; + } + }); + // Decide what data to submit to the server for edit (create is all, always) + if (action === 'create' || changedSubmit === 'all' || (changedSubmit === 'allIfChanged' && changed)) { + submitParams.data = allData; + } + else if (changedSubmit === 'changed' && changed) { + submitParams.data = changedData; + } + else { + // Nothing to submit + this.s.action = null; + if (opts.onComplete === 'close' && (hide === undefined || hide)) { + this._close(false); + } + else if (typeof opts.onComplete === 'function') { + opts.onComplete(this); + } + if (successCallback) { + successCallback.call(this); + } + this._processing(false); + this._event('submitComplete'); + return; + } + } + else if (action === 'remove') { + $.each(editFields, function (idSrc, edit) { + submitParams.data[idSrc] = edit.data; + }); + } + // Local copy of the submit parameters, needed for the data lib prep since + // the preSubmit can modify the format and we need to know what the format is + submitParamsLocal = $.extend(true, {}, submitParams); + // Allow the data to be submitted to the server to be preprocessed by callback + // and event functions + if (formatdata) { + formatdata(submitParams); + } + this._event('preSubmit', [submitParams, action], function (result) { + if (result === false) { + _this._processing(false); + } + else { + // Submit to the server (or whatever method is defined in the settings) + var submitWire = _this.s.ajax ? + _this._ajax : + _this._submitTable; + submitWire.call(_this, submitParams, function (json, notGood, xhr) { + _this._submitSuccess(json, notGood, submitParams, submitParamsLocal, _this.s.action, editCount, hide, successCallback, errorCallback, xhr); + }, function (xhr, err, thrown) { + _this._submitError(xhr, err, thrown, errorCallback, submitParams, _this.s.action); + }, submitParams); + } + }); +} +/** + * Save submitted data without an Ajax request. This will write to a local + * table only - not saving it permanently, but rather using the DataTable itself + * as a data store. + * + * @param {object} data Data to submit + * @param {function} success Success callback + * @param {function} error Error callback + * @param {object} submitParams Submitted data + * @private + */ +function _submitTable(data, success, error, submitParams) { + var action = data.action; + var out = { data: [] }; + var idGet = dataGet(this.s.idSrc); + var idSet = dataSet(this.s.idSrc); + // Nothing required for remove - create and edit get a copy of the data + if (action !== 'remove') { + var originalData_1 = this.s.mode === 'main' ? + this._dataSource('fields', this.modifier()) : + this._dataSource('individual', this.modifier()); + $.each(data.data, function (key, vals) { + var toSave; + var extender = extend; + // Get the original row's data, so we can modify it with new values. + // This allows Editor to not need to submit all fields + if (action === 'edit') { + var rowData = originalData_1[key].data; + toSave = extender({}, rowData, true); + toSave = extender(toSave, vals, true); + } + else { + toSave = extender({}, vals, true); + } + // If create and there isn't an id for the new row, create + // one. An id could be creased by `preSubmit` + var overrideId = idGet(toSave); + if (action === 'create' && overrideId === undefined) { + idSet(toSave, +new Date() + key.toString()); + } + else { + idSet(toSave, overrideId); + } + out.data.push(toSave); + }); + } + success(out); +} +/** + * Submit success callback function + * + * @param {object} json Payload + * @param {bool} notGood True if the returned status code was + * >=400 (i.e. processing failed). This is called `notGood` rather than + * `success` since the request was successfully processed, just not written to + * the db. It is also inverted from "good" to make it optional when overriding + * the `ajax` function. + * @param {object} submitParams Submitted data + * @param {object} submitParamsLocal Unmodified copy of submitted data + * (before it could be modified by the user) + * @param {string} action CRUD action being taken + * @param {int} editCount Protection against async errors + * @param {bool} hide Hide the form flag + * @param {function} successCallback Success callback + * @param {function} errorCallback Error callback + * @private + */ +function _submitSuccess(json, notGood, submitParams, submitParamsLocal, action, editCount, hide, successCallback, errorCallback, xhr) { + var _this = this; + var that = this; + var setData; + var fields = this.s.fields; + var opts = this.s.editOpts; + var modifier = this.s.modifier; + this._event('postSubmit', [json, submitParams, action, xhr]); + if (!json.error) { + json.error = ''; + } + if (!json.fieldErrors) { + json.fieldErrors = []; + } + if (notGood || json.error || json.fieldErrors.length) { + // Global form error + var globalError_1 = []; + if (json.error) { + globalError_1.push(json.error); + } + // Field specific errors + $.each(json.fieldErrors, function (i, err) { + var field = fields[err.name]; + if (!field) { + throw new Error('Unknown field: ' + err.name); + } + else if (field.displayed()) { + field.error(err.status || 'Error'); + if (i === 0) { + if (opts.onFieldError === 'focus') { + // Scroll the display to the first error and focus + _this._animate($(_this.dom.bodyContent), { scrollTop: $(field.node()).position().top }, 500); + field.focus(); + } + else if (typeof opts.onFieldError === 'function') { + opts.onFieldError(_this, err); + } + } + } + else { + // If the field isn't visible, we need to make it display as a global error + // This _shouldn't_ happen - it means there is invalid data if it does + globalError_1.push(field.name() + ': ' + (err.status || 'Error')); + } + }); + this.error(globalError_1.join('
                                                                                                                                                                      ')); + this._event('submitUnsuccessful', [json]); + if (errorCallback) { + errorCallback.call(that, json); + } + } + else { + // Create a data store that the data source can use, which is + // unique to this action + var store = {}; + if (json.data && (action === 'create' || action === 'edit')) { + this._dataSource('prep', action, modifier, submitParamsLocal, json, store); + for (var _i = 0, _a = json.data; _i < _a.length; _i++) { + var data = _a[_i]; + setData = data; + var id = this._dataSource('id', data); + this._event('setData', [json, data, action]); // legacy + if (action === 'create') { + // New row was created to add it to the DT + this._event('preCreate', [json, data, id]); + this._dataSource('create', fields, data, store); + this._event(['create', 'postCreate'], [json, data, id]); + } + else if (action === 'edit') { + // Row was updated, so tell the DT + this._event('preEdit', [json, data, id]); + this._dataSource('edit', modifier, fields, data, store); + this._event(['edit', 'postEdit'], [json, data, id]); + } + } + this._dataSource('commit', action, modifier, json.data, store); + } + else if (action === 'remove') { + this._dataSource('prep', action, modifier, submitParamsLocal, json, store); + // Remove the rows given and then redraw the table + this._event('preRemove', [json, this.ids()]); + this._dataSource('remove', modifier, fields, store); + this._event(['remove', 'postRemove'], [json, this.ids()]); + this._dataSource('commit', action, modifier, json.data, store); + } + // Submission complete + if (editCount === this.s.editCount) { + var sAction = this.s.action; + this.s.action = null; // Must do before close, in case close starts a new edit + if (opts.onComplete === 'close' && (hide === undefined || hide)) { + // If no data returned, then treat as not complete + this._close(json.data ? true : false, sAction); + } + else if (typeof opts.onComplete === 'function') { + opts.onComplete(this); + } + } + // All done - fire off the callbacks and events + if (successCallback) { + successCallback.call(that, json); + } + this._event('submitSuccess', [json, setData, action]); + } + this._processing(false); + this._event('submitComplete', [json, setData, action]); +} +/** + * Submit error callback function + * + * @private + */ +function _submitError(xhr, err, thrown, errorCallback, submitParams, action) { + this._event('postSubmit', [null, submitParams, action, xhr]); + this.error(this.i18n.error.system); + this._processing(false); + if (errorCallback) { + errorCallback.call(this, xhr, err, thrown); + } + this._event(['submitError', 'submitComplete'], [xhr, err, thrown, submitParams]); +} +/** + * Check to see if the form needs to be tidied before a new action can be performed. + * This includes if the from is currently processing an old action and if it + * is inline editing. + * + * @param {function} fn Callback function + * @returns {boolean} `true` if was in inline mode, `false` otherwise + * @private + */ +function _tidy(fn) { + var _this = this; + var dt = this.s.table ? + new $.fn.dataTable.Api(this.s.table) : + null; + var ssp = false; + if (dt) { + ssp = dt.settings()[0].oFeatures.bServerSide; + } + if (this.s.processing) { + // If currently processing, wait until the action is complete + this.one('submitComplete', function () { + // If server-side processing is being used in DataTables, first + // check that we are still processing (might not be if nothing was + // submitted) and then wait for the draw to finished + if (ssp) { + dt.one('draw', fn); + } + else { + setTimeout(function () { + fn(); + }, 10); + } + }); + return true; + } + else if (this.display() === 'inline' || this.display() === 'bubble') { + // If there is an inline edit box, it needs to be tidied + this + .one('close', function () { + // On close if processing then we need to wait for the submit to + // complete before running the callback as onBlur was set to + // submit + if (!_this.s.processing) { + // IE needs a small timeout, otherwise it may not focus on a + // field if one already has focus + setTimeout(function () { + // Check this Editor wasn't destroyed + if (_this.s) { + fn(); + } + }, 10); + } + else { + // Need to wait for the submit to finish + _this.one('submitComplete', function (e, json) { + // If SSP then need to wait for the draw + if (ssp && json) { + dt.one('draw', fn); + } + else { + setTimeout(function () { + if (_this.s) { + fn(); + } + }, 10); + } + }); + } + }) + .blur(); + return true; + } + return false; +} +/** + * Same as $.inArray but with weak type checking + * + * @param {any} name Value to look for in the array + * @param {array} arr Array to scan through + * @returns {number} -1 if not found, index otherwise + */ +function _weakInArray(name, arr) { + for (var i = 0, ien = arr.length; i < ien; i++) { + if (name == arr[i]) { + return i; + } + } + return -1; +} + +var fieldType = { + create: function () { }, + disable: function () { }, + enable: function () { }, + get: function () { }, + set: function () { } +}; + +var DataTable$3 = $.fn.dataTable; +// Upload private helper method +function _buttonText(conf, textIn) { + if (textIn === null || textIn === undefined) { + textIn = conf.uploadText || 'Choose file...'; + } + conf._input.find('div.upload button').html(textIn); +} +function _commonUpload(editor, conf, dropCallback, multiple) { + if (multiple === void 0) { multiple = false; } + var btnClass = editor.classes.form.buttonInternal; + var container = $('
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '' + + '' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      ' + + '
                                                                                                                                                                      '); + conf._input = container; + conf._enabled = true; + if (conf.id) { + container.find('input[type=file]').attr('id', Editor.safeId(conf.id)); + } + if (conf.attr) { + container.find('input[type=file]').attr(conf.attr); + } + _buttonText(conf); + if (window.FileReader && conf.dragDrop !== false) { + container.find('div.drop span').text(conf.dragDropText || 'Drag and drop a file here to upload'); + var dragDrop_1 = container.find('div.drop'); + dragDrop_1 + .on('drop', function (e) { + if (conf._enabled) { + Editor.upload(editor, conf, e.originalEvent.dataTransfer.files, _buttonText, dropCallback); + dragDrop_1.removeClass('over'); + } + return false; + }) + .on('dragleave dragexit', function (e) { + if (conf._enabled) { + dragDrop_1.removeClass('over'); + } + return false; + }) + .on('dragover', function (e) { + if (conf._enabled) { + dragDrop_1.addClass('over'); + } + return false; + }); + // When an Editor is open with a file upload input there is a + // reasonable chance that the user will miss the drop point when + // dragging and dropping. Rather than loading the file in the browser, + // we want nothing to happen, otherwise the form will be lost. + editor + .on('open', function () { + $('body').on('dragover.DTE_Upload drop.DTE_Upload', function (e) { + return false; + }); + }) + .on('close', function () { + $('body').off('dragover.DTE_Upload drop.DTE_Upload'); + }); + } + else { + container.addClass('noDrop'); + container.append(container.find('div.rendered')); + } + container.find('div.clearValue button').on('click', function (e) { + e.preventDefault(); + if (conf._enabled) { + upload.set.call(editor, conf, ''); + } + }); + container.find('input[type=file]').on('input', function () { + Editor.upload(editor, conf, this.files, _buttonText, function (ids, error) { + if (!error) { + dropCallback.call(editor, ids); + } + container.find('input[type=file]')[0].value = ''; + }); + }); + return container; +} +// Typically a change event caused by the end user will be added to a queue that +// the browser will handle when no other script is running. However, using +// `$().trigger()` will cause it to happen immediately, so in order to simulate +// the standard browser behaviour we use setTimeout. This also means that +// `dependent()` and other change event listeners will trigger when the field +// values have all been set, rather than as they are being set - 31594 +function _triggerChange(input) { + setTimeout(function () { + input.trigger('change', { editor: true, editorSet: true }); // editorSet legacy + }, 0); +} +// A number of the fields in this file use the same get, set, enable and disable +// methods (specifically the text based controls), so in order to reduce the code +// size, we just define them once here in our own local base model for the field +// types. +var baseFieldType = $.extend(true, {}, fieldType, { + canReturnSubmit: function (conf, node) { + return true; + }, + disable: function (conf) { + conf._input.prop('disabled', true); + }, + enable: function (conf) { + conf._input.prop('disabled', false); + }, + get: function (conf) { + return conf._input.val(); + }, + set: function (conf, val) { + conf._input.val(val); + _triggerChange(conf._input); + } +}); +var hidden = { + create: function (conf) { + conf._input = $(''); + conf._val = conf.value; + return null; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + var oldVal = conf._val; + conf._val = val; + conf._input.val(val); + if (oldVal !== val) { + _triggerChange(conf._input); + } + } +}; +var readonly = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + readonly: 'readonly', + type: 'text' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var text = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + type: 'text' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var password = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + type: 'password' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var textarea = $.extend(true, {}, baseFieldType, { + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id) + }, conf.attr || {})); + return conf._input[0]; + } +}); +var select = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var elOpts = conf._input[0].options; + var countOffset = 0; + if (!append) { + elOpts.length = 0; + if (conf.placeholder !== undefined) { + var placeholderValue = conf.placeholderValue !== undefined ? + conf.placeholderValue : + ''; + countOffset += 1; + elOpts[0] = new Option(conf.placeholder, placeholderValue); + var disabled = conf.placeholderDisabled !== undefined ? + conf.placeholderDisabled : + true; + elOpts[0].hidden = disabled; // can't be hidden if not disabled! + elOpts[0].disabled = disabled; + elOpts[0]._editor_val = placeholderValue; + } + } + else { + countOffset = elOpts.length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + var option = new Option(label, val); + option._editor_val = val; + if (attr) { + $(option).attr(attr); + } + elOpts[i + countOffset] = option; + }); + } + }, + create: function (conf) { + conf._input = $('') + .attr($.extend({ + id: Editor.safeId(conf.id), + multiple: conf.multiple === true + }, conf.attr || {})) + .on('change.dte', function (e, d) { + // On change, get the user selected value and store it as the + // last set, so `update` can reflect it. This way `_lastSet` + // always gives the intended value, be it set via the API or by + // the end user. + if (!d || !d.editor) { + conf._lastSet = select.get(conf); + } + }); + select._addOptions(conf, conf.options || conf.ipOpts); + return conf._input[0]; + }, + destroy: function (conf) { + conf._input.off('change.dte'); + }, + get: function (conf) { + var val = conf._input.find('option:selected').map(function () { + return this._editor_val; + }).toArray(); + if (conf.multiple) { + return conf.separator ? + val.join(conf.separator) : + val; + } + return val.length ? val[0] : null; + }, + set: function (conf, val, localUpdate) { + if (!localUpdate) { + conf._lastSet = val; + } + // Can't just use `$().val()` because it won't work with strong types + if (conf.multiple && conf.separator && !Array.isArray(val)) { + val = typeof val === 'string' ? + val.split(conf.separator) : + []; + } + else if (!Array.isArray(val)) { + val = [val]; + } + var i; + var len = val.length; + var found; + var allFound = false; + var options = conf._input.find('option'); + conf._input.find('option').each(function () { + found = false; + for (i = 0; i < len; i++) { + // Weak typing + if (this._editor_val == val[i]) { + found = true; + allFound = true; + break; + } + } + this.selected = found; + }); + // If there is a placeholder, we might need to select it if nothing else + // was selected. It doesn't make sense to select when multi is enabled + if (conf.placeholder && !allFound && !conf.multiple && options.length) { + options[0].selected = true; + } + // Update will call change itself, otherwise multiple might be called + if (!localUpdate) { + _triggerChange(conf._input); + } + return allFound; + }, + update: function (conf, options, append) { + select._addOptions(conf, options, append); + // Attempt to set the last selected value (set by the API or the end + // user, they get equal priority) + var lastSet = conf._lastSet; + if (lastSet !== undefined) { + select.set(conf, lastSet, true); + } + _triggerChange(conf._input); + } +}); +var checkbox = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var jqInput = conf._input; + var offset = 0; + if (!append) { + jqInput.empty(); + } + else { + offset = $('input', jqInput).length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + jqInput.append('
                                                                                                                                                                      ' + + '' + + '' + + '
                                                                                                                                                                      '); + $('input:last', jqInput).attr('value', val)[0]._editor_val = val; + if (attr) { + $('input:last', jqInput).attr(attr); + } + }); + } + }, + create: function (conf) { + conf._input = $('
                                                                                                                                                                      '); + checkbox._addOptions(conf, conf.options || conf.ipOpts); + return conf._input[0]; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + }, + get: function (conf) { + var out = []; + var selected = conf._input.find('input:checked'); + if (selected.length) { + selected.each(function () { + out.push(this._editor_val); + }); + } + else if (conf.unselectedValue !== undefined) { + out.push(conf.unselectedValue); + } + return conf.separator === undefined || conf.separator === null ? + out : + out.join(conf.separator); + }, + set: function (conf, val) { + var jqInputs = conf._input.find('input'); + if (!Array.isArray(val) && typeof val === 'string') { + val = val.split(conf.separator || '|'); + } + else if (!Array.isArray(val)) { + val = [val]; + } + var i; + var len = val.length; + var found; + jqInputs.each(function () { + found = false; + for (i = 0; i < len; i++) { + if (this._editor_val == val[i]) { + found = true; + break; + } + } + this.checked = found; + }); + _triggerChange(jqInputs); + }, + update: function (conf, options, append) { + // Get the current value + var currVal = checkbox.get(conf); + checkbox._addOptions(conf, options, append); + checkbox.set(conf, currVal); + } +}); +var radio = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var jqInput = conf._input; + var offset = 0; + if (!append) { + jqInput.empty(); + } + else { + offset = $('input', jqInput).length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + jqInput.append('
                                                                                                                                                                      ' + + '' + + '' + + '
                                                                                                                                                                      '); + $('input:last', jqInput).attr('value', val)[0]._editor_val = val; + if (attr) { + $('input:last', jqInput).attr(attr); + } + }); + } + }, + create: function (conf) { + conf._input = $('
                                                                                                                                                                      '); + radio._addOptions(conf, conf.options || conf.ipOpts); + // this is ugly, but IE6/7 has a problem with radio elements that are created + // and checked before being added to the DOM! Basically it doesn't check them. As + // such we use the _preChecked property to set cache the checked button and then + // check it again when the display is shown. This has no effect on other browsers + // other than to cook a few clock cycles. + this.on('open', function () { + conf._input.find('input').each(function () { + if (this._preChecked) { + this.checked = true; + } + }); + }); + return conf._input[0]; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + }, + get: function (conf) { + var el = conf._input.find('input:checked'); + if (el.length) { + return el[0]._editor_val; + } + return conf.unselectedValue !== undefined ? + conf.unselectedValue : + undefined; + }, + set: function (conf, val) { + conf._input.find('input').each(function () { + this._preChecked = false; + if (this._editor_val == val) { + this.checked = true; + this._preChecked = true; + } + else { + // In a detached DOM tree, there is no relationship between the + // input elements, so we need to uncheck any element that does + // not match the value + this.checked = false; + this._preChecked = false; + } + }); + _triggerChange(conf._input.find('input:checked')); + }, + update: function (conf, options, append) { + var currVal = radio.get(conf); + radio._addOptions(conf, options, append); + // Select the current value if it exists in the new data set, otherwise + // select the first radio input so there is always a value selected + var inputs = conf._input.find('input'); + radio.set(conf, inputs.filter('[value="' + currVal + '"]').length ? + currVal : + inputs.eq(0).attr('value')); + } +}); +var datetime = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend(true, { + id: Editor.safeId(conf.id), + type: 'text' + }, conf.attr)); + if (!DataTable$3.DateTime) { + Editor.error('DateTime library is required', 15); + } + // Legacy support for 2.0- parameters + if (conf.momentLocale && !conf.opts.locale) { + conf.opts.locale = conf.momentLocale; + } + if (conf.momentStrict && !conf.opts.strict) { + conf.opts.strict = conf.momentStrict; + } + conf._picker = new DataTable$3.DateTime(conf._input, $.extend({ + format: conf.displayFormat || conf.format, + i18n: this.i18n.datetime, + }, conf.opts)); + conf._closeFn = function () { + conf._picker.hide(); + }; + if (conf.keyInput === false) { + conf._input.on('keydown', function (e) { + e.preventDefault(); + }); + } + this.on('close', conf._closeFn); + return conf._input[0]; + }, + destroy: function (conf) { + this.off('close', conf._closeFn); + conf._input.off('keydown'); + conf._picker.destroy(); + }, + errorMessage: function (conf, msg) { + conf._picker.errorMsg(msg); + }, + get: function (conf) { + return conf.wireFormat + ? conf._picker.valFormat(conf.wireFormat) + : conf._input.val(); + }, + maxDate: function (conf, max) { + conf._picker.max(max); + }, + minDate: function (conf, min) { + conf._picker.min(min); + }, + // default disable and enable options are okay + owns: function (conf, node) { + return conf._picker.owns(node); + }, + set: function (conf, val) { + // If there is a wire format, convert it to the display format + // Note that special values (e.g. `--now` and empty) do not get formatted + if (typeof val === 'string' && val && val.indexOf('--') !== 0 && conf.wireFormat) { + conf._picker.valFormat(conf.wireFormat, val); + } + else { + conf._picker.val(val); + } + _triggerChange(conf._input); + } +}); +var upload = $.extend(true, {}, baseFieldType, { + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + var editor = this; + var container = _commonUpload(editor, conf, function (val) { + upload.set.call(editor, conf, val[0]); + editor._event('postUpload', [conf.name, val[0]]); + }); + return container; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + conf._enabled = false; + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + conf._enabled = true; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + conf._val = val; + conf._input.val(''); + var container = conf._input; + if (conf.display) { + var rendered = container.find('div.rendered'); + if (conf._val) { + rendered.html(conf.display(conf._val)); + } + else { + rendered + .empty() + .append('' + (conf.noFileText || 'No file') + ''); + } + } + var button = container.find('div.clearValue button'); + if (val && conf.clearText) { + button.html(conf.clearText); + container.removeClass('noClear'); + } + else { + container.addClass('noClear'); + } + conf._input.find('input').triggerHandler('upload.editor', [conf._val]); + } +}); +var uploadMany = $.extend(true, {}, baseFieldType, { + _showHide: function (conf) { + if (!conf.limit) { + return; + } + conf._container.find('div.limitHide').css('display', conf._val.length >= conf.limit ? + 'none' : + 'block'); + // Used by the Editor.upload static function to truncate if too many + // files are selected for upload + conf._limitLeft = conf.limit - conf._val.length; + }, + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + var editor = this; + var container = _commonUpload(editor, conf, function (val) { + conf._val = conf._val.concat(val); + uploadMany.set.call(editor, conf, conf._val); + editor._event('postUpload', [conf.name, conf._val]); + }, true); + container + .addClass('multi') + .on('click', 'button.remove', function (e) { + e.stopPropagation(); + if (conf._enabled) { + var idx = $(this).data('idx'); + conf._val.splice(idx, 1); + uploadMany.set.call(editor, conf, conf._val); + } + }); + conf._container = container; + return container; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + conf._enabled = false; + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + conf._enabled = true; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + // Default value for fields is an empty string, whereas we want [] + if (!val) { + val = []; + } + if (!Array.isArray(val)) { + throw new Error('Upload collections must have an array as a value'); + } + conf._val = val; + conf._input.val(''); + var that = this; + var container = conf._input; + if (conf.display) { + var rendered = container.find('div.rendered').empty(); + if (val.length) { + var list_1 = $('
                                                                                                                                                                        ').appendTo(rendered); + $.each(val, function (i, file) { + var display = conf.display(file, i); + if (display !== null) { + list_1.append('
                                                                                                                                                                      • ' + + display + + ' ' + + '
                                                                                                                                                                      • '); + } + }); + } + else { + rendered.append('' + (conf.noFileText || 'No files') + ''); + } + } + uploadMany._showHide(conf); + conf._input.find('input').triggerHandler('upload.editor', [conf._val]); + } +}); +var datatable = $.extend(true, {}, baseFieldType, { + _addOptions: function (conf, options, append) { + if (append === void 0) { append = false; } + var dt = conf.dt; + if (!append) { + dt.clear(); + } + dt.rows.add(options).draw(); + }, + _jumpToFirst: function (conf, editor) { + var dt = conf.dt; + // Find which page in the table the first selected row is + var idx = dt.row({ order: 'applied', selected: true }).index(); + var page = 0; + if (typeof idx === 'number') { + var pageLen = dt.page.info().length; + var pos = dt.rows({ order: 'applied' }).indexes().indexOf(idx); + page = pageLen > 0 + ? Math.floor(pos / pageLen) + : 0; + } + dt.page(page).draw(false); + // If scrolling is enabled, scroll down to first selected + var container = $('div.dataTables_scrollBody', dt.table().container()); + var scrollTo = function () { + var node = dt.row({ order: 'applied', selected: true }).node(); + if (node) { + var height = container.height(); + var top_1 = $(node).position().top; + if (top_1 > height - 10) { + container.scrollTop(top_1); + } + } + }; + if (container.length) { + // Check that the form has actually been displayed. If not need + // to wait for Editor's open event + if (container.parents('body').length) { + scrollTo(); + } + else { + editor.one('open', function () { + scrollTo(); + }); + } + } + }, + create: function (conf) { + var _this = this; + conf.optionsPair = $.extend({ + label: 'label', + value: 'value' + }, conf.optionsPair); + var table = $(''); + var container = $('
                                                                                                                                                                        ').append(table); + var side = $('
                                                                                                                                                                        '); + if (conf.footer) { + $('
                                                                                                                                                                        ') + .append(Array.isArray(conf.footer) + ? $('').append($.map(conf.footer, function (str) { return $('").append(Array.isArray(r.footer)?w("").append(w.map(r.footer,function(t){return w("").append(Array.isArray(a.footer)?$("").append($.map(a.footer,function(t){return $("'); + var attachFields = []; + var attach = []; + var displayFields = {}; + var tbody = dt.table(undefined).body(); + for (var i = 0, ien = dt.columns(':visible').count(); i < ien; i++) { + var visIdx = dt.column(i + ':visible').index(); + var td = $('
                                                                                                                                                                        ').html(str); })) + : conf.footer) + .appendTo(table); + } + var dt = table + .addClass(datatable.tableClass) + .width('100%') + .on('init.dt', function (e, settings) { + if (settings.nTable !== table[0]) { + return; + } + var api = new DataTable$3.Api(settings); + var containerNode = $(api.table(undefined).container()); + // Select init + DataTable$3.select.init(api); + // Append side button controls + side + .append(containerNode.find('div.dataTables_filter')) + .append(containerNode.find('div.dt-buttons')) + .append(containerNode.find('div.dataTables_info')); + }) + .DataTable($.extend({ + buttons: [], + columns: [ + { + data: conf.optionsPair.label, + title: 'Label' + } + ], + deferRender: true, + dom: 'fiBtp', + language: { + paginate: { + next: '>', + previous: '<', + }, + search: '', + searchPlaceholder: 'Search' + }, + lengthChange: false, + select: { + style: conf.multiple ? 'os' : 'single' + }, + }, conf.config)); + this.on('open', function () { + if (dt.search()) { + dt.search('').draw(); + } + dt.columns.adjust(); + }); + // Change event for when the user does a select - `set` will do its own + // triggering of the change for the api + dt.on('user-select', function () { + _triggerChange($(conf.dt.table().container())); + }); + if (conf.editor) { + conf.editor.table(dt); + conf.editor.on('submitComplete', function (e, json, data, action) { + if (action === 'create') { + var _loop_1 = function (dp) { + dt + .rows(function (idx, d) { return d === dp; }) + .select(); + }; + // Automatically select the new data + for (var _i = 0, _a = json.data; _i < _a.length; _i++) { + var dp = _a[_i]; + _loop_1(dp); + } + } + else if (action === 'edit' || action === 'remove') { + _this._dataSource('refresh'); + } + datatable._jumpToFirst(conf, _this); + }); + } + conf.dt = dt; + datatable._addOptions(conf, conf.options || []); + return { + input: container, + side: side, + }; + }, + disable: function (conf) { + conf.dt.select.style('api'); + conf.dt.buttons().container().css('display', 'none'); + }, + dt: function (conf) { + return conf.dt; + }, + enable: function (conf) { + conf.dt.select.style(conf.multiple ? 'os' : 'single'); + conf.dt.buttons().container().css('display', 'block'); + }, + get: function (conf) { + var rows = conf.dt + .rows({ selected: true }) + .data() + .pluck(conf.optionsPair.value) + .toArray(); + return conf.separator || !conf.multiple + ? rows.join(conf.separator || ',') + : rows; + }, + set: function (conf, val, localUpdate) { + // Convert to an array of values - works for both single and multiple + if (conf.multiple && conf.separator && !Array.isArray(val)) { + val = typeof val === 'string' ? + val.split(conf.separator) : + []; + } + else if (!Array.isArray(val)) { + val = [val]; + } + // if ( ! localUpdate ) { + // conf._lastSet = val; + // } + var valueFn = dataGet(conf.optionsPair.value); + conf.dt.rows({ selected: true }).deselect(); + conf.dt.rows(function (idx, data, node) { return val.indexOf(valueFn(data)) !== -1; }).select(); + // Jump to the first page with a selected row (if there are any) + datatable._jumpToFirst(conf, this); + // Update will call change itself, otherwise multiple might be called + if (!localUpdate) { + _triggerChange($(conf.dt.table().container())); + } + }, + tableClass: '', + update: function (conf, options, append) { + datatable._addOptions(conf, options, append); + // Attempt to set the last selected value (set by the API or the end + // user, they get equal priority) + var lastSet = conf._lastSet; + if (lastSet !== undefined) { + datatable.set(conf, lastSet, true); + } + _triggerChange($(conf.dt.table().container())); + } +}); + +var defaults = { + className: '', + compare: null, + data: '', + def: '', + entityDecode: true, + fieldInfo: '', + getFormatter: null, + id: '', + label: '', + labelInfo: '', + message: '', + multiEditable: true, + name: null, + nullDefault: false, + setFormatter: null, + submit: true, + type: 'text' +}; + +var DataTable$2 = $.fn.dataTable; +var Field = /** @class */ (function () { + function Field(options, classes, host) { + var that = this; + var multiI18n = host.internalI18n().multi; + var opts = $.extend(true, {}, Field.defaults, options); + if (!Editor.fieldTypes[opts.type]) { + throw new Error('Error adding field - unknown field type ' + opts.type); + } + this.s = { + classes: classes, + host: host, + multiIds: [], + multiValue: false, + multiValues: {}, + name: opts.name, + opts: opts, + processing: false, + type: Editor.fieldTypes[opts.type], + }; + // No id, so assign one to have the label reference work + if (!opts.id) { + opts.id = 'DTE_Field_' + opts.name; + } + // If no `data` option is given, then we use the name from the field as the + // data prop to read data for the field from DataTables + if (opts.data === '') { + opts.data = opts.name; + } + // Get and set functions in the data object for the record + this.valFromData = function (d) { + // wrapper to automatically pass `editor` as the type + return dataGet(opts.data)(d, 'editor'); + }; + this.valToData = dataSet(opts.data); // set val to data + // Field HTML structure + var template = $('
                                                                                                                                                                        ' + + '' + + '
                                                                                                                                                                        ' + + // Field specific HTML is added here if there is any + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + multiI18n.title + + '' + + multiI18n.info + + '' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + multiI18n.restore + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + opts.message + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + opts.fieldInfo + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        '); + var input = this._typeFn('create', opts); + var side = null; + if (input && input.side) { + side = input.side; + input = input.input; + } + if (input !== null) { + el('input-control', template).prepend(input); + } + else { + template.css('display', 'none'); + } + this.dom = { + container: template, + fieldError: el('msg-error', template), + fieldInfo: el('msg-info', template), + fieldMessage: el('msg-message', template), + inputControl: el('input-control', template), + label: el('label', template).append(side), + labelInfo: el('msg-label', template), + multi: el('multi-value', template), + multiInfo: el('multi-info', template), + multiReturn: el('msg-multi', template), + processing: el('field-processing', template) + }; + // On click - set a common value for the field + this.dom.multi.on('click', function () { + if (that.s.opts.multiEditable && !template.hasClass(classes.disabled) && opts.type !== 'readonly') { + that.val(''); + that.focus(); + } + }); + this.dom.multiReturn.on('click', function () { + that.multiRestore(); + }); + // Field type extension methods - add a method to the field for the public + // methods that each field type defines beyond the default ones that already + // exist as part of this instance + $.each(this.s.type, function (name, fn) { + if (typeof fn === 'function' && that[name] === undefined) { + that[name] = function () { + var args = Array.prototype.slice.call(arguments); + args.unshift(name); + var ret = that._typeFn.apply(that, args); + // Return the given value if there is one, or the field instance + // for chaining if there is no value + return ret === undefined ? + that : + ret; + }; + } + }); + } + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public + */ + Field.prototype.def = function (set) { + var opts = this.s.opts; + if (set === undefined) { + // Backwards compat + var def = opts['default'] !== undefined ? + opts['default'] : + opts.def; + return typeof def === 'function' ? + def() : + def; + } + opts.def = set; + return this; + }; + Field.prototype.disable = function () { + this.dom.container.addClass(this.s.classes.disabled); + this._typeFn('disable'); + return this; + }; + Field.prototype.displayed = function () { + var container = this.dom.container; + return container.parents('body').length && container.css('display') !== 'none' ? + true : + false; + }; + Field.prototype.enable = function (toggle) { + if (toggle === void 0) { toggle = true; } + if (toggle === false) { + return this.disable(); + } + this.dom.container.removeClass(this.s.classes.disabled); + this._typeFn('enable'); + return this; + }; + Field.prototype.enabled = function () { + return this.dom.container.hasClass(this.s.classes.disabled) === false; + }; + Field.prototype.error = function (msg, fn) { + var classes = this.s.classes; + // Add or remove the error class + if (msg) { + this.dom.container.addClass(classes.error); + } + else { + this.dom.container.removeClass(classes.error); + } + this._typeFn('errorMessage', msg); + return this._msg(this.dom.fieldError, msg, fn); + }; + Field.prototype.fieldInfo = function (msg) { + return this._msg(this.dom.fieldInfo, msg); + }; + Field.prototype.isMultiValue = function () { + return this.s.multiValue && this.s.multiIds.length !== 1; + }; + Field.prototype.inError = function () { + return this.dom.container.hasClass(this.s.classes.error); + }; + Field.prototype.input = function () { + return this.s.type.input ? + this._typeFn('input') : + $('input, select, textarea', this.dom.container); + }; + Field.prototype.focus = function () { + if (this.s.type.focus) { + this._typeFn('focus'); + } + else { + $('input, select, textarea', this.dom.container).focus(); + } + return this; + }; + Field.prototype.get = function () { + // When multi-value a single get is undefined + if (this.isMultiValue()) { + return undefined; + } + return this._format(this._typeFn('get'), this.s.opts.getFormatter); + }; + Field.prototype.hide = function (animate) { + var el = this.dom.container; + if (animate === undefined) { + animate = true; + } + if (this.s.host.display() && animate && $.fn.slideUp) { + el.slideUp(); + } + else { + el.css('display', 'none'); + } + return this; + }; + Field.prototype.label = function (str) { + var label = this.dom.label; + var labelInfo = this.dom.labelInfo.detach(); + if (str === undefined) { + return label.html(); + } + label.html(str); + label.append(labelInfo); + return this; + }; + Field.prototype.labelInfo = function (msg) { + return this._msg(this.dom.labelInfo, msg); + }; + Field.prototype.message = function (msg, fn) { + return this._msg(this.dom.fieldMessage, msg, fn); + }; + // There is no `multiVal()` as its arguments could be ambiguous + // id is an idSrc value _only_ + Field.prototype.multiGet = function (id) { + var value; + var multiValues = this.s.multiValues; + var multiIds = this.s.multiIds; + var isMultiValue = this.isMultiValue(); + if (id === undefined) { + var fieldVal = this.val(); + // Get an object with the values for each item being edited + value = {}; + for (var _i = 0, multiIds_1 = multiIds; _i < multiIds_1.length; _i++) { + var multiId = multiIds_1[_i]; + value[multiId] = isMultiValue ? + multiValues[multiId] : + fieldVal; + } + } + else if (isMultiValue) { + // Individual value + value = multiValues[id]; + } + else { + // Common value + value = this.val(); + } + return value; + }; + Field.prototype.multiRestore = function () { + this.s.multiValue = true; + this._multiValueCheck(); + }; + Field.prototype.multiSet = function (id, val, recalc) { + if (recalc === void 0) { recalc = true; } + var that = this; + var multiValues = this.s.multiValues; + var multiIds = this.s.multiIds; + if (val === undefined) { + val = id; + id = undefined; + } + // Set + var set = function (idSrc, valIn) { + // Get an individual item's value - add the id to the edit ids if + // it isn't already in the set. + if ($.inArray(idSrc, multiIds) === -1) { + multiIds.push(idSrc); + } + multiValues[idSrc] = that._format(valIn, that.s.opts.setFormatter); + }; + if ($.isPlainObject(val) && id === undefined) { + // idSrc / value pairs passed in + $.each(val, function (idSrc, innerVal) { + set(idSrc, innerVal); + }); + } + else if (id === undefined) { + // Set same value for all existing ids + $.each(multiIds, function (i, idSrc) { + set(idSrc, val); + }); + } + else { + // Setting an individual property + set(id, val); + } + this.s.multiValue = true; + if (recalc) { + this._multiValueCheck(); + } + return this; + }; + Field.prototype.name = function () { + return this.s.opts.name; + }; + Field.prototype.node = function () { + return this.dom.container[0]; + }; + Field.prototype.nullDefault = function () { + return this.s.opts.nullDefault; + }; + Field.prototype.processing = function (set) { + if (set === undefined) { + return this.s.processing; + } + this.dom.processing.css('display', set ? 'block' : 'none'); + this.s.processing = set; + this.s.host.internalEvent('processing-field', [set]); + return this; + }; + // multiCheck is not publicly documented + Field.prototype.set = function (val, multiCheck) { + if (multiCheck === void 0) { multiCheck = true; } + var decodeFn = function (d) { + return typeof d !== 'string' ? + d : + d + .replace(/>/g, '>') + .replace(/</g, '<') + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/£/g, '£') + .replace(/�?39;/g, '\'') + .replace(/�?10;/g, '\n'); + }; + this.s.multiValue = false; + var decode = this.s.opts.entityDecode; + if (decode === undefined || decode === true) { + if (Array.isArray(val)) { + for (var i = 0, ien = val.length; i < ien; i++) { + val[i] = decodeFn(val[i]); + } + } + else { + val = decodeFn(val); + } + } + // If triggered from multi check we don't want to do formatting or multi checking again + if (multiCheck === true) { + val = this._format(val, this.s.opts.setFormatter); + this._typeFn('set', val); + this._multiValueCheck(); + } + else { + this._typeFn('set', val); + } + return this; + }; + Field.prototype.show = function (animate, toggle) { + if (animate === void 0) { animate = true; } + if (toggle === void 0) { toggle = true; } + if (toggle === false) { + return this.hide(animate); + } + var el = this.dom.container; + if (this.s.host.display() && animate && $.fn.slideDown) { + el.slideDown(); + } + else { + el.css('display', ''); // empty to restore css default (flex or block) + } + return this; + }; + Field.prototype.update = function (options, append) { + if (append === void 0) { append = false; } + if (this.s.type.update) { + this._typeFn('update', options, append); + } + return this; + }; + Field.prototype.val = function (val) { + return val === undefined ? + this.get() : + this.set(val); + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal - Called from Editor only and are not publicly documented - + * these APIs can change! + */ + Field.prototype.compare = function (value, original) { + var compare = this.s.opts.compare || deepCompare; + return compare(value, original); + }; + Field.prototype.dataSrc = function () { + return this.s.opts.data; + }; + Field.prototype.destroy = function () { + // remove element + this.dom.container.remove(); + // field's own destroy method if there is one + this._typeFn('destroy'); + return this; + }; + Field.prototype.multiEditable = function () { + return this.s.opts.multiEditable; + }; + Field.prototype.multiIds = function () { + return this.s.multiIds; + }; + Field.prototype.multiInfoShown = function (show) { + this.dom.multiInfo.css({ display: show ? 'block' : 'none' }); + }; + Field.prototype.multiReset = function () { + this.s.multiIds = []; + this.s.multiValues = {}; + }; + Field.prototype.submittable = function () { + return this.s.opts.submit; + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal + */ + Field.prototype._msg = function (el, msg, fn) { + if (msg === undefined) { + return el.html(); + } + if (typeof msg === 'function') { + var editor = this.s.host; + msg = msg(editor, new DataTable$2.Api(editor.internalSettings().table)); + } + if (el.parent().is(':visible') && $.fn.animate) { + el.html(msg); + if (msg) { + el.slideDown(fn); // fn can be undefined - so jQuery won't execute it + } + else { + el.slideUp(fn); + } + } + else { + // Not visible, so immediately set, or blank out the element + el + .html(msg || '') + .css('display', msg ? 'block' : 'none'); + if (fn) { + fn(); + } + } + return this; + }; + Field.prototype._multiValueCheck = function () { + var last; + var ids = this.s.multiIds; + var values = this.s.multiValues; + var isMultiValue = this.s.multiValue; + var isMultiEditable = this.s.opts.multiEditable; + var val; + var different = false; + if (ids) { + for (var i = 0; i < ids.length; i++) { + val = values[ids[i]]; + if (i > 0 && !deepCompare(val, last)) { + different = true; + break; + } + last = val; + } + } + if ((different && isMultiValue) || (!isMultiEditable && this.isMultiValue())) { + // Different values or same values, but not multiple editable + this.dom.inputControl.css({ display: 'none' }); + this.dom.multi.css({ display: 'block' }); + } + else { + // All the same value + this.dom.inputControl.css({ display: 'block' }); + this.dom.multi.css({ display: 'none' }); + if (isMultiValue && !different) { + this.set(last, false); + } + } + this.dom.multiReturn.css({ + display: ids && ids.length > 1 && different && !isMultiValue ? + 'block' : + 'none' + }); + // Update information label + var i18n = this.s.host.internalI18n().multi; + this.dom.multiInfo.html(isMultiEditable ? i18n.info : i18n.noMulti); + this.dom.multi.toggleClass(this.s.classes.multiNoEdit, !isMultiEditable); + this.s.host.internalMultiInfo(); + return true; + }; + Field.prototype._typeFn = function (name) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + // Insert the options as the first parameter - all field type methods + // take the field's configuration object as the first parameter + args.unshift(this.s.opts); + var fn = this.s.type[name]; + if (fn) { + return fn.apply(this.s.host, args); + } + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private + */ + Field.prototype._errorNode = function () { + return this.dom.fieldError; + }; + Field.prototype._format = function (val, formatter) { + if (formatter) { + if (Array.isArray(formatter)) { + var args = formatter.slice(); + var name_1 = args.shift(); + formatter = Field.formatters[name_1].apply(this, args); + } + return formatter.call(this.s.host, val, this); + } + return val; + }; + Field.defaults = defaults; + Field.formatters = {}; + return Field; +}()); + +var button = { + action: null, + className: null, + tabIndex: 0, + text: null, +}; + +var displayController = { + close: function () { }, + init: function () { }, + node: function () { }, + open: function () { } +}; + +var DataTable$1 = $.fn.dataTable; +/* + * DataTables 1.10 API integration. Provides the ability to control basic Editor + * aspects from the DataTables API. Full control does of course require use of + * the Editor API though. + */ +var apiRegister = DataTable$1.Api.register; +function _getInst(api) { + var ctx = api.context[0]; + return ctx.oInit.editor || ctx._editor; +} +// Set sensible defaults for the editing options +function _setBasic(inst, opts, type, plural) { + if (!opts) { + opts = {}; + } + if (opts.buttons === undefined) { + opts.buttons = '_basic'; + } + if (opts.title === undefined) { + opts.title = inst.i18n[type].title; + } + if (opts.message === undefined) { + if (type === 'remove') { + var confirm_1 = inst.i18n[type].confirm; + opts.message = plural !== 1 ? confirm_1._.replace(/%d/, plural) : confirm_1['1']; + } + else { + opts.message = ''; + } + } + return opts; +} +apiRegister('editor()', function () { + return _getInst(this); +}); +// Row editing +apiRegister('row.create()', function (opts) { + // main + var inst = _getInst(this); + inst.create(_setBasic(inst, opts, 'create')); + return this; +}); +apiRegister('row().edit()', function (opts) { + // main + var inst = _getInst(this); + inst.edit(this[0][0], _setBasic(inst, opts, 'edit')); + return this; +}); +apiRegister('rows().edit()', function (opts) { + // main + var inst = _getInst(this); + inst.edit(this[0], _setBasic(inst, opts, 'edit')); + return this; +}); +apiRegister('row().delete()', function (opts) { + // main + var inst = _getInst(this); + inst.remove(this[0][0], _setBasic(inst, opts, 'remove', 1)); + return this; +}); +apiRegister('rows().delete()', function (opts) { + // main + var inst = _getInst(this); + inst.remove(this[0], _setBasic(inst, opts, 'remove', this[0].length)); + return this; +}); +apiRegister('cell().edit()', function (type, opts) { + // inline or bubble + if (!type) { + type = 'inline'; + } + else if ($.isPlainObject(type)) { + opts = type; + type = 'inline'; + } + _getInst(this)[type](this[0][0], opts); + return this; +}); +apiRegister('cells().edit()', function (opts) { + // bubble only at the moment + _getInst(this).bubble(this[0], opts); + return this; +}); +apiRegister('file()', file); +apiRegister('files()', files); +// Global listener for file information updates via DataTables' Ajax JSON +$(document).on('xhr.dt', function (e, ctx, json) { + if (e.namespace !== 'dt') { + return; + } + if (json && json.files) { + $.each(json.files, function (name, filesIn) { + if (!Editor.files[name]) { + Editor.files[name] = {}; + } + $.extend(Editor.files[name], filesIn); + }); + } +}); + +/* + * Add helpful buttons to make life easier + * + * Note that the values that require a string to make any sense (the button text + * for example) are set by Editor when Editor is initialised through the i18n + * options. + */ +var _buttons = $.fn.dataTable.ext.buttons; +$.extend(_buttons, { + create: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .create($.extend({ + buttons: config.formButtons, + message: config.formMessage || editor.i18n.create.message, + nest: true, + title: config.formTitle || editor.i18n.create.title + }, config.formOptions)); + }, + className: 'buttons-create', + editor: null, + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.create.submit; + } + }, + formMessage: null, + formOptions: {}, + formTitle: null, + text: function (dt, node, config) { + return dt.i18n('buttons.create', config.editor.i18n.create.button); + }, + }, + createInline: { + action: function (e, dt, node, config) { + config.editor.inlineCreate(config.position, config.formOptions); + }, + className: 'buttons-create', + editor: null, + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.create.submit; + } + }, + formOptions: {}, + position: 'start', + text: function (dt, node, config) { + return dt.i18n('buttons.create', config.editor.i18n.create.button); + }, + }, + edit: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + var rows = dt.rows({ selected: true }).indexes(); + var columns = dt.columns({ selected: true }).indexes(); + var cells = dt.cells({ selected: true }).indexes(); + var items = columns.length || cells.length ? + { + cells: cells, + columns: columns, + rows: rows + } : + rows; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .edit(items, $.extend({ + buttons: config.formButtons, + message: config.formMessage || editor.i18n.edit.message, + nest: true, + title: config.formTitle || editor.i18n.edit.title + }, config.formOptions)); + }, + className: 'buttons-edit', + editor: null, + extend: 'selected', + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.edit.submit; + }, + }, + formMessage: null, + formOptions: {}, + formTitle: null, + text: function (dt, node, config) { + return dt.i18n('buttons.edit', config.editor.i18n.edit.button); + }, + }, + remove: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .remove(dt.rows({ selected: true }).indexes(), $.extend({ + buttons: config.formButtons, + message: config.formMessage, + nest: true, + title: config.formTitle || editor.i18n.remove.title + }, config.formOptions)); + }, + className: 'buttons-remove', + editor: null, + extend: 'selected', + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.remove.submit; + }, + }, + formMessage: function (editor, dt) { + var rows = dt.rows({ selected: true }).indexes(); + var i18n = editor.i18n.remove; + var question = typeof i18n.confirm === 'string' ? + i18n.confirm : + i18n.confirm[rows.length] ? + i18n.confirm[rows.length] : i18n.confirm._; + return question.replace(/%d/g, rows.length); + }, + formOptions: {}, + formTitle: null, + limitTo: ['rows'], + text: function (dt, node, config) { + return dt.i18n('buttons.remove', config.editor.i18n.remove.button); + }, + } +}); +// Reuse the standard edit and remove buttons for their singular equivalent, +// but set it to extend the single selected button only +_buttons.editSingle = $.extend({}, _buttons.edit); +_buttons.editSingle.extend = 'selectedSingle'; +_buttons.removeSingle = $.extend({}, _buttons.remove); +_buttons.removeSingle.extend = 'selectedSingle'; + + +if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.20')) { + throw new Error('Editor requires DataTables 1.10.20 or newer'); +} +var Editor = /** @class */ (function () { + function Editor(init, cjsJq) { + var _this = this; + this.add = add; + this.ajax = ajax; + this.background = background; + this.blur = blur; + this.bubble = bubble; + this.bubblePosition = bubblePosition; + this.buttons = buttons; + this.clear = clear; + this.close = close; + this.create = create; + this.undependent = undependent; + this.dependent = dependent; + this.destroy = destroy; + this.disable = disable; + this.display = display; + this.displayed = displayed; + this.displayNode = displayNode; + this.edit = edit; + this.enable = enable; + this.error = error$1; + this.field = field; + this.fields = fields; + this.file = file; + this.files = files; + this.get = get; + this.hide = hide; + this.ids = ids; + this.inError = inError; + this.inline = inline; + this.inlineCreate = inlineCreate; + this.message = message; + this.mode = mode; + this.modifier = modifier; + this.multiGet = multiGet; + this.multiSet = multiSet; + this.node = node; + this.off = off; + this.on = on; + this.one = one; + this.open = open; + this.order = order; + this.remove = remove; + this.set = set; + this.show = show; + this.submit = submit; + this.table = table; + this.template = template; + this.title = title; + this.val = val; + this._actionClass = _actionClass; + this._ajax = _ajax; + this._animate = _animate; + this._assembleMain = _assembleMain; + this._blur = _blur; + this._clearDynamicInfo = _clearDynamicInfo; + this._close = _close; + this._closeReg = _closeReg; + this._crudArgs = _crudArgs; + this._dataSource = _dataSource; + this._displayReorder = _displayReorder; + this._edit = _edit; + this._event = _event; + this._eventName = _eventName; + this._fieldFromNode = _fieldFromNode; + this._fieldNames = _fieldNames; + this._focus = _focus; + this._formOptions = _formOptions; + this._inline = _inline; + this._inputTrigger = _inputTrigger; + this._optionsUpdate = _optionsUpdate; + this._message = _message; + this._multiInfo = _multiInfo; + this._nestedClose = _nestedClose; + this._nestedOpen = _nestedOpen; + this._postopen = _postopen; + this._preopen = _preopen; + this._processing = _processing; + this._noProcessing = _noProcessing; + this._submit = _submit; + this._submitTable = _submitTable; + this._submitSuccess = _submitSuccess; + this._submitError = _submitError; + this._tidy = _tidy; + this._weakInArray = _weakInArray; + // Check if called with a window or jQuery object for DOM less applications + // This is for backwards compatibility with CommonJS loader + if (Editor.factory(init, cjsJq)) { + return Editor; + } + if (!(this instanceof Editor)) { + alert('DataTables Editor must be initialised as a \'new\' instance'); + } + init = $.extend(true, {}, Editor.defaults, init); + this.c = init; + this.s = $.extend(true, {}, Editor.models.settings, { + actionName: init.actionName, + ajax: init.ajax, + formOptions: init.formOptions, + idSrc: init.idSrc, + table: init.domTable || init.table, + template: init.template ? + $(init.template).detach() : null + }); + this.classes = $.extend(true, {}, Editor.classes); + this.i18n = init.i18n; + // Increment the unique counter for the next instance + Editor.models.settings.unique++; + var that = this; + var classes = this.classes; + var wrapper = $('
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        ' + + '
                                                                                                                                                                        '); + var form = $('' + + '
                                                                                                                                                                        ' + + ''); + this.dom = { + body: el('body', wrapper)[0], + bodyContent: el('body_content', wrapper)[0], + buttons: $('
                                                                                                                                                                        ')[0], + footer: el('foot', wrapper)[0], + form: form[0], + formContent: el('form_content', form)[0], + formError: $('
                                                                                                                                                                        ')[0], + formInfo: $('
                                                                                                                                                                        ')[0], + header: $('
                                                                                                                                                                        ')[0], + processing: el('processing', wrapper)[0], + wrapper: wrapper[0], + }; + // Bind callback methods + $.each(init.events, function (evt, fn) { + that.on(evt, function () { + var argsIn = []; + for (var _i = 0; _i < arguments.length; _i++) { + argsIn[_i] = arguments[_i]; + } + // When giving events in the constructor the event argument was not + // given in 1.2-, so we remove it here. This is solely for + // backwards compatibility as the events in the initialisation are + // not documented in 1.3+. + fn.apply(that, argsIn); + }); + }); + // Cache the DOM nodes + this.dom; + // Add any fields which are given on initialisation + if (init.fields) { + this.add(init.fields); + } + $(document) + .on('init.dt.dte' + this.s.unique, function (e, settings, json) { + // Resolve this reference in the event handlers so the + // table() API method can be used to change it and the + // change still be operated on here. + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Attempt to attach to a DataTable automatically when the table is + // initialised + settings._editor = _this; + } + } + }) + .on('i18n.dt.dte' + this.s.unique, function (e, settings) { + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Use loaded language options + if (settings.oLanguage.editor) { + $.extend(true, _this.i18n, settings.oLanguage.editor); + } + } + } + }) + .on('xhr.dt.dte' + this.s.unique, function (e, settings, json) { + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Automatically update fields which have a field name defined in + // the returned json - saves an `initComplete` for the user + _this._optionsUpdate(json); + } + } + }); + // Prep the display controller + if (!Editor.display[init.display]) { + throw new Error('Cannot find display controller ' + init.display); + } + this.s.displayController = Editor.display[init.display].init(this); + this._event('initComplete', []); + $(document).trigger('initEditor', [this]); + } + // Expose internal methods and options for the Field class to use + // These are not publicly documented. + /** @internal */ + Editor.prototype.internalEvent = function (name, args) { + this._event(name, args); + }; + /** @internal */ + Editor.prototype.internalI18n = function () { + return this.i18n; + }; + /** @internal */ + Editor.prototype.internalMultiInfo = function () { + return this._multiInfo(); + }; + /** @internal */ + Editor.prototype.internalSettings = function () { + return this.s; + }; + Editor.fieldTypes = { + checkbox: checkbox, + datatable: datatable, + datetime: datetime, + hidden: hidden, + password: password, + radio: radio, + readonly: readonly, + select: select, + text: text, + textarea: textarea, + upload: upload, + uploadMany: uploadMany + }; + Editor.files = {}; + Editor.version = '2.1.3'; + Editor.classes = classNames; + Editor.Field = Field; + Editor.DateTime = null; + Editor.error = error; + Editor.pairs = pairs; + Editor.factory = factory; + Editor.upload = upload$1; + Editor.defaults = defaults$1; + Editor.models = { + button: button, + displayController: displayController, + fieldType: fieldType, + formOptions: formOptions, + settings: settings, + }; + Editor.dataSources = { + dataTable: dataSource$1, + html: dataSource, + }; + Editor.display = { + envelope: envelope, + lightbox: self, + }; + Editor.safeId = function (id) { + return safeDomId(id, ''); + }; + return Editor; +}()); +DataTable.Editor = Editor; +$.fn.DataTable.Editor = Editor; +if (DataTable.DateTime) { + Editor.DateTime = DataTable.DateTime; +} +// If there are field types available on DataTables we copy them in (after the +// built in ones to allow overrides) and then expose the field types object. +if (DataTable.ext.editorFields) { + $.extend(Editor.fieldTypes, DataTable.ext.editorFields); +} +DataTable.ext.editorFields = Editor.fieldTypes; + + + +return Editor; +})); diff --git a/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.min.js b/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.min.js new file mode 100644 index 00000000..227abd83 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/dataTables.editor.min.js @@ -0,0 +1,6 @@ +/*! DataTables Editor v2.1.3 + * + * ©2012-2023 SpryMedia Ltd, all rights reserved. + * License: editor.datatables.net/license + */ +!function(i){var n,s;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return i(t,window,document)}):"object"==typeof exports?(n=require("jquery"),s=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||n(t),s(t,e),i(e,t,t.document)}:(s(window,n),module.exports=i(n,window,window.document))):i(jQuery,window,document)}(function(w,c,y,E){"use strict";var r=w.fn.dataTable,t={buttons:!0,drawType:!1,focus:0,message:!0,nest:!1,onBackground:"blur",onBlur:"close",onComplete:"close",onEsc:"close",onFieldError:"focus",onReturn:"submit",scope:"row",submit:"all",submitHtml:"▶",submitTrigger:null,title:!0},N={actionName:"action",ajax:null,display:"lightbox",events:{},fields:[],formOptions:{bubble:w.extend({},t,{buttons:"_basic",message:!1,submit:"changed",title:!1}),inline:w.extend({},t,{buttons:!1,submit:"changed"}),main:w.extend({},t)},i18n:{close:"Close",create:{button:"New",submit:"Create",title:"Create new entry"},datetime:{amPm:["am","pm"],hours:"Hour",minutes:"Minute",months:["January","February","March","April","May","June","July","August","September","October","November","December"],next:"Next",previous:"Previous",seconds:"Second",unknown:"-",weekdays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},edit:{button:"Edit",submit:"Update",title:"Edit entry"},error:{system:'A system error has occurred (More information).'},multi:{info:"The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.",noMulti:"This input can be edited individually, but not part of a group.",restore:"Undo changes",title:"Multiple values"},remove:{button:"Delete",confirm:{1:"Are you sure you wish to delete 1 row?",_:"Are you sure you wish to delete %d rows?"},submit:"Delete",title:"Delete"}},idSrc:"DT_RowId",table:null},B={action:null,actionName:"action",ajax:null,bubbleNodes:[],bubbleBottom:!1,closeCb:null,closeIcb:null,dataSource:null,displayController:null,displayed:!1,editCount:0,editData:{},editFields:{},editOpts:{},fields:{},formOptions:{bubble:w.extend({},t),inline:w.extend({},t),main:w.extend({},t)},globalError:"",id:-1,idSrc:null,includeFields:[],mode:null,modifier:null,opts:null,order:[],processing:!1,setFocus:null,table:null,template:null,unique:0},e=w.fn.dataTable.ext.oApi;function L(t){var e,i=[];for(e in t)t.hasOwnProperty(e)&&i.push(e);return i}function a(t,e){return w('*[data-dte-e="'+t+'"]',e=e===E?y:e)}function f(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/(:|\.|\[|\]|,)/g,"\\$1"):e+t}function u(t){return e._fnGetObjectDataFn(t)}function _(t){return e._fnSetObjectDataFn(t)}var d=e._fnExtend;function p(t,i){var n=[];return w.each(t,function(t,e){n.push(e[i])}),n}function M(t,e){if("object"!=typeof t||"object"!=typeof e)return t==e;var i=L(t),n=L(e);if(i.length!==n.length)return!1;for(var s=0,o=i.length;s'),n=[],s=[],o={},r=e.table(E).body(),a=0,l=e.columns(":visible").count();a").appendTo(i),c=W(e,this.s.fields,d,!0),d=e.settings()[0].aoColumns[d].sClass;d&&u.addClass(d),Object.keys(c).length&&(n.push(Object.keys(c)),s.push(u[0]),w.extend(o,c))}function f(){0===e.page.info().recordsDisplay&&w(r).empty(),i["end"===t?"appendTo":"prependTo"](r)}return this.__dtFakeRow=i,f(),e.on("draw.dte-createInline",function(){f()}),{0:{attach:s,attachFields:n,displayFields:o,fields:this.s.fields,type:"row"}}},fakeRowEnd:function(){var t=h(this.s.table);t.off("draw.dte-createInline"),this.__dtFakeRow.remove(),this.__dtFakeRow=null,0===t.page.info().recordsDisplay&&t.draw(!1)},fields:function(t){var e,i,n,s,o,r=u(this.s.idSrc),a=h(this.s.table),l=this.s.fields,d={};return!w.isPlainObject(t)||t.rows===E&&t.columns===E&&t.cells===E?q(d,a,t,l,r):(t.rows!==E&&q(d,a,t.rows,l,r),t.columns!==E&&(e=d,i=a,n=t.columns,s=l,o=r,i.cells(null,n).indexes().each(function(t){H(e,i,t,s,o)})),t.cells!==E&&H(d,a,t.cells,l,r)),d},id:function(t){return u(this.s.idSrc)(t)},individual:function(t,e){var i,n=u(this.s.idSrc),s=h(this.s.table),o=this.s.fields,r={};return e&&(Array.isArray(e)||(e=[e]),i={},w.each(e,function(t,e){i[e]=o[e]})),H(r,s,t,o,n,i),r},prep:function(t,e,i,n,s){var o,r=this;"create"===t&&(s.rowIds=w.map(n.data,function(t){return m.id.call(r,t)})),"edit"===t?(o=n.cancelled||[],s.rowIds=w.map(i.data,function(t,e){return w.isEmptyObject(i.data[e])||-1!==w.inArray(e,o)?E:e})):"remove"===t&&(s.cancelled=n.cancelled||[])},refresh:function(){h(this.s.table).ajax.reload(null,!1)},remove:function(t,e,i){var n,s=this,o=h(this.s.table),r=i.cancelled;(0===r.length?o.rows(t):(n=[],o.rows(t).every(function(){var t=m.id.call(s,this.data());-1===w.inArray(t,r)&&n.push(this.index())}),o.rows(n))).remove()}};function z(t){if("keyless"===t)return w(y);var e=w('[data-editor-id="'+t+'"]');if(0===(e=0===e.length?w("string"==typeof t?f(t):t):e).length)throw new Error("Could not find an element with `data-editor-id` or `id` of: "+t);return e}function G(t,e){t=z(t);return w('[data-editor-field="'+e+'"]',t)}function J(n,t,s){w.each(t,function(t,e){var i=e.valFromData(s);i!==E&&((e=G(n,e.dataSrc())).filter("[data-editor-value]").length?e.attr("data-editor-value",i):e.each(function(){for(;this.childNodes.length;)this.removeChild(this.firstChild)}).html(i))})}var l={create:function(t,e){if(e){var i=l.id.call(this,e);try{z(i).length&&J(i,t,e)}catch(t){}}},edit:function(t,e,i){J(l.id.call(this,i)||"keyless",e,i)},fields:function(s){var t={};if(Array.isArray(s))for(var e=0,i=s.length;e
                                                                                                                                                                        ')[0],close:w('
                                                                                                                                                                        ')[0],content:null,wrapper:w('
                                                                                                                                                                        ')[0]};function Q(t){var e=w("div.DTE_Header",b.wrapper).outerHeight(),i=w("div.DTE_Footer",b.wrapper).outerHeight(),e=w(c).height()-2*g.conf.windowPadding-e-i;return w("div.DTE_Body_Content",b.wrapper).css("maxHeight",e),w(t.dom.wrapper).outerHeight()}function Z(t,e){e=e||function(){},v&&(w(b.content).animate({top:-(b.content.offsetHeight+50)},600,function(){w([b.wrapper,b.background]).fadeOut("normal",function(){w(this).detach(),e()})}),v=!1)}function K(e,t){var i,n,s,o,r;t=t||function(){},w("body").append(b.background).append(b.wrapper),b.content.style.height="auto",v||((i=b.wrapper.style).opacity="0",i.display="block",n=Q(e),s=e,o=g.conf.attach,r=new w.fn.dataTable.Api(s.s.table),r=(o="head"===o||"create"===s.s.action?r.table(E).header():r.row(s.s.modifier).node()).offsetWidth,i.display="none",i.opacity="1",b.wrapper.style.width=r+"px",b.wrapper.style.marginLeft=-r/2+"px",b.wrapper.style.top=w(o).offset().top+o.offsetHeight+"px",b.content.style.top=-1*n-20+"px",b.background.style.opacity="0",b.background.style.display="block",w(b.background).animate({opacity:$},"normal"),w(b.wrapper).fadeIn(),w(b.content).animate({top:0},600,t)),w(b.close).attr("title",e.i18n.close).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.close()}),w(b.background).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.background()}),w("div.DTED_Lightbox_Content_Wrapper",b.wrapper).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){w(t.target).hasClass("DTED_Envelope_Content_Wrapper")&&e.background()}),w(c).off("resize.DTED_Envelope").on("resize.DTED_Envelope",function(){Q(e)}),v=!0}var g={close:function(t,e){Z(0,e)},conf:{attach:"row",windowPadding:50},destroy:function(t){Z()},init:function(t){return b.content=w("div.DTED_Envelope_Container",b.wrapper)[0],$=w(b.background).css("opacity"),g},node:function(t){return b.wrapper[0]},open:function(t,e,i){w(b.content).children().detach(),b.content.appendChild(e),b.content.appendChild(b.close),K(t,i)}};function Y(){return void 0!==c.orientation&&c.outerWidth<=576}var o=!1,tt=!1,et=0,T={background:w('
                                                                                                                                                                        '),close:w('
                                                                                                                                                                        '),content:null,wrapper:w('
                                                                                                                                                                        ')};function it(){var t=w("div.DTE_Header",T.wrapper).outerHeight()+w("div.DTE_Footer",T.wrapper).outerHeight();Y()?w("div.DTE_Body_Content",T.wrapper).css("maxHeight","calc(100vh - "+t+"px)"):(t=w(c).height()-2*D.conf.windowPadding-t,w("div.DTE_Body_Content",T.wrapper).css("maxHeight",t))}function nt(t,e){e=e||function(){},w("body").scrollTop(et),t._animate(T.wrapper,{opacity:0,top:D.conf.offsetAni},function(){w(this).detach(),e()}),t._animate(T.background,{opacity:0},function(){w(this).detach()}),o=!1,w(c).off("resize.DTED_Lightbox")}var D={close:function(t,e){nt(t,e)},conf:{offsetAni:25,windowPadding:25},destroy:function(t){o&&nt(t)},init:function(t){return tt||(T.content=w("div.DTED_Lightbox_Content",T.wrapper),T.wrapper.css("opacity",0),T.background.css("opacity",0),tt=!0),D},node:function(t){return T.wrapper[0]},open:function(t,e,i){var n,s=T.content;s.children().detach(),s.append(e).append(T.close),n=t,s=i,Y()&&w("body").addClass("DTED_Lightbox_Mobile"),w("body").append(T.background).append(T.wrapper),it(),o||(o=!0,T.content.css("height","auto"),T.wrapper.css({top:-D.conf.offsetAni}),n._animate(T.wrapper,{opacity:1,top:0},s),n._animate(T.background,{opacity:1}),w(c).on("resize.DTED_Lightbox",function(){it()}),et=w("body").scrollTop()),T.close.attr("title",n.i18n.close).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){n.close()}),T.background.off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){t.stopImmediatePropagation(),n.background()}),w("div.DTED_Lightbox_Content_Wrapper",T.wrapper).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){w(t.target).hasClass("DTED_Lightbox_Content_Wrapper")&&(t.stopImmediatePropagation(),n.background())})}},st=w.fn.dataTable;function ot(t,e,i){if(void 0===i&&(i=!0),Array.isArray(t)){e!==E&&t.reverse();for(var n=0,s=t;n
                                                                                                                                                                        '),n=w('
                                                                                                                                                                        '),t=(a&&(n.appendTo("body"),i.appendTo("body")),n.children().eq(0)),s=t.children(),o=s.children(),r=(t.append(u.dom.formError),s.prepend(u.dom.form),l.message&&t.prepend(u.dom.formInfo),l.title&&t.prepend(u.dom.header),l.buttons&&s.append(u.dom.buttons),w().add(n).add(i));u._closeReg(function(t){u._animate(r,{opacity:0},function(){this===n[0]&&(r.detach(),w(c).off("resize."+e+" scroll."+e),u._clearDynamicInfo(),u._event("closed",["bubble"]))})}),i.on("click",function(){u.blur()}),o.on("click",function(){u._close()}),u.bubblePosition(),u._postopen("bubble",!1);u._animate(r,{opacity:1},function(){this===n[0]&&(u._focus(u.s.includeFields,l.focus),u._event("opened",["bubble",u.s.action]))})})),this}function ut(){var t=w("div.DTE_Bubble"),e=w("div.DTE_Bubble_Liner"),i=this.s.bubbleNodes,n={bottom:0,left:0,right:0,top:0},i=(w.each(i,function(t,e){var i=w(e).offset();e=w(e).get(0),n.top+=i.top,n.left+=i.left,n.right+=i.left+e.offsetWidth,n.bottom+=i.top+e.offsetHeight}),n.top/=i.length,n.left/=i.length,n.right/=i.length,n.bottom/=i.length,n.top),s=(n.left+n.right)/2,o=e.outerWidth(),r=e.outerHeight(),a=s-o/2,o=a+o,l=w(c).width(),d=w(c).scrollTop(),s=(t.css({left:s,top:this.s.bubbleBottom?n.bottom:i}),this.s.bubbleBottom&&t.addClass("below"),t.position());return e.length&&s.top+r>d+c.innerHeight?(t.css("top",i).removeClass("below"),this.s.bubbleBottom=!1):e.length&&s.top-r",{class:o.classes.form.button+(e.className?" "+e.className:"")}).html("function"==typeof i?i(o):i||"").attr("tabindex",e.tabIndex!==E?e.tabIndex:0).attr(s).on("keyup",function(t){13===t.which&&n&&n.call(o)}).on("keypress",function(t){13===t.which&&t.preventDefault()}).on("click",function(t){t.preventDefault(),n&&n.call(o,t)}).appendTo(o.dom.buttons)}),this}function ft(t){var i=this,e=this.s.fields;return"string"==typeof t?(i.field(t).destroy(),delete e[t],e=w.inArray(t,this.s.order),this.s.order.splice(e,1),-1!==(e=w.inArray(t,this.s.includeFields))&&this.s.includeFields.splice(e,1)):w.each(this._fieldNames(t),function(t,e){i.clear(e)}),this}function pt(){return this._close(!1),this}function ht(t,e,i,n){var s=this,o=this,r=this.s.fields,a=1;if(!this._tidy(function(){o.create(t,e,i,n)})){"number"==typeof t&&(a=t,t=e,e=i),this.s.editFields={};for(var l=0;lUploading file"),u.onload=function(t){var e,i=new FormData;if(i.append("action","upload"),i.append("uploadField",r.name),i.append("upload",a[c]),r.ajaxData&&r.ajaxData(i,a[c],c),r.ajax?e=r.ajax:w.isPlainObject(o.s.ajax)?e=o.s.ajax.upload||o.s.ajax:"string"==typeof o.s.ajax&&(e=o.s.ajax),!e)throw new Error("No Ajax option specified for upload plug-in");if("function"==typeof(e="string"==typeof e?{url:e}:e).data){var n={},s=e.data(n);w.each(n=s!==E&&"string"!=typeof s?s:n,function(t,e){i.append(t,e)})}else if(w.isPlainObject(e.data))throw new Error("Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.");o._event("preUpload",[r.name,a[c],i],function(t){var s;!1===t?c
                                                                                                                                                                        ')),m.find("div."+o.liner.replace(/ /g,".")).append(h.field.node()).append(this.dom.formError),n=h.field.node(),e.buttons&&m.find("div."+o.buttons.replace(/ /g,".")).append(this.dom.buttons)}var b=this._inputTrigger("submit",e,n),_=this._inputTrigger("cancel",e,n);this._closeReg(function(t,e){return s=!0,w(y).off("click"+c),t&&"edit"===e||l.forEach(function(t){t.node.contents().detach(),t.node.append(t.children)}),b(),_(),a._clearDynamicInfo(),i&&i(),"inline"}),setTimeout(function(){var o,r;s||(o=w.fn.addBack?"addBack":"andSelf",w(y).on("mousedown"+c,function(t){r=t.target}).on("keydown"+c,function(t){r=t.target}).on("click"+c,function(t){for(var e=!1,i=0,n=l;i")),this._event("submitUnsuccessful",[t]),l&&l.call(this,t)}else{var m={};if(!t.data||"create"!==s&&"edit"!==s)"remove"===s&&(this._dataSource("prep",s,p,n,t,m),this._event("preRemove",[t,this.ids()]),this._dataSource("remove",p,c,m),this._event(["remove","postRemove"],[t,this.ids()]),this._dataSource("commit",s,p,t.data,m));else{this._dataSource("prep",s,p,n,t,m);for(var v=0,b=t.data;v
                                                                                                                                                                        ');return e._input=r,e._enabled=!0,e.id&&r.find("input[type=file]").attr("id",P.safeId(e.id)),e.attr&&r.find("input[type=file]").attr(e.attr),He(e),c.FileReader&&!1!==e.dragDrop?(r.find("div.drop span").text(e.dragDropText||"Drag and drop a file here to upload"),(s=r.find("div.drop")).on("drop",function(t){return e._enabled&&(P.upload(i,e,t.originalEvent.dataTransfer.files,He,n),s.removeClass("over")),!1}).on("dragleave dragexit",function(t){return e._enabled&&s.removeClass("over"),!1}).on("dragover",function(t){return e._enabled&&s.addClass("over"),!1}),i.on("open",function(){w("body").on("dragover.DTE_Upload drop.DTE_Upload",function(t){return!1})}).on("close",function(){w("body").off("dragover.DTE_Upload drop.DTE_Upload")})):(r.addClass("noDrop"),r.append(r.find("div.rendered"))),r.find("div.clearValue button").on("click",function(t){t.preventDefault(),e._enabled&&Qe.set.call(i,e,"")}),r.find("input[type=file]").on("input",function(){P.upload(i,e,this.files,He,function(t,e){e||n.call(i,t),r.find("input[type=file]")[0].value=""})}),r}function C(t){setTimeout(function(){t.trigger("change",{editor:!0,editorSet:!0})},0)}var i=w.extend(!0,{},Ve,{canReturnSubmit:function(t,e){return!0},disable:function(t){t._input.prop("disabled",!0)},enable:function(t){t._input.prop("disabled",!1)},get:function(t){return t._input.val()},set:function(t,e){t._input.val(e),C(t._input)}}),We={create:function(t){return t._input=w(""),t._val=t.value,null},get:function(t){return t._val},set:function(t,e){var i=t._val;t._val=e,t._input.val(e),i!==e&&C(t._input)}},ze=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),readonly:"readonly",type:"text"},t.attr||{})),t._input[0]}}),Ge=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),type:"text"},t.attr||{})),t._input[0]}}),Je=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id),type:"password"},t.attr||{})),t._input[0]}}),Xe=w.extend(!0,{},i,{canReturnSubmit:function(t,e){return!1},create:function(t){return t._input=w("").attr(w.extend({id:P.safeId(t.id)},t.attr||{})),t._input[0]}}),n=w.extend(!0,{},i,{_addOptions:function(t,e,i){var n,s=t._input[0].options,o=0;(i=void 0===i?!1:i)?o=s.length:(s.length=0,t.placeholder!==E&&(i=t.placeholderValue!==E?t.placeholderValue:"",o+=1,s[0]=new Option(t.placeholder,i),n=t.placeholderDisabled===E||t.placeholderDisabled,s[0].hidden=n,s[0].disabled=n,s[0]._editor_val=i)),e&&P.pairs(e,t.optionsPair,function(t,e,i,n){e=new Option(e,t);e._editor_val=t,n&&w(e).attr(n),s[i+o]=e})},create:function(i){return i._input=w("").attr(w.extend({id:P.safeId(i.id),multiple:!0===i.multiple},i.attr||{})).on("change.dte",function(t,e){e&&e.editor||(i._lastSet=n.get(i))}),n._addOptions(i,i.options||i.ipOpts),i._input[0]},destroy:function(t){t._input.off("change.dte")},get:function(t){var e=t._input.find("option:selected").map(function(){return this._editor_val}).toArray();return t.multiple?t.separator?e.join(t.separator):e:e.length?e[0]:null},set:function(t,e,i){i||(t._lastSet=e),t.multiple&&t.separator&&!Array.isArray(e)?e="string"==typeof e?e.split(t.separator):[]:Array.isArray(e)||(e=[e]);var n,s,o=e.length,r=!1,a=t._input.find("option");return t._input.find("option").each(function(){for(s=!1,n=0;n"),w("input:last",o).attr("value",t)[0]._editor_val=t,n&&w("input:last",o).attr(n)})},create:function(t){return t._input=w("
                                                                                                                                                                        "),s._addOptions(t,t.options||t.ipOpts),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=[],i=t._input.find("input:checked");return i.length?i.each(function(){e.push(this._editor_val)}):t.unselectedValue!==E&&e.push(t.unselectedValue),t.separator===E||null===t.separator?e:e.join(t.separator)},set:function(t,e){var i,n,s=t._input.find("input"),o=(Array.isArray(e)||"string"!=typeof e?Array.isArray(e)||(e=[e]):e=e.split(t.separator||"|"),e.length);s.each(function(){for(n=!1,i=0;i"),w("input:last",o).attr("value",t)[0]._editor_val=t,n&&w("input:last",o).attr(n)})},create:function(t){return t._input=w("
                                                                                                                                                                        "),k._addOptions(t,t.options||t.ipOpts),this.on("open",function(){t._input.find("input").each(function(){this._preChecked&&(this.checked=!0)})}),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=t._input.find("input:checked");return e.length?e[0]._editor_val:t.unselectedValue!==E?t.unselectedValue:E},set:function(t,e){t._input.find("input").each(function(){this._preChecked=!1,this._editor_val==e?(this.checked=!0,this._preChecked=!0):(this.checked=!1,this._preChecked=!1)}),C(t._input.find("input:checked"))},update:function(t,e,i){var n=k.get(t),e=(k._addOptions(t,e,i),t._input.find("input"));k.set(t,e.filter('[value="'+n+'"]').length?n:e.eq(0).attr("value"))}}),$e=w.extend(!0,{},i,{create:function(t){return t._input=w("").attr(w.extend(!0,{id:P.safeId(t.id),type:"text"},t.attr)),x.DateTime||P.error("DateTime library is required",15),t.momentLocale&&!t.opts.locale&&(t.opts.locale=t.momentLocale),t.momentStrict&&!t.opts.strict&&(t.opts.strict=t.momentStrict),t._picker=new x.DateTime(t._input,w.extend({format:t.displayFormat||t.format,i18n:this.i18n.datetime},t.opts)),!(t._closeFn=function(){t._picker.hide()})===t.keyInput&&t._input.on("keydown",function(t){t.preventDefault()}),this.on("close",t._closeFn),t._input[0]},destroy:function(t){this.off("close",t._closeFn),t._input.off("keydown"),t._picker.destroy()},errorMessage:function(t,e){t._picker.errorMsg(e)},get:function(t){return t.wireFormat?t._picker.valFormat(t.wireFormat):t._input.val()},maxDate:function(t,e){t._picker.max(e)},minDate:function(t,e){t._picker.min(e)},owns:function(t,e){return t._picker.owns(e)},set:function(t,e){"string"==typeof e&&e&&0!==e.indexOf("--")&&t.wireFormat?t._picker.valFormat(t.wireFormat,e):t._picker.val(e),C(t._input)}}),Qe=w.extend(!0,{},i,{canReturnSubmit:function(t,e){return!1},create:function(e){var i=this;return qe(i,e,function(t){Qe.set.call(i,e,t[0]),i._event("postUpload",[e.name,t[0]])})},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(t,e){t._val=e,t._input.val("");var i=t._input,n=(t.display&&(n=i.find("div.rendered"),t._val?n.html(t.display(t._val)):n.empty().append(""+(t.noFileText||"No file")+"")),i.find("div.clearValue button"));e&&t.clearText?(n.html(t.clearText),i.removeClass("noClear")):i.addClass("noClear"),t._input.find("input").triggerHandler("upload.editor",[t._val])}}),F=w.extend(!0,{},i,{_showHide:function(t){t.limit&&(t._container.find("div.limitHide").css("display",t._val.length>=t.limit?"none":"block"),t._limitLeft=t.limit-t._val.length)},canReturnSubmit:function(t,e){return!1},create:function(e){var i=this,t=qe(i,e,function(t){e._val=e._val.concat(t),F.set.call(i,e,e._val),i._event("postUpload",[e.name,e._val])},!0);return t.addClass("multi").on("click","button.remove",function(t){t.stopPropagation(),e._enabled&&(t=w(this).data("idx"),e._val.splice(t,1),F.set.call(i,e,e._val))}),e._container=t},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(i,t){if(t=t||[],!Array.isArray(t))throw new Error("Upload collections must have an array as a value");i._val=t,i._input.val("");var n,s=this,e=i._input;i.display&&(e=e.find("div.rendered").empty(),t.length?(n=w("
                                                                                                                                                                          ").appendTo(e),w.each(t,function(t,e){e=i.display(e,t);null!==e&&n.append("
                                                                                                                                                                        • "+e+'
                                                                                                                                                                        • ')})):e.append(""+(i.noFileText||"No files")+"")),F._showHide(i),i._input.find("input").triggerHandler("upload.editor",[i._val])}}),A=w.extend(!0,{},i,{_addOptions:function(t,e,i){t=t.dt;(i=void 0===i?!1:i)||t.clear(),t.rows.add(e).draw()},_jumpToFirst:function(t,e){function i(){var t=s.row({order:"applied",selected:!0}).node();t&&r.height()-10<(t=w(t).position().top)&&r.scrollTop(t)}var n,s=t.dt,t=s.row({order:"applied",selected:!0}).index(),o=0,r=("number"==typeof t&&(n=s.page.info().length,t=s.rows({order:"applied"}).indexes().indexOf(t),o=0")),t=w("
                                                                                                                                                                          ").append(n),s=w('
                                                                                                                                                                          '),l=(r.footer&&w("
                                                                                                                                                                          ").html(t)})):r.footer).appendTo(n),n.addClass(A.tableClass).width("100%").on("init.dt",function(t,e){var i;e.nTable===n[0]&&(e=new x.Api(e),i=w(e.table(E).container()),x.select.init(e),s.append(i.find("div.dataTables_filter")).append(i.find("div.dt-buttons")).append(i.find("div.dataTables_info")))}).DataTable(w.extend({buttons:[],columns:[{data:r.optionsPair.label,title:"Label"}],deferRender:!0,dom:"fiBtp",language:{paginate:{next:">",previous:"<"},search:"",searchPlaceholder:"Search"},lengthChange:!1,select:{style:r.multiple?"os":"single"}},r.config)));return this.on("open",function(){l.search()&&l.search("").draw(),l.columns.adjust()}),l.on("user-select",function(){C(w(r.dt.table().container()))}),r.editor&&(r.editor.table(l),r.editor.on("submitComplete",function(t,e,i,n){if("create"===n)for(var s=0,o=e.data;s").replace(/</g,"<").replace(/&/g,"&").replace(/"/g,'"').replace(/£/g,"£").replace(/�?39;/g,"'").replace(/�?10;/g,"\n")}this.s.multiValue=!1;var n=this.s.opts.entityDecode;if(n===E||!0===n)if(Array.isArray(t))for(var s=0,o=t.length;s
                                                                                                                                                                          '+s.title+''+s.info+'
                                                                                                                                                                          '+s.restore+'
                                                                                                                                                                          '+o.message+'
                                                                                                                                                                          '+o.fieldInfo+'
                                                                                                                                                                          '),t=this._typeFn("create",o),i=null;t&&t.side&&(i=t.side,t=t.input),null!==t?a("input-control",r).prepend(t):r.css("display","none"),this.dom={container:r,fieldError:a("msg-error",r),fieldInfo:a("msg-info",r),fieldMessage:a("msg-message",r),inputControl:a("input-control",r),label:a("label",r).append(i),labelInfo:a("msg-label",r),multi:a("multi-value",r),multiInfo:a("multi-info",r),multiReturn:a("msg-multi",r),processing:a("field-processing",r)},this.dom.multi.on("click",function(){n.s.opts.multiEditable&&!r.hasClass(e.disabled)&&"readonly"!==o.type&&(n.val(""),n.focus())}),this.dom.multiReturn.on("click",function(){n.multiRestore()}),w.each(this.s.type,function(e,t){"function"==typeof t&&n[e]===E&&(n[e]=function(){var t=Array.prototype.slice.call(arguments),t=(t.unshift(e),n._typeFn.apply(n,t));return t===E?n:t})})}var Ke={action:null,className:null,tabIndex:0,text:null},Ye={close:function(){},init:function(){},node:function(){},open:function(){}},S=w.fn.dataTable.Api.register;function I(t){t=t.context[0];return t.oInit.editor||t._editor}function j(t,e,i,n){return(e=e||{}).buttons===E&&(e.buttons="_basic"),e.title===E&&(e.title=t.i18n[i].title),e.message===E&&("remove"===i?(t=t.i18n[i].confirm,e.message=1!==n?t._.replace(/%d/,n):t[1]):e.message=""),e}S("editor()",function(){return I(this)}),S("row.create()",function(t){var e=I(this);return e.create(j(e,t,"create")),this}),S("row().edit()",function(t){var e=I(this);return e.edit(this[0][0],j(e,t,"edit")),this}),S("rows().edit()",function(t){var e=I(this);return e.edit(this[0],j(e,t,"edit")),this}),S("row().delete()",function(t){var e=I(this);return e.remove(this[0][0],j(e,t,"remove",1)),this}),S("rows().delete()",function(t){var e=I(this);return e.remove(this[0],j(e,t,"remove",this[0].length)),this}),S("cell().edit()",function(t,e){return t?w.isPlainObject(t)&&(e=t,t="inline"):t="inline",I(this)[t](this[0][0],e),this}),S("cells().edit()",function(t){return I(this).bubble(this[0],t),this}),S("file()",kt),S("files()",Ft),w(y).on("xhr.dt",function(t,e,i){"dt"===t.namespace&&i&&i.files&&w.each(i.files,function(t,e){P.files[t]||(P.files[t]={}),w.extend(P.files[t],e)})});var P,S=w.fn.dataTable.ext.buttons;if(w.extend(S,{create:{action:function(t,e,i,n){var s=this,o=n.editor;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).create(w.extend({buttons:n.formButtons,message:n.formMessage||o.i18n.create.message,nest:!0,title:n.formTitle||o.i18n.create.title},n.formOptions))},className:"buttons-create",editor:null,formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.create.submit}},formMessage:null,formOptions:{},formTitle:null,text:function(t,e,i){return t.i18n("buttons.create",i.editor.i18n.create.button)}},createInline:{action:function(t,e,i,n){n.editor.inlineCreate(n.position,n.formOptions)},className:"buttons-create",editor:null,formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.create.submit}},formOptions:{},position:"start",text:function(t,e,i){return t.i18n("buttons.create",i.editor.i18n.create.button)}},edit:{action:function(t,e,i,n){var s=this,o=n.editor,r=e.rows({selected:!0}).indexes(),a=e.columns({selected:!0}).indexes(),e=e.cells({selected:!0}).indexes(),e=a.length||e.length?{cells:e,columns:a,rows:r}:r;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).edit(e,w.extend({buttons:n.formButtons,message:n.formMessage||o.i18n.edit.message,nest:!0,title:n.formTitle||o.i18n.edit.title},n.formOptions))},className:"buttons-edit",editor:null,extend:"selected",formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.edit.submit}},formMessage:null,formOptions:{},formTitle:null,text:function(t,e,i){return t.i18n("buttons.edit",i.editor.i18n.edit.button)}},remove:{action:function(t,e,i,n){var s=this,o=n.editor;this.processing(!0),o.one("preOpen",function(){s.processing(!1)}).remove(e.rows({selected:!0}).indexes(),w.extend({buttons:n.formButtons,message:n.formMessage,nest:!0,title:n.formTitle||o.i18n.remove.title},n.formOptions))},className:"buttons-remove",editor:null,extend:"selected",formButtons:{action:function(t){this.submit()},text:function(t){return t.i18n.remove.submit}},formMessage:function(t,e){e=e.rows({selected:!0}).indexes(),t=t.i18n.remove;return("string"==typeof t.confirm?t.confirm:t.confirm[e.length]||t.confirm._).replace(/%d/g,e.length)},formOptions:{},formTitle:null,limitTo:["rows"],text:function(t,e,i){return t.i18n("buttons.remove",i.editor.i18n.remove.button)}}}),S.editSingle=w.extend({},S.edit),S.editSingle.extend="selectedSingle",S.removeSingle=w.extend({},S.remove),S.removeSingle.extend="selectedSingle",r&&r.versionCheck&&r.versionCheck("1.10.20"))return R.prototype.internalEvent=function(t,e){this._event(t,e)},R.prototype.internalI18n=function(){return this.i18n},R.prototype.internalMultiInfo=function(){return this._multiInfo()},R.prototype.internalSettings=function(){return this.s},R.fieldTypes={checkbox:s,datatable:A,datetime:$e,hidden:We,password:Je,radio:k,readonly:ze,select:n,text:Ge,textarea:Xe,upload:Qe,uploadMany:F},R.files={},R.version="2.1.3",R.classes=X,R.Field=i,R.DateTime=null,R.error=te,R.pairs=ee,R.factory=ne,R.upload=ie,R.defaults=N,R.models={button:Ke,displayController:Ye,fieldType:Ve,formOptions:t,settings:B},R.dataSources={dataTable:m,html:l},R.display={envelope:g,lightbox:D},R.safeId=function(t){return void 0===(e="")&&(e="#"),"string"==typeof(t=t)?e+t.replace(/\./g,"-"):e+t;var e},P=R,r.Editor=P,w.fn.DataTable.Editor=P,r.DateTime&&(P.DateTime=r.DateTime),r.ext.editorFields&&w.extend(P.fieldTypes,r.ext.editorFields),r.ext.editorFields=P.fieldTypes,P;throw new Error("Editor requires DataTables 1.10.20 or newer");function R(t,e){var s=this;if(this.add=ot,this.ajax=rt,this.background=at,this.blur=lt,this.bubble=dt,this.bubblePosition=ut,this.buttons=ct,this.clear=ft,this.close=pt,this.create=ht,this.undependent=mt,this.dependent=vt,this.destroy=bt,this.disable=_t,this.display=yt,this.displayed=gt,this.displayNode=wt,this.edit=Et,this.enable=Tt,this.error=Dt,this.field=xt,this.fields=Ct,this.file=kt,this.files=Ft,this.get=At,this.hide=Ot,this.ids=St,this.inError=It,this.inline=jt,this.inlineCreate=Pt,this.message=Rt,this.mode=Nt,this.modifier=Bt,this.multiGet=Lt,this.multiSet=Mt,this.node=Ut,this.off=Vt,this.on=Ht,this.one=qt,this.open=Wt,this.order=zt,this.remove=Gt,this.set=Jt,this.show=Xt,this.submit=$t,this.table=Qt,this.template=Zt,this.title=Kt,this.val=Yt,this._actionClass=re,this._ajax=ae,this._animate=le,this._assembleMain=de,this._blur=ue,this._clearDynamicInfo=ce,this._close=fe,this._closeReg=pe,this._crudArgs=he,this._dataSource=me,this._displayReorder=ve,this._edit=be,this._event=_e,this._eventName=ye,this._fieldFromNode=ge,this._fieldNames=we,this._focus=Ee,this._formOptions=Te,this._inline=De,this._inputTrigger=xe,this._optionsUpdate=Ce,this._message=ke,this._multiInfo=Fe,this._nestedClose=Ae,this._nestedOpen=Oe,this._postopen=Se,this._preopen=Ie,this._processing=je,this._noProcessing=Pe,this._submit=Re,this._submitTable=Ne,this._submitSuccess=Be,this._submitError=Le,this._tidy=Me,this._weakInArray=Ue,R.factory(t,e))return R;this instanceof R||alert("DataTables Editor must be initialised as a 'new' instance"),t=w.extend(!0,{},R.defaults,t),this.c=t,this.s=w.extend(!0,{},R.models.settings,{actionName:t.actionName,ajax:t.ajax,formOptions:t.formOptions,idSrc:t.idSrc,table:t.domTable||t.table,template:t.template?w(t.template).detach():null}),this.classes=w.extend(!0,{},R.classes),this.i18n=t.i18n,R.models.settings.unique++;var n=this,e=this.classes,i=w('
                                                                                                                                                                          '),o=w('
                                                                                                                                                                          ');if(this.dom={body:a("body",i)[0],bodyContent:a("body_content",i)[0],buttons:w('
                                                                                                                                                                          ')[0],footer:a("foot",i)[0],form:o[0],formContent:a("form_content",o)[0],formError:w('
                                                                                                                                                                          ')[0],formInfo:w('
                                                                                                                                                                          ')[0],header:w('
                                                                                                                                                                          ')[0],processing:a("processing",i)[0],wrapper:i[0]},w.each(t.events,function(t,i){n.on(t,function(){for(var t=[],e=0;eMore information).'},multi:{info:"The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.",noMulti:"This input can be edited individually, but not part of a group.",restore:"Undo changes",title:"Multiple values"},remove:{button:"Delete",confirm:{1:"Are you sure you wish to delete 1 row?",_:"Are you sure you wish to delete %d rows?"},submit:"Delete",title:"Delete"}},idSrc:"DT_RowId",table:null},settings={action:null,actionName:"action",ajax:null,bubbleNodes:[],bubbleBottom:!1,closeCb:null,closeIcb:null,dataSource:null,displayController:null,displayed:!1,editCount:0,editData:{},editFields:{},editOpts:{},fields:{},formOptions:{bubble:$.extend({},formOptions),inline:$.extend({},formOptions),main:$.extend({},formOptions)},globalError:"",id:-1,idSrc:null,includeFields:[],mode:null,modifier:null,opts:null,order:[],processing:!1,setFocus:null,table:null,template:null,unique:0},DataTable$6=$.fn.dataTable,DtInternalApi=DataTable$6.ext.oApi;function objectKeys(t){var e,i=[];for(e in t)t.hasOwnProperty(e)&&i.push(e);return i}function el(t,e){return void 0===e&&(e=document),$('*[data-dte-e="'+t+'"]',e)}function safeDomId(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/\./g,"-"):e+t}function safeQueryId(t,e){return void 0===e&&(e="#"),"string"==typeof t?e+t.replace(/(:|\.|\[|\]|,)/g,"\\$1"):e+t}function dataGet(t){return DtInternalApi._fnGetObjectDataFn(t)}function dataSet(t){return DtInternalApi._fnSetObjectDataFn(t)}var extend=DtInternalApi._fnExtend;function pluck(t,i){var n=[];return $.each(t,function(t,e){n.push(e[i])}),n}function deepCompare(t,e){if("object"!=typeof t||"object"!=typeof e)return t==e;var i=objectKeys(t),n=objectKeys(e);if(i.length!==n.length)return!1;for(var o=0,s=i.length;o'),n=[],o=[],s={},a=e.table(void 0).body(),r=0,l=e.columns(":visible").count();r").appendTo(i),c=_dtFieldsFromIdx(e,this.s.fields,d,!0),d=e.settings()[0].aoColumns[d].sClass;d&&u.addClass(d),Object.keys(c).length&&(n.push(Object.keys(c)),o.push(u[0]),$.extend(s,c))}function p(){0===e.page.info().recordsDisplay&&$(a).empty(),i["end"===t?"appendTo":"prependTo"](a)}return this.__dtFakeRow=i,p(),e.on("draw.dte-createInline",function(){p()}),{0:{attach:o,attachFields:n,displayFields:s,fields:this.s.fields,type:"row"}}},fakeRowEnd:function(){var t=_dtApi(this.s.table);t.off("draw.dte-createInline"),this.__dtFakeRow.remove(),this.__dtFakeRow=null,0===t.page.info().recordsDisplay&&t.draw(!1)},fields:function(t){var e=dataGet(this.s.idSrc),i=_dtApi(this.s.table),n=this.s.fields,o={};return!$.isPlainObject(t)||void 0===t.rows&&void 0===t.columns&&void 0===t.cells?_dtRowSelector(o,i,t,n,e):(void 0!==t.rows&&_dtRowSelector(o,i,t.rows,n,e),void 0!==t.columns&&_dtColumnSelector(o,i,t.columns,n,e),void 0!==t.cells&&_dtCellSelector(o,i,t.cells,n,e)),o},id:function(t){return dataGet(this.s.idSrc)(t)},individual:function(t,e){var i,n=dataGet(this.s.idSrc),o=_dtApi(this.s.table),s=this.s.fields,a={};return e&&(Array.isArray(e)||(e=[e]),i={},$.each(e,function(t,e){i[e]=s[e]})),_dtCellSelector(a,o,t,s,n,i),a},prep:function(t,e,i,n,o){var s,a=this;"create"===t&&(o.rowIds=$.map(n.data,function(t){return dataSource$1.id.call(a,t)})),"edit"===t?(s=n.cancelled||[],o.rowIds=$.map(i.data,function(t,e){return $.isEmptyObject(i.data[e])||-1!==$.inArray(e,s)?void 0:e})):"remove"===t&&(o.cancelled=n.cancelled||[])},refresh:function(){_dtApi(this.s.table).ajax.reload(null,!1)},remove:function(t,e,i){var n,o=this,s=_dtApi(this.s.table),a=i.cancelled;(0===a.length?s.rows(t):(n=[],s.rows(t).every(function(){var t=dataSource$1.id.call(o,this.data());-1===$.inArray(t,a)&&n.push(this.index())}),s.rows(n))).remove()}};function _htmlId(t){if("keyless"===t)return $(document);var e=$('[data-editor-id="'+t+'"]');if(0===(e=0===e.length?"string"==typeof t?$(safeQueryId(t)):$(t):e).length)throw new Error("Could not find an element with `data-editor-id` or `id` of: "+t);return e}function _htmlEl(t,e){t=_htmlId(t);return $('[data-editor-field="'+e+'"]',t)}function _htmlEls(t,e){for(var i=$(),n=0,o=e.length;n
                                                                                                                                                                          ')[0],close:$('
                                                                                                                                                                          ')[0],content:null,wrapper:$('
                                                                                                                                                                          ')[0]};function findAttachRow(t,e){var i=new $.fn.dataTable.Api(t.s.table);return"head"===e||"create"===t.s.action?i.table(void 0).header():i.row(t.s.modifier).node()}function heightCalc$1(t){var e=$("div.DTE_Header",dom$1.wrapper).outerHeight(),i=$("div.DTE_Footer",dom$1.wrapper).outerHeight(),e=$(window).height()-2*envelope.conf.windowPadding-e-i;return $("div.DTE_Body_Content",dom$1.wrapper).css("maxHeight",e),$(t.dom.wrapper).outerHeight()}function hide$2(t,e){e=e||function(){},displayed$2&&($(dom$1.content).animate({top:-(dom$1.content.offsetHeight+50)},600,function(){$([dom$1.wrapper,dom$1.background]).fadeOut("normal",function(){$(this).detach(),e()})}),displayed$2=!1)}function init$1(){dom$1.content=$("div.DTED_Envelope_Container",dom$1.wrapper)[0],cssBackgroundOpacity=$(dom$1.background).css("opacity")}function show$2(e,t){var i,n,o,s;t=t||function(){},$("body").append(dom$1.background).append(dom$1.wrapper),dom$1.content.style.height="auto",displayed$2||((i=dom$1.wrapper.style).opacity="0",i.display="block",n=heightCalc$1(e),s=(o=findAttachRow(e,envelope.conf.attach)).offsetWidth,i.display="none",i.opacity="1",dom$1.wrapper.style.width=s+"px",dom$1.wrapper.style.marginLeft=-s/2+"px",dom$1.wrapper.style.top=$(o).offset().top+o.offsetHeight+"px",dom$1.content.style.top=-1*n-20+"px",dom$1.background.style.opacity="0",dom$1.background.style.display="block",$(dom$1.background).animate({opacity:cssBackgroundOpacity},"normal"),$(dom$1.wrapper).fadeIn(),$(dom$1.content).animate({top:0},600,t)),$(dom$1.close).attr("title",e.i18n.close).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.close()}),$(dom$1.background).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){e.background()}),$("div.DTED_Lightbox_Content_Wrapper",dom$1.wrapper).off("click.DTED_Envelope").on("click.DTED_Envelope",function(t){$(t.target).hasClass("DTED_Envelope_Content_Wrapper")&&e.background()}),$(window).off("resize.DTED_Envelope").on("resize.DTED_Envelope",function(){heightCalc$1(e)}),displayed$2=!0}var envelope={close:function(t,e){hide$2(t,e)},conf:{attach:"row",windowPadding:50},destroy:function(t){hide$2()},init:function(t){return init$1(),envelope},node:function(t){return dom$1.wrapper[0]},open:function(t,e,i){$(dom$1.content).children().detach(),dom$1.content.appendChild(e),dom$1.content.appendChild(dom$1.close),show$2(t,i)}};function isMobile(){return void 0!==window.orientation&&window.outerWidth<=576}var displayed$1=!1,ready=!1,scrollTop=0,dom={background:$('
                                                                                                                                                                          '),close:$('
                                                                                                                                                                          '),content:null,wrapper:$('
                                                                                                                                                                          ')};function heightCalc(){var t=$("div.DTE_Header",dom.wrapper).outerHeight()+$("div.DTE_Footer",dom.wrapper).outerHeight();isMobile()?$("div.DTE_Body_Content",dom.wrapper).css("maxHeight","calc(100vh - "+t+"px)"):(t=$(window).height()-2*self.conf.windowPadding-t,$("div.DTE_Body_Content",dom.wrapper).css("maxHeight",t))}function hide$1(t,e){e=e||function(){},$("body").scrollTop(scrollTop),t._animate(dom.wrapper,{opacity:0,top:self.conf.offsetAni},function(){$(this).detach(),e()}),t._animate(dom.background,{opacity:0},function(){$(this).detach()}),displayed$1=!1,$(window).off("resize.DTED_Lightbox")}function init(){ready||(dom.content=$("div.DTED_Lightbox_Content",dom.wrapper),dom.wrapper.css("opacity",0),dom.background.css("opacity",0),ready=!0)}function show$1(e,t){isMobile()&&$("body").addClass("DTED_Lightbox_Mobile"),$("body").append(dom.background).append(dom.wrapper),heightCalc(),displayed$1||(displayed$1=!0,dom.content.css("height","auto"),dom.wrapper.css({top:-self.conf.offsetAni}),e._animate(dom.wrapper,{opacity:1,top:0},t),e._animate(dom.background,{opacity:1}),$(window).on("resize.DTED_Lightbox",function(){heightCalc()}),scrollTop=$("body").scrollTop()),dom.close.attr("title",e.i18n.close).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){e.close()}),dom.background.off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){t.stopImmediatePropagation(),e.background()}),$("div.DTED_Lightbox_Content_Wrapper",dom.wrapper).off("click.DTED_Lightbox").on("click.DTED_Lightbox",function(t){$(t.target).hasClass("DTED_Lightbox_Content_Wrapper")&&(t.stopImmediatePropagation(),e.background())})}var self={close:function(t,e){hide$1(t,e)},conf:{offsetAni:25,windowPadding:25},destroy:function(t){displayed$1&&hide$1(t)},init:function(t){return init(),self},node:function(t){return dom.wrapper[0]},open:function(t,e,i){var n=dom.content;n.children().detach(),n.append(e).append(dom.close),show$1(t,i)}},DataTable$5=$.fn.dataTable;function add(t,e,i){if(void 0===i&&(i=!0),Array.isArray(t)){void 0!==e&&t.reverse();for(var n=0,o=t;n
                                                                                                                                                                          '),n=$('
                                                                                                                                                                          '),t=(r&&(n.appendTo("body"),i.appendTo("body")),n.children().eq(0)),o=t.children(),s=o.children(),a=(t.append(u.dom.formError),o.prepend(u.dom.form),l.message&&t.prepend(u.dom.formInfo),l.title&&t.prepend(u.dom.header),l.buttons&&o.append(u.dom.buttons),$().add(n).add(i));u._closeReg(function(t){u._animate(a,{opacity:0},function(){this===n[0]&&(a.detach(),$(window).off("resize."+e+" scroll."+e),u._clearDynamicInfo(),u._event("closed",["bubble"]))})}),i.on("click",function(){u.blur()}),s.on("click",function(){u._close()}),u.bubblePosition(),u._postopen("bubble",!1);u._animate(a,{opacity:1},function(){this===n[0]&&(u._focus(u.s.includeFields,l.focus),u._event("opened",["bubble",u.s.action]))})})),this}function bubblePosition(){var t=$("div.DTE_Bubble"),e=$("div.DTE_Bubble_Liner"),i=this.s.bubbleNodes,n={bottom:0,left:0,right:0,top:0},i=($.each(i,function(t,e){var i=$(e).offset();e=$(e).get(0),n.top+=i.top,n.left+=i.left,n.right+=i.left+e.offsetWidth,n.bottom+=i.top+e.offsetHeight}),n.top/=i.length,n.left/=i.length,n.right/=i.length,n.bottom/=i.length,n.top),o=(n.left+n.right)/2,s=e.outerWidth(),a=e.outerHeight(),r=o-s/2,s=r+s,l=$(window).width(),d=$(window).scrollTop(),o=(t.css({left:o,top:this.s.bubbleBottom?n.bottom:i}),this.s.bubbleBottom&&t.addClass("below"),t.position());return e.length&&o.top+a>d+window.innerHeight?(t.css("top",i).removeClass("below"),this.s.bubbleBottom=!1):e.length&&o.top-a",{class:s.classes.form.button+(e.className?" "+e.className:"")}).html("function"==typeof i?i(s):i||"").attr("tabindex",void 0!==e.tabIndex?e.tabIndex:0).attr(o).on("keyup",function(t){13===t.which&&n&&n.call(s)}).on("keypress",function(t){13===t.which&&t.preventDefault()}).on("click",function(t){t.preventDefault(),n&&n.call(s,t)}).appendTo(s.dom.buttons)}),this}function clear(t){var i=this,e=this.s.fields;return"string"==typeof t?(i.field(t).destroy(),delete e[t],e=$.inArray(t,this.s.order),this.s.order.splice(e,1),-1!==(e=$.inArray(t,this.s.includeFields))&&this.s.includeFields.splice(e,1)):$.each(this._fieldNames(t),function(t,e){i.clear(e)}),this}function close(){return this._close(!1),this}function create(t,e,i,n){var o=this,s=this,a=this.s.fields,r=1;if(!this._tidy(function(){s.create(t,e,i,n)})){"number"==typeof t&&(r=t,t=e,e=i),this.s.editFields={};for(var l=0;lUploading file"),u.onload=function(t){var e,i=new FormData;if(i.append("action","upload"),i.append("uploadField",a.name),i.append("upload",r[c]),a.ajaxData&&a.ajaxData(i,r[c],c),a.ajax?e=a.ajax:$.isPlainObject(s.s.ajax)?e=s.s.ajax.upload||s.s.ajax:"string"==typeof s.s.ajax&&(e=s.s.ajax),!e)throw new Error("No Ajax option specified for upload plug-in");if("function"==typeof(e="string"==typeof e?{url:e}:e).data){var n={},o=e.data(n);void 0!==o&&"string"!=typeof o&&(n=o),$.each(n,function(t,e){i.append(t,e)})}else if($.isPlainObject(e.data))throw new Error("Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.");s._event("preUpload",[a.name,r[c],i],function(t){var o;!1===t?c
                                                                                                                                                                          ')),m.find("div."+s.liner.replace(/ /g,".")).append(h.field.node()).append(this.dom.formError),n=h.field.node(),e.buttons&&m.find("div."+s.buttons.replace(/ /g,".")).append(this.dom.buttons)}var b=this._inputTrigger("submit",e,n),_=this._inputTrigger("cancel",e,n);this._closeReg(function(t,e){return o=!0,$(document).off("click"+c),t&&"edit"===e||l.forEach(function(t){t.node.contents().detach(),t.node.append(t.children)}),b(),_(),r._clearDynamicInfo(),i&&i(),"inline"}),setTimeout(function(){var s,a;o||(s=$.fn.addBack?"addBack":"andSelf",$(document).on("mousedown"+c,function(t){a=t.target}).on("keydown"+c,function(t){a=t.target}).on("click"+c,function(t){for(var e=!1,i=0,n=l;i")),this._event("submitUnsuccessful",[t]),l&&l.call(this,t)}else{var m={};if(!t.data||"create"!==o&&"edit"!==o)"remove"===o&&(this._dataSource("prep",o,f,n,t,m),this._event("preRemove",[t,this.ids()]),this._dataSource("remove",f,c,m),this._event(["remove","postRemove"],[t,this.ids()]),this._dataSource("commit",o,f,t.data,m));else{this._dataSource("prep",o,f,n,t,m);for(var v=0,b=t.data;v
                                                                                                                                                                          ');return e._input=a,e._enabled=!0,e.id&&a.find("input[type=file]").attr("id",Editor.safeId(e.id)),e.attr&&a.find("input[type=file]").attr(e.attr),_buttonText(e),window.FileReader&&!1!==e.dragDrop?(a.find("div.drop span").text(e.dragDropText||"Drag and drop a file here to upload"),(o=a.find("div.drop")).on("drop",function(t){return e._enabled&&(Editor.upload(i,e,t.originalEvent.dataTransfer.files,_buttonText,n),o.removeClass("over")),!1}).on("dragleave dragexit",function(t){return e._enabled&&o.removeClass("over"),!1}).on("dragover",function(t){return e._enabled&&o.addClass("over"),!1}),i.on("open",function(){$("body").on("dragover.DTE_Upload drop.DTE_Upload",function(t){return!1})}).on("close",function(){$("body").off("dragover.DTE_Upload drop.DTE_Upload")})):(a.addClass("noDrop"),a.append(a.find("div.rendered"))),a.find("div.clearValue button").on("click",function(t){t.preventDefault(),e._enabled&&upload.set.call(i,e,"")}),a.find("input[type=file]").on("input",function(){Editor.upload(i,e,this.files,_buttonText,function(t,e){e||n.call(i,t),a.find("input[type=file]")[0].value=""})}),a}function _triggerChange(t){setTimeout(function(){t.trigger("change",{editor:!0,editorSet:!0})},0)}var baseFieldType=$.extend(!0,{},fieldType,{canReturnSubmit:function(t,e){return!0},disable:function(t){t._input.prop("disabled",!0)},enable:function(t){t._input.prop("disabled",!1)},get:function(t){return t._input.val()},set:function(t,e){t._input.val(e),_triggerChange(t._input)}}),hidden={create:function(t){return t._input=$(""),t._val=t.value,null},get:function(t){return t._val},set:function(t,e){var i=t._val;t._val=e,t._input.val(e),i!==e&&_triggerChange(t._input)}},readonly=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),readonly:"readonly",type:"text"},t.attr||{})),t._input[0]}}),text=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),type:"text"},t.attr||{})),t._input[0]}}),password=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id),type:"password"},t.attr||{})),t._input[0]}}),textarea=$.extend(!0,{},baseFieldType,{canReturnSubmit:function(t,e){return!1},create:function(t){return t._input=$("").attr($.extend({id:Editor.safeId(t.id)},t.attr||{})),t._input[0]}}),select=$.extend(!0,{},baseFieldType,{_addOptions:function(t,e,i){var n,o=t._input[0].options,s=0;(i=void 0===i?!1:i)?s=o.length:void(o.length=0)!==t.placeholder&&(i=void 0!==t.placeholderValue?t.placeholderValue:"",s+=1,o[0]=new Option(t.placeholder,i),n=void 0===t.placeholderDisabled||t.placeholderDisabled,o[0].hidden=n,o[0].disabled=n,o[0]._editor_val=i),e&&Editor.pairs(e,t.optionsPair,function(t,e,i,n){e=new Option(e,t);e._editor_val=t,n&&$(e).attr(n),o[i+s]=e})},create:function(i){return i._input=$("").attr($.extend({id:Editor.safeId(i.id),multiple:!0===i.multiple},i.attr||{})).on("change.dte",function(t,e){e&&e.editor||(i._lastSet=select.get(i))}),select._addOptions(i,i.options||i.ipOpts),i._input[0]},destroy:function(t){t._input.off("change.dte")},get:function(t){var e=t._input.find("option:selected").map(function(){return this._editor_val}).toArray();return t.multiple?t.separator?e.join(t.separator):e:e.length?e[0]:null},set:function(t,e,i){i||(t._lastSet=e),t.multiple&&t.separator&&!Array.isArray(e)?e="string"==typeof e?e.split(t.separator):[]:Array.isArray(e)||(e=[e]);var n,o,s=e.length,a=!1,r=t._input.find("option");return t._input.find("option").each(function(){for(o=!1,n=0;n"),$("input:last",s).attr("value",t)[0]._editor_val=t,n&&$("input:last",s).attr(n)})},create:function(t){return t._input=$("
                                                                                                                                                                          "),checkbox._addOptions(t,t.options||t.ipOpts),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=[],i=t._input.find("input:checked");return i.length?i.each(function(){e.push(this._editor_val)}):void 0!==t.unselectedValue&&e.push(t.unselectedValue),void 0===t.separator||null===t.separator?e:e.join(t.separator)},set:function(t,e){var i,n,o=t._input.find("input"),s=(Array.isArray(e)||"string"!=typeof e?Array.isArray(e)||(e=[e]):e=e.split(t.separator||"|"),e.length);o.each(function(){for(n=!1,i=0;i"),$("input:last",s).attr("value",t)[0]._editor_val=t,n&&$("input:last",s).attr(n)})},create:function(t){return t._input=$("
                                                                                                                                                                          "),radio._addOptions(t,t.options||t.ipOpts),this.on("open",function(){t._input.find("input").each(function(){this._preChecked&&(this.checked=!0)})}),t._input[0]},disable:function(t){t._input.find("input").prop("disabled",!0)},enable:function(t){t._input.find("input").prop("disabled",!1)},get:function(t){var e=t._input.find("input:checked");return e.length?e[0]._editor_val:void 0!==t.unselectedValue?t.unselectedValue:void 0},set:function(t,e){t._input.find("input").each(function(){this._preChecked=!1,this._editor_val==e?(this.checked=!0,this._preChecked=!0):(this.checked=!1,this._preChecked=!1)}),_triggerChange(t._input.find("input:checked"))},update:function(t,e,i){var n=radio.get(t),e=(radio._addOptions(t,e,i),t._input.find("input"));radio.set(t,e.filter('[value="'+n+'"]').length?n:e.eq(0).attr("value"))}}),datetime=$.extend(!0,{},baseFieldType,{create:function(t){return t._input=$("").attr($.extend(!0,{id:Editor.safeId(t.id),type:"text"},t.attr)),DataTable$3.DateTime||Editor.error("DateTime library is required",15),t.momentLocale&&!t.opts.locale&&(t.opts.locale=t.momentLocale),t.momentStrict&&!t.opts.strict&&(t.opts.strict=t.momentStrict),t._picker=new DataTable$3.DateTime(t._input,$.extend({format:t.displayFormat||t.format,i18n:this.i18n.datetime},t.opts)),!(t._closeFn=function(){t._picker.hide()})===t.keyInput&&t._input.on("keydown",function(t){t.preventDefault()}),this.on("close",t._closeFn),t._input[0]},destroy:function(t){this.off("close",t._closeFn),t._input.off("keydown"),t._picker.destroy()},errorMessage:function(t,e){t._picker.errorMsg(e)},get:function(t){return t.wireFormat?t._picker.valFormat(t.wireFormat):t._input.val()},maxDate:function(t,e){t._picker.max(e)},minDate:function(t,e){t._picker.min(e)},owns:function(t,e){return t._picker.owns(e)},set:function(t,e){"string"==typeof e&&e&&0!==e.indexOf("--")&&t.wireFormat?t._picker.valFormat(t.wireFormat,e):t._picker.val(e),_triggerChange(t._input)}}),upload=$.extend(!0,{},baseFieldType,{canReturnSubmit:function(t,e){return!1},create:function(e){var i=this;return _commonUpload(i,e,function(t){upload.set.call(i,e,t[0]),i._event("postUpload",[e.name,t[0]])})},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(t,e){t._val=e,t._input.val("");var i=t._input,n=(t.display&&(n=i.find("div.rendered"),t._val?n.html(t.display(t._val)):n.empty().append(""+(t.noFileText||"No file")+"")),i.find("div.clearValue button"));e&&t.clearText?(n.html(t.clearText),i.removeClass("noClear")):i.addClass("noClear"),t._input.find("input").triggerHandler("upload.editor",[t._val])}}),uploadMany=$.extend(!0,{},baseFieldType,{_showHide:function(t){t.limit&&(t._container.find("div.limitHide").css("display",t._val.length>=t.limit?"none":"block"),t._limitLeft=t.limit-t._val.length)},canReturnSubmit:function(t,e){return!1},create:function(e){var i=this,t=_commonUpload(i,e,function(t){e._val=e._val.concat(t),uploadMany.set.call(i,e,e._val),i._event("postUpload",[e.name,e._val])},!0);return t.addClass("multi").on("click","button.remove",function(t){t.stopPropagation(),e._enabled&&(t=$(this).data("idx"),e._val.splice(t,1),uploadMany.set.call(i,e,e._val))}),e._container=t},disable:function(t){t._input.find("input").prop("disabled",!0),t._enabled=!1},enable:function(t){t._input.find("input").prop("disabled",!1),t._enabled=!0},get:function(t){return t._val},set:function(i,t){if(t=t||[],!Array.isArray(t))throw new Error("Upload collections must have an array as a value");i._val=t,i._input.val("");var n,o=this,e=i._input;i.display&&(e=e.find("div.rendered").empty(),t.length?(n=$("
                                                                                                                                                                            ").appendTo(e),$.each(t,function(t,e){e=i.display(e,t);null!==e&&n.append("
                                                                                                                                                                          • "+e+'
                                                                                                                                                                          • ')})):e.append(""+(i.noFileText||"No files")+"")),uploadMany._showHide(i),i._input.find("input").triggerHandler("upload.editor",[i._val])}}),datatable=$.extend(!0,{},baseFieldType,{_addOptions:function(t,e,i){t=t.dt;(i=void 0===i?!1:i)||t.clear(),t.rows.add(e).draw()},_jumpToFirst:function(t,e){function i(){var t=o.row({order:"applied",selected:!0}).node();t&&a.height()-10<(t=$(t).position().top)&&a.scrollTop(t)}var n,o=t.dt,t=o.row({order:"applied",selected:!0}).index(),s=0,a=("number"==typeof t&&(n=o.page.info().length,t=o.rows({order:"applied"}).indexes().indexOf(t),s=0")),t=$("
                                                                                                                                                                            ").append(n),o=$('
                                                                                                                                                                            '),l=(a.footer&&$("
                                                                                                                                                                            ").html(t)})):a.footer).appendTo(n),n.addClass(datatable.tableClass).width("100%").on("init.dt",function(t,e){var i;e.nTable===n[0]&&(e=new DataTable$3.Api(e),i=$(e.table(void 0).container()),DataTable$3.select.init(e),o.append(i.find("div.dataTables_filter")).append(i.find("div.dt-buttons")).append(i.find("div.dataTables_info")))}).DataTable($.extend({buttons:[],columns:[{data:a.optionsPair.label,title:"Label"}],deferRender:!0,dom:"fiBtp",language:{paginate:{next:">",previous:"<"},search:"",searchPlaceholder:"Search"},lengthChange:!1,select:{style:a.multiple?"os":"single"}},a.config)));return this.on("open",function(){l.search()&&l.search("").draw(),l.columns.adjust()}),l.on("user-select",function(){_triggerChange($(a.dt.table().container()))}),a.editor&&(a.editor.table(l),a.editor.on("submitComplete",function(t,e,i,n){if("create"===n)for(var o=0,s=e.data;o
                                                                                                                                                                            '+o.title+''+o.info+'
                                                                                                                                                                            '+o.restore+'
                                                                                                                                                                            '+s.message+'
                                                                                                                                                                            '+s.fieldInfo+'
                                                                                                                                                                            '),t=this._typeFn("create",s),i=null;t&&t.side&&(i=t.side,t=t.input),null!==t?el("input-control",a).prepend(t):a.css("display","none"),this.dom={container:a,fieldError:el("msg-error",a),fieldInfo:el("msg-info",a),fieldMessage:el("msg-message",a),inputControl:el("input-control",a),label:el("label",a).append(i),labelInfo:el("msg-label",a),multi:el("multi-value",a),multiInfo:el("multi-info",a),multiReturn:el("msg-multi",a),processing:el("field-processing",a)},this.dom.multi.on("click",function(){n.s.opts.multiEditable&&!a.hasClass(e.disabled)&&"readonly"!==s.type&&(n.val(""),n.focus())}),this.dom.multiReturn.on("click",function(){n.multiRestore()}),$.each(this.s.type,function(e,t){"function"==typeof t&&void 0===n[e]&&(n[e]=function(){var t=Array.prototype.slice.call(arguments),t=(t.unshift(e),n._typeFn.apply(n,t));return void 0===t?n:t})})}return r.prototype.def=function(t){var e,i=this.s.opts;return void 0===t?"function"==typeof(e=void 0!==i.default?i.default:i.def)?e():e:(i.def=t,this)},r.prototype.disable=function(){return this.dom.container.addClass(this.s.classes.disabled),this._typeFn("disable"),this},r.prototype.displayed=function(){var t=this.dom.container;return!(!t.parents("body").length||"none"===t.css("display"))},r.prototype.enable=function(t){return!1===(t=void 0===t?!0:t)?this.disable():(this.dom.container.removeClass(this.s.classes.disabled),this._typeFn("enable"),this)},r.prototype.enabled=function(){return!1===this.dom.container.hasClass(this.s.classes.disabled)},r.prototype.error=function(t,e){var i=this.s.classes;return t?this.dom.container.addClass(i.error):this.dom.container.removeClass(i.error),this._typeFn("errorMessage",t),this._msg(this.dom.fieldError,t,e)},r.prototype.fieldInfo=function(t){return this._msg(this.dom.fieldInfo,t)},r.prototype.isMultiValue=function(){return this.s.multiValue&&1!==this.s.multiIds.length},r.prototype.inError=function(){return this.dom.container.hasClass(this.s.classes.error)},r.prototype.input=function(){return this.s.type.input?this._typeFn("input"):$("input, select, textarea",this.dom.container)},r.prototype.focus=function(){return this.s.type.focus?this._typeFn("focus"):$("input, select, textarea",this.dom.container).focus(),this},r.prototype.get=function(){if(!this.isMultiValue())return this._format(this._typeFn("get"),this.s.opts.getFormatter)},r.prototype.hide=function(t){var e=this.dom.container;return void 0===t&&(t=!0),this.s.host.display()&&t&&$.fn.slideUp?e.slideUp():e.css("display","none"),this},r.prototype.label=function(t){var e=this.dom.label,i=this.dom.labelInfo.detach();return void 0===t?e.html():(e.html(t),e.append(i),this)},r.prototype.labelInfo=function(t){return this._msg(this.dom.labelInfo,t)},r.prototype.message=function(t,e){return this._msg(this.dom.fieldMessage,t,e)},r.prototype.multiGet=function(t){var e=this.s.multiValues,i=this.s.multiIds,n=this.isMultiValue();if(void 0===t)for(var o=this.val(),s={},a=0,r=i;a").replace(/</g,"<").replace(/&/g,"&").replace(/"/g,'"').replace(/£/g,"£").replace(/�?39;/g,"'").replace(/�?10;/g,"\n")}this.s.multiValue=!1;var n=this.s.opts.entityDecode;if(void 0===n||!0===n)if(Array.isArray(t))for(var o=0,s=t.length;o
                                                                                                                                                                            '),s=$('
                                                                                                                                                                            ');if(this.dom={body:el("body",i)[0],bodyContent:el("body_content",i)[0],buttons:$('
                                                                                                                                                                            ')[0],footer:el("foot",i)[0],form:s[0],formContent:el("form_content",s)[0],formError:$('
                                                                                                                                                                            ')[0],formInfo:$('
                                                                                                                                                                            ')[0],header:$('
                                                                                                                                                                            ')[0],processing:el("processing",i)[0],wrapper:i[0]},$.each(t.events,function(t,i){n.on(t,function(){for(var t=[],e=0;e + * DataTables internationalisation options to provide a fully language + * customised table interface. + * + * @namespace + * + * @example + * // Set the 'create' button text. All other strings used are the + * // default values. + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "create": { + * "button": "New user" + * } + * } + * } ); + * + * @example + * // Set the submit text for all three actions + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "create": { + * "submit": "Create new user" + * }, + * "edit": { + * "submit": "Update user" + * }, + * "remove": { + * "submit": "Remove user" + * } + * } + * } ); + */ + i18n: { + /** + * Close button title text + * + * @type string + * @default Close + */ + close: 'Close', + /** + * Strings used when working with the Editor 'create' action (creating new + * records). + * + * @namespace + */ + create: { + /** + * Buttons button text + * + * @type string + * @default New + */ + button: 'New', + /** + * Submit button text + * + * @type string + * @default Create + */ + submit: 'Create', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Create new entry + */ + title: 'Create new entry' + }, + datetime: { + amPm: ['am', 'pm'], + hours: 'Hour', + minutes: 'Minute', + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December' + ], + next: 'Next', + previous: 'Previous', + seconds: 'Second', + unknown: '-', + weekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + }, + /** + * Strings used when working with the Editor 'edit' action (editing existing + * records). + * + * @namespace + */ + edit: { + /** + * Buttons button text + * + * @type string + * @default Edit + */ + button: 'Edit', + /** + * Submit button text + * + * @type string + * @default Update + */ + submit: 'Update', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Edit entry + */ + title: 'Edit entry' + }, + /** + * Strings used for error conditions. + * + * @namespace + */ + error: { + /** + * Generic server error message + * + * @type string + * @default + * A system error has occurred (More information) + */ + system: 'A system error has occurred (More information).' + }, + /** + * Strings used for multi-value editing + * + * @namespace + */ + multi: { + /** + * Shown below the multi title text, although only the first + * instance of this text is shown in the form to reduce redundancy + */ + info: 'The selected items contain different values for this input. To edit and set all items for this input to the same value, click or tap here, otherwise they will retain their individual values.', + /** + * Disabled for multi-row editing + */ + noMulti: 'This input can be edited individually, but not part of a group.', + /** + * Shown below the field input when group editing a value to allow + * the user to return to the original multiple values + */ + restore: 'Undo changes', + /** + * Shown in place of the field value when a field has multiple values + */ + title: 'Multiple values' + }, + /** + * Strings used when working with the Editor 'delete' action (deleting + * existing records). + * + * @namespace + */ + remove: { + /** + * Buttons button text + * + * @type string + * @default Delete + */ + button: 'Delete', + /** + * Deletion confirmation message. + * + * As Editor has the ability to delete either a single or multiple rows + * at a time, this option can be given as either a string (which will be + * used regardless of how many records are selected) or as an object + * where the property "_" will be used (with %d substituted for the number + * of records to be deleted) as the delete message, unless there is a + * key with the number of records to be deleted. This allows Editor + * to consider the different pluralisation characteristics of different + * languages. + * + * @type object|string + * @default Are you sure you wish to delete %d rows? + * + * @example + * // String - no plural consideration + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": "Are you sure you wish to delete %d record(s)?" + * } + * } + * } ); + * + * @example + * // Basic 1 (singular) or _ (plural) + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": { + * "_": "Confirm deletion of %d records.", + * "1": "Confirm deletion of record." + * } + * } + * } ); + * + * @example + * // Singular, dual and plural + * var editor = new $.fn.Editor( { + * "ajax": "data/source", + * "table": "#example", + * "i18n": { + * "remove": { + * "confirm": { + * "_": "Confirm deletion of %d records.", + * "1": "Confirm deletion of record.", + * "2": "Confirm deletion of both record." + * } + * } + * } ); + * + */ + confirm: { + 1: 'Are you sure you wish to delete 1 row?', + _: 'Are you sure you wish to delete %d rows?' + }, + /** + * Submit button text + * + * @type string + * @default Delete + */ + submit: 'Delete', + /** + * Display container title (when showing the editor display) + * + * @type string + * @default Delete + */ + title: 'Delete', + } + }, + /** + * JSON property from which to read / write the row's ID property (i.e. its + * unique column index that identifies the row to the database). By default + * Editor will use the `DT_RowId` property from the data source object + * (DataTable's magic property to set the DOM id for the row). + * + * If you want to read a parameter from the data source object instead of + * using `DT_RowId`, set this option to the property name to use. + * + * Like other data source options the `srcId` option can be given in dotted + * object notation to read nested objects. + * + * @type null|string + * @default DT_RowId + * + * @example + * // Using a data source such as: + * // { "id":12, "browser":"Chrome", ... } + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example", + * "idSrc": "id" + * } ); + * } ); + */ + idSrc: 'DT_RowId', + /** + * jQuery selector that can be used to identify the table you wish to apply + * this editor instance to. + * + * In previous versions of Editor (1.2 and earlier), this parameter was + * called `table`. The name has been altered in 1.3+ to simplify the + * initialisation. This is a backwards compatible change - if you pass in + * a `table` option it will be used. + * + * @type string + * @default Empty string + * + * @example + * $(document).ready(function() { + * var editor = new $.fn.Editor( { + * "ajax": "php/index.php", + * "table": "#example" + * } ); + * } ); + */ + table: null, +}; + +var settings = { + action: null, + actionName: 'action', + ajax: null, + bubbleNodes: [], + bubbleBottom: false, + closeCb: null, + closeIcb: null, + dataSource: null, + displayController: null, + displayed: false, + editCount: 0, + editData: {}, + editFields: {}, + editOpts: {}, + fields: {}, + formOptions: { + bubble: $.extend({}, formOptions), + inline: $.extend({}, formOptions), + main: $.extend({}, formOptions), + }, + globalError: '', + id: -1, + idSrc: null, + includeFields: [], + mode: null, + modifier: null, + opts: null, + order: [], + processing: false, + setFocus: null, + table: null, + template: null, + unique: 0 +}; + +var DataTable$6 = $.fn.dataTable; +var DtInternalApi = DataTable$6.ext.oApi; +function objectKeys(o) { + var out = []; + for (var key in o) { + if (o.hasOwnProperty(key)) { + out.push(key); + } + } + return out; +} +function el(tag, ctx) { + if (ctx === undefined) { + ctx = document; + } + return $('*[data-dte-e="' + tag + '"]', ctx); +} +function safeDomId(id, prefix) { + if (prefix === void 0) { prefix = '#'; } + return typeof id === 'string' ? + prefix + id.replace(/\./g, '-') : + prefix + id; +} +function safeQueryId(id, prefix) { + if (prefix === void 0) { prefix = '#'; } + return typeof id === 'string' ? + prefix + id.replace(/(:|\.|\[|\]|,)/g, '\\$1') : + prefix + id; +} +function dataGet(src) { + return DtInternalApi._fnGetObjectDataFn(src); +} +function dataSet(src) { + return DtInternalApi._fnSetObjectDataFn(src); +} +var extend = DtInternalApi._fnExtend; +function pluck(a, prop) { + var out = []; + $.each(a, function (idx, elIn) { + out.push(elIn[prop]); + }); + return out; +} +/** + * Compare parameters for difference - diving into arrays and objects if + * needed, allowing the object reference to be different, but the contents to + * match. + * + * Please note that LOOSE type checking is used + */ +function deepCompare(o1, o2) { + if (typeof o1 !== 'object' || typeof o2 !== 'object') { + return o1 == o2; + } + var o1Props = objectKeys(o1); + var o2Props = objectKeys(o2); + if (o1Props.length !== o2Props.length) { + return false; + } + for (var i = 0, ien = o1Props.length; i < ien; i++) { + var propName = o1Props[i]; + if (typeof o1[propName] === 'object') { + if (!deepCompare(o1[propName], o2[propName])) { + return false; + } + } + else if (o1[propName] != o2[propName]) { + return false; + } + } + return true; +} + +/* - - - - - - - - - - + * DataTables editor interface + */ +var _dtIsSsp = function (dt, editor) { + // If the draw type is `none`, then we still need to use the DT API to + // update the display with the new data + return dt.settings()[0].oFeatures.bServerSide && + editor.s.editOpts.drawType !== 'none'; +}; +var _dtApi = function (table) { + return table instanceof $.fn.dataTable.Api + ? table + : $(table).DataTable(); +}; +var _dtHighlight = function (node) { + // Highlight a row using CSS transitions. The timeouts need to match the + // transition duration from the CSS + node = $(node); + setTimeout(function () { + node.addClass('highlight'); + setTimeout(function () { + node + .addClass('noHighlight') + .removeClass('highlight'); + setTimeout(function () { + node.removeClass('noHighlight'); + }, 550); + }, 500); + }, 20); +}; +var _dtRowSelector = function (out, dt, identifier, fields, idFn) { + dt.rows(identifier).indexes().each(function (idx) { + var row = dt.row(idx); + var data = row.data(); + var idSrc = idFn(data); + if (idSrc === undefined) { + Editor.error('Unable to find row identifier', 14); + } + out[idSrc] = { + data: data, + fields: fields, + idSrc: idSrc, + node: row.node(), + type: 'row' + }; + }); +}; +var _dtFieldsFromIdx = function (dt, fields, idx, ignoreUnknown) { + var col = dt.settings()[0].aoColumns[idx]; + var dataSrc = col.editField !== undefined ? + col.editField : + col.mData; + var resolvedFields = {}; + var run = function (field, dataSrcIn) { + if (field.name() === dataSrcIn) { + resolvedFields[field.name()] = field; + } + }; + $.each(fields, function (name, fieldInst) { + if (Array.isArray(dataSrc)) { + for (var _i = 0, dataSrc_1 = dataSrc; _i < dataSrc_1.length; _i++) { + var data = dataSrc_1[_i]; + run(fieldInst, data); + } + } + else { + run(fieldInst, dataSrc); + } + }); + if ($.isEmptyObject(resolvedFields) && !ignoreUnknown) { + Editor.error('Unable to automatically determine field from source. Please specify the field name.', 11); + } + return resolvedFields; +}; +var _dtCellSelector = function (out, dt, identifier, allFields, idFn, forceFields) { + if (forceFields === void 0) { forceFields = null; } + var cells = dt.cells(identifier); + cells.indexes().each(function (idx) { + var cell = dt.cell(idx); + var row = dt.row(idx.row); + var data = row.data(); + var idSrc = idFn(data); + var fields = forceFields || _dtFieldsFromIdx(dt, allFields, idx.column, cells.count() > 1); + var isNode = (typeof identifier === 'object' && identifier.nodeName) || identifier instanceof $; + var prevDisplayFields; + var prevAttach; + var prevAttachFields; + // Only add if a field was found to edit + if (Object.keys(fields).length) { + // The row selector will create a new `out` object for the identifier, and the + // cell selector might be called multiple times for a row, so we need to save + // our specific items + if (out[idSrc]) { + prevAttach = out[idSrc].attach; + prevAttachFields = out[idSrc].attachFields; + prevDisplayFields = out[idSrc].displayFields; + } + // Use the row selector to get the row information + _dtRowSelector(out, dt, idx.row, allFields, idFn); + out[idSrc].attachFields = prevAttachFields || []; + out[idSrc].attachFields.push(Object.keys(fields)); + out[idSrc].attach = prevAttach || []; + out[idSrc].attach.push(isNode ? + $(identifier).get(0) : + cell.fixedNode ? // If its under a fixed column, get the floating node + cell.fixedNode() : + cell.node()); + out[idSrc].displayFields = prevDisplayFields || {}; + $.extend(out[idSrc].displayFields, fields); + } + }); +}; +var _dtColumnSelector = function (out, dt, identifier, fields, idFn) { + dt.cells(null, identifier).indexes().each(function (idx) { + _dtCellSelector(out, dt, idx, fields, idFn); + }); +}; +var dataSource$1 = { + commit: function (action, identifier, data, store) { + // Updates complete - redraw + var that = this; + var dt = _dtApi(this.s.table); + var ssp = dt.settings()[0].oFeatures.bServerSide; + var ids = store.rowIds; + // On edit, if there are any rows left in the `store.rowIds`, then they + // were not returned by the server and should be removed (they might not + // meet filtering requirements any more for example) + if (!_dtIsSsp(dt, this) && action === 'edit' && store.rowIds.length) { + var row = void 0; + var compare = function (id) { + return function (rowIdx, rowData, rowNode) { + return id == dataSource$1.id.call(that, rowData); + }; + }; + for (var i = 0, ien = ids.length; i < ien; i++) { + // Find the row to edit - attempt to do an id look up first for speed + try { + row = dt.row(safeQueryId(ids[i])); + } + catch (e) { + row = dt; + } + // If not found, then we need to do it the slow way + if (!row.any()) { + row = dt.row(compare(ids[i])); + } + if (row.any() && !ssp) { + row.remove(); + } + } + } + var drawType = this.s.editOpts.drawType; + if (drawType !== 'none') { + var dtAny = dt; + // SSP highlighting has to go after the draw, but this can't be + // merged with client-side processing highlight as we want that + // to work even when there isn't a draw happening. + if (ssp && ids && ids.length) { + dt.one('draw', function () { + for (var i = 0, ien = ids.length; i < ien; i++) { + var row = dt.row(safeQueryId(ids[i])); + if (row.any()) { + _dtHighlight(row.node()); + } + } + }); + } + dt.draw(drawType); + // Responsive needs to take account of new data column widths + if (dtAny.responsive) { + dtAny.responsive.recalc(); + } + // Rebuild searchpanes + if (typeof dtAny.searchPanes === 'function' && !ssp) { + dtAny.searchPanes.rebuildPane(undefined, true); + } + // Rebuild searchbuilder + if (dtAny.searchBuilder !== undefined && typeof dtAny.searchBuilder.rebuild === 'function' && !ssp) { + dtAny.searchBuilder.rebuild(dtAny.searchBuilder.getDetails()); + } + } + }, + create: function (fields, data) { + var dt = _dtApi(this.s.table); + if (!_dtIsSsp(dt, this)) { + var row = dt.row.add(data); + _dtHighlight(row.node()); + } + }, + edit: function (identifier, fields, data, store) { + var that = this; + var dt = _dtApi(this.s.table); + // No point in doing anything when server-side processing - the commit + // will redraw the table + if (!_dtIsSsp(dt, this) || this.s.editOpts.drawType === 'none') { + // The identifier can select one or more rows, but the data will + // refer to just a single row. We need to determine which row from + // the set is the one to operator on. + var rowId_1 = dataSource$1.id.call(this, data); + var row = void 0; + // Find the row to edit - attempt to do an id look up first for speed + try { + row = dt.row(safeQueryId(rowId_1)); + } + catch (e) { + row = dt; + } + // If not found, then we need to do it the slow way + if (!row.any()) { + row = dt.row(function (rowIdx, rowData, rowNode) { + return rowId_1 == dataSource$1.id.call(that, rowData); + }); + } + if (row.any()) { + // Merge data to allow for a sub-set to be returned + var toSave = extend({}, row.data(), true); + toSave = extend(toSave, data, true); + row.data(toSave); + // Remove the item from the list of indexes now that is has been + // updated + var idx = $.inArray(rowId_1, store.rowIds); + store.rowIds.splice(idx, 1); + } + else { + // If not found, then its a new row (change in pkey possibly) + row = dt.row.add(data); + } + _dtHighlight(row.node()); + } + }, + fakeRow: function (insertPoint) { + var dt = _dtApi(this.s.table); + var tr = $('
                                                                                                                                                                            ').appendTo(tr); + var fields = _dtFieldsFromIdx(dt, this.s.fields, visIdx, true); + var settings = dt.settings()[0]; + var className = settings.aoColumns[visIdx].sClass; + if (className) { + td.addClass(className); + } + if (Object.keys(fields).length) { + attachFields.push(Object.keys(fields)); + attach.push(td[0]); + $.extend(displayFields, fields); + } + } + var append = function () { + // Remove the data empty message + if (dt.page.info().recordsDisplay === 0) { + $(tbody).empty(); + } + var action = insertPoint === 'end' + ? 'appendTo' + : 'prependTo'; + tr[action](tbody); + }; + this.__dtFakeRow = tr; + // Insert into the table + append(); + dt.on('draw.dte-createInline', function () { + append(); + }); + return { + 0: { + attach: attach, + attachFields: attachFields, + displayFields: displayFields, + fields: this.s.fields, + type: 'row' + } + }; + }, + fakeRowEnd: function () { + var dt = _dtApi(this.s.table); + dt.off('draw.dte-createInline'); + this.__dtFakeRow.remove(); + this.__dtFakeRow = null; + // Restore data empty row + if (dt.page.info().recordsDisplay === 0) { + dt.draw(false); + } + }, + // get idSrc, fields to edit, data and node for each item + fields: function (identifier) { + var idFn = dataGet(this.s.idSrc); + var dt = _dtApi(this.s.table); + var fields = this.s.fields; + var out = {}; + if ($.isPlainObject(identifier) && + (identifier.rows !== undefined || identifier.columns !== undefined || identifier.cells !== undefined)) { + // Multi-item type selector + if (identifier.rows !== undefined) { + _dtRowSelector(out, dt, identifier.rows, fields, idFn); + } + if (identifier.columns !== undefined) { + _dtColumnSelector(out, dt, identifier.columns, fields, idFn); + } + if (identifier.cells !== undefined) { + _dtCellSelector(out, dt, identifier.cells, fields, idFn); + } + } + else { + // Just a rows selector + _dtRowSelector(out, dt, identifier, fields, idFn); + } + return out; + }, + id: function (data) { + var idFn = dataGet(this.s.idSrc); + return idFn(data); + }, + individual: function (identifier, fieldNames) { + var idFn = dataGet(this.s.idSrc); + var dt = _dtApi(this.s.table); + var fields = this.s.fields; + var out = {}; + var forceFields; + if (fieldNames) { + if (!Array.isArray(fieldNames)) { + fieldNames = [fieldNames]; + } + forceFields = {}; + $.each(fieldNames, function (i, name) { + forceFields[name] = fields[name]; + }); + } + _dtCellSelector(out, dt, identifier, fields, idFn, forceFields); + return out; + }, + prep: function (action, identifier, submit, json, store) { + var _this = this; + // Get the id of the rows created / edited + if (action === 'create') { + store.rowIds = $.map(json.data, function (row) { return dataSource$1.id.call(_this, row); }); + } + if (action === 'edit') { + var cancelled_1 = json.cancelled || []; + store.rowIds = $.map(submit.data, function (val, key) { + return !$.isEmptyObject(submit.data[key]) && // was submitted + $.inArray(key, cancelled_1) === -1 ? // was not cancelled on the server-side + key : + undefined; + }); + } + else if (action === 'remove') { + store.cancelled = json.cancelled || []; + } + }, + refresh: function () { + // Reload a table's data - used when nested data is changed + var dt = _dtApi(this.s.table); + dt.ajax.reload(null, false); + }, + remove: function (identifier, fields, store) { + // No confirmation from the server + var that = this; + var dt = _dtApi(this.s.table); + var cancelled = store.cancelled; + if (cancelled.length === 0) { + // No rows were cancelled on the server-side, remove them all + dt.rows(identifier).remove(); + } + else { + // One or more rows were cancelled, so we need to identify them + // and not remove those rows + var indexes_1 = []; + dt.rows(identifier).every(function () { + var id = dataSource$1.id.call(that, this.data()); + if ($.inArray(id, cancelled) === -1) { + // Don't use `remove` here - it messes up the indexes + indexes_1.push(this.index()); + } + }); + dt.rows(indexes_1).remove(); + } + } +}; + +/* - - - - - - - - + * HTML editor interface + */ +function _htmlId(identifier) { + if (identifier === 'keyless') { + return $(document); + } + var specific = $('[data-editor-id="' + identifier + '"]'); + if (specific.length === 0) { + specific = typeof identifier === 'string' ? + $(safeQueryId(identifier)) : + $(identifier); + } + if (specific.length === 0) { + throw new Error('Could not find an element with `data-editor-id` or `id` of: ' + identifier); + } + return specific; +} +function _htmlEl(identifier, name) { + var context = _htmlId(identifier); + return $('[data-editor-field="' + name + '"]', context); +} +function _htmlEls(identifier, names) { + var out = $(); + for (var i = 0, ien = names.length; i < ien; i++) { + out = out.add(_htmlEl(identifier, names[i])); + } + return out; +} +function _htmlGet(identifier, dataSrc) { + var el = _htmlEl(identifier, dataSrc); + return el.filter('[data-editor-value]').length ? + el.attr('data-editor-value') : + el.html(); +} +function _htmlSet(identifier, fields, data) { + $.each(fields, function (name, field) { + var val = field.valFromData(data); + if (val !== undefined) { + var el = _htmlEl(identifier, field.dataSrc()); + if (el.filter('[data-editor-value]').length) { + el.attr('data-editor-value', val); + } + else { + el.each(function () { + // This is very frustrating, but in IE if you just write directly + // to innerHTML, and elements that are overwritten are GC'ed, + // even if there is a reference to them elsewhere + while (this.childNodes.length) { + this.removeChild(this.firstChild); + } + }) + .html(val); + } + } + }); +} +var dataSource = { + create: function (fields, data) { + // If there is an element with the id that has been created, then use it + // to assign the values + if (data) { + var id = dataSource.id.call(this, data); + try { + if (_htmlId(id).length) { + _htmlSet(id, fields, data); + } + } + catch (e) { + // noop - use `postCreate` to add items to the DOM + } + } + }, + edit: function (identifier, fields, data) { + // Get the ids from the returned data or `keyless` if not found + var id = dataSource.id.call(this, data) || 'keyless'; + _htmlSet(id, fields, data); + }, + // get idSrc, fields to edit, data and node for each item + fields: function (identifier) { + var out = {}; + // Allow multi-point editing + if (Array.isArray(identifier)) { + for (var i = 0, ien = identifier.length; i < ien; i++) { + var res = dataSource.fields.call(this, identifier[i]); + out[identifier[i]] = res[identifier[i]]; + } + return out; + } + // else + var data = {}; + var fields = this.s.fields; + if (!identifier) { + identifier = 'keyless'; + } + $.each(fields, function (name, field) { + var val = _htmlGet(identifier, field.dataSrc()); + // If no HTML element is present, jQuery returns null. We want undefined + field.valToData(data, val === null ? undefined : val); + }); + out[identifier] = { + data: data, + fields: fields, + idSrc: identifier, + node: document, + type: 'row' + }; + return out; + }, + id: function (data) { + var idFn = dataGet(this.s.idSrc); + return idFn(data); + }, + individual: function (identifier, fieldNames) { + var attachEl; + // Auto detection of the field name and id + if (identifier instanceof $ || identifier.nodeName) { + attachEl = identifier; + if (!fieldNames) { + fieldNames = [$(identifier).attr('data-editor-field')]; + } + var back = $.fn.addBack ? 'addBack' : 'andSelf'; + identifier = $(identifier).parents('[data-editor-id]')[back]().data('editor-id'); + } + // no id given and none found + if (!identifier) { + identifier = 'keyless'; + } + // no field name - cannot continue + if (fieldNames && !Array.isArray(fieldNames)) { + fieldNames = [fieldNames]; + } + if (!fieldNames || fieldNames.length === 0) { + throw new Error('Cannot automatically determine field name from data source'); + } + var out = dataSource.fields.call(this, identifier); + var fields = this.s.fields; + var forceFields = {}; + $.each(fieldNames, function (i, name) { + forceFields[name] = fields[name]; + }); + $.each(out, function (id, set) { + set.type = 'cell'; + set.attachFields = [fieldNames]; + set.attach = attachEl ? + $(attachEl) : + _htmlEls(identifier, fieldNames).toArray(); + set.fields = fields; + set.displayFields = forceFields; + }); + return out; + }, + initField: function (cfg) { + // This is before the field has been initialised so can't use it API + var label = $('[data-editor-label="' + (cfg.data || cfg.name) + '"]'); + if (!cfg.label && label.length) { + cfg.label = label.html(); + } + }, + remove: function (identifier, fields) { + // If there is an element with an ID property matching the identifier, + // remove it + if (identifier !== 'keyless') { + _htmlId(identifier).remove(); + } + } +}; + +/** + * Class names that are used by Editor for its various display components. + * A copy of this object is taken when an Editor instance is initialised, thus + * allowing different classes to be used in different instances if required. + * Class name changes can be useful for easy integration with CSS frameworks, + * for example Twitter Bootstrap. + * + * @namespace + */ +var classNames = { + /** + * Action classes - these are added to the Editor base element ("wrapper") + * and allows styling based on the type of form view that is being employed. + * + * @namespace + */ + actions: { + /** + * Editor is in 'create' state + */ + create: 'DTE_Action_Create', + /** + * Editor is in 'edit' state + */ + edit: 'DTE_Action_Edit', + /** + * Editor is in 'remove' state + */ + remove: 'DTE_Action_Remove' + }, + /** + * Display body classes + * + * @namespace + */ + body: { + /** + * Liner for the body content + */ + content: 'DTE_Body_Content', + /** + * Container for the body elements + */ + wrapper: 'DTE_Body' + }, + /** + * Bubble editing classes - these are used to display the bubble editor + * + * @namespace + */ + bubble: { + /** + * Fixed background + */ + bg: 'DTE_Bubble_Background', + /** + * Close button + */ + close: 'icon close', + /** + * Bubble content liner + */ + liner: 'DTE_Bubble_Liner', + /** + * Pointer shown which node is being edited + */ + pointer: 'DTE_Bubble_Triangle', + /** + * Bubble table display wrapper, so the buttons and form can be shown + * as table cells (via css) + */ + table: 'DTE_Bubble_Table', + /** + * Bubble container element + */ + wrapper: 'DTE DTE_Bubble' + }, + /** + * Field classes + * + * @namespace + */ + field: { + /** + * Field is disabled + */ + 'disabled': 'disabled', + /** + * Field error state (added to the field.wrapper element when in error state + */ + 'error': 'DTE_Field_StateError', + /** + * Field input container + */ + 'input': 'DTE_Field_Input', + /** + * Input elements wrapper + */ + 'inputControl': 'DTE_Field_InputControl', + /** + * Field label + */ + 'label': 'DTE_Label', + /** + * Error information text + */ + 'msg-error': 'DTE_Field_Error', + /** + * General information text + */ + 'msg-info': 'DTE_Field_Info', + /** + * Label information text + */ + 'msg-label': 'DTE_Label_Info', + /** + * Live messaging (API) information text + */ + 'msg-message': 'DTE_Field_Message', + /** + * Multi-value information descriptive text + */ + 'multiInfo': 'multi-info', + /** + * Multi-value not editable (field.multiEditable) + */ + 'multiNoEdit': 'multi-noEdit', + /** + * Multi-value information display + */ + 'multiRestore': 'multi-restore', + /** + * Multi-value information display wrapper + */ + 'multiValue': 'multi-value', + /** + * Class prefix for the field name - field name is added to the end allowing + * styling based on field name. + */ + 'namePrefix': 'DTE_Field_Name_', + /** + * Field's processing element + */ + 'processing': 'DTE_Processing_Indicator', + /** + * Class prefix for the field type - field type is added to the end allowing + * styling based on field type. + */ + 'typePrefix': 'DTE_Field_Type_', + /** + * Container for each field + */ + 'wrapper': 'DTE_Field' + }, + /** + * Display footer classes + * + * @namespace + */ + footer: { + /** + * Liner for the footer content + */ + content: 'DTE_Footer_Content', + /** + * Container for the footer elements + */ + wrapper: 'DTE_Footer' + }, + /** + * Form classes + * + * @namespace + */ + form: { + /** + * Button + */ + button: 'btn', + /** + * Button inside the form + */ + buttonInternal: 'btn', + /** + * Buttons container + */ + buttons: 'DTE_Form_Buttons', + /** + * Liner for the form content + */ + content: 'DTE_Form_Content', + /** + * Global error imformation + */ + error: 'DTE_Form_Error', + /** + * Global form information + */ + info: 'DTE_Form_Info', + /** + * Applied to the
                                                                                                                                                                            tag + */ + tag: '', + /** + * Container for the form elements + */ + wrapper: 'DTE_Form' + }, + /** + * Display header classes + * + * @namespace + */ + header: { + /** + * Liner for the header content + */ + content: 'DTE_Header_Content', + /** + * Title tag + */ + title: { + tag: null, + class: '' + }, + /** + * Container for the header elements + */ + wrapper: 'DTE_Header' + }, + /** + * Inline editing classes - these are used to display the inline editor + * + * @namespace + */ + inline: { + buttons: 'DTE_Inline_Buttons', + liner: 'DTE_Inline_Field', + wrapper: 'DTE DTE_Inline', + }, + /** + * Processing classes + * + * @namespace + */ + processing: { + /** + * Added to the base element ("wrapper") when the form is "processing" + */ + active: 'processing', + /** + * Processing indicator element + */ + indicator: 'DTE_Processing_Indicator' + }, + /** + * Applied to the base DIV element that contains all other Editor elements + */ + wrapper: 'DTE' +}; + +var displayed$2 = false; +var cssBackgroundOpacity = 1; +var dom$1 = { + background: $('
                                                                                                                                                                            ')[0], + close: $('
                                                                                                                                                                            ')[0], + content: null, + wrapper: $('
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ')[0] +}; +function findAttachRow(editor, attach) { + var dt = new $.fn.dataTable.Api(editor.s.table); + // Figure out where we want to put the form display + if (attach === 'head') { + return dt.table(undefined).header(); // typing error in DT type file + } + else if (editor.s.action === 'create') { + return dt.table(undefined).header(); + } + else { + return dt.row(editor.s.modifier).node(); + } +} +function heightCalc$1(dte) { + // Set the max-height for the form content + var header = $('div.DTE_Header', dom$1.wrapper).outerHeight(); + var footer = $('div.DTE_Footer', dom$1.wrapper).outerHeight(); + var maxHeight = $(window).height() - (envelope.conf.windowPadding * 2) - + header - footer; + $('div.DTE_Body_Content', dom$1.wrapper).css('maxHeight', maxHeight); + return $(dte.dom.wrapper).outerHeight(); +} +function hide$2(dte, callback) { + if (!callback) { + callback = function () { }; + } + if (displayed$2) { + $(dom$1.content).animate({ + top: -(dom$1.content.offsetHeight + 50) + }, 600, function () { + $([dom$1.wrapper, dom$1.background]).fadeOut('normal', function () { + $(this).detach(); + callback(); + }); + }); + displayed$2 = false; + } +} +function init$1() { + dom$1.content = $('div.DTED_Envelope_Container', dom$1.wrapper)[0]; + cssBackgroundOpacity = $(dom$1.background).css('opacity'); +} +function show$2(dte, callback) { + if (!callback) { + callback = function () { }; + } + $('body') + .append(dom$1.background) + .append(dom$1.wrapper); + // Adjust size for the content + dom$1.content.style.height = 'auto'; + if (!displayed$2) { + var style = dom$1.wrapper.style; + style.opacity = '0'; + style.display = 'block'; + var height = heightCalc$1(dte); + var targetRow = findAttachRow(dte, envelope.conf.attach); + var width = targetRow.offsetWidth; + style.display = 'none'; + style.opacity = '1'; + // Prep the display + dom$1.wrapper.style.width = width + 'px'; + dom$1.wrapper.style.marginLeft = -(width / 2) + 'px'; + dom$1.wrapper.style.top = ($(targetRow).offset().top + targetRow.offsetHeight) + 'px'; + dom$1.content.style.top = ((-1 * height) - 20) + 'px'; + // Start animating in the background + dom$1.background.style.opacity = '0'; + dom$1.background.style.display = 'block'; + $(dom$1.background).animate({ + opacity: cssBackgroundOpacity + }, 'normal'); + // Animate in the display + $(dom$1.wrapper).fadeIn(); + $(dom$1.content).animate({ top: 0 }, 600, callback); + } + // Event handlers + $(dom$1.close) + .attr('title', dte.i18n.close) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + dte.close(); + }); + $(dom$1.background) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + dte.background(); + }); + $('div.DTED_Lightbox_Content_Wrapper', dom$1.wrapper) + .off('click.DTED_Envelope') + .on('click.DTED_Envelope', function (e) { + if ($(e.target).hasClass('DTED_Envelope_Content_Wrapper')) { + dte.background(); + } + }); + $(window) + .off('resize.DTED_Envelope') + .on('resize.DTED_Envelope', function () { + heightCalc$1(dte); + }); + displayed$2 = true; +} +var envelope = { + close: function (dte, callback) { + hide$2(dte, callback); + }, + conf: { + attach: 'row', + windowPadding: 50 + }, + destroy: function (dte) { + hide$2(); + }, + init: function (dte) { + init$1(); + return envelope; + }, + node: function (dte) { + return dom$1.wrapper[0]; + }, + open: function (dte, append, callback) { + $(dom$1.content).children().detach(); + dom$1.content.appendChild(append); + dom$1.content.appendChild(dom$1.close); + show$2(dte, callback); + } +}; + +function isMobile() { + return typeof window.orientation !== 'undefined' && window.outerWidth <= 576 + ? true + : false; +} +var displayed$1 = false; +var ready = false; +var scrollTop = 0; +var dom = { + background: $('
                                                                                                                                                                            '), + close: $('
                                                                                                                                                                            '), + content: null, + wrapper: $('
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ') +}; +function heightCalc() { + var headerFooter = $('div.DTE_Header', dom.wrapper).outerHeight() + + $('div.DTE_Footer', dom.wrapper).outerHeight(); + if (isMobile()) { + $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', 'calc(100vh - ' + headerFooter + 'px)'); + } + else { + // Set the max-height for the form content + var maxHeight = $(window).height() - (self.conf.windowPadding * 2) - headerFooter; + $('div.DTE_Body_Content', dom.wrapper).css('maxHeight', maxHeight); + } +} +function hide$1(dte, callback) { + if (!callback) { + callback = function () { }; + } + // Restore scroll state + $('body').scrollTop(scrollTop); + dte._animate(dom.wrapper, { + opacity: 0, + top: self.conf.offsetAni + }, function () { + $(this).detach(); + callback(); + }); + dte._animate(dom.background, { + opacity: 0 + }, function () { + $(this).detach(); + }); + displayed$1 = false; + $(window).off('resize.DTED_Lightbox'); +} +function init() { + if (ready) { + return; + } + dom.content = $('div.DTED_Lightbox_Content', dom.wrapper); + dom.wrapper.css('opacity', 0); + dom.background.css('opacity', 0); + ready = true; +} +function show$1(dte, callback) { + // Mobiles have very poor position fixed abilities, so we need to know + // when using mobile A media query isn't good enough + if (isMobile()) { + $('body').addClass('DTED_Lightbox_Mobile'); + } + $('body') + .append(dom.background) + .append(dom.wrapper); + heightCalc(); + if (!displayed$1) { + displayed$1 = true; + dom.content.css('height', 'auto'); + dom.wrapper.css({ + top: -self.conf.offsetAni + }); + dte._animate(dom.wrapper, { + opacity: 1, + top: 0 + }, callback); + dte._animate(dom.background, { + opacity: 1 + }); + $(window).on('resize.DTED_Lightbox', function () { + heightCalc(); + }); + scrollTop = $('body').scrollTop(); + } + // Event handlers - assign on show, premoving previous bindings + dom.close + .attr('title', dte.i18n.close) + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + dte.close(); + }); + dom.background + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + e.stopImmediatePropagation(); + dte.background(); + }); + $('div.DTED_Lightbox_Content_Wrapper', dom.wrapper) + .off('click.DTED_Lightbox') + .on('click.DTED_Lightbox', function (e) { + if ($(e.target).hasClass('DTED_Lightbox_Content_Wrapper')) { + e.stopImmediatePropagation(); + dte.background(); + } + }); +} +var self = { + close: function (dte, callback) { + hide$1(dte, callback); + }, + conf: { + offsetAni: 25, + windowPadding: 25 + }, + destroy: function (dte) { + if (displayed$1) { + hide$1(dte); + } + }, + init: function (dte) { + init(); + return self; + }, + node: function (dte) { + return dom.wrapper[0]; + }, + open: function (dte, append, callback) { + var content = dom.content; + content.children().detach(); + content + .append(append) + .append(dom.close); + show$1(dte, callback); + }, +}; + +var DataTable$5 = $.fn.dataTable; +/** + * Add a new field to the from. This is the method that is called automatically when + * fields are given in the initialisation objects as `Editor.defaults.fields`. + * + * @param this Editor instance + * @param cfg The object that describes the field (the full + * object is described by `Editor.model.field`. Note that multiple + * fields can be given by passing in an array of field definitions. + * @param after Existing field to insert the new field after. This + * can be `undefined` (insert at end), `null` (insert at start) or `string` + * the field name to insert after. + * @param reorder INTERNAL for array adding performance only + * @returns Editor instance + */ +function add(cfg, after, reorder) { + if (reorder === void 0) { reorder = true; } + // Allow multiple fields to be added at the same time + if (Array.isArray(cfg)) { + // Do it in reverse to allow fields to appear in the same order given, otherwise, + // the would appear in reverse if given an `after` + if (after !== undefined) { + cfg.reverse(); + } + for (var _i = 0, cfg_1 = cfg; _i < cfg_1.length; _i++) { + var cfgDp = cfg_1[_i]; + this.add(cfgDp, after, false); + } + this._displayReorder(this.order()); + return this; + } + var name = cfg.name; + if (name === undefined) { + throw new Error('Error adding field. The field requires a `name` option'); + } + if (this.s.fields[name]) { + throw new Error('Error adding field \'' + name + '\'. A field already exists with this name'); + } + // Allow the data source to add / modify the field properties + // Dev: would this be better as an event `preAddField`? And have the + // data sources init only once, but can listen for such events? More + // complexity, but probably more flexible... + this._dataSource('initField', cfg); + var editorField = new Editor.Field(cfg, this.classes.field, this); + // If in an editing mode, we need to set the field up for the data + if (this.s.mode) { + var editFields = this.s.editFields; + editorField.multiReset(); + $.each(editFields, function (idSrc, editIn) { + var value; + if (editIn.data) { + value = editorField.valFromData(editIn.data); + } + editorField.multiSet(idSrc, value !== undefined ? + value : + editorField.def()); + }); + } + this.s.fields[name] = editorField; + if (after === undefined) { + this.s.order.push(name); + } + else if (after === null) { + this.s.order.unshift(name); + } + else { + var idx = $.inArray(after, this.s.order); + this.s.order.splice(idx + 1, 0, name); + } + if (reorder !== false) { + this._displayReorder(this.order()); + } + return this; +} +function ajax(newAjax) { + if (newAjax) { + this.s.ajax = newAjax; + return this; + } + return this.s.ajax; +} +/** + * Perform background activation tasks. + * + * This is NOT publicly documented on the Editor web-site, but rather can be + * used by display controller plug-ins to perform the required task on + * background activation. + * + * @param this Editor instance + * @returns Editor instance + */ +function background() { + var onBackground = this.s.editOpts.onBackground; + if (typeof onBackground === 'function') { + onBackground(this); + } + else if (onBackground === 'blur') { + this.blur(); + } + else if (onBackground === 'close') { + this.close(); + } + else if (onBackground === 'submit') { + this.submit(); + } + return this; +} +/** + * Blur the currently displayed editor. + * + * A blur is different from a `close()` in that it might cause either a close or + * the form to be submitted. A typical example of a blur would be clicking on + * the background of the bubble or main editing forms - i.e. it might be a + * close, or it might submit depending upon the configuration, while a click on + * the close box is a very definite close. + * + * @returns Editor instance + */ +function blur() { + this._blur(); + return this; +} +function bubble(cells, fieldNames, showIn, opts) { + var _this = this; + if (showIn === void 0) { showIn = true; } + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.bubble(cells, fieldNames, opts); + })) { + return this; + } + // Argument shifting + if ($.isPlainObject(fieldNames)) { + opts = fieldNames; + fieldNames = undefined; + showIn = true; + } + else if (typeof fieldNames === 'boolean') { + showIn = fieldNames; + fieldNames = undefined; + opts = undefined; + } + if ($.isPlainObject(showIn)) { + opts = showIn; + showIn = true; + } + if (showIn === undefined) { + showIn = true; + } + opts = $.extend({}, this.s.formOptions.bubble, opts); + var editFields = this._dataSource('individual', cells, fieldNames); + this._edit(cells, editFields, 'bubble', opts, function () { + var namespace = _this._formOptions(opts); + var ret = _this._preopen('bubble'); + if (!ret) { + return _this; + } + // Keep the bubble in position on resize + $(window).on('resize.' + namespace + ' scroll.' + namespace, function () { + _this.bubblePosition(); + }); + // Store the nodes this are being used so the bubble can be positioned + var nodes = []; + _this.s.bubbleNodes = nodes.concat.apply(nodes, pluck(editFields, 'attach')); + // Create container display + var classes = _this.classes.bubble; + var backgroundNode = $('
                                                                                                                                                                            '); + var container = $('
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            '); + if (showIn) { + container.appendTo('body'); + backgroundNode.appendTo('body'); + } + var liner = container.children().eq(0); + var tableNode = liner.children(); + var closeNode = tableNode.children(); + liner.append(_this.dom.formError); + tableNode.prepend(_this.dom.form); + if (opts.message) { + liner.prepend(_this.dom.formInfo); + } + if (opts.title) { + liner.prepend(_this.dom.header); + } + if (opts.buttons) { + tableNode.append(_this.dom.buttons); + } + // Need to use a small anon function here as the animate callback is the scope + // of the element being animated and TS won't allow access to the private methods + var finish = function () { + _this._clearDynamicInfo(); + _this._event('closed', ['bubble']); + }; + var pair = $().add(container).add(backgroundNode); + _this._closeReg(function (submitComplete) { + _this._animate(pair, { opacity: 0 }, function () { + if (this === container[0]) { + pair.detach(); + $(window).off('resize.' + namespace + ' scroll.' + namespace); + finish(); + } + }); + }); + // Close event handlers + backgroundNode.on('click', function () { + _this.blur(); + }); + closeNode.on('click', function () { + _this._close(); + }); + _this.bubblePosition(); + _this._postopen('bubble', false); + var opened = function () { + _this._focus(_this.s.includeFields, opts.focus); + _this._event('opened', ['bubble', _this.s.action]); + }; + _this._animate(pair, { opacity: 1 }, function () { + // Otherwise the callback will happen on both elements + if (this === container[0]) { + opened(); + } + }); + }); + return this; +} +/** + * Reposition the editing bubble (`bubble()`) when it is visible. This can be + * used to update the bubble position if other elements on the page change + * position. Editor will automatically call this method on window resize. + * + * @returns Editor instance + */ +function bubblePosition() { + var wrapper = $('div.DTE_Bubble'); + var liner = $('div.DTE_Bubble_Liner'); + var nodes = this.s.bubbleNodes; + // Average the node positions to insert the container + var position = { bottom: 0, left: 0, right: 0, top: 0 }; + $.each(nodes, function (i, nodeIn) { + var pos = $(nodeIn).offset(); + nodeIn = $(nodeIn).get(0); + position.top += pos.top; + position.left += pos.left; + position.right += pos.left + nodeIn.offsetWidth; + position.bottom += pos.top + nodeIn.offsetHeight; + }); + position.top /= nodes.length; + position.left /= nodes.length; + position.right /= nodes.length; + position.bottom /= nodes.length; + var top = position.top; + var left = (position.left + position.right) / 2; + var width = liner.outerWidth(); + var height = liner.outerHeight(); + var visLeft = left - (width / 2); + var visRight = visLeft + width; + var docWidth = $(window).width(); + var viewportTop = $(window).scrollTop(); + var padding = 15; + // Show above or below depending on bubbleBottom + wrapper.css({ + left: left, + top: this.s.bubbleBottom ? position.bottom : top + }); + if (this.s.bubbleBottom) { + wrapper.addClass('below'); + } + var curPosition = wrapper.position(); + // Correct for overflow below the fold + if (liner.length && curPosition.top + height > viewportTop + window.innerHeight) { + wrapper + .css('top', top) + .removeClass('below'); + this.s.bubbleBottom = false; + } + else if (liner.length && curPosition.top - height < viewportTop) { + // Correct for overflow from the top of the document by positioning below + // the field if needed + wrapper + .css('top', position.bottom) + .addClass('below'); + this.s.bubbleBottom = true; + } + // Attempt to correct for overflow to the right of the document + if (visRight + padding > docWidth) { + var diff = visRight - docWidth; + // If left overflowing, that takes priority + liner.css('left', visLeft < padding ? + -(visLeft - padding) : + -(diff + padding)); + } + else { + // Correct overflow to the left + liner.css('left', visLeft < padding ? -(visLeft - padding) : 0); + } + return this; +} +/** + * Setup the buttons that will be shown in the footer of the form - calling this + * method will replace any buttons which are currently shown in the form. + * + * @param this Editor instance + * @param buttonsIn A single button definition to add to the form or + * an array of objects with the button definitions to add more than one button. + * The options for the button definitions are fully defined by the + * @returns Editor instance + */ +function buttons(buttonsIn) { + var _this = this; + if (buttonsIn === '_basic') { + // Special string to create a basic button - undocumented + buttonsIn = [{ + action: function () { + this.submit(); + }, + text: this.i18n[this.s.action].submit + }]; + } + else if (!Array.isArray(buttonsIn)) { + // Allow a single button to be passed in as an object with an array + buttonsIn = [buttonsIn]; + } + $(this.dom.buttons).empty(); + $.each(buttonsIn, function (i, btn) { + if (typeof btn === 'string') { + btn = { + action: function () { + this.submit(); + }, + text: btn + }; + } + var text = btn.text || btn.label; // legacy support + var action = btn.action || btn.fn; // legacy support + var attr = btn.attr || {}; + $('', { + class: _this.classes.form.button + (btn.className ? ' ' + btn.className : '') + }) + .html(typeof text === 'function' ? + text(_this) : + text || '') + .attr('tabindex', btn.tabIndex !== undefined ? btn.tabIndex : 0) + .attr(attr) + .on('keyup', function (e) { + if (e.which === 13 && action) { + action.call(_this); + } + }) + .on('keypress', function (e) { + // Stop the browser activating the click event - if we don't + // have this and the Ajax return is fast, the keyup in + // `_formOptions()` might trigger another submit + if (e.which === 13) { + e.preventDefault(); + } + }) + .on('click', function (e) { + e.preventDefault(); + if (action) { + action.call(_this, e); + } + }) + .appendTo(_this.dom.buttons); + }); + return this; +} +/** + * Remove fields from the form. + * + * @param this Editor instance + * @param fieldName Field to remove + * @returns Editor instance + */ +function clear(fieldName) { + var that = this; + var sFields = this.s.fields; + if (typeof fieldName === 'string') { + // Remove an individual form element + that.field(fieldName).destroy(); + delete sFields[fieldName]; + var orderIdx = $.inArray(fieldName, this.s.order); + this.s.order.splice(orderIdx, 1); + var includeIdx = $.inArray(fieldName, this.s.includeFields); + if (includeIdx !== -1) { + this.s.includeFields.splice(includeIdx, 1); + } + } + else { + $.each(this._fieldNames(fieldName), function (i, name) { + that.clear(name); + }); + } + return this; +} +/** + * Close the form display. + * + * @param this Editor instance + * @returns Editor instance + */ +function close() { + this._close(false); + return this; +} +function create(arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + var sFields = this.s.fields; + var count = 1; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.create(arg1, arg2, arg3, arg4); + })) { + return this; + } + // Multi-row creation support (only supported by the 1.3+ style of calling + // this method, so a max of three arguments + if (typeof arg1 === 'number') { + count = arg1; + arg1 = arg2; + arg2 = arg3; + } + // Set up the edit fields for submission + this.s.editFields = {}; + for (var i = 0; i < count; i++) { + this.s.editFields[i] = { + fields: this.s.fields + }; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + this.s.mode = 'main'; + this.s.action = 'create'; + this.s.modifier = null; + this.dom.form.style.display = 'block'; + this._actionClass(); + // Allow all fields to be displayed for the create form + this._displayReorder(this.fields()); + // Set the default for the fields + $.each(sFields, function (name, fieldIn) { + var def = fieldIn.def(); + fieldIn.multiReset(); + // Set a value marker for each multi, so the field + // knows what the id's are (ints in this case) + for (var i = 0; i < count; i++) { + fieldIn.multiSet(i, def); + } + fieldIn.set(def); + }); + this._event('initCreate', null, function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + }); + return this; +} +/** + * Remove dependent links from a field + * + * @param this Editor instance + * @param parent The name of the field to remove the existing dependencies + * @returns Editor instance + */ +function undependent(parent) { + if (Array.isArray(parent)) { + for (var i = 0, ien = parent.length; i < ien; i++) { + this.undependent(parent[i]); + } + return this; + } + $(this.field(parent).node()).off('.edep'); + return this; +} +/** + * Create a dependent link between two or more fields. This method is used to + * listen for a change in a field's value which will trigger updating of the + * form. This update can consist of updating an options list, changing values + * or making fields hidden / visible. + * + * @param this Editor instance + * @param parent Field(s) to attach a dependency to + * @param url Action to perform on data change + * @param optsIn Configuration options + * @returns Editor instance + */ +function dependent(parent, url, optsIn) { + var _this = this; + if (Array.isArray(parent)) { + for (var i = 0, ien = parent.length; i < ien; i++) { + this.dependent(parent[i], url, optsIn); + } + return this; + } + var that = this; + var parentField = this.field(parent); + var ajaxOpts = { + dataType: 'json', + type: 'POST' + }; + var opts = $.extend({}, { + data: null, + event: 'change', + postUpdate: null, + preUpdate: null + }, optsIn); + var update = function (json) { + if (opts.preUpdate) { + opts.preUpdate(json); + } + // Field specific + $.each({ + errors: 'error', + labels: 'label', + messages: 'message', + options: 'update', + values: 'val' + }, function (jsonProp, fieldFn) { + if (json[jsonProp]) { + $.each(json[jsonProp], function (fieldIn, valIn) { + that.field(fieldIn)[fieldFn](valIn); + }); + } + }); + // Form level + $.each(['hide', 'show', 'enable', 'disable'], function (i, key) { + if (json[key]) { + that[key](json[key], json.animate); + } + }); + if (opts.postUpdate) { + opts.postUpdate(json); + } + parentField.processing(false); + }; + // Use a delegate handler to account for field elements which are added and + // removed after `depenedent` has been called + $(parentField.node()).on(opts.event + '.edep', function (e) { + // Make sure that it was one of the field's elements that triggered the ev + if ($(parentField.node()).find(e.target).length === 0) { + return; + } + parentField.processing(true); + var data = {}; + data.rows = _this.s.editFields ? + pluck(_this.s.editFields, 'data') : + null; + data.row = data.rows ? + data.rows[0] : + null; + data.values = _this.val(); + if (opts.data) { + var ret = opts.data(data); + if (ret) { + data = ret; + } + } + if (typeof url === 'function') { + var o = url.call(_this, parentField.val(), data, update, e); + if (o) { + if (typeof o === 'object' && typeof o.then === 'function') { + o.then(function (resolved) { + if (resolved) { + update(resolved); + } + }); + } + else { + update(o); + } + } + } + else { + if ($.isPlainObject(url)) { + $.extend(ajaxOpts, url); + } + else { + ajaxOpts.url = url; + } + $.ajax($.extend(ajaxOpts, { + data: data, + success: update + })); + } + }); + return this; +} +/** + * Destroy the Editor instance, cleaning up fields, display and event handlers + */ +function destroy() { + if (this.s.displayed) { + this.close(); + } + this.clear(); + // Stick the template back into the document so it can be reused + if (this.s.template) { + $('body').append(this.s.template); + } + var controller = this.s.displayController; + if (controller.destroy) { + controller.destroy(this); + } + $(document).off('.dte' + this.s.unique); + this.dom = null; + this.s = null; +} +/** + * Disable one or more field inputs, disallowing subsequent user interaction with the + * fields until they are re-enabled. + * + * @param this Editor instance + * @param name Field(s) to disable. Disables all if not given. + * @returns Editor instance + */ +function disable(name) { + var that = this; + $.each(this._fieldNames(name), function (i, n) { + that.field(n).disable(); + }); + return this; +} +function display(showIn) { + if (showIn === undefined) { + return this.s.displayed; + } + return this[showIn ? 'open' : 'close'](); +} +/** + * Get a list of the fields that are currently shown in the Editor form. + * + * @param this Editor instance + * @returns Array of field names + */ +function displayed() { + return $.map(this.s.fields, function (fieldIn, name) { + return fieldIn.displayed() ? name : null; + }); +} +/** + * Get display controller node + * + * @returns Display controller host element + */ +function displayNode() { + return this.s.displayController.node(this); +} +function edit(items, arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.edit(items, arg1, arg2, arg3, arg4); + })) { + return this; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + this._edit(items, this._dataSource('fields', items), 'main', argOpts.opts, function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + }); + return this; +} +/** + * Enable one or more field inputs, restoring user interaction with the fields. + * + * @param this Editor instance + * @param name Field(s) to enable. If not given, all fields in the form are enabled + * @returns Editor instance + */ +function enable(name) { + var that = this; + $.each(this._fieldNames(name), function (i, n) { + that.field(n).enable(); + }); + return this; +} +function error$1(name, msg) { + var wrapper = $(this.dom.wrapper); + if (msg === undefined) { + // Global error + this._message(this.dom.formError, name, true, function () { + wrapper.toggleClass('inFormError', name !== undefined && name !== ''); + }); + // Store the error message so `inError` can check if there is an + // error or not without considering animation + this.s.globalError = name; + } + else { + // Field error + this.field(name).error(msg); + } + return this; +} +/** + * Get a field object, configured for a named field, which can then be + * manipulated through its API. + * + * @param this Editor instance + * @param name Field to get + * @returns Field instance + */ +function field(name) { + var sFields = this.s.fields; + if (!sFields[name]) { + throw new Error('Unknown field name - ' + name); + } + return sFields[name]; +} +/** + * Get a list of the fields that are used by the Editor instance. + * + * @param this Editor instance + * @returns Editor instance + */ +function fields() { + return $.map(this.s.fields, function (fieldIn, name) { + return name; + }); +} +/** + * Get data object for a file from a table and id + * + * @param name Table name + * @param id Primary key identifier + * @returns File information + */ +function file(name, id) { + var tableFromFile = this.files(name); // can throw. `this` will be Editor or + var fileFromTable = tableFromFile[id]; // DataTables.Api context. Both work. + if (!fileFromTable) { + throw new Error('Unknown file id ' + id + ' in table ' + name); + } + return tableFromFile[id]; +} +function files(name) { + if (!name) { + return Editor.files; + } + var editorTable = Editor.files[name]; + if (!editorTable) { + throw new Error('Unknown file table name: ' + name); + } + return editorTable; +} +function get(name) { + var that = this; + if (!name) { + name = this.fields(); + } + if (Array.isArray(name)) { + var out_1 = {}; + $.each(name, function (i, n) { + out_1[n] = that.field(n).get(); + }); + return out_1; + } + return this.field(name).get(); +} +/** + * Hide one or more fields from the form display. + * + * @param this Editor instance + * @param names Fields to hide. Will hide all if not given + * @param animate Animate (default true) + * @returns Editor instance + */ +function hide(names, animate) { + var that = this; + $.each(this._fieldNames(names), function (i, n) { + that.field(n).hide(animate); + }); + return this; +} +/** + * Get the ids of the rows being edited + * + * @param includeHash Include a prefixed `#`, useful if to be used as a selector + */ +function ids(includeHash) { + if (includeHash === void 0) { includeHash = false; } + return $.map(this.s.editFields, function (editIn, idSrc) { + return includeHash === true ? + '#' + idSrc : + idSrc; + }); +} +/** + * Determine if there is an error state in the form, either the form's global + * error message, or one or more fields. + * + * @param this Editor instance + * @param inNames Fields to check. All checked if not given + * @returns true if in error, false otherwise + */ +function inError(inNames) { + $(this.dom.formError); + // Is there a global error? + if (this.s.globalError) { + return true; + } + // Field specific + var names = this._fieldNames(inNames); + for (var i = 0, ien = names.length; i < ien; i++) { + if (this.field(names[i]).inError()) { + return true; + } + } + return false; +} +function inline(cell, fieldName, opts) { + var _this = this; + var that = this; + // Argument shifting + if ($.isPlainObject(fieldName)) { + opts = fieldName; + fieldName = undefined; + } + opts = $.extend({}, this.s.formOptions.inline, opts); + var editFields = this._dataSource('individual', cell, fieldName); + var keys = Object.keys(editFields); + // Only a single row + if (keys.length > 1) { + throw new Error('Cannot edit more than one row inline at a time'); + } + var editRow = editFields[keys[0]]; + // Remap so easier to use + var hosts = []; + for (var _i = 0, _a = editRow.attach; _i < _a.length; _i++) { + var row = _a[_i]; + hosts.push(row); + } + // Already in edit mode for this cell? + if ($('div.DTE_Field', hosts).length) { + return this; + } + // Some other field in inline edit mode? + if (this._tidy(function () { + that.inline(cell, fieldName, opts); + })) { + return this; + } + // Start a full row edit, but don't display - we will be showing the field + this._edit(cell, editFields, 'inline', opts, function () { + _this._inline(editFields, opts); + }); + return this; +} +/** + * Inline creation of data. + * + * @param this Editor instance + * @param insertPoint Where to insert the create row + * @param opts Form options + * @returns Editor instance + */ +function inlineCreate(insertPoint, opts) { + var _this = this; + // Argument juggling - allow no insert point, just options + if ($.isPlainObject(insertPoint)) { + opts = insertPoint; + insertPoint = null; + } + if (this._tidy(function () { + _this.inlineCreate(insertPoint, opts); + })) { + return this; + } + // Set the default for the fields + $.each(this.s.fields, function (name, fieldIn) { + fieldIn.multiReset(); + fieldIn.multiSet(0, fieldIn.def()); + fieldIn.set(fieldIn.def()); + }); + this.s.mode = 'main'; + this.s.action = 'create'; + this.s.modifier = null; + this.s.editFields = this._dataSource('fakeRow', insertPoint); + opts = $.extend({}, this.s.formOptions.inline, opts); + this._actionClass(); + this._inline(this.s.editFields, opts, function () { + // When the form is closed (cancelled or submitted) we need to remove the + // fake row + _this._dataSource('fakeRowEnd'); + }); + this._event('initCreate', null); + return this; +} +function message(name, msg) { + if (msg === undefined) { + // Global message + this._message(this.dom.formInfo, name); + } + else { + // Field message + this.field(name).message(msg); + } + return this; +} +function mode(modeIn) { + if (!modeIn) { + return this.s.action; + } + if (!this.s.action) { + throw new Error('Not currently in an editing mode'); + } + else if (this.s.action === 'create' && modeIn !== 'create') { + throw new Error('Changing from create mode is not supported'); + } + this.s.action = modeIn; + return this; +} +/** + * Get the modifier that was used to trigger the edit or delete action. + * + * @returns The identifier that was used for the editing / remove method + * called. + */ +function modifier() { + return this.s.modifier; +} +/** + * Get the values for one or more fields (multi-row editing aware). + * + * @param this Editor instance + * @param fieldNames Fields to get values for, or all fields if not given + * @returns Editor instance + */ +function multiGet(fieldNames) { + var that = this; + if (fieldNames === undefined) { + fieldNames = this.fields(); + } + if (Array.isArray(fieldNames)) { + var out_2 = {}; + $.each(fieldNames, function (i, name) { + out_2[name] = that.field(name).multiGet(); + }); + return out_2; + } + // String + return this.field(fieldNames).multiGet(); +} +function multiSet(fieldNames, valIn) { + var that = this; + if ($.isPlainObject(fieldNames) && valIn === undefined) { + $.each(fieldNames, function (name, value) { + that.field(name).multiSet(value); + }); + } + else { + this.field(fieldNames).multiSet(valIn); + } + return this; +} +function node(name) { + var that = this; + if (!name) { + name = this.order(); + } + return Array.isArray(name) ? + $.map(name, function (n) { + return that.field(n).node(); + }) : + this.field(name).node(); +} +/** + * Remove a bound event listener to the editor instance. + * + * @param this Editor instance + * @param name Event name to remove + * @param fn Handler to remove, or all if not specified + * @returns Editor instance + */ +function off(name, fn) { + $(this).off(this._eventName(name), fn); + return this; +} +/** + * Listen for an event which is fired off by Editor when it performs certain + * actions. + * + * @param this Editor instance + * @param name Event to listen for + * @param fn Event handler to apply + * @returns Editor instance + */ +function on(name, fn) { + $(this).on(this._eventName(name), fn); + return this; +} +/** + * Listen for a single event event which is fired off by Editor when it performs + * certain actions + * + * @param this Editor instance + * @param name Event to listen for + * @param fn Event handler to apply + * @returns Editor instance + */ +function one(name, fn) { + $(this).one(this._eventName(name), fn); + return this; +} +/** + * Display the main form editor to the end user in the web-browser. + * + * @param this Editor instance + * @returns Editor instance + */ +function open() { + var _this = this; + // Insert the display elements in order + this._displayReorder(); + // Define how to do a close + this._closeReg(function () { + _this._nestedClose(function () { + _this._clearDynamicInfo(); + _this._event('closed', ['main']); + }); + }); + // Run the standard open with common events + var ret = this._preopen('main'); + if (!ret) { + return this; + } + this._nestedOpen(function () { + _this._focus($.map(_this.s.order, function (name) { return _this.s.fields[name]; }), _this.s.editOpts.focus); + _this._event('opened', ['main', _this.s.action]); + }, this.s.editOpts.nest); + this._postopen('main', false); + return this; +} +function order(setIn /* , ... */) { + if (!setIn) { + return this.s.order; + } + // Allow new layout to be passed in as arguments + if (arguments.length && !Array.isArray(setIn)) { + setIn = Array.prototype.slice.call(arguments); + } + // Sanity check - array must exactly match the fields we have available + if (this.s.order.slice().sort().join('-') !== setIn.slice().sort().join('-')) { + throw new Error('All fields, and no additional fields, must be provided for ordering.'); + } + // Copy the new array into the order (so the reference is maintained) + $.extend(this.s.order, setIn); + this._displayReorder(); + return this; +} +function remove(items, arg1, arg2, arg3, arg4) { + var _this = this; + var that = this; + // Some other field in inline edit mode? + if (this._tidy(function () { + that.remove(items, arg1, arg2, arg3, arg4); + })) { + return this; + } + if (!items && !this.s.table) { + items = 'keyless'; + } + // Allow a single row node to be passed in to remove, Can't use Array.isArray + // as we also allow array like objects to be passed in (API, jQuery) + if (items.length === undefined) { + items = [items]; + } + var argOpts = this._crudArgs(arg1, arg2, arg3, arg4); + var editFields = this._dataSource('fields', items); + this.s.action = 'remove'; + this.s.modifier = items; + this.s.editFields = editFields; + this.dom.form.style.display = 'none'; + this._actionClass(); + this._event('initRemove', [ + pluck(editFields, 'node'), + pluck(editFields, 'data'), + items + ], function () { + _this._event('initMultiRemove', // undocumented and to be removed in v2 + [editFields, items], function () { + _this._assembleMain(); + _this._formOptions(argOpts.opts); + argOpts.maybeOpen(); + var opts = _this.s.editOpts; + if (opts.focus !== null) { + $('button', _this.dom.buttons).eq(opts.focus).focus(); + } + }); + }); + return this; +} +function set(setIn, valIn) { + var that = this; + if (!$.isPlainObject(setIn)) { + var o = {}; + o[setIn] = valIn; + setIn = o; + } + $.each(setIn, function (n, v) { + that.field(n).set(v); + }); + return this; +} +/** + * Show fields in the display that were previously hidden. + * + * @param this Editor instance + * @param names Field(s) to show. All if not given. + * @param animate Animate the visual change or not + * @returns Editor instance + */ +function show(names, animate) { + var that = this; + $.each(this._fieldNames(names), function (i, n) { + that.field(n).show(animate); + }); + return this; +} +/** + * Submit a form for processing. + * + * @param this Editor instance + * @param successCallback Function executed when submit is completed + * @param errorCallback Function executed on error + * @param formatdata Data formatting function + * @param hideIn Disable default close action by passing in false + * @returns Editor instance + */ +function submit(successCallback, errorCallback, formatdata, hideIn) { + var _this = this; + var fields = this.s.fields; + var errorFields = []; + var errorReady = 0; + var sent = false; + if (this.s.processing || !this.s.action) { + return this; + } + this._processing(true); + // If there are fields in error, we want to wait for the error notification + // to be cleared before the form is submitted - errorFields tracks the + // fields which are in the error state, while errorReady tracks those which + // are ready to submit + var send = function () { + if (errorFields.length !== errorReady || sent) { + return; + } + _this._event('initSubmit', [_this.s.action], function (result) { + if (result === false) { + _this._processing(false); + return; + } + sent = true; + _this._submit(successCallback, errorCallback, formatdata, hideIn); + }); + }; + // Blur the current focus if it is a form input element - this allows any + // actions on change event (e.g. dpendent) to happen + var active = document.activeElement; + if ($(active).closest('div.DTE_Field').length !== 0) { + active.blur(); + } + // Remove the global error (don't know if the form is still in an error + // state!) + this.error(); + // Count how many fields are in error + $.each(fields, function (name, fieldIn) { + if (fieldIn.inError()) { + errorFields.push(name); + } + }); + // Remove the error display + $.each(errorFields, function (i, name) { + fields[name].error('', function () { + errorReady++; + send(); + }); + }); + send(); + return this; +} +function table(setIn) { + if (setIn === undefined) { + return this.s.table; + } + this.s.table = setIn; + return this; +} +function template(setIn) { + if (setIn === undefined) { + return this.s.template; + } + this.s.template = setIn === null ? + null : + $(setIn); + return this; +} +function title(titleIn) { + var header = $(this.dom.header).children('div.' + this.classes.header.content); + var titleClass = this.classes.header.title; + if (titleIn === undefined) { + return header.data('title'); + } + if (typeof titleIn === 'function') { + titleIn = titleIn(this, new DataTable$5.Api(this.s.table)); + } + var set = titleClass.tag + ? $("<" + titleClass.tag + ">Uploading file'); + reader.onload = function (e) { + var data = new FormData(); + var ajax; + data.append('action', 'upload'); + data.append('uploadField', conf.name); + data.append('upload', files[counter]); + if (conf.ajaxData) { + conf.ajaxData(data, files[counter], counter); + } + if (conf.ajax) { + ajax = conf.ajax; + } + else if ($.isPlainObject(editor.s.ajax)) { + ajax = editor.s.ajax.upload ? + editor.s.ajax.upload : + editor.s.ajax; + } + else if (typeof editor.s.ajax === 'string') { + ajax = editor.s.ajax; + } + if (!ajax) { + throw new Error('No Ajax option specified for upload plug-in'); + } + if (typeof ajax === 'string') { + ajax = { url: ajax }; + } + // Handle the case when the ajax data is given as a function + if (typeof ajax.data === 'function') { + var d = {}; + var ret = ajax.data(d); + // Allow the return to be used, or the object passed in + if (ret !== undefined && typeof ret !== 'string') { + d = ret; + } + $.each(d, function (key, value) { + data.append(key, value); + }); + } + else if ($.isPlainObject(ajax.data)) { + throw new Error('Upload feature cannot use `ajax.data` with an object. Please use it as a function instead.'); + } + // Dev cancellable event + editor._event('preUpload', [conf.name, files[counter], data], function (preRet) { + // Upload was cancelled + if (preRet === false) { + // If there are other files still to read, spin through them + if (counter < files.length - 1) { + counter++; + reader.readAsDataURL(files[counter]); + } + else { + completeCallback.call(editor, ids); + } + return; + } + // Use preSubmit to stop form submission during an upload, since the + // value won't be known until that point. + var submit = false; + editor + .on('preSubmit.DTE_Upload', function () { + submit = true; + return false; + }); + $.ajax($.extend({}, ajax, { + contentType: false, + data: data, + dataType: 'json', + error: function (xhr) { + var errors = conf.errors; + editor.off('preSubmit.DTE_Upload'); + editor.error(conf.name, errors && errors[xhr.status] + ? errors[xhr.status] + : generalError); + editor._event('uploadXhrError', [conf.name, xhr]); + progressCallback(conf); + }, + processData: false, + success: function (json) { + editor.off('preSubmit.DTE_Upload'); + editor._event('uploadXhrSuccess', [conf.name, json]); + if (json.fieldErrors && json.fieldErrors.length) { + var errors = json.fieldErrors; + for (var i = 0, ien = errors.length; i < ien; i++) { + editor.error(errors[i].name, errors[i].status); + } + completeCallback.call(editor, ids, true); + } + else if (json.error) { + editor.error(json.error); + completeCallback.call(editor, ids, true); + } + else if (!json.upload || !json.upload.id) { + editor.error(conf.name, generalError); + completeCallback.call(editor, ids, true); + } + else { + if (json.files) { + // Loop over the tables that are defined + $.each(json.files, function (table, filesIn) { + if (!Editor.files[table]) { + Editor.files[table] = {}; + } + $.extend(Editor.files[table], filesIn); + }); + } + ids.push(json.upload.id); + if (counter < files.length - 1) { + counter++; + reader.readAsDataURL(files[counter]); + } + else { + completeCallback.call(editor, ids); + if (submit) { + editor.submit(); + } + } + } + progressCallback(conf); + }, + type: 'post', + xhr: function () { + var xhr = $.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.onprogress = function (e) { + if (e.lengthComputable) { + var percent = (e.loaded / e.total * 100).toFixed(0) + '%'; + progressCallback(conf, files.length === 1 ? + percent : + counter + ':' + files.length + ' ' + percent); + } + }; + xhr.upload.onloadend = function () { + progressCallback(conf, conf.processingText || 'Processing'); + }; + } + return xhr; + } + })); + }); + }; + // Convert to a plain array + files = $.map(files, function (val) { + return val; + }); + // Truncate the selected files if needed + if (conf._limitLeft !== undefined) { + files.splice(conf._limitLeft, files.length); + } + reader.readAsDataURL(files[0]); +} +/** + * CommonJS factory function pass through. Matches DataTables. + * @param {*} root Window + * @param {*} jq jQUery + * @returns {boolean} Indicator + */ +function factory(root, jq) { + var is = false; + // Test if the first parameter is a window object + if (root && root.document) { + window = root; + document = root.document; + } + // Test if the second parameter is a jQuery object + if (jq && jq.fn && jq.fn.jquery) { + $ = jq; + is = true; + } + return is; +} + +var DataTable$4 = $.fn.dataTable; +var _inlineCounter = 0; +/** + * Set the class on the form to relate to the action that is being performed. + * This allows styling to be applied to the form to reflect the state that + * it is in. + * + * @private + */ +function _actionClass() { + var classesActions = this.classes.actions; + var action = this.s.action; + var wrapper = $(this.dom.wrapper); + wrapper.removeClass([classesActions.create, classesActions.edit, classesActions.remove].join(' ')); + if (action === 'create') { + wrapper.addClass(classesActions.create); + } + else if (action === 'edit') { + wrapper.addClass(classesActions.edit); + } + else if (action === 'remove') { + wrapper.addClass(classesActions.remove); + } +} +/** + * Create an Ajax request in the same style as DataTables 1.10, with full + * backwards compatibility for Editor 1.2. + * + * @param {object} data Data to submit + * @param {function} success Success callback + * @param {function} error Error callback + * @param {object} submitParams Submitted data + * @private + */ +function _ajax(data, success, error, submitParams) { + var action = this.s.action; + var thrown; + var opts = { + complete: [function (xhr, text) { + // Use `complete` rather than `success` so that all status codes are + // caught and can return valid JSON (useful when working with REST + // services). + var json = null; + if (xhr.status === 204 || xhr.responseText === 'null') { + json = {}; + } + else { + try { + // jQuery 1.12 or newer for responseJSON, but its the only + // way to get the JSON from a JSONP. So if you want to use + // JSONP with Editor you have to use jQuery 1.12+. + json = xhr.responseJSON ? + xhr.responseJSON : + JSON.parse(xhr.responseText); + } + catch (e) { } + } + if ($.isPlainObject(json) || Array.isArray(json)) { + success(json, xhr.status >= 400, xhr); + } + else { + error(xhr, text, thrown); + } + }], + data: null, + dataType: 'json', + error: [function (xhr, text, err) { + thrown = err; + }], + success: [], + type: 'POST' + }; + var a; + var ajaxSrc = this.s.ajax; + var id = action === 'edit' || action === 'remove' ? + pluck(this.s.editFields, 'idSrc').join(',') : + null; + // Get the correct object for rest style + if ($.isPlainObject(ajaxSrc) && ajaxSrc[action]) { + ajaxSrc = ajaxSrc[action]; + } + if (typeof ajaxSrc === 'function') { + // As a function, execute it, passing in the required parameters + ajaxSrc.call(this, null, null, data, success, error); + return; + } + else if (typeof ajaxSrc === 'string') { + // As a string it gives the URL. For backwards compatibility it can also + // give the method. + if (ajaxSrc.indexOf(' ') !== -1) { + a = ajaxSrc.split(' '); + opts.type = a[0]; + opts.url = a[1]; + } + else { + opts.url = ajaxSrc; + } + } + else { + // As an object, we extend the Editor defaults - with the exception of + // the error and complete functions which get added in so the user can + // specify their own in addition to ours + var optsCopy = $.extend({}, ajaxSrc || {}); + if (optsCopy.complete) { + opts.complete.unshift(optsCopy.complete); + delete optsCopy.complete; + } + if (optsCopy.error) { + opts.error.unshift(optsCopy.error); + delete optsCopy.error; + } + opts = $.extend({}, opts, optsCopy); + } + // URL macros + if (opts.replacements) { + $.each(opts.replacements, function (key, repl) { + opts.url = opts.url.replace('{' + key + '}', repl.call(this, key, id, action, data)); + }); + } + opts.url = opts.url + .replace(/_id_/, id) + .replace(/{id}/, id); + // Data processing option like in DataTables + if (opts.data) { + var isFn = typeof opts.data === 'function'; + var newData = isFn ? + opts.data(data) : // fn can manipulate data or return an object + opts.data; // object or array to merge + // If the function returned something, use that alone + data = isFn && newData ? + newData : + $.extend(true, data, newData); + } + opts.data = data; + // If a DELETE method is used there are a number of servers which will + // reject the request if it has a body. So we need to append to the URL. + // + // http://stackoverflow.com/questions/15088955 + // http://bugs.jquery.com/ticket/11586 + if (opts.type === 'DELETE' && (opts.deleteBody === undefined || opts.deleteBody === true)) { + var params = $.param(opts.data); + opts.url += opts.url.indexOf('?') === -1 ? + '?' + params : + '&' + params; + delete opts.data; + } + // Finally, make the ajax call + $.ajax(opts); +} +/** + * Abstraction for jQuery's animate method, to support jQuery slim which doesn't + * include the animate module + * + * @private + */ +function _animate(target, style, time, callback) { + if ($.fn.animate) { + target + .stop() + .animate(style, time, callback); + } + else { + target.css(style); + var scope = target.length && target.length > 1 + ? target[0] + : target; + if (typeof time === 'function') { + time.call(scope); + } + else if (callback) { + callback.call(scope); + } + } +} +/** + * Create the DOM structure from the source elements for the main form. + * This is required since the elements can be moved around for other form types + * (bubble). + * + * @private + */ +function _assembleMain() { + var dom = this.dom; + $(dom.wrapper) + .prepend(dom.header); + $(dom.footer) + .append(dom.formError) + .append(dom.buttons); + $(dom.bodyContent) + .append(dom.formInfo) + .append(dom.form); +} +/** + * Blur the editing window. A blur is different from a close in that it might + * cause either a close or the form to be submitted. A typical example of a + * blur would be clicking on the background of the bubble or main editing forms + * - i.e. it might be a close, or it might submit depending upon the + * configuration, while a click on the close box is a very definite close. + * + * @private + */ +function _blur() { + var opts = this.s.editOpts; + var onBlur = opts.onBlur; + if (this._event('preBlur') === false) { + return; + } + if (typeof onBlur === 'function') { + onBlur(this); + } + else if (onBlur === 'submit') { + this.submit(); + } + else if (onBlur === 'close') { + this._close(); + } +} +/** + * Clear all of the information that might have been dynamically set while + * the form was visible - specifically errors and dynamic messages + * + * @private + */ +function _clearDynamicInfo(errorsOnly) { + if (errorsOnly === void 0) { errorsOnly = false; } + // Can be triggered due to a destroy if the editor is open + if (!this.s) { + return; + } + var errorClass = this.classes.field.error; + var fields = this.s.fields; + $('div.' + errorClass, this.dom.wrapper).removeClass(errorClass); + $.each(fields, function (name, field) { + field.error(''); + if (!errorsOnly) { + field.message(''); + } + }); + this.error(''); + if (!errorsOnly) { + this.message(''); + } +} +/** + * Close an editing display, firing callbacks and events as needed + * + * @param {function} submitComplete Function to call after the preClose event + * @param {string} mode Editing mode that is just finished + * @private + */ +function _close(submitComplete, mode) { + var closed; + // Allow preClose event to cancel the opening of the display + if (this._event('preClose') === false) { + return; + } + if (this.s.closeCb) { + closed = this.s.closeCb(submitComplete, mode); + this.s.closeCb = null; + } + if (this.s.closeIcb) { + this.s.closeIcb(); + this.s.closeIcb = null; + } + // Remove focus control + $('body').off('focus.editor-focus'); + this.s.displayed = false; + this._event('close'); + if (closed) { + // Note that `bubble` will call this itself due to the animation + this._event('closed', [closed]); + } +} +/** + * Register a function to be called when the editing display is closed. This is + * used by function that create the editing display to tidy up the display on + * close - for example removing event handlers to prevent memory leaks. + * + * @param {function} fn Function to call on close + * @private + */ +function _closeReg(fn) { + this.s.closeCb = fn; +} +/** + * Argument shifting for the create(), edit() and remove() methods. In Editor + * 1.3 the preferred form of calling those three methods is with just two + * parameters (one in the case of create() - the id and the show flag), while in + * previous versions four / three parameters could be passed in, including the + * buttons and title options. In 1.3 the chaining API is preferred, but we want + * to support the old form as well, so this function is provided to perform + * that argument shifting, common to all three. + * + * @private + */ +function _crudArgs(arg1, arg2, arg3, arg4) { + var that = this; + var title; + var buttons; + var show; + var opts; + if ($.isPlainObject(arg1)) { + // Form options passed in as the first option + opts = arg1; + } + else if (typeof arg1 === 'boolean') { + // Show / hide passed in as the first option - form options second + show = arg1; + opts = arg2; // can be undefined + } + else { + // Old style arguments + title = arg1; // can be undefined + buttons = arg2; // can be undefined + show = arg3; // can be undefined + opts = arg4; // can be undefined + } + // If all undefined, then fall into here + if (show === undefined) { + show = true; + } + if (title) { + that.title(title); + } + if (buttons) { + that.buttons(buttons); + } + return { + maybeOpen: function () { + if (show) { + that.open(); + } + }, + opts: $.extend({}, this.s.formOptions.main, opts) + }; +} +/** + * Execute the data source abstraction layer functions. This is simply a case + * of executing the function with the Editor scope, passing in the remaining + * parameters. + * + * @param {string} name Function name to execute + * @private + */ +function _dataSource(name) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + var dataSource = this.s.table + ? Editor.dataSources.dataTable + : Editor.dataSources.html; + var fn = dataSource[name]; + if (fn) { + return fn.apply(this, args); + } +} +/** + * Insert the fields into the DOM, in the correct order + * + * @private + */ +function _displayReorder(includeFields) { + var _this = this; + var formContent = $(this.dom.formContent); + var fields = this.s.fields; + var order = this.s.order; + var template = this.s.template; + var mode = this.s.mode || 'main'; + if (includeFields) { + this.s.includeFields = includeFields; + } + else { + includeFields = this.s.includeFields; + } + // Empty before adding in the required fields + formContent.children().detach(); + $.each(order, function (i, name) { + if (_this._weakInArray(name, includeFields) !== -1) { + if (template && mode === 'main') { + template.find('editor-field[name="' + name + '"]').after(fields[name].node()); + template.find('[data-editor-template="' + name + '"]').append(fields[name].node()); + } + else { + formContent.append(fields[name].node()); + } + } + }); + if (template && mode === 'main') { + template.appendTo(formContent); + } + this._event('displayOrder', [ + this.s.displayed, + this.s.action, + formContent + ]); +} +/** + * Generic editing handler. This can be called by the three editing modes (main, + * bubble and inline) to configure Editor for a row edit, and fire the required + * events to ensure that the editing interfaces all provide a common API. + * + * @param {*} rows Identifier for the item(s) to be edited + * @param {string} type Editing type - for the initEdit event + * @private + */ +function _edit(items, editFields, type, formOptions, setupDone) { + var _this = this; + var fields = this.s.fields; + var usedFields = []; + var includeInOrder; + var editData = {}; + this.s.editFields = editFields; + this.s.editData = editData; + this.s.modifier = items; + this.s.action = 'edit'; + this.dom.form.style.display = 'block'; + this.s.mode = type; + this._actionClass(); + // Setup the field values for editing + $.each(fields, function (name, field) { + field.multiReset(); + includeInOrder = false; + editData[name] = {}; + $.each(editFields, function (idSrc, edit) { + if (edit.fields[name]) { + var val = field.valFromData(edit.data); + var nullDefault = field.nullDefault(); + // Save the set data values so we can decided in submit if data has changed + // Note that `null` is stored as an empty string since fields do not currently + // have the ability to store a null value - when they are read back (in the + // submit) they would be an empty string. When null handling is added to + // fields, this will need to be removed. + editData[name][idSrc] = val === null ? + '' : + Array.isArray(val) ? + val.slice() : + val; + // If scoped to edit the whole row, then set all of the fields + if (!formOptions || formOptions.scope === 'row') { + field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? + field.def() : + val, false); + if (!edit.displayFields || edit.displayFields[name]) { + includeInOrder = true; + } + } + else { + // Limit editing to only those fields selected if any are selected + if (!edit.displayFields || edit.displayFields[name]) { + field.multiSet(idSrc, val === undefined || (nullDefault && val === null) ? + field.def() : + val, false); + includeInOrder = true; + } + } + } + }); + // Loop finished - can do a multi-value check for display of the field now + field._multiValueCheck(); + // If the field is used, then add it to the fields to be shown + if (field.multiIds().length !== 0 && includeInOrder) { + usedFields.push(name); + } + }); + // Remove the fields that are not required from the display + var currOrder = this.order().slice(); + for (var i = currOrder.length - 1; i >= 0; i--) { + // Use `toString()` to convert numbers to strings, since usedFields + // contains strings (object property names) + if ($.inArray(currOrder[i].toString(), usedFields) === -1) { + currOrder.splice(i, 1); + } + } + this._displayReorder(currOrder); + // Events + this._event('initEdit', [ + pluck(editFields, 'node')[0], + pluck(editFields, 'data')[0], + items, + type + ], function () { + _this._event('initMultiEdit', // undocumented and to be removed in v2 + [editFields, items, type], function () { + setupDone(); + }); + }); +} +/** + * Fire callback functions and trigger events. + * + * @param {string|array} trigger Name(s) of the jQuery custom event to trigger + * @param {array} args Array of arguments to pass to the triggered event + * @return {*} Return from the event + * @private + */ +function _event(trigger, args, promiseComplete) { + if (args === void 0) { args = []; } + if (promiseComplete === void 0) { promiseComplete = undefined; } + // Allow an array to be passed in for the trigger to fire multiple events + if (Array.isArray(trigger)) { + for (var i = 0, ien = trigger.length; i < ien; i++) { + this._event(trigger[i], args); + } + } + else { + var e = $.Event(trigger); + $(this).triggerHandler(e, args); + var result = e.result; + // Automatically trigger a cancelled event if a `pre` event handler + // was cancelled by the callback + if (trigger.indexOf('pre') === 0 && result === false) { + $(this).triggerHandler($.Event(trigger + 'Cancelled'), args); + } + // Allow for a promise to be returned and execute a callback + if (promiseComplete) { + if (result && typeof result === 'object' && result.then) { + // jQuery and "real" promises both provide "then" + result.then(promiseComplete); + } + else { + // If there wasn't a promise returned, then execute immediately + promiseComplete(result); + } + } + return result; + } +} +/** + * 'Modernise' event names, from the old style `on[A-Z]` names to camelCase. + * This is done to provide backwards compatibility with Editor 1.2- event names. + * The names themselves were updated for consistency with DataTables. + * + * @param {string} Event name to modernise + * @return {string} String with new event name structure + * @private + */ +function _eventName(input) { + var name; + var names = input.split(' '); + for (var i = 0, ien = names.length; i < ien; i++) { + name = names[i]; + // Strip the 'on' part and lowercase the first character + var onStyle = name.match(/^on([A-Z])/); + if (onStyle) { + name = onStyle[1].toLowerCase() + name.substring(3); + } + names[i] = name; + } + return names.join(' '); +} +/** + * Find a field from a DOM node. All children are searched. + * + * @param {node} node DOM node to search for + * @return {Field} Field instance + */ +function _fieldFromNode(node) { + var foundField = null; + $.each(this.s.fields, function (name, field) { + if ($(field.node()).find(node).length) { + foundField = field; + } + }); + return foundField; +} +/** + * Convert a field name input parameter to an array of field names. + * + * Many of the API methods provide the ability to pass `undefined` a string or + * array of strings to identify fields. This method harmonises that. + * + * @param {array|string} [fieldNames] Field names to get + * @return {array} Field names + * @private + */ +function _fieldNames(fieldNames) { + if (fieldNames === undefined) { + return this.fields(); + } + else if (!Array.isArray(fieldNames)) { + return [fieldNames]; + } + return fieldNames; +} +/** + * Focus on a field. Providing the logic to allow complex focus expressions + * + * @param {array} fields Array of Field instances or field names for the fields + * that are shown + * @param {null|string|integer} focus Field identifier to focus on + * @private + */ +function _focus(fieldsIn, focus) { + var _this = this; + // Can't focus on a field when in remove mode (they aren't shown). + if (this.s.action === 'remove') { + return; + } + var field; + var fields = $.map(fieldsIn, function (fieldOrName) { return typeof fieldOrName === 'string' ? + _this.s.fields[fieldOrName] : + fieldOrName; }); + if (typeof focus === 'number') { + field = fields[focus]; + } + else if (focus) { + if (focus.indexOf('jq:') === 0) { + field = $('div.DTE ' + focus.replace(/^jq:/, '')); + } + else { + field = this.s.fields[focus]; + } + } + else { + document.activeElement.blur(); + } + this.s.setFocus = field; + if (field) { + field.focus(); + } +} +/** + * Form options - common function so all editing methods can provide the same + * basic options, DRY. + * + * @param {object} opts Editing options. See model.formOptions + * @private + */ +function _formOptions(opts) { + var _this = this; + var that = this; + var inlineCount = _inlineCounter++; + var namespace = '.dteInline' + inlineCount; + // Backwards compatibility with 1.4 + // if ( opts.closeOnComplete !== undefined ) { + // opts.onComplete = opts.closeOnComplete ? 'close' : 'none'; + // } + // if ( opts.submitOnBlur !== undefined ) { + // opts.onBlur = opts.submitOnBlur ? 'submit' : 'close'; + // } + // if ( opts.submitOnReturn !== undefined ) { + // opts.onReturn = opts.submitOnReturn ? 'submit' : 'none'; + // } + // if ( opts.blurOnBackground !== undefined ) { + // opts.onBackground = opts.blurOnBackground ? 'blur' : 'none'; + // } + this.s.editOpts = opts; + // When submitting by Ajax we don't want to close a form that has been + // opened during the ajax request, so we keep a count of the form opening + this.s.editCount = inlineCount; + if (typeof opts.title === 'string' || typeof opts.title === 'function') { + this.title(opts.title); + opts.title = true; + } + if (typeof opts.message === 'string' || typeof opts.message === 'function') { + this.message(opts.message); + opts.message = true; + } + if (typeof opts.buttons !== 'boolean') { + this.buttons(opts.buttons); + opts.buttons = true; + } + // Prevent submit by a host `` + $(document).on('keydown' + namespace, function (e) { + if (e.which === 13 && _this.s.displayed) { // return + var el = $(document.activeElement); + if (el) { + var field = _this._fieldFromNode(el); + if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { + e.preventDefault(); + } + } + } + }); + $(document).on('keyup' + namespace, function (e) { + var el = $(document.activeElement); + if (e.which === 13 && _this.s.displayed) { // return + var field = _this._fieldFromNode(el); + // Allow the field plug-in to say if we can submit or not + if (field && typeof field.canReturnSubmit === 'function' && field.canReturnSubmit(el)) { + if (opts.onReturn === 'submit') { + e.preventDefault(); + _this.submit(); + } + else if (typeof opts.onReturn === 'function') { + e.preventDefault(); + opts.onReturn(_this, e); + } + } + } + else if (e.which === 27) { // esc + e.preventDefault(); + if (typeof opts.onEsc === 'function') { + opts.onEsc(that, e); + } + else if (opts.onEsc === 'blur') { + that.blur(); + } + else if (opts.onEsc === 'close') { + that.close(); + } + else if (opts.onEsc === 'submit') { + that.submit(); + } + } + else if (el.parents('.DTE_Form_Buttons').length) { + if (e.which === 37) { // left + el.prev('button').trigger('focus'); + } + else if (e.which === 39) { // right + el.next('button').trigger('focus'); + } + } + }); + this.s.closeIcb = function () { + $(document).off('keydown' + namespace); + $(document).off('keyup' + namespace); + }; + return namespace; +} +/** + * Inline editing insertion of fields + */ +function _inline(editFields, opts, closeCb) { + var _this = this; + if (closeCb === void 0) { closeCb = null; } + var closed = false; + var classes = this.classes.inline; + var keys = Object.keys(editFields); + var editRow = editFields[keys[0]]; + var lastAttachPoint; + var elements = []; + for (var i = 0; i < editRow.attach.length; i++) { + var name_1 = editRow.attachFields[i][0]; + elements.push({ + field: this.s.fields[name_1], + name: name_1, + node: $(editRow.attach[i]), + }); + } + var namespace = this._formOptions(opts); + var ret = this._preopen('inline'); + if (!ret) { + return this; + } + for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { + var el = elements_1[_i]; + var node = el.node; + el.children = node.contents().detach(); + // Note the wdith setting shouldn't be required, but Edge increases the column's + // width if a % width is used (even 1%). This is the workaround + var style = navigator.userAgent.indexOf('Edge/') !== -1 ? + 'style="width:' + node.width() + 'px"' : + ''; + node.append($('
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ')); + node.find('div.' + classes.liner.replace(/ /g, '.')) + .append(el.field.node()) + .append(this.dom.formError); + // Need the last insert point to allow for number submitTrigger + lastAttachPoint = el.field.node(); + if (opts.buttons) { + // Use prepend for the CSS, so we can float the buttons right + node.find('div.' + classes.buttons.replace(/ /g, '.')).append(this.dom.buttons); + } + } + // If there is a submit trigger target, we need to modify the document to allow submission + var submitClose = this._inputTrigger('submit', opts, lastAttachPoint); + var cancelClose = this._inputTrigger('cancel', opts, lastAttachPoint); + this._closeReg(function (submitComplete, action) { + // Mark that this specific inline edit has closed + closed = true; + $(document).off('click' + namespace); + // If there was no submit, we need to put the DOM back as it was. If + // there was a submit, the write of the new value will set the DOM to + // how it should be. Note also, check if it was an edit action, if not + // a create will create new row so we tidy this one up + if (!submitComplete || action !== 'edit') { + elements.forEach(function (el) { + el.node.contents().detach(); + el.node.append(el.children); + }); + } + submitClose(); + cancelClose(); + // Clear error messages "offline" + _this._clearDynamicInfo(); + if (closeCb) { + closeCb(); + } + return 'inline'; // trigger `closed` + }); + // Submit and blur actions + setTimeout(function () { + // If already closed, possibly due to some other aspect of the event + // that triggered the inline call, don't add the event listener - it + // isn't needed (and is dangerous) + if (closed) { + return; + } + // andSelf is deprecated in jQ1.8, but we want 1.7 compat + var back = $.fn.addBack ? 'addBack' : 'andSelf'; + // Chrome uses the target as the element where the mouse up happens, + // but we want the target being where the mouse down is, to allow for + // text selection in an input - so listen on mousedown as well. + var target; + $(document) + .on('mousedown' + namespace, function (e) { + target = e.target; + }) + .on('keydown' + namespace, function (e) { + target = e.target; + }) + .on('click' + namespace, function (e) { + // Was the click inside or owned by one of the editing nodes? If + // not, then come out of editing mode. + var isIn = false; + for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { + var el = elements_2[_i]; + if (el.field._typeFn('owns', target) || + $.inArray(el.node[0], $(target).parents()[back]()) !== -1) { + isIn = true; + } + } + if (!isIn) { + _this.blur(); + } + }); + }, 0); + this._focus($.map(elements, function (el) { return el.field; }), opts.focus); + this._postopen('inline', true); +} +/** + * Add a triggering action for inline editing, with a return function that + * will tidy up the events. + * + * @param type Action + * @param opts Form options object + * @param insertPoint Insert point in the DOM + * @private + */ +function _inputTrigger(type, opts, insertPoint) { + var _this = this; + var trigger = opts[type + 'Trigger']; + var html = opts[type + 'Html']; + var event = 'click.dte-' + type; + var tr = $(insertPoint).closest('tr'); + if (trigger === undefined) { + return function () { }; + } + // Allow the input to be a column index, including a negative to count from right + if (typeof trigger === 'number') { + var kids = tr.children(); + trigger = trigger < 0 + ? kids[kids.length + trigger] + : kids[trigger]; + } + // Use childNodes to get text nodes as well + var children = $(trigger, tr).length + ? Array.prototype.slice.call($(trigger, tr)[0].childNodes) + : []; + $(children).detach(); + // Event handler to submit the form and do nothing else + var triggerEl = $(trigger, tr) + .on(event, function (e) { + e.stopImmediatePropagation(); + if (type === 'cancel') { + _this.close(); + } + else { + _this.submit(); + } + }) + .append(html); + return function () { + triggerEl + .off(event) + .empty() + .append(children); + }; +} +/** + * Update the field options from a JSON data source + * + * @param {object} json JSON object from the server + * @private + */ +function _optionsUpdate(json) { + var that = this; + if (json && json.options) { + $.each(this.s.fields, function (name, field) { + if (json.options[name] !== undefined) { + var fieldInst = that.field(name); + if (fieldInst && fieldInst.update) { + fieldInst.update(json.options[name]); + } + } + }); + } +} +/** + * Show a message in the form. This can be used for error messages or dynamic + * messages (information display) as the structure for each is basically the + * same. This method will take into account if the form is visible or not - if + * so then the message is shown with an effect for the end user, otherwise + * it is just set immediately. + * + * @param {element} el The field display node to use + * @param {string|function} msg The message to show + * @private + */ +function _message(el, msg, title, fn) { + // Allow for jQuery slim + var canAnimate = $.fn.animate ? true : false; + if (title === undefined) { + title = false; + } + if (!fn) { + fn = function () { }; + } + if (typeof msg === 'function') { + msg = msg(this, new DataTable$4.Api(this.s.table)); + } + el = $(el); + if (canAnimate) { + el.stop(); + } + if (!msg) { + if (this.s.displayed && canAnimate) { + // Clear the message with visual effect since the form is visible + el + .fadeOut(function () { + el.html(''); + fn(); + }); + } + else { + // Clear the message without visual effect + el + .html('') + .css('display', 'none'); + fn(); + } + if (title) { + el.removeAttr('title'); + } + } + else { + fn(); + if (this.s.displayed && canAnimate) { + // Show the message with visual effect + el + .html(msg) + .fadeIn(); + } + else { + // Show the message without visual effect + el + .html(msg) + .css('display', 'block'); + } + if (title) { + el.attr('title', msg); + } + } +} +/** + * Update the multi-value information display to not show redundant information + * + * @private + */ +function _multiInfo() { + var fields = this.s.fields; + var include = this.s.includeFields; + var show = true; + var state; + if (!include) { + return; + } + for (var i = 0, ien = include.length; i < ien; i++) { + var field = fields[include[i]]; + var multiEditable = field.multiEditable(); + if (field.isMultiValue() && multiEditable && show) { + // Multi-row editable. Only show first message + state = true; + show = false; + } + else if (field.isMultiValue() && !multiEditable) { + // Not multi-row editable. Always show message + state = true; + } + else { + state = false; + } + fields[include[i]].multiInfoShown(state); + } +} +/** + * Close the current form, which can result in the display controller + * hiding its display, or showing a form from a level up if nesting + */ +function _nestedClose(cb) { + var disCtrl = this.s.displayController; + var show = disCtrl._show; + if (!show || !show.length) { + // Nothing shown just now + if (cb) { + cb(); + } + } + else if (show.length > 1) { + // Got nested forms - remove current and go one layer up + show.pop(); + // Get the one to show + var last = show[show.length - 1]; + if (cb) { + cb(); + } + this.s.displayController.open(last.dte, last.append, last.callback); + } + else { + this.s.displayController.close(this, cb); + show.length = 0; + } +} +/** + * Display a form, adding it to the display stack for nesting + */ +function _nestedOpen(cb, nest) { + var disCtrl = this.s.displayController; + // This needs to be per display controller, but the controller + // itself doesn't know anything about the nesting, so we add a + // "hidden" property to it, used here, but not by the controller + // itself. + if (!disCtrl._show) { + disCtrl._show = []; + } + if (!nest) { + disCtrl._show.length = 0; + } + disCtrl._show.push({ + append: this.dom.wrapper, + callback: cb, + dte: this, + }); + this.s.displayController.open(this, this.dom.wrapper, cb); +} +/** + * Common display editing form method called by all editing methods after the + * form has been configured and displayed. This is to ensure all fire the same + * events. + * + * @param {string} type Editing type + * @param {boolean} immediate indicate if the open is immediate (in which case + * `opened` is also triggered). + * @return {boolean} `true` + * @private + */ +function _postopen(type, immediate) { + var _this = this; + var focusCapture = this.s.displayController.captureFocus; + if (focusCapture === undefined) { + focusCapture = true; + } + $(this.dom.form) + .off('submit.editor-internal') + .on('submit.editor-internal', function (e) { + e.preventDefault(); + }); + // Focus capture - when the Editor form is shown we capture the browser's + // focus action. Without doing this is would result in the user being able + // to control items under the Editor display - triggering actions that + // shouldn't be possible while the editing is shown. + if (focusCapture && (type === 'main' || type === 'bubble')) { + $('body').on('focus.editor-focus', function () { + if ($(document.activeElement).parents('.DTE').length === 0 && + $(document.activeElement).parents('.DTED').length === 0) { + if (_this.s.setFocus) { + _this.s.setFocus.focus(); + } + } + }); + } + this._multiInfo(); + this._event('open', [type, this.s.action]); + if (immediate) { + this._event('opened', [type, this.s.action]); + } + return true; +} +/** + * Common display editing form method called by all editing methods before the + * form has been configured and displayed. This is to ensure all fire the same + * events. + * + * @param {string} Editing type + * @return {boolean} `false` if the open is cancelled by the preOpen event, + * otherwise `true` + * @private + */ +function _preopen(type) { + // Allow preOpen event to cancel the opening of the display + if (this._event('preOpen', [type, this.s.action]) === false) { + // Tidy- this would normally be done on close, but we never get that far + this._clearDynamicInfo(); + this._event('cancelOpen', [type, this.s.action]); + // inline and bubble methods cannot be opened using `open()`, they + // have to be called again, so we need to clean up the event + // listener added by _formOptions + if ((this.s.mode === 'inline' || this.s.mode === 'bubble') && this.s.closeIcb) { + this.s.closeIcb(); + } + this.s.closeIcb = null; + return false; + } + this._clearDynamicInfo(true); + this.s.displayed = type; + return true; +} +/** + * Set the form into processing mode or take it out of processing mode. In + * processing mode a processing indicator is shown and user interaction with the + * form buttons is blocked + * + * @param {boolean} processing true if to go into processing mode and false if + * to come out of processing mode + * @private + */ +function _processing(processing) { + var procClass = this.classes.processing.active; + $(['div.DTE', this.dom.wrapper]).toggleClass(procClass, processing); + this.s.processing = processing; + this._event('processing', [processing]); +} +/** + * Check if any of the fields are processing for the submit to carry on. It + * can recurse. + * + * @private + */ +function _noProcessing(args) { + var processing = false; + $.each(this.s.fields, function (name, field) { + if (field.processing()) { + processing = true; + } + }); + if (processing) { + this.one('processing-field', function () { + // Are any other fields in a processing state? - Might need to wait again + if (this._noProcessing(args) === true) { + this._submit.apply(this, args); + } + }); + } + return !processing; +} +/** + * Submit a form to the server for processing. This is the private method that is used + * by the 'submit' API method, which should always be called in preference to calling + * this method directly. + * + * @param {function} [successCallback] Callback function that is executed once the + * form has been successfully submitted to the server and no errors occurred. + * @param {function} [errorCallback] Callback function that is executed if the + * server reports an error due to the submission (this includes a JSON formatting + * error should the error return invalid JSON). + * @param {function} [formatdata] Callback function that is passed in the data + * that will be submitted to the server, allowing pre-formatting of the data, + * removal of data or adding of extra fields. + * @param {boolean} [hide=true] When the form is successfully submitted, by default + * the form display will be hidden - this option allows that to be overridden. + * @private + */ +function _submit(successCallback, errorCallback, formatdata, hide) { + var _this = this; + var changed = false; + var allData = {}; + var changedData = {}; + var setBuilder = dataSet; + var fields = this.s.fields; + var editCount = this.s.editCount; + var editFields = this.s.editFields; + var editData = this.s.editData; + var opts = this.s.editOpts; + var changedSubmit = opts.submit; + var submitParamsLocal; + // First - are any of the fields currently "processing"? If so, then we + // want to let them complete before submitting + if (this._noProcessing(arguments) === false) { + Editor.error('Field is still processing', 16, false); + return; + } + // After initSubmit to allow `mode()` to be used as a setter + var action = this.s.action; + var submitParams = { + data: {} + }; + submitParams[this.s.actionName] = action; + // Gather the data that is to be submitted + if (action === 'create' || action === 'edit') { + $.each(editFields, function (idSrc, edit) { + var allRowData = {}; + var changedRowData = {}; + $.each(fields, function (name, field) { + if (edit.fields[name] && field.submittable()) { + var multiGet = field.multiGet(); + var builder = setBuilder(name); + // If it wasn't an edit field, we still need to get the original + // data, so we can submit it if `all` or `allIfChanged` + if (multiGet[idSrc] === undefined) { + var originalVal = field.valFromData(edit.data); + builder(allRowData, originalVal); + return; + } + var value = multiGet[idSrc]; + var manyBuilder = Array.isArray(value) && typeof name === 'string' && name.indexOf('[]') !== -1 ? + setBuilder(name.replace(/\[.*$/, '') + '-many-count') : + null; + builder(allRowData, value); + // We need to tell the server-side if an array submission + // actually has no elements so it knows if the array was + // being submitted or not (since otherwise it doesn't know + // if the array was empty, or just not being submitted) + if (manyBuilder) { + manyBuilder(allRowData, value.length); + } + // Build a changed object for if that is the selected data + // type + if (action === 'edit' && (!editData[name] || !field.compare(value, editData[name][idSrc]))) { + builder(changedRowData, value); + changed = true; + if (manyBuilder) { + manyBuilder(changedRowData, value.length); + } + } + } + }); + if (!$.isEmptyObject(allRowData)) { + allData[idSrc] = allRowData; + } + if (!$.isEmptyObject(changedRowData)) { + changedData[idSrc] = changedRowData; + } + }); + // Decide what data to submit to the server for edit (create is all, always) + if (action === 'create' || changedSubmit === 'all' || (changedSubmit === 'allIfChanged' && changed)) { + submitParams.data = allData; + } + else if (changedSubmit === 'changed' && changed) { + submitParams.data = changedData; + } + else { + // Nothing to submit + this.s.action = null; + if (opts.onComplete === 'close' && (hide === undefined || hide)) { + this._close(false); + } + else if (typeof opts.onComplete === 'function') { + opts.onComplete(this); + } + if (successCallback) { + successCallback.call(this); + } + this._processing(false); + this._event('submitComplete'); + return; + } + } + else if (action === 'remove') { + $.each(editFields, function (idSrc, edit) { + submitParams.data[idSrc] = edit.data; + }); + } + // Local copy of the submit parameters, needed for the data lib prep since + // the preSubmit can modify the format and we need to know what the format is + submitParamsLocal = $.extend(true, {}, submitParams); + // Allow the data to be submitted to the server to be preprocessed by callback + // and event functions + if (formatdata) { + formatdata(submitParams); + } + this._event('preSubmit', [submitParams, action], function (result) { + if (result === false) { + _this._processing(false); + } + else { + // Submit to the server (or whatever method is defined in the settings) + var submitWire = _this.s.ajax ? + _this._ajax : + _this._submitTable; + submitWire.call(_this, submitParams, function (json, notGood, xhr) { + _this._submitSuccess(json, notGood, submitParams, submitParamsLocal, _this.s.action, editCount, hide, successCallback, errorCallback, xhr); + }, function (xhr, err, thrown) { + _this._submitError(xhr, err, thrown, errorCallback, submitParams, _this.s.action); + }, submitParams); + } + }); +} +/** + * Save submitted data without an Ajax request. This will write to a local + * table only - not saving it permanently, but rather using the DataTable itself + * as a data store. + * + * @param {object} data Data to submit + * @param {function} success Success callback + * @param {function} error Error callback + * @param {object} submitParams Submitted data + * @private + */ +function _submitTable(data, success, error, submitParams) { + var action = data.action; + var out = { data: [] }; + var idGet = dataGet(this.s.idSrc); + var idSet = dataSet(this.s.idSrc); + // Nothing required for remove - create and edit get a copy of the data + if (action !== 'remove') { + var originalData_1 = this.s.mode === 'main' ? + this._dataSource('fields', this.modifier()) : + this._dataSource('individual', this.modifier()); + $.each(data.data, function (key, vals) { + var toSave; + var extender = extend; + // Get the original row's data, so we can modify it with new values. + // This allows Editor to not need to submit all fields + if (action === 'edit') { + var rowData = originalData_1[key].data; + toSave = extender({}, rowData, true); + toSave = extender(toSave, vals, true); + } + else { + toSave = extender({}, vals, true); + } + // If create and there isn't an id for the new row, create + // one. An id could be creased by `preSubmit` + var overrideId = idGet(toSave); + if (action === 'create' && overrideId === undefined) { + idSet(toSave, +new Date() + key.toString()); + } + else { + idSet(toSave, overrideId); + } + out.data.push(toSave); + }); + } + success(out); +} +/** + * Submit success callback function + * + * @param {object} json Payload + * @param {bool} notGood True if the returned status code was + * >=400 (i.e. processing failed). This is called `notGood` rather than + * `success` since the request was successfully processed, just not written to + * the db. It is also inverted from "good" to make it optional when overriding + * the `ajax` function. + * @param {object} submitParams Submitted data + * @param {object} submitParamsLocal Unmodified copy of submitted data + * (before it could be modified by the user) + * @param {string} action CRUD action being taken + * @param {int} editCount Protection against async errors + * @param {bool} hide Hide the form flag + * @param {function} successCallback Success callback + * @param {function} errorCallback Error callback + * @private + */ +function _submitSuccess(json, notGood, submitParams, submitParamsLocal, action, editCount, hide, successCallback, errorCallback, xhr) { + var _this = this; + var that = this; + var setData; + var fields = this.s.fields; + var opts = this.s.editOpts; + var modifier = this.s.modifier; + this._event('postSubmit', [json, submitParams, action, xhr]); + if (!json.error) { + json.error = ''; + } + if (!json.fieldErrors) { + json.fieldErrors = []; + } + if (notGood || json.error || json.fieldErrors.length) { + // Global form error + var globalError_1 = []; + if (json.error) { + globalError_1.push(json.error); + } + // Field specific errors + $.each(json.fieldErrors, function (i, err) { + var field = fields[err.name]; + if (!field) { + throw new Error('Unknown field: ' + err.name); + } + else if (field.displayed()) { + field.error(err.status || 'Error'); + if (i === 0) { + if (opts.onFieldError === 'focus') { + // Scroll the display to the first error and focus + _this._animate($(_this.dom.bodyContent), { scrollTop: $(field.node()).position().top }, 500); + field.focus(); + } + else if (typeof opts.onFieldError === 'function') { + opts.onFieldError(_this, err); + } + } + } + else { + // If the field isn't visible, we need to make it display as a global error + // This _shouldn't_ happen - it means there is invalid data if it does + globalError_1.push(field.name() + ': ' + (err.status || 'Error')); + } + }); + this.error(globalError_1.join('
                                                                                                                                                                            ')); + this._event('submitUnsuccessful', [json]); + if (errorCallback) { + errorCallback.call(that, json); + } + } + else { + // Create a data store that the data source can use, which is + // unique to this action + var store = {}; + if (json.data && (action === 'create' || action === 'edit')) { + this._dataSource('prep', action, modifier, submitParamsLocal, json, store); + for (var _i = 0, _a = json.data; _i < _a.length; _i++) { + var data = _a[_i]; + setData = data; + var id = this._dataSource('id', data); + this._event('setData', [json, data, action]); // legacy + if (action === 'create') { + // New row was created to add it to the DT + this._event('preCreate', [json, data, id]); + this._dataSource('create', fields, data, store); + this._event(['create', 'postCreate'], [json, data, id]); + } + else if (action === 'edit') { + // Row was updated, so tell the DT + this._event('preEdit', [json, data, id]); + this._dataSource('edit', modifier, fields, data, store); + this._event(['edit', 'postEdit'], [json, data, id]); + } + } + this._dataSource('commit', action, modifier, json.data, store); + } + else if (action === 'remove') { + this._dataSource('prep', action, modifier, submitParamsLocal, json, store); + // Remove the rows given and then redraw the table + this._event('preRemove', [json, this.ids()]); + this._dataSource('remove', modifier, fields, store); + this._event(['remove', 'postRemove'], [json, this.ids()]); + this._dataSource('commit', action, modifier, json.data, store); + } + // Submission complete + if (editCount === this.s.editCount) { + var sAction = this.s.action; + this.s.action = null; // Must do before close, in case close starts a new edit + if (opts.onComplete === 'close' && (hide === undefined || hide)) { + // If no data returned, then treat as not complete + this._close(json.data ? true : false, sAction); + } + else if (typeof opts.onComplete === 'function') { + opts.onComplete(this); + } + } + // All done - fire off the callbacks and events + if (successCallback) { + successCallback.call(that, json); + } + this._event('submitSuccess', [json, setData, action]); + } + this._processing(false); + this._event('submitComplete', [json, setData, action]); +} +/** + * Submit error callback function + * + * @private + */ +function _submitError(xhr, err, thrown, errorCallback, submitParams, action) { + this._event('postSubmit', [null, submitParams, action, xhr]); + this.error(this.i18n.error.system); + this._processing(false); + if (errorCallback) { + errorCallback.call(this, xhr, err, thrown); + } + this._event(['submitError', 'submitComplete'], [xhr, err, thrown, submitParams]); +} +/** + * Check to see if the form needs to be tidied before a new action can be performed. + * This includes if the from is currently processing an old action and if it + * is inline editing. + * + * @param {function} fn Callback function + * @returns {boolean} `true` if was in inline mode, `false` otherwise + * @private + */ +function _tidy(fn) { + var _this = this; + var dt = this.s.table ? + new $.fn.dataTable.Api(this.s.table) : + null; + var ssp = false; + if (dt) { + ssp = dt.settings()[0].oFeatures.bServerSide; + } + if (this.s.processing) { + // If currently processing, wait until the action is complete + this.one('submitComplete', function () { + // If server-side processing is being used in DataTables, first + // check that we are still processing (might not be if nothing was + // submitted) and then wait for the draw to finished + if (ssp) { + dt.one('draw', fn); + } + else { + setTimeout(function () { + fn(); + }, 10); + } + }); + return true; + } + else if (this.display() === 'inline' || this.display() === 'bubble') { + // If there is an inline edit box, it needs to be tidied + this + .one('close', function () { + // On close if processing then we need to wait for the submit to + // complete before running the callback as onBlur was set to + // submit + if (!_this.s.processing) { + // IE needs a small timeout, otherwise it may not focus on a + // field if one already has focus + setTimeout(function () { + // Check this Editor wasn't destroyed + if (_this.s) { + fn(); + } + }, 10); + } + else { + // Need to wait for the submit to finish + _this.one('submitComplete', function (e, json) { + // If SSP then need to wait for the draw + if (ssp && json) { + dt.one('draw', fn); + } + else { + setTimeout(function () { + if (_this.s) { + fn(); + } + }, 10); + } + }); + } + }) + .blur(); + return true; + } + return false; +} +/** + * Same as $.inArray but with weak type checking + * + * @param {any} name Value to look for in the array + * @param {array} arr Array to scan through + * @returns {number} -1 if not found, index otherwise + */ +function _weakInArray(name, arr) { + for (var i = 0, ien = arr.length; i < ien; i++) { + if (name == arr[i]) { + return i; + } + } + return -1; +} + +var fieldType = { + create: function () { }, + disable: function () { }, + enable: function () { }, + get: function () { }, + set: function () { } +}; + +var DataTable$3 = $.fn.dataTable; +// Upload private helper method +function _buttonText(conf, textIn) { + if (textIn === null || textIn === undefined) { + textIn = conf.uploadText || 'Choose file...'; + } + conf._input.find('div.upload button').html(textIn); +} +function _commonUpload(editor, conf, dropCallback, multiple) { + if (multiple === void 0) { multiple = false; } + var btnClass = editor.classes.form.buttonInternal; + var container = $('
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '' + + '' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            ' + + '
                                                                                                                                                                            '); + conf._input = container; + conf._enabled = true; + if (conf.id) { + container.find('input[type=file]').attr('id', Editor.safeId(conf.id)); + } + if (conf.attr) { + container.find('input[type=file]').attr(conf.attr); + } + _buttonText(conf); + if (window.FileReader && conf.dragDrop !== false) { + container.find('div.drop span').text(conf.dragDropText || 'Drag and drop a file here to upload'); + var dragDrop_1 = container.find('div.drop'); + dragDrop_1 + .on('drop', function (e) { + if (conf._enabled) { + Editor.upload(editor, conf, e.originalEvent.dataTransfer.files, _buttonText, dropCallback); + dragDrop_1.removeClass('over'); + } + return false; + }) + .on('dragleave dragexit', function (e) { + if (conf._enabled) { + dragDrop_1.removeClass('over'); + } + return false; + }) + .on('dragover', function (e) { + if (conf._enabled) { + dragDrop_1.addClass('over'); + } + return false; + }); + // When an Editor is open with a file upload input there is a + // reasonable chance that the user will miss the drop point when + // dragging and dropping. Rather than loading the file in the browser, + // we want nothing to happen, otherwise the form will be lost. + editor + .on('open', function () { + $('body').on('dragover.DTE_Upload drop.DTE_Upload', function (e) { + return false; + }); + }) + .on('close', function () { + $('body').off('dragover.DTE_Upload drop.DTE_Upload'); + }); + } + else { + container.addClass('noDrop'); + container.append(container.find('div.rendered')); + } + container.find('div.clearValue button').on('click', function (e) { + e.preventDefault(); + if (conf._enabled) { + upload.set.call(editor, conf, ''); + } + }); + container.find('input[type=file]').on('input', function () { + Editor.upload(editor, conf, this.files, _buttonText, function (ids, error) { + if (!error) { + dropCallback.call(editor, ids); + } + container.find('input[type=file]')[0].value = ''; + }); + }); + return container; +} +// Typically a change event caused by the end user will be added to a queue that +// the browser will handle when no other script is running. However, using +// `$().trigger()` will cause it to happen immediately, so in order to simulate +// the standard browser behaviour we use setTimeout. This also means that +// `dependent()` and other change event listeners will trigger when the field +// values have all been set, rather than as they are being set - 31594 +function _triggerChange(input) { + setTimeout(function () { + input.trigger('change', { editor: true, editorSet: true }); // editorSet legacy + }, 0); +} +// A number of the fields in this file use the same get, set, enable and disable +// methods (specifically the text based controls), so in order to reduce the code +// size, we just define them once here in our own local base model for the field +// types. +var baseFieldType = $.extend(true, {}, fieldType, { + canReturnSubmit: function (conf, node) { + return true; + }, + disable: function (conf) { + conf._input.prop('disabled', true); + }, + enable: function (conf) { + conf._input.prop('disabled', false); + }, + get: function (conf) { + return conf._input.val(); + }, + set: function (conf, val) { + conf._input.val(val); + _triggerChange(conf._input); + } +}); +var hidden = { + create: function (conf) { + conf._input = $(''); + conf._val = conf.value; + return null; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + var oldVal = conf._val; + conf._val = val; + conf._input.val(val); + if (oldVal !== val) { + _triggerChange(conf._input); + } + } +}; +var readonly = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + readonly: 'readonly', + type: 'text' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var text = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + type: 'text' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var password = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id), + type: 'password' + }, conf.attr || {})); + return conf._input[0]; + } +}); +var textarea = $.extend(true, {}, baseFieldType, { + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + conf._input = $('').attr($.extend({ + id: Editor.safeId(conf.id) + }, conf.attr || {})); + return conf._input[0]; + } +}); +var select = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var elOpts = conf._input[0].options; + var countOffset = 0; + if (!append) { + elOpts.length = 0; + if (conf.placeholder !== undefined) { + var placeholderValue = conf.placeholderValue !== undefined ? + conf.placeholderValue : + ''; + countOffset += 1; + elOpts[0] = new Option(conf.placeholder, placeholderValue); + var disabled = conf.placeholderDisabled !== undefined ? + conf.placeholderDisabled : + true; + elOpts[0].hidden = disabled; // can't be hidden if not disabled! + elOpts[0].disabled = disabled; + elOpts[0]._editor_val = placeholderValue; + } + } + else { + countOffset = elOpts.length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + var option = new Option(label, val); + option._editor_val = val; + if (attr) { + $(option).attr(attr); + } + elOpts[i + countOffset] = option; + }); + } + }, + create: function (conf) { + conf._input = $('') + .attr($.extend({ + id: Editor.safeId(conf.id), + multiple: conf.multiple === true + }, conf.attr || {})) + .on('change.dte', function (e, d) { + // On change, get the user selected value and store it as the + // last set, so `update` can reflect it. This way `_lastSet` + // always gives the intended value, be it set via the API or by + // the end user. + if (!d || !d.editor) { + conf._lastSet = select.get(conf); + } + }); + select._addOptions(conf, conf.options || conf.ipOpts); + return conf._input[0]; + }, + destroy: function (conf) { + conf._input.off('change.dte'); + }, + get: function (conf) { + var val = conf._input.find('option:selected').map(function () { + return this._editor_val; + }).toArray(); + if (conf.multiple) { + return conf.separator ? + val.join(conf.separator) : + val; + } + return val.length ? val[0] : null; + }, + set: function (conf, val, localUpdate) { + if (!localUpdate) { + conf._lastSet = val; + } + // Can't just use `$().val()` because it won't work with strong types + if (conf.multiple && conf.separator && !Array.isArray(val)) { + val = typeof val === 'string' ? + val.split(conf.separator) : + []; + } + else if (!Array.isArray(val)) { + val = [val]; + } + var i; + var len = val.length; + var found; + var allFound = false; + var options = conf._input.find('option'); + conf._input.find('option').each(function () { + found = false; + for (i = 0; i < len; i++) { + // Weak typing + if (this._editor_val == val[i]) { + found = true; + allFound = true; + break; + } + } + this.selected = found; + }); + // If there is a placeholder, we might need to select it if nothing else + // was selected. It doesn't make sense to select when multi is enabled + if (conf.placeholder && !allFound && !conf.multiple && options.length) { + options[0].selected = true; + } + // Update will call change itself, otherwise multiple might be called + if (!localUpdate) { + _triggerChange(conf._input); + } + return allFound; + }, + update: function (conf, options, append) { + select._addOptions(conf, options, append); + // Attempt to set the last selected value (set by the API or the end + // user, they get equal priority) + var lastSet = conf._lastSet; + if (lastSet !== undefined) { + select.set(conf, lastSet, true); + } + _triggerChange(conf._input); + } +}); +var checkbox = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var jqInput = conf._input; + var offset = 0; + if (!append) { + jqInput.empty(); + } + else { + offset = $('input', jqInput).length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + jqInput.append('
                                                                                                                                                                            ' + + '' + + '' + + '
                                                                                                                                                                            '); + $('input:last', jqInput).attr('value', val)[0]._editor_val = val; + if (attr) { + $('input:last', jqInput).attr(attr); + } + }); + } + }, + create: function (conf) { + conf._input = $('
                                                                                                                                                                            '); + checkbox._addOptions(conf, conf.options || conf.ipOpts); + return conf._input[0]; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + }, + get: function (conf) { + var out = []; + var selected = conf._input.find('input:checked'); + if (selected.length) { + selected.each(function () { + out.push(this._editor_val); + }); + } + else if (conf.unselectedValue !== undefined) { + out.push(conf.unselectedValue); + } + return conf.separator === undefined || conf.separator === null ? + out : + out.join(conf.separator); + }, + set: function (conf, val) { + var jqInputs = conf._input.find('input'); + if (!Array.isArray(val) && typeof val === 'string') { + val = val.split(conf.separator || '|'); + } + else if (!Array.isArray(val)) { + val = [val]; + } + var i; + var len = val.length; + var found; + jqInputs.each(function () { + found = false; + for (i = 0; i < len; i++) { + if (this._editor_val == val[i]) { + found = true; + break; + } + } + this.checked = found; + }); + _triggerChange(jqInputs); + }, + update: function (conf, options, append) { + // Get the current value + var currVal = checkbox.get(conf); + checkbox._addOptions(conf, options, append); + checkbox.set(conf, currVal); + } +}); +var radio = $.extend(true, {}, baseFieldType, { + // Locally "private" function that can be reused for the create and update methods + _addOptions: function (conf, opts, append) { + if (append === void 0) { append = false; } + var jqInput = conf._input; + var offset = 0; + if (!append) { + jqInput.empty(); + } + else { + offset = $('input', jqInput).length; + } + if (opts) { + Editor.pairs(opts, conf.optionsPair, function (val, label, i, attr) { + jqInput.append('
                                                                                                                                                                            ' + + '' + + '' + + '
                                                                                                                                                                            '); + $('input:last', jqInput).attr('value', val)[0]._editor_val = val; + if (attr) { + $('input:last', jqInput).attr(attr); + } + }); + } + }, + create: function (conf) { + conf._input = $('
                                                                                                                                                                            '); + radio._addOptions(conf, conf.options || conf.ipOpts); + // this is ugly, but IE6/7 has a problem with radio elements that are created + // and checked before being added to the DOM! Basically it doesn't check them. As + // such we use the _preChecked property to set cache the checked button and then + // check it again when the display is shown. This has no effect on other browsers + // other than to cook a few clock cycles. + this.on('open', function () { + conf._input.find('input').each(function () { + if (this._preChecked) { + this.checked = true; + } + }); + }); + return conf._input[0]; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + }, + get: function (conf) { + var el = conf._input.find('input:checked'); + if (el.length) { + return el[0]._editor_val; + } + return conf.unselectedValue !== undefined ? + conf.unselectedValue : + undefined; + }, + set: function (conf, val) { + conf._input.find('input').each(function () { + this._preChecked = false; + if (this._editor_val == val) { + this.checked = true; + this._preChecked = true; + } + else { + // In a detached DOM tree, there is no relationship between the + // input elements, so we need to uncheck any element that does + // not match the value + this.checked = false; + this._preChecked = false; + } + }); + _triggerChange(conf._input.find('input:checked')); + }, + update: function (conf, options, append) { + var currVal = radio.get(conf); + radio._addOptions(conf, options, append); + // Select the current value if it exists in the new data set, otherwise + // select the first radio input so there is always a value selected + var inputs = conf._input.find('input'); + radio.set(conf, inputs.filter('[value="' + currVal + '"]').length ? + currVal : + inputs.eq(0).attr('value')); + } +}); +var datetime = $.extend(true, {}, baseFieldType, { + create: function (conf) { + conf._input = $('').attr($.extend(true, { + id: Editor.safeId(conf.id), + type: 'text' + }, conf.attr)); + if (!DataTable$3.DateTime) { + Editor.error('DateTime library is required', 15); + } + // Legacy support for 2.0- parameters + if (conf.momentLocale && !conf.opts.locale) { + conf.opts.locale = conf.momentLocale; + } + if (conf.momentStrict && !conf.opts.strict) { + conf.opts.strict = conf.momentStrict; + } + conf._picker = new DataTable$3.DateTime(conf._input, $.extend({ + format: conf.displayFormat || conf.format, + i18n: this.i18n.datetime, + }, conf.opts)); + conf._closeFn = function () { + conf._picker.hide(); + }; + if (conf.keyInput === false) { + conf._input.on('keydown', function (e) { + e.preventDefault(); + }); + } + this.on('close', conf._closeFn); + return conf._input[0]; + }, + destroy: function (conf) { + this.off('close', conf._closeFn); + conf._input.off('keydown'); + conf._picker.destroy(); + }, + errorMessage: function (conf, msg) { + conf._picker.errorMsg(msg); + }, + get: function (conf) { + return conf.wireFormat + ? conf._picker.valFormat(conf.wireFormat) + : conf._input.val(); + }, + maxDate: function (conf, max) { + conf._picker.max(max); + }, + minDate: function (conf, min) { + conf._picker.min(min); + }, + // default disable and enable options are okay + owns: function (conf, node) { + return conf._picker.owns(node); + }, + set: function (conf, val) { + // If there is a wire format, convert it to the display format + // Note that special values (e.g. `--now` and empty) do not get formatted + if (typeof val === 'string' && val && val.indexOf('--') !== 0 && conf.wireFormat) { + conf._picker.valFormat(conf.wireFormat, val); + } + else { + conf._picker.val(val); + } + _triggerChange(conf._input); + } +}); +var upload = $.extend(true, {}, baseFieldType, { + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + var editor = this; + var container = _commonUpload(editor, conf, function (val) { + upload.set.call(editor, conf, val[0]); + editor._event('postUpload', [conf.name, val[0]]); + }); + return container; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + conf._enabled = false; + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + conf._enabled = true; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + conf._val = val; + conf._input.val(''); + var container = conf._input; + if (conf.display) { + var rendered = container.find('div.rendered'); + if (conf._val) { + rendered.html(conf.display(conf._val)); + } + else { + rendered + .empty() + .append('' + (conf.noFileText || 'No file') + ''); + } + } + var button = container.find('div.clearValue button'); + if (val && conf.clearText) { + button.html(conf.clearText); + container.removeClass('noClear'); + } + else { + container.addClass('noClear'); + } + conf._input.find('input').triggerHandler('upload.editor', [conf._val]); + } +}); +var uploadMany = $.extend(true, {}, baseFieldType, { + _showHide: function (conf) { + if (!conf.limit) { + return; + } + conf._container.find('div.limitHide').css('display', conf._val.length >= conf.limit ? + 'none' : + 'block'); + // Used by the Editor.upload static function to truncate if too many + // files are selected for upload + conf._limitLeft = conf.limit - conf._val.length; + }, + canReturnSubmit: function (conf, node) { + return false; + }, + create: function (conf) { + var editor = this; + var container = _commonUpload(editor, conf, function (val) { + conf._val = conf._val.concat(val); + uploadMany.set.call(editor, conf, conf._val); + editor._event('postUpload', [conf.name, conf._val]); + }, true); + container + .addClass('multi') + .on('click', 'button.remove', function (e) { + e.stopPropagation(); + if (conf._enabled) { + var idx = $(this).data('idx'); + conf._val.splice(idx, 1); + uploadMany.set.call(editor, conf, conf._val); + } + }); + conf._container = container; + return container; + }, + disable: function (conf) { + conf._input.find('input').prop('disabled', true); + conf._enabled = false; + }, + enable: function (conf) { + conf._input.find('input').prop('disabled', false); + conf._enabled = true; + }, + get: function (conf) { + return conf._val; + }, + set: function (conf, val) { + // Default value for fields is an empty string, whereas we want [] + if (!val) { + val = []; + } + if (!Array.isArray(val)) { + throw new Error('Upload collections must have an array as a value'); + } + conf._val = val; + conf._input.val(''); + var that = this; + var container = conf._input; + if (conf.display) { + var rendered = container.find('div.rendered').empty(); + if (val.length) { + var list_1 = $('
                                                                                                                                                                              ').appendTo(rendered); + $.each(val, function (i, file) { + var display = conf.display(file, i); + if (display !== null) { + list_1.append('
                                                                                                                                                                            • ' + + display + + ' ' + + '
                                                                                                                                                                            • '); + } + }); + } + else { + rendered.append('' + (conf.noFileText || 'No files') + ''); + } + } + uploadMany._showHide(conf); + conf._input.find('input').triggerHandler('upload.editor', [conf._val]); + } +}); +var datatable = $.extend(true, {}, baseFieldType, { + _addOptions: function (conf, options, append) { + if (append === void 0) { append = false; } + var dt = conf.dt; + if (!append) { + dt.clear(); + } + dt.rows.add(options).draw(); + }, + _jumpToFirst: function (conf, editor) { + var dt = conf.dt; + // Find which page in the table the first selected row is + var idx = dt.row({ order: 'applied', selected: true }).index(); + var page = 0; + if (typeof idx === 'number') { + var pageLen = dt.page.info().length; + var pos = dt.rows({ order: 'applied' }).indexes().indexOf(idx); + page = pageLen > 0 + ? Math.floor(pos / pageLen) + : 0; + } + dt.page(page).draw(false); + // If scrolling is enabled, scroll down to first selected + var container = $('div.dataTables_scrollBody', dt.table().container()); + var scrollTo = function () { + var node = dt.row({ order: 'applied', selected: true }).node(); + if (node) { + var height = container.height(); + var top_1 = $(node).position().top; + if (top_1 > height - 10) { + container.scrollTop(top_1); + } + } + }; + if (container.length) { + // Check that the form has actually been displayed. If not need + // to wait for Editor's open event + if (container.parents('body').length) { + scrollTo(); + } + else { + editor.one('open', function () { + scrollTo(); + }); + } + } + }, + create: function (conf) { + var _this = this; + conf.optionsPair = $.extend({ + label: 'label', + value: 'value' + }, conf.optionsPair); + var table = $(''); + var container = $('
                                                                                                                                                                              ').append(table); + var side = $('
                                                                                                                                                                              '); + if (conf.footer) { + $('
                                                                                                                                                                              ') + .append(Array.isArray(conf.footer) + ? $('').append($.map(conf.footer, function (str) { return $('
                                                                                                                                                                              ').html(str); })) + : conf.footer) + .appendTo(table); + } + var dt = table + .addClass(datatable.tableClass) + .width('100%') + .on('init.dt', function (e, settings) { + if (settings.nTable !== table[0]) { + return; + } + var api = new DataTable$3.Api(settings); + var containerNode = $(api.table(undefined).container()); + // Select init + DataTable$3.select.init(api); + // Append side button controls + side + .append(containerNode.find('div.dataTables_filter')) + .append(containerNode.find('div.dt-buttons')) + .append(containerNode.find('div.dataTables_info')); + }) + .DataTable($.extend({ + buttons: [], + columns: [ + { + data: conf.optionsPair.label, + title: 'Label' + } + ], + deferRender: true, + dom: 'fiBtp', + language: { + paginate: { + next: '>', + previous: '<', + }, + search: '', + searchPlaceholder: 'Search' + }, + lengthChange: false, + select: { + style: conf.multiple ? 'os' : 'single' + }, + }, conf.config)); + this.on('open', function () { + if (dt.search()) { + dt.search('').draw(); + } + dt.columns.adjust(); + }); + // Change event for when the user does a select - `set` will do its own + // triggering of the change for the api + dt.on('user-select', function () { + _triggerChange($(conf.dt.table().container())); + }); + if (conf.editor) { + conf.editor.table(dt); + conf.editor.on('submitComplete', function (e, json, data, action) { + if (action === 'create') { + var _loop_1 = function (dp) { + dt + .rows(function (idx, d) { return d === dp; }) + .select(); + }; + // Automatically select the new data + for (var _i = 0, _a = json.data; _i < _a.length; _i++) { + var dp = _a[_i]; + _loop_1(dp); + } + } + else if (action === 'edit' || action === 'remove') { + _this._dataSource('refresh'); + } + datatable._jumpToFirst(conf, _this); + }); + } + conf.dt = dt; + datatable._addOptions(conf, conf.options || []); + return { + input: container, + side: side, + }; + }, + disable: function (conf) { + conf.dt.select.style('api'); + conf.dt.buttons().container().css('display', 'none'); + }, + dt: function (conf) { + return conf.dt; + }, + enable: function (conf) { + conf.dt.select.style(conf.multiple ? 'os' : 'single'); + conf.dt.buttons().container().css('display', 'block'); + }, + get: function (conf) { + var rows = conf.dt + .rows({ selected: true }) + .data() + .pluck(conf.optionsPair.value) + .toArray(); + return conf.separator || !conf.multiple + ? rows.join(conf.separator || ',') + : rows; + }, + set: function (conf, val, localUpdate) { + // Convert to an array of values - works for both single and multiple + if (conf.multiple && conf.separator && !Array.isArray(val)) { + val = typeof val === 'string' ? + val.split(conf.separator) : + []; + } + else if (!Array.isArray(val)) { + val = [val]; + } + // if ( ! localUpdate ) { + // conf._lastSet = val; + // } + var valueFn = dataGet(conf.optionsPair.value); + conf.dt.rows({ selected: true }).deselect(); + conf.dt.rows(function (idx, data, node) { return val.indexOf(valueFn(data)) !== -1; }).select(); + // Jump to the first page with a selected row (if there are any) + datatable._jumpToFirst(conf, this); + // Update will call change itself, otherwise multiple might be called + if (!localUpdate) { + _triggerChange($(conf.dt.table().container())); + } + }, + tableClass: '', + update: function (conf, options, append) { + datatable._addOptions(conf, options, append); + // Attempt to set the last selected value (set by the API or the end + // user, they get equal priority) + var lastSet = conf._lastSet; + if (lastSet !== undefined) { + datatable.set(conf, lastSet, true); + } + _triggerChange($(conf.dt.table().container())); + } +}); + +var defaults = { + className: '', + compare: null, + data: '', + def: '', + entityDecode: true, + fieldInfo: '', + getFormatter: null, + id: '', + label: '', + labelInfo: '', + message: '', + multiEditable: true, + name: null, + nullDefault: false, + setFormatter: null, + submit: true, + type: 'text' +}; + +var DataTable$2 = $.fn.dataTable; +var Field = /** @class */ (function () { + function Field(options, classes, host) { + var that = this; + var multiI18n = host.internalI18n().multi; + var opts = $.extend(true, {}, Field.defaults, options); + if (!Editor.fieldTypes[opts.type]) { + throw new Error('Error adding field - unknown field type ' + opts.type); + } + this.s = { + classes: classes, + host: host, + multiIds: [], + multiValue: false, + multiValues: {}, + name: opts.name, + opts: opts, + processing: false, + type: Editor.fieldTypes[opts.type], + }; + // No id, so assign one to have the label reference work + if (!opts.id) { + opts.id = 'DTE_Field_' + opts.name; + } + // If no `data` option is given, then we use the name from the field as the + // data prop to read data for the field from DataTables + if (opts.data === '') { + opts.data = opts.name; + } + // Get and set functions in the data object for the record + this.valFromData = function (d) { + // wrapper to automatically pass `editor` as the type + return dataGet(opts.data)(d, 'editor'); + }; + this.valToData = dataSet(opts.data); // set val to data + // Field HTML structure + var template = $('
                                                                                                                                                                              ' + + '' + + '
                                                                                                                                                                              ' + + // Field specific HTML is added here if there is any + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + multiI18n.title + + '' + + multiI18n.info + + '' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + multiI18n.restore + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + opts.message + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + opts.fieldInfo + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              '); + var input = this._typeFn('create', opts); + var side = null; + if (input && input.side) { + side = input.side; + input = input.input; + } + if (input !== null) { + el('input-control', template).prepend(input); + } + else { + template.css('display', 'none'); + } + this.dom = { + container: template, + fieldError: el('msg-error', template), + fieldInfo: el('msg-info', template), + fieldMessage: el('msg-message', template), + inputControl: el('input-control', template), + label: el('label', template).append(side), + labelInfo: el('msg-label', template), + multi: el('multi-value', template), + multiInfo: el('multi-info', template), + multiReturn: el('msg-multi', template), + processing: el('field-processing', template) + }; + // On click - set a common value for the field + this.dom.multi.on('click', function () { + if (that.s.opts.multiEditable && !template.hasClass(classes.disabled) && opts.type !== 'readonly') { + that.val(''); + that.focus(); + } + }); + this.dom.multiReturn.on('click', function () { + that.multiRestore(); + }); + // Field type extension methods - add a method to the field for the public + // methods that each field type defines beyond the default ones that already + // exist as part of this instance + $.each(this.s.type, function (name, fn) { + if (typeof fn === 'function' && that[name] === undefined) { + that[name] = function () { + var args = Array.prototype.slice.call(arguments); + args.unshift(name); + var ret = that._typeFn.apply(that, args); + // Return the given value if there is one, or the field instance + // for chaining if there is no value + return ret === undefined ? + that : + ret; + }; + } + }); + } + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public + */ + Field.prototype.def = function (set) { + var opts = this.s.opts; + if (set === undefined) { + // Backwards compat + var def = opts['default'] !== undefined ? + opts['default'] : + opts.def; + return typeof def === 'function' ? + def() : + def; + } + opts.def = set; + return this; + }; + Field.prototype.disable = function () { + this.dom.container.addClass(this.s.classes.disabled); + this._typeFn('disable'); + return this; + }; + Field.prototype.displayed = function () { + var container = this.dom.container; + return container.parents('body').length && container.css('display') !== 'none' ? + true : + false; + }; + Field.prototype.enable = function (toggle) { + if (toggle === void 0) { toggle = true; } + if (toggle === false) { + return this.disable(); + } + this.dom.container.removeClass(this.s.classes.disabled); + this._typeFn('enable'); + return this; + }; + Field.prototype.enabled = function () { + return this.dom.container.hasClass(this.s.classes.disabled) === false; + }; + Field.prototype.error = function (msg, fn) { + var classes = this.s.classes; + // Add or remove the error class + if (msg) { + this.dom.container.addClass(classes.error); + } + else { + this.dom.container.removeClass(classes.error); + } + this._typeFn('errorMessage', msg); + return this._msg(this.dom.fieldError, msg, fn); + }; + Field.prototype.fieldInfo = function (msg) { + return this._msg(this.dom.fieldInfo, msg); + }; + Field.prototype.isMultiValue = function () { + return this.s.multiValue && this.s.multiIds.length !== 1; + }; + Field.prototype.inError = function () { + return this.dom.container.hasClass(this.s.classes.error); + }; + Field.prototype.input = function () { + return this.s.type.input ? + this._typeFn('input') : + $('input, select, textarea', this.dom.container); + }; + Field.prototype.focus = function () { + if (this.s.type.focus) { + this._typeFn('focus'); + } + else { + $('input, select, textarea', this.dom.container).focus(); + } + return this; + }; + Field.prototype.get = function () { + // When multi-value a single get is undefined + if (this.isMultiValue()) { + return undefined; + } + return this._format(this._typeFn('get'), this.s.opts.getFormatter); + }; + Field.prototype.hide = function (animate) { + var el = this.dom.container; + if (animate === undefined) { + animate = true; + } + if (this.s.host.display() && animate && $.fn.slideUp) { + el.slideUp(); + } + else { + el.css('display', 'none'); + } + return this; + }; + Field.prototype.label = function (str) { + var label = this.dom.label; + var labelInfo = this.dom.labelInfo.detach(); + if (str === undefined) { + return label.html(); + } + label.html(str); + label.append(labelInfo); + return this; + }; + Field.prototype.labelInfo = function (msg) { + return this._msg(this.dom.labelInfo, msg); + }; + Field.prototype.message = function (msg, fn) { + return this._msg(this.dom.fieldMessage, msg, fn); + }; + // There is no `multiVal()` as its arguments could be ambiguous + // id is an idSrc value _only_ + Field.prototype.multiGet = function (id) { + var value; + var multiValues = this.s.multiValues; + var multiIds = this.s.multiIds; + var isMultiValue = this.isMultiValue(); + if (id === undefined) { + var fieldVal = this.val(); + // Get an object with the values for each item being edited + value = {}; + for (var _i = 0, multiIds_1 = multiIds; _i < multiIds_1.length; _i++) { + var multiId = multiIds_1[_i]; + value[multiId] = isMultiValue ? + multiValues[multiId] : + fieldVal; + } + } + else if (isMultiValue) { + // Individual value + value = multiValues[id]; + } + else { + // Common value + value = this.val(); + } + return value; + }; + Field.prototype.multiRestore = function () { + this.s.multiValue = true; + this._multiValueCheck(); + }; + Field.prototype.multiSet = function (id, val, recalc) { + if (recalc === void 0) { recalc = true; } + var that = this; + var multiValues = this.s.multiValues; + var multiIds = this.s.multiIds; + if (val === undefined) { + val = id; + id = undefined; + } + // Set + var set = function (idSrc, valIn) { + // Get an individual item's value - add the id to the edit ids if + // it isn't already in the set. + if ($.inArray(idSrc, multiIds) === -1) { + multiIds.push(idSrc); + } + multiValues[idSrc] = that._format(valIn, that.s.opts.setFormatter); + }; + if ($.isPlainObject(val) && id === undefined) { + // idSrc / value pairs passed in + $.each(val, function (idSrc, innerVal) { + set(idSrc, innerVal); + }); + } + else if (id === undefined) { + // Set same value for all existing ids + $.each(multiIds, function (i, idSrc) { + set(idSrc, val); + }); + } + else { + // Setting an individual property + set(id, val); + } + this.s.multiValue = true; + if (recalc) { + this._multiValueCheck(); + } + return this; + }; + Field.prototype.name = function () { + return this.s.opts.name; + }; + Field.prototype.node = function () { + return this.dom.container[0]; + }; + Field.prototype.nullDefault = function () { + return this.s.opts.nullDefault; + }; + Field.prototype.processing = function (set) { + if (set === undefined) { + return this.s.processing; + } + this.dom.processing.css('display', set ? 'block' : 'none'); + this.s.processing = set; + this.s.host.internalEvent('processing-field', [set]); + return this; + }; + // multiCheck is not publicly documented + Field.prototype.set = function (val, multiCheck) { + if (multiCheck === void 0) { multiCheck = true; } + var decodeFn = function (d) { + return typeof d !== 'string' ? + d : + d + .replace(/>/g, '>') + .replace(/</g, '<') + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/£/g, '£') + .replace(/�?39;/g, '\'') + .replace(/�?10;/g, '\n'); + }; + this.s.multiValue = false; + var decode = this.s.opts.entityDecode; + if (decode === undefined || decode === true) { + if (Array.isArray(val)) { + for (var i = 0, ien = val.length; i < ien; i++) { + val[i] = decodeFn(val[i]); + } + } + else { + val = decodeFn(val); + } + } + // If triggered from multi check we don't want to do formatting or multi checking again + if (multiCheck === true) { + val = this._format(val, this.s.opts.setFormatter); + this._typeFn('set', val); + this._multiValueCheck(); + } + else { + this._typeFn('set', val); + } + return this; + }; + Field.prototype.show = function (animate, toggle) { + if (animate === void 0) { animate = true; } + if (toggle === void 0) { toggle = true; } + if (toggle === false) { + return this.hide(animate); + } + var el = this.dom.container; + if (this.s.host.display() && animate && $.fn.slideDown) { + el.slideDown(); + } + else { + el.css('display', ''); // empty to restore css default (flex or block) + } + return this; + }; + Field.prototype.update = function (options, append) { + if (append === void 0) { append = false; } + if (this.s.type.update) { + this._typeFn('update', options, append); + } + return this; + }; + Field.prototype.val = function (val) { + return val === undefined ? + this.get() : + this.set(val); + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal - Called from Editor only and are not publicly documented - + * these APIs can change! + */ + Field.prototype.compare = function (value, original) { + var compare = this.s.opts.compare || deepCompare; + return compare(value, original); + }; + Field.prototype.dataSrc = function () { + return this.s.opts.data; + }; + Field.prototype.destroy = function () { + // remove element + this.dom.container.remove(); + // field's own destroy method if there is one + this._typeFn('destroy'); + return this; + }; + Field.prototype.multiEditable = function () { + return this.s.opts.multiEditable; + }; + Field.prototype.multiIds = function () { + return this.s.multiIds; + }; + Field.prototype.multiInfoShown = function (show) { + this.dom.multiInfo.css({ display: show ? 'block' : 'none' }); + }; + Field.prototype.multiReset = function () { + this.s.multiIds = []; + this.s.multiValues = {}; + }; + Field.prototype.submittable = function () { + return this.s.opts.submit; + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal + */ + Field.prototype._msg = function (el, msg, fn) { + if (msg === undefined) { + return el.html(); + } + if (typeof msg === 'function') { + var editor = this.s.host; + msg = msg(editor, new DataTable$2.Api(editor.internalSettings().table)); + } + if (el.parent().is(':visible') && $.fn.animate) { + el.html(msg); + if (msg) { + el.slideDown(fn); // fn can be undefined - so jQuery won't execute it + } + else { + el.slideUp(fn); + } + } + else { + // Not visible, so immediately set, or blank out the element + el + .html(msg || '') + .css('display', msg ? 'block' : 'none'); + if (fn) { + fn(); + } + } + return this; + }; + Field.prototype._multiValueCheck = function () { + var last; + var ids = this.s.multiIds; + var values = this.s.multiValues; + var isMultiValue = this.s.multiValue; + var isMultiEditable = this.s.opts.multiEditable; + var val; + var different = false; + if (ids) { + for (var i = 0; i < ids.length; i++) { + val = values[ids[i]]; + if (i > 0 && !deepCompare(val, last)) { + different = true; + break; + } + last = val; + } + } + if ((different && isMultiValue) || (!isMultiEditable && this.isMultiValue())) { + // Different values or same values, but not multiple editable + this.dom.inputControl.css({ display: 'none' }); + this.dom.multi.css({ display: 'block' }); + } + else { + // All the same value + this.dom.inputControl.css({ display: 'block' }); + this.dom.multi.css({ display: 'none' }); + if (isMultiValue && !different) { + this.set(last, false); + } + } + this.dom.multiReturn.css({ + display: ids && ids.length > 1 && different && !isMultiValue ? + 'block' : + 'none' + }); + // Update information label + var i18n = this.s.host.internalI18n().multi; + this.dom.multiInfo.html(isMultiEditable ? i18n.info : i18n.noMulti); + this.dom.multi.toggleClass(this.s.classes.multiNoEdit, !isMultiEditable); + this.s.host.internalMultiInfo(); + return true; + }; + Field.prototype._typeFn = function (name) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + // Insert the options as the first parameter - all field type methods + // take the field's configuration object as the first parameter + args.unshift(this.s.opts); + var fn = this.s.type[name]; + if (fn) { + return fn.apply(this.s.host, args); + } + }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private + */ + Field.prototype._errorNode = function () { + return this.dom.fieldError; + }; + Field.prototype._format = function (val, formatter) { + if (formatter) { + if (Array.isArray(formatter)) { + var args = formatter.slice(); + var name_1 = args.shift(); + formatter = Field.formatters[name_1].apply(this, args); + } + return formatter.call(this.s.host, val, this); + } + return val; + }; + Field.defaults = defaults; + Field.formatters = {}; + return Field; +}()); + +var button = { + action: null, + className: null, + tabIndex: 0, + text: null, +}; + +var displayController = { + close: function () { }, + init: function () { }, + node: function () { }, + open: function () { } +}; + +var DataTable$1 = $.fn.dataTable; +/* + * DataTables 1.10 API integration. Provides the ability to control basic Editor + * aspects from the DataTables API. Full control does of course require use of + * the Editor API though. + */ +var apiRegister = DataTable$1.Api.register; +function _getInst(api) { + var ctx = api.context[0]; + return ctx.oInit.editor || ctx._editor; +} +// Set sensible defaults for the editing options +function _setBasic(inst, opts, type, plural) { + if (!opts) { + opts = {}; + } + if (opts.buttons === undefined) { + opts.buttons = '_basic'; + } + if (opts.title === undefined) { + opts.title = inst.i18n[type].title; + } + if (opts.message === undefined) { + if (type === 'remove') { + var confirm_1 = inst.i18n[type].confirm; + opts.message = plural !== 1 ? confirm_1._.replace(/%d/, plural) : confirm_1['1']; + } + else { + opts.message = ''; + } + } + return opts; +} +apiRegister('editor()', function () { + return _getInst(this); +}); +// Row editing +apiRegister('row.create()', function (opts) { + // main + var inst = _getInst(this); + inst.create(_setBasic(inst, opts, 'create')); + return this; +}); +apiRegister('row().edit()', function (opts) { + // main + var inst = _getInst(this); + inst.edit(this[0][0], _setBasic(inst, opts, 'edit')); + return this; +}); +apiRegister('rows().edit()', function (opts) { + // main + var inst = _getInst(this); + inst.edit(this[0], _setBasic(inst, opts, 'edit')); + return this; +}); +apiRegister('row().delete()', function (opts) { + // main + var inst = _getInst(this); + inst.remove(this[0][0], _setBasic(inst, opts, 'remove', 1)); + return this; +}); +apiRegister('rows().delete()', function (opts) { + // main + var inst = _getInst(this); + inst.remove(this[0], _setBasic(inst, opts, 'remove', this[0].length)); + return this; +}); +apiRegister('cell().edit()', function (type, opts) { + // inline or bubble + if (!type) { + type = 'inline'; + } + else if ($.isPlainObject(type)) { + opts = type; + type = 'inline'; + } + _getInst(this)[type](this[0][0], opts); + return this; +}); +apiRegister('cells().edit()', function (opts) { + // bubble only at the moment + _getInst(this).bubble(this[0], opts); + return this; +}); +apiRegister('file()', file); +apiRegister('files()', files); +// Global listener for file information updates via DataTables' Ajax JSON +$(document).on('xhr.dt', function (e, ctx, json) { + if (e.namespace !== 'dt') { + return; + } + if (json && json.files) { + $.each(json.files, function (name, filesIn) { + if (!Editor.files[name]) { + Editor.files[name] = {}; + } + $.extend(Editor.files[name], filesIn); + }); + } +}); + +/* + * Add helpful buttons to make life easier + * + * Note that the values that require a string to make any sense (the button text + * for example) are set by Editor when Editor is initialised through the i18n + * options. + */ +var _buttons = $.fn.dataTable.ext.buttons; +$.extend(_buttons, { + create: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .create($.extend({ + buttons: config.formButtons, + message: config.formMessage || editor.i18n.create.message, + nest: true, + title: config.formTitle || editor.i18n.create.title + }, config.formOptions)); + }, + className: 'buttons-create', + editor: null, + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.create.submit; + } + }, + formMessage: null, + formOptions: {}, + formTitle: null, + text: function (dt, node, config) { + return dt.i18n('buttons.create', config.editor.i18n.create.button); + }, + }, + createInline: { + action: function (e, dt, node, config) { + config.editor.inlineCreate(config.position, config.formOptions); + }, + className: 'buttons-create', + editor: null, + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.create.submit; + } + }, + formOptions: {}, + position: 'start', + text: function (dt, node, config) { + return dt.i18n('buttons.create', config.editor.i18n.create.button); + }, + }, + edit: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + var rows = dt.rows({ selected: true }).indexes(); + var columns = dt.columns({ selected: true }).indexes(); + var cells = dt.cells({ selected: true }).indexes(); + var items = columns.length || cells.length ? + { + cells: cells, + columns: columns, + rows: rows + } : + rows; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .edit(items, $.extend({ + buttons: config.formButtons, + message: config.formMessage || editor.i18n.edit.message, + nest: true, + title: config.formTitle || editor.i18n.edit.title + }, config.formOptions)); + }, + className: 'buttons-edit', + editor: null, + extend: 'selected', + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.edit.submit; + }, + }, + formMessage: null, + formOptions: {}, + formTitle: null, + text: function (dt, node, config) { + return dt.i18n('buttons.edit', config.editor.i18n.edit.button); + }, + }, + remove: { + action: function (e, dt, node, config) { + var that = this; + var editor = config.editor; + this.processing(true); + editor + .one('preOpen', function () { + that.processing(false); + }) + .remove(dt.rows({ selected: true }).indexes(), $.extend({ + buttons: config.formButtons, + message: config.formMessage, + nest: true, + title: config.formTitle || editor.i18n.remove.title + }, config.formOptions)); + }, + className: 'buttons-remove', + editor: null, + extend: 'selected', + formButtons: { + action: function (e) { + this.submit(); + }, + text: function (editor) { + return editor.i18n.remove.submit; + }, + }, + formMessage: function (editor, dt) { + var rows = dt.rows({ selected: true }).indexes(); + var i18n = editor.i18n.remove; + var question = typeof i18n.confirm === 'string' ? + i18n.confirm : + i18n.confirm[rows.length] ? + i18n.confirm[rows.length] : i18n.confirm._; + return question.replace(/%d/g, rows.length); + }, + formOptions: {}, + formTitle: null, + limitTo: ['rows'], + text: function (dt, node, config) { + return dt.i18n('buttons.remove', config.editor.i18n.remove.button); + }, + } +}); +// Reuse the standard edit and remove buttons for their singular equivalent, +// but set it to extend the single selected button only +_buttons.editSingle = $.extend({}, _buttons.edit); +_buttons.editSingle.extend = 'selectedSingle'; +_buttons.removeSingle = $.extend({}, _buttons.remove); +_buttons.removeSingle.extend = 'selectedSingle'; + + +if (!DataTable || !DataTable.versionCheck || !DataTable.versionCheck('1.10.20')) { + throw new Error('Editor requires DataTables 1.10.20 or newer'); +} +var Editor = /** @class */ (function () { + function Editor(init, cjsJq) { + var _this = this; + this.add = add; + this.ajax = ajax; + this.background = background; + this.blur = blur; + this.bubble = bubble; + this.bubblePosition = bubblePosition; + this.buttons = buttons; + this.clear = clear; + this.close = close; + this.create = create; + this.undependent = undependent; + this.dependent = dependent; + this.destroy = destroy; + this.disable = disable; + this.display = display; + this.displayed = displayed; + this.displayNode = displayNode; + this.edit = edit; + this.enable = enable; + this.error = error$1; + this.field = field; + this.fields = fields; + this.file = file; + this.files = files; + this.get = get; + this.hide = hide; + this.ids = ids; + this.inError = inError; + this.inline = inline; + this.inlineCreate = inlineCreate; + this.message = message; + this.mode = mode; + this.modifier = modifier; + this.multiGet = multiGet; + this.multiSet = multiSet; + this.node = node; + this.off = off; + this.on = on; + this.one = one; + this.open = open; + this.order = order; + this.remove = remove; + this.set = set; + this.show = show; + this.submit = submit; + this.table = table; + this.template = template; + this.title = title; + this.val = val; + this._actionClass = _actionClass; + this._ajax = _ajax; + this._animate = _animate; + this._assembleMain = _assembleMain; + this._blur = _blur; + this._clearDynamicInfo = _clearDynamicInfo; + this._close = _close; + this._closeReg = _closeReg; + this._crudArgs = _crudArgs; + this._dataSource = _dataSource; + this._displayReorder = _displayReorder; + this._edit = _edit; + this._event = _event; + this._eventName = _eventName; + this._fieldFromNode = _fieldFromNode; + this._fieldNames = _fieldNames; + this._focus = _focus; + this._formOptions = _formOptions; + this._inline = _inline; + this._inputTrigger = _inputTrigger; + this._optionsUpdate = _optionsUpdate; + this._message = _message; + this._multiInfo = _multiInfo; + this._nestedClose = _nestedClose; + this._nestedOpen = _nestedOpen; + this._postopen = _postopen; + this._preopen = _preopen; + this._processing = _processing; + this._noProcessing = _noProcessing; + this._submit = _submit; + this._submitTable = _submitTable; + this._submitSuccess = _submitSuccess; + this._submitError = _submitError; + this._tidy = _tidy; + this._weakInArray = _weakInArray; + // Check if called with a window or jQuery object for DOM less applications + // This is for backwards compatibility with CommonJS loader + if (Editor.factory(init, cjsJq)) { + return Editor; + } + if (!(this instanceof Editor)) { + alert('DataTables Editor must be initialised as a \'new\' instance'); + } + init = $.extend(true, {}, Editor.defaults, init); + this.c = init; + this.s = $.extend(true, {}, Editor.models.settings, { + actionName: init.actionName, + ajax: init.ajax, + formOptions: init.formOptions, + idSrc: init.idSrc, + table: init.domTable || init.table, + template: init.template ? + $(init.template).detach() : null + }); + this.classes = $.extend(true, {}, Editor.classes); + this.i18n = init.i18n; + // Increment the unique counter for the next instance + Editor.models.settings.unique++; + var that = this; + var classes = this.classes; + var wrapper = $('
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              ' + + '
                                                                                                                                                                              '); + var form = $('' + + '
                                                                                                                                                                              ' + + ''); + this.dom = { + body: el('body', wrapper)[0], + bodyContent: el('body_content', wrapper)[0], + buttons: $('
                                                                                                                                                                              ')[0], + footer: el('foot', wrapper)[0], + form: form[0], + formContent: el('form_content', form)[0], + formError: $('
                                                                                                                                                                              ')[0], + formInfo: $('
                                                                                                                                                                              ')[0], + header: $('
                                                                                                                                                                              ')[0], + processing: el('processing', wrapper)[0], + wrapper: wrapper[0], + }; + // Bind callback methods + $.each(init.events, function (evt, fn) { + that.on(evt, function () { + var argsIn = []; + for (var _i = 0; _i < arguments.length; _i++) { + argsIn[_i] = arguments[_i]; + } + // When giving events in the constructor the event argument was not + // given in 1.2-, so we remove it here. This is solely for + // backwards compatibility as the events in the initialisation are + // not documented in 1.3+. + fn.apply(that, argsIn); + }); + }); + // Cache the DOM nodes + this.dom; + // Add any fields which are given on initialisation + if (init.fields) { + this.add(init.fields); + } + $(document) + .on('init.dt.dte' + this.s.unique, function (e, settings, json) { + // Resolve this reference in the event handlers so the + // table() API method can be used to change it and the + // change still be operated on here. + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Attempt to attach to a DataTable automatically when the table is + // initialised + settings._editor = _this; + } + } + }) + .on('i18n.dt.dte' + this.s.unique, function (e, settings) { + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Use loaded language options + if (settings.oLanguage.editor) { + $.extend(true, _this.i18n, settings.oLanguage.editor); + } + } + } + }) + .on('xhr.dt.dte' + this.s.unique, function (e, settings, json) { + var table = _this.s.table; + if (table) { + var dtApi = new DataTable.Api(table); + if (settings.nTable === dtApi.table().node()) { + // Automatically update fields which have a field name defined in + // the returned json - saves an `initComplete` for the user + _this._optionsUpdate(json); + } + } + }); + // Prep the display controller + if (!Editor.display[init.display]) { + throw new Error('Cannot find display controller ' + init.display); + } + this.s.displayController = Editor.display[init.display].init(this); + this._event('initComplete', []); + $(document).trigger('initEditor', [this]); + } + // Expose internal methods and options for the Field class to use + // These are not publicly documented. + /** @internal */ + Editor.prototype.internalEvent = function (name, args) { + this._event(name, args); + }; + /** @internal */ + Editor.prototype.internalI18n = function () { + return this.i18n; + }; + /** @internal */ + Editor.prototype.internalMultiInfo = function () { + return this._multiInfo(); + }; + /** @internal */ + Editor.prototype.internalSettings = function () { + return this.s; + }; + Editor.fieldTypes = { + checkbox: checkbox, + datatable: datatable, + datetime: datetime, + hidden: hidden, + password: password, + radio: radio, + readonly: readonly, + select: select, + text: text, + textarea: textarea, + upload: upload, + uploadMany: uploadMany + }; + Editor.files = {}; + Editor.version = '2.1.3'; + Editor.classes = classNames; + Editor.Field = Field; + Editor.DateTime = null; + Editor.error = error; + Editor.pairs = pairs; + Editor.factory = factory; + Editor.upload = upload$1; + Editor.defaults = defaults$1; + Editor.models = { + button: button, + displayController: displayController, + fieldType: fieldType, + formOptions: formOptions, + settings: settings, + }; + Editor.dataSources = { + dataTable: dataSource$1, + html: dataSource, + }; + Editor.display = { + envelope: envelope, + lightbox: self, + }; + Editor.safeId = function (id) { + return safeDomId(id, ''); + }; + return Editor; +}()); +DataTable.Editor = Editor; +$.fn.DataTable.Editor = Editor; +if (DataTable.DateTime) { + Editor.DateTime = DataTable.DateTime; +} +// If there are field types available on DataTables we copy them in (after the +// built in ones to allow overrides) and then expose the field types object. +if (DataTable.ext.editorFields) { + $.extend(Editor.fieldTypes, DataTable.ext.editorFields); +} +DataTable.ext.editorFields = Editor.fieldTypes; + + + +export default Editor; diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.js b/httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.js new file mode 100644 index 00000000..2bc68d60 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.bootstrap.js @@ -0,0 +1,272 @@ +/*! Bootstrap integration for DataTables' Editor + * © SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-bs', 'datatables.net-editor'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + var jq = require('jquery'); + var cjsRequires = function (root, $) { + if ( ! $.fn.dataTable ) { + require('datatables.net-bs')(root, $); + } + + if ( ! $.fn.dataTable.Editor ) { + require('datatables.net-editor')(root, $); + } + }; + + if (typeof window === 'undefined') { + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = jq( root ); + } + + cjsRequires( root, $ ); + return factory( $, root, root.document ); + }; + } + else { + cjsRequires( window, jq ); + module.exports = factory( jq, window, window.document ); + } + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var Editor = DataTable.Editor; + +/* + * Set the default display controller to be our bootstrap control + */ +DataTable.Editor.defaults.display = "bootstrap"; + + +/* + * Change the default classes from Editor to be classes for Bootstrap + */ +$.extend( true, $.fn.dataTable.Editor.classes, { + "header": { + "wrapper": "DTE_Header modal-header", + title: { + tag: 'h4', + class: 'modal-title' + } + }, + "body": { + "wrapper": "DTE_Body modal-body" + }, + "footer": { + "wrapper": "DTE_Footer modal-footer" + }, + "form": { + "tag": "form-horizontal", + "button": "btn btn-default", + "buttonInternal": "btn btn-default" + }, + "field": { + "wrapper": "DTE_Field", + "label": "col-lg-4 control-label", + "input": "col-lg-8 controls", + "error": "error has-error", + "msg-labelInfo": "help-block", + "msg-info": "help-block", + "msg-message": "help-block", + "msg-error": "help-block", + "multiValue": "well well-sm multi-value", + "multiInfo": "small", + "multiRestore": "well well-sm multi-restore" + } +} ); + +$.extend( true, DataTable.ext.buttons, { + create: { + formButtons: { + className: 'btn-primary' + } + }, + edit: { + formButtons: { + className: 'btn-primary' + } + }, + remove: { + formButtons: { + className: 'btn-danger' + } + } +} ); + +DataTable.Editor.fieldTypes.datatable.tableClass = 'table'; + +let shown = false; +let fullyShown = false; + +const dom = { + // Note that `modal-dialog-scrollable` is BS4.3+ only. It has no effect on 4.0-4.2 + content: $( + '' + ), + close: $(''+ + '' + ) +}; + +DataTable.Editor.display.bulma = $.extend( true, {}, DataTable.Editor.models.displayController, { + /* + * API methods + */ + init: function ( dte ) { + // Add `form-control` to required elements + dte.on( 'displayOrder.dtebm open.dtebm', function ( e, display, action, form ) { + $.each( dte.s.fields, function ( key, field ) { + $('input:not([type=checkbox]):not([type=radio]), select, textarea', field.node() ) + .addClass( 'input' ); + + $('input[type=checkbox], input[type=radio]', field.node() ) + .removeClass('input'); + + $('select', field.node() ) + .addClass( 'select' ) + .parent().addClass('select'); + + $('select[multiple]', field.node() ) + .parent().addClass('is-multiple'); + } ); + } ); + + return DataTable.Editor.display.bulma; + }, + + open: function ( dte, append, callback ) { + $(append).removeClass('is-hidden').addClass('is-active'); + $(append).find('.modal-title').addClass('title'); + dom.content.find('.modal-content').append(append); + dom.content.addClass('is-active is-clipped'); + + dom.content.appendTo("body"); + // Setup events on each show + $('.modal-close') + .attr('title', dte.i18n.close) + .one('click', function () { + dte.close('icon'); + }) + .appendTo($('div.modal-header', append)); + + // This is a bit horrible, but if you mousedown and then drag out of the modal container, we don't + // want to trigger a background action. + let allowBackgroundClick = false; + $(document) + .off('mousedown.dte-bs5') + .on('mousedown.dte-bs5', 'div.modal-background', function (e) { + allowBackgroundClick = $(e.target).hasClass('modal-background'); + } ); + + $(document) + .off('click.dte-bs5') + .on('click.dte-bs5', 'div.modal-background', function (e) { + if ( $(e.target).hasClass('modal-background') && allowBackgroundClick ) { + dte.background(); + } + } ); + + if ( callback ) { + callback(); + } + return; + }, + + close: function ( dte, callback ) { + dom.content + .find('.is-active') + .removeClass('is-active') + .addClass('is-hidden'); + + dom.content.removeClass('is-active is-clipped'); + if ( callback ) { + callback(); + } + }, + + node: function ( dte ) { + return dom.content[0]; + } +} ); + + +return Editor; +})); diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.js b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.js new file mode 100644 index 00000000..16e2faba --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.js @@ -0,0 +1,4 @@ +/*! Bulma integration for DataTables' Editor + * © SpryMedia Ltd - datatables.net/license + */ +!function(o){var a,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-editor"],function(e){return o(e,window,document)}):"object"==typeof exports?(a=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-bm")(e,t),t.fn.dataTable.Editor||require("datatables.net-editor")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||a(e),d(e,t),o(t,0,e.document)}:(d(window,a),module.exports=o(a,window,window.document))):o(jQuery,window,document)}(function(n,e,d,t){"use strict";var o=n.fn.dataTable,a=o.Editor;o.Editor.defaults.display="bulma",n.extend(!0,n.fn.dataTable.Editor.classes,{header:{wrapper:"DTE_Header modal-header",title:{tag:"h5",class:"modal-title"}},body:{wrapper:"DTE_Body modal-body"},footer:{wrapper:"DTE_Footer modal-footer"},form:{tag:"form-horizontal",button:"button",buttonInternal:"button",error:"DTE_Form_Error help is-danger"},field:{wrapper:"DTE_Field field",label:"label",error:"DTE_Field_Error help is-danger",multiValue:"card multi-value",multiInfo:"small",multiRestore:"card multi-restore"}}),n.extend(!0,o.ext.buttons,{create:{formButtons:{className:"button is-primary"}},edit:{formButtons:{className:"button is-primary"}},remove:{formButtons:{className:"button is-danger"}}}),o.Editor.fieldTypes.datatable.tableClass="table";const i={content:n('')};return o.Editor.display.bulma=n.extend(!0,{},o.Editor.models.displayController,{init:function(d){return d.on("displayOrder.dtebm open.dtebm",function(e,t,o,a){n.each(d.s.fields,function(e,t){n("input:not([type=checkbox]):not([type=radio]), select, textarea",t.node()).addClass("input"),n("input[type=checkbox], input[type=radio]",t.node()).removeClass("input"),n("select",t.node()).addClass("select").parent().addClass("select"),n("select[multiple]",t.node()).parent().addClass("is-multiple")})}),o.Editor.display.bulma},open:function(t,e,o){n(e).removeClass("is-hidden").addClass("is-active"),n(e).find(".modal-title").addClass("title"),i.content.find(".modal-content").append(e),i.content.addClass("is-active is-clipped"),i.content.appendTo("body"),n(".modal-close").attr("title",t.i18n.close).one("click",function(){t.close("icon")}).appendTo(n("div.modal-header",e));let a=!1;n(d).off("mousedown.dte-bs5").on("mousedown.dte-bs5","div.modal-background",function(e){a=n(e.target).hasClass("modal-background")}),n(d).off("click.dte-bs5").on("click.dte-bs5","div.modal-background",function(e){n(e.target).hasClass("modal-background")&&a&&t.background()}),o&&o()},close:function(e,t){i.content.find(".is-active").removeClass("is-active").addClass("is-hidden"),i.content.removeClass("is-active is-clipped"),t&&t()},node:function(e){return i.content[0]}}),a}); \ No newline at end of file diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.mjs b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.mjs new file mode 100644 index 00000000..c2abcbae --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.min.mjs @@ -0,0 +1,4 @@ +/*! Bulma integration for DataTables' Editor + * © SpryMedia Ltd - datatables.net/license + */ +import jQuery from"jquery";import DataTable from"datatables.net-bm";import Editor from"datatables.net-editor";let $=jQuery;var Editor=DataTable.Editor;DataTable.Editor.defaults.display="bulma",$.extend(!0,$.fn.dataTable.Editor.classes,{header:{wrapper:"DTE_Header modal-header",title:{tag:"h5",class:"modal-title"}},body:{wrapper:"DTE_Body modal-body"},footer:{wrapper:"DTE_Footer modal-footer"},form:{tag:"form-horizontal",button:"button",buttonInternal:"button",error:"DTE_Form_Error help is-danger"},field:{wrapper:"DTE_Field field",label:"label",error:"DTE_Field_Error help is-danger",multiValue:"card multi-value",multiInfo:"small",multiRestore:"card multi-restore"}}),$.extend(!0,DataTable.ext.buttons,{create:{formButtons:{className:"button is-primary"}},edit:{formButtons:{className:"button is-primary"}},remove:{formButtons:{className:"button is-danger"}}});let shown=!(DataTable.Editor.fieldTypes.datatable.tableClass="table"),fullyShown=!1;const dom={content:$('')};DataTable.Editor.display.bulma=$.extend(!0,{},DataTable.Editor.models.displayController,{init:function(d){return d.on("displayOrder.dtebm open.dtebm",function(e,t,a,o){$.each(d.s.fields,function(e,t){$("input:not([type=checkbox]):not([type=radio]), select, textarea",t.node()).addClass("input"),$("input[type=checkbox], input[type=radio]",t.node()).removeClass("input"),$("select",t.node()).addClass("select").parent().addClass("select"),$("select[multiple]",t.node()).parent().addClass("is-multiple")})}),DataTable.Editor.display.bulma},open:function(t,e,a){$(e).removeClass("is-hidden").addClass("is-active"),$(e).find(".modal-title").addClass("title"),dom.content.find(".modal-content").append(e),dom.content.addClass("is-active is-clipped"),dom.content.appendTo("body"),$(".modal-close").attr("title",t.i18n.close).one("click",function(){t.close("icon")}).appendTo($("div.modal-header",e));let o=!1;$(document).off("mousedown.dte-bs5").on("mousedown.dte-bs5","div.modal-background",function(e){o=$(e.target).hasClass("modal-background")}),$(document).off("click.dte-bs5").on("click.dte-bs5","div.modal-background",function(e){$(e.target).hasClass("modal-background")&&o&&t.background()}),a&&a()},close:function(e,t){dom.content.find(".is-active").removeClass("is-active").addClass("is-hidden"),dom.content.removeClass("is-active is-clipped"),t&&t()},node:function(e){return dom.content[0]}});export default Editor; \ No newline at end of file diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.mjs b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.mjs new file mode 100644 index 00000000..49ff3982 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.bulma.mjs @@ -0,0 +1,172 @@ +/*! Bulma integration for DataTables' Editor + * © SpryMedia Ltd - datatables.net/license + */ + +import jQuery from 'jquery'; +import DataTable from 'datatables.net-bm'; +import Editor from 'datatables.net-editor'; + +// Allow reassignment of the $ variable +let $ = jQuery; + +var Editor = DataTable.Editor; + +/* + * Set the default display controller to be our bulma control + */ +DataTable.Editor.defaults.display = "bulma"; + + +/* + * Change the default classes from Editor to be classes for Bulma + */ +$.extend( true, $.fn.dataTable.Editor.classes, { + "header": { + "wrapper": "DTE_Header modal-header", + title: { + tag: 'h5', + class: 'modal-title' + } + }, + "body": { + "wrapper": "DTE_Body modal-body" + }, + "footer": { + "wrapper": "DTE_Footer modal-footer" + }, + "form": { + "tag": "form-horizontal", + "button": "button", + "buttonInternal": "button", + "error": "DTE_Form_Error help is-danger" + }, + "field": { + "wrapper": "DTE_Field field", + "label": "label", + "error": "DTE_Field_Error help is-danger", + "multiValue": "card multi-value", + "multiInfo": "small", + "multiRestore": "card multi-restore" + }, +} ); + +$.extend( true, DataTable.ext.buttons, { + create: { + formButtons: { + className: 'button is-primary' + } + }, + edit: { + formButtons: { + className: 'button is-primary' + } + }, + remove: { + formButtons: { + className: 'button is-danger' + } + } +} ); + +DataTable.Editor.fieldTypes.datatable.tableClass = 'table'; + +/* + * Bulma display controller - this is effectively a proxy to the Bulma + * modal control. + */ +let shown = false; +let fullyShown = false; + +const dom = { + content: $( + '' + ) +}; + +DataTable.Editor.display.bulma = $.extend( true, {}, DataTable.Editor.models.displayController, { + /* + * API methods + */ + init: function ( dte ) { + // Add `form-control` to required elements + dte.on( 'displayOrder.dtebm open.dtebm', function ( e, display, action, form ) { + $.each( dte.s.fields, function ( key, field ) { + $('input:not([type=checkbox]):not([type=radio]), select, textarea', field.node() ) + .addClass( 'input' ); + + $('input[type=checkbox], input[type=radio]', field.node() ) + .removeClass('input'); + + $('select', field.node() ) + .addClass( 'select' ) + .parent().addClass('select'); + + $('select[multiple]', field.node() ) + .parent().addClass('is-multiple'); + } ); + } ); + + return DataTable.Editor.display.bulma; + }, + + open: function ( dte, append, callback ) { + $(append).removeClass('is-hidden').addClass('is-active'); + $(append).find('.modal-title').addClass('title'); + dom.content.find('.modal-content').append(append); + dom.content.addClass('is-active is-clipped'); + + dom.content.appendTo("body"); + // Setup events on each show + $('.modal-close') + .attr('title', dte.i18n.close) + .one('click', function () { + dte.close('icon'); + }) + .appendTo($('div.modal-header', append)); + + // This is a bit horrible, but if you mousedown and then drag out of the modal container, we don't + // want to trigger a background action. + let allowBackgroundClick = false; + $(document) + .off('mousedown.dte-bs5') + .on('mousedown.dte-bs5', 'div.modal-background', function (e) { + allowBackgroundClick = $(e.target).hasClass('modal-background'); + } ); + + $(document) + .off('click.dte-bs5') + .on('click.dte-bs5', 'div.modal-background', function (e) { + if ( $(e.target).hasClass('modal-background') && allowBackgroundClick ) { + dte.background(); + } + } ); + + if ( callback ) { + callback(); + } + return; + }, + + close: function ( dte, callback ) { + dom.content + .find('.is-active') + .removeClass('is-active') + .addClass('is-hidden'); + + dom.content.removeClass('is-active is-clipped'); + if ( callback ) { + callback(); + } + }, + + node: function ( dte ) { + return dom.content[0]; + } +} ); + + +export default Editor; diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.js b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.js new file mode 100644 index 00000000..a5b074ab --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.js @@ -0,0 +1,59 @@ +/*! DataTables styling integration for DataTables' Editor + * ©SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-dt', 'datatables.net-editor'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + var jq = require('jquery'); + var cjsRequires = function (root, $) { + if ( ! $.fn.dataTable ) { + require('datatables.net-dt')(root, $); + } + + if ( ! $.fn.dataTable.Editor ) { + require('datatables.net-editor')(root, $); + } + }; + + if (typeof window === 'undefined') { + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = jq( root ); + } + + cjsRequires( root, $ ); + return factory( $, root, root.document ); + }; + } + else { + cjsRequires( window, jq ); + module.exports = factory( jq, window, window.document ); + } + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var Editor = DataTable.Editor; + + +return Editor; +})); diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.js b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.js new file mode 100644 index 00000000..d8111120 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.js @@ -0,0 +1,4 @@ +/*! DataTables styling integration for DataTables' Editor + * ©SpryMedia Ltd - datatables.net/license + */ +!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-editor"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Editor||require("datatables.net-editor")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable.Editor}); \ No newline at end of file diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.mjs b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.mjs new file mode 100644 index 00000000..ea3eead9 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.min.mjs @@ -0,0 +1,4 @@ +/*! DataTables styling integration for DataTables' Editor + * ©SpryMedia Ltd - datatables.net/license + */ +import jQuery from"jquery";import DataTable from"datatables.net-dt";import Editor from"datatables.net-editor";let $=jQuery;var Editor;export default Editor=DataTable.Editor; \ No newline at end of file diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.mjs b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.mjs new file mode 100644 index 00000000..c3659004 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.dataTables.mjs @@ -0,0 +1,15 @@ +/*! DataTables styling integration for DataTables' Editor + * ©SpryMedia Ltd - datatables.net/license + */ + +import jQuery from 'jquery'; +import DataTable from 'datatables.net-dt'; +import Editor from 'datatables.net-editor'; + +// Allow reassignment of the $ variable +let $ = jQuery; + +var Editor = DataTable.Editor; + + +export default Editor; diff --git a/httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.js b/httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.js new file mode 100644 index 00000000..913d3d47 --- /dev/null +++ b/httpdocs/themes/vuexy/js/datatables-editor/editor.foundation.js @@ -0,0 +1,171 @@ +/*! Foundation integration for DataTables' Editor + * © SpryMedia Ltd - datatables.net/license + */ + +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net-zf', 'datatables.net-editor'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + var jq = require('jquery'); + var cjsRequires = function (root, $) { + if ( ! $.fn.dataTable ) { + require('datatables.net-zf')(root, $); + } + + if ( ! $.fn.dataTable.Editor ) { + require('datatables.net-editor')(root, $); + } + }; + + if (typeof window === 'undefined') { + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = jq( root ); + } + + cjsRequires( root, $ ); + return factory( $, root, root.document ); + }; + } + else { + cjsRequires( window, jq ); + module.exports = factory( jq, window, window.document ); + } + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +var Editor = DataTable.Editor; + +/* + * Set the default display controller to be our foundation control + */ +DataTable.Editor.defaults.display = "foundation"; + + +/* + * Change the default classes from Editor to be classes for Foundation + */ +$.extend( true, $.fn.dataTable.Editor.classes, { + field: { + wrapper: "DTE_Field row", + label: "small-4 columns inline", + input: "small-8 columns", + error: "error", + multiValue: "panel radius multi-value", + multiInfo: "small", + multiRestore: "panel radius multi-restore", + "msg-labelInfo": "label secondary", + "msg-info": "label secondary", + "msg-message": "label secondary", + "msg-error": "label alert" + }, + form: { + button: "button small", + buttonInternal: "button small" + } +} ); + + +/* + * Foundation display controller - this is effectively a proxy to the Foundation + * modal control. + */ +var shown = false; +var reveal; + +const dom = { + content: $( + '
                                                                                                                                                                              ' + ), + close: $('