Initial commit
This commit is contained in:
commit
65e0da7e11
1397 changed files with 596542 additions and 0 deletions
455
site/OFF_plugins/kirby-index-field/fields/index/assets/css/datatables.min.css
vendored
Normal file
455
site/OFF_plugins/kirby-index-field/fields/index/assets/css/datatables.min.css
vendored
Normal file
|
|
@ -0,0 +1,455 @@
|
|||
/*
|
||||
* Table styles
|
||||
*/
|
||||
table.dataTable {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
clear: both;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0;
|
||||
/*
|
||||
* Header and footer styles
|
||||
*/
|
||||
/*
|
||||
* Body styles
|
||||
*/
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable tfoot th {
|
||||
font-weight: bold;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td {
|
||||
padding: 10px 18px;
|
||||
border-bottom: 1px solid #111;
|
||||
}
|
||||
table.dataTable thead th:active,
|
||||
table.dataTable thead td:active {
|
||||
outline: none;
|
||||
}
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
padding: 10px 18px 6px 18px;
|
||||
border-top: 1px solid #111;
|
||||
}
|
||||
table.dataTable thead .sorting,
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc,
|
||||
table.dataTable thead .sorting_asc_disabled,
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
*cursor: hand;
|
||||
}
|
||||
table.dataTable thead .sorting,
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc,
|
||||
table.dataTable thead .sorting_asc_disabled,
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
}
|
||||
table.dataTable thead .sorting {
|
||||
background-image: url("../images/sort_both.png");
|
||||
}
|
||||
table.dataTable thead .sorting_asc {
|
||||
background-image: url("../images/sort_asc.png");
|
||||
}
|
||||
table.dataTable thead .sorting_desc {
|
||||
background-image: url("../images/sort_desc.png");
|
||||
}
|
||||
table.dataTable thead .sorting_asc_disabled {
|
||||
background-image: url("../images/sort_asc_disabled.png");
|
||||
}
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
background-image: url("../images/sort_desc_disabled.png");
|
||||
}
|
||||
table.dataTable tbody tr {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
table.dataTable tbody tr.selected {
|
||||
background-color: #B0BED9;
|
||||
}
|
||||
table.dataTable tbody th,
|
||||
table.dataTable tbody td {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
table.dataTable.row-border tbody tr:first-child th,
|
||||
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||
table.dataTable.display tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||
border-top: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
table.dataTable.cell-border tbody tr th:first-child,
|
||||
table.dataTable.cell-border tbody tr td:first-child {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
table.dataTable.cell-border tbody tr:first-child th,
|
||||
table.dataTable.cell-border tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
|
||||
background-color: #acbad4;
|
||||
}
|
||||
table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
|
||||
background-color: #aab7d1;
|
||||
}
|
||||
table.dataTable.order-column tbody tr > .sorting_1,
|
||||
table.dataTable.order-column tbody tr > .sorting_2,
|
||||
table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
|
||||
table.dataTable.display tbody tr > .sorting_2,
|
||||
table.dataTable.display tbody tr > .sorting_3 {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
table.dataTable.order-column tbody tr.selected > .sorting_1,
|
||||
table.dataTable.order-column tbody tr.selected > .sorting_2,
|
||||
table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
|
||||
table.dataTable.display tbody tr.selected > .sorting_2,
|
||||
table.dataTable.display tbody tr.selected > .sorting_3 {
|
||||
background-color: #acbad5;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
|
||||
background-color: #a6b4cd;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||
background-color: #a8b5cf;
|
||||
}
|
||||
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||
background-color: #a9b7d1;
|
||||
}
|
||||
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||
background-color: #fefefe;
|
||||
}
|
||||
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||
background-color: #acbad5;
|
||||
}
|
||||
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||
background-color: #aebcd6;
|
||||
}
|
||||
table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
|
||||
background-color: #afbdd8;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
|
||||
background-color: #eaeaea;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||
background-color: #ececec;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||
background-color: #efefef;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||
background-color: #a2aec7;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||
background-color: #a3b0c9;
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||
background-color: #a5b2cb;
|
||||
}
|
||||
table.dataTable.no-footer {
|
||||
border-bottom: 1px solid #111;
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.compact thead th,
|
||||
table.dataTable.compact thead td {
|
||||
padding: 4px 17px 4px 4px;
|
||||
}
|
||||
table.dataTable.compact tfoot th,
|
||||
table.dataTable.compact tfoot td {
|
||||
padding: 4px;
|
||||
}
|
||||
table.dataTable.compact tbody th,
|
||||
table.dataTable.compact tbody td {
|
||||
padding: 4px;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.dataTable,
|
||||
table.dataTable th,
|
||||
table.dataTable td {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*
|
||||
* Control feature layout
|
||||
*/
|
||||
.dataTables_wrapper {
|
||||
position: relative;
|
||||
clear: both;
|
||||
*zoom: 1;
|
||||
zoom: 1;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length {
|
||||
float: left;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
clear: both;
|
||||
float: left;
|
||||
padding-top: 0.755em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: right;
|
||||
text-align: right;
|
||||
padding-top: 0.25em;
|
||||
}
|
||||
// .dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||
// box-sizing: border-box;
|
||||
// display: inline-block;
|
||||
// min-width: 1.5em;
|
||||
// padding: 0.5em 1em;
|
||||
// margin-left: 2px;
|
||||
// text-align: center;
|
||||
// text-decoration: none !important;
|
||||
// cursor: pointer;
|
||||
// *cursor: hand;
|
||||
// color: #333 !important;
|
||||
// border: 1px solid transparent;
|
||||
// border-radius: 2px;
|
||||
// }
|
||||
// .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||
// color: #333 !important;
|
||||
// border: 1px solid #979797;
|
||||
// background-color: white;
|
||||
// background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
|
||||
// /* Chrome,Safari4+ */
|
||||
// background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||
// /* Chrome10+,Safari5.1+ */
|
||||
// background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||
// /* FF3.6+ */
|
||||
// background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||
// /* IE10+ */
|
||||
// background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||
// /* Opera 11.10+ */
|
||||
// background: linear-gradient(to bottom, white 0%, #dcdcdc 100%);
|
||||
// /* W3C */
|
||||
// }
|
||||
// .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
|
||||
// cursor: default;
|
||||
// color: #666 !important;
|
||||
// border: 1px solid transparent;
|
||||
// background: transparent;
|
||||
// box-shadow: none;
|
||||
// }
|
||||
// .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||
// color: white !important;
|
||||
// border: 1px solid #111;
|
||||
// background-color: #585858;
|
||||
// background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
|
||||
// /* Chrome,Safari4+ */
|
||||
// background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
|
||||
// /* Chrome10+,Safari5.1+ */
|
||||
// background: -moz-linear-gradient(top, #585858 0%, #111 100%);
|
||||
// /* FF3.6+ */
|
||||
// background: -ms-linear-gradient(top, #585858 0%, #111 100%);
|
||||
// /* IE10+ */
|
||||
// background: -o-linear-gradient(top, #585858 0%, #111 100%);
|
||||
// /* Opera 11.10+ */
|
||||
// background: linear-gradient(to bottom, #585858 0%, #111 100%);
|
||||
// /* W3C */
|
||||
// }
|
||||
// .dataTables_wrapper .dataTables_paginate .paginate_button:active {
|
||||
// outline: none;
|
||||
// background-color: #2b2b2b;
|
||||
// background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
|
||||
// /* Chrome,Safari4+ */
|
||||
// background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||
// /* Chrome10+,Safari5.1+ */
|
||||
// background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||
// /* FF3.6+ */
|
||||
// background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||
// /* IE10+ */
|
||||
// background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||
// /* Opera 11.10+ */
|
||||
// background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
|
||||
// /* W3C */
|
||||
// box-shadow: inset 0 0 3px #111;
|
||||
// }
|
||||
.dataTables_wrapper .dataTables_paginate .ellipsis {
|
||||
padding: 0 1em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
margin-left: -50%;
|
||||
margin-top: -25px;
|
||||
padding-top: 20px;
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
background-color: white;
|
||||
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
|
||||
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||
background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter,
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_processing,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
color: #333;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll {
|
||||
clear: both;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
|
||||
*margin-top: -1px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||
border-bottom: 1px solid #111;
|
||||
}
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollHead > table,
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
|
||||
border-bottom: none;
|
||||
}
|
||||
.dataTables_wrapper:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 640px) {
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
[data-field="indexfield"] table.dataTable {text-align: left;}
|
||||
[data-field="indexfield"] table.dataTable thead th, [data-field="indexfield"] table.dataTable thead td,
|
||||
[data-field="indexfield"] table.dataTable tfoot th, [data-field="indexfield"] table.dataTable tfoot td {padding: 8px 10px}
|
||||
[data-field="indexfield"] table.dataTable tbody tr { cursor: pointer; }
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting,
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_asc,
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_desc,
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_asc_disabled,
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_desc_disabled {
|
||||
background-size: 10px;
|
||||
background-position: right 10px center;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 19'><defs><style>.cls-1{fill:none;}</style></defs><path d='M5,2.3,7.77,7.1H2.23L5,2.3m0-2L.5,8.1h9L5,.3Z'/><path transform='translate(0,2)' d='M7.77,9.9,5,14.7,2.23,9.9H7.77m1.73-1H.5L5,16.7,9.5,8.9Z'/><rect class='cls-1' width='10' height='19'/></svg>");
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_asc {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 19'><defs><style>.cls-1{fill:none;}</style></defs><polygon points='1.37 7.6 5 1.3 8.63 7.6 1.37 7.6'/><path d='M5,2.3,7.77,7.1H2.23L5,2.3m0-2L.5,8.1h9L5,.3Z'/><rect class='cls-1' width='10' height='19'/></svg>");
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_desc {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 19'><defs><style>.cls-1{fill:none;}</style></defs><polygon transform='translate(0,2)' points='1.37 9.4 8.63 9.4 5 15.7 1.37 9.4'/><path transform='translate(0,2)' d='M7.77,9.9,5,14.7,2.23,9.9H7.77m1.73-1H.5L5,16.7,9.5,8.9Z'/><rect class='cls-1' width='10' height='19'/></svg>");
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_asc_disabled {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 19'><defs><style>.cls-1{fill:none;}</style></defs><path d='M5,2.3,7.77,7.1H2.23L5,2.3m0-2L.5,8.1h9L5,.3Z'/><rect class='cls-1' width='10' height='19'/></svg>");
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead .sorting_desc_disabled {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 19'><defs><style>.cls-1{fill:none;}</style></defs><path transform='translate(0,2)' d='M7.77,9.9,5,14.7,2.23,9.9H7.77m1.73-1H.5L5,16.7,9.5,8.9Z'/><rect class='cls-1' width='10' height='19'/></svg>");
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable {
|
||||
background-color: white;
|
||||
border: 2px solid #ddd;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable thead th, [data-field="indexfield"] table.dataTable thead td {
|
||||
border-bottom: 2px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable tfoot th, [data-field="indexfield"] table.dataTable tfoot td {
|
||||
border-top: 2px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable tbody td {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] table.dataTable tbody td:last-child {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_filter {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_info,
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate {
|
||||
padding-top: 1em;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||
font-size: 1em;
|
||||
font-weight: 600;
|
||||
margin-left: 1em;
|
||||
cursor: pointer;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate .paginate_button:hover,
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate .paginate_button.current {
|
||||
color: #8dae28;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate .paginate_button.disabled {
|
||||
text-decoration: line-through;
|
||||
pointer-events: none;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_wrapper .dataTables_paginate .ellipsis {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_length select,
|
||||
[data-field="indexfield"] .dataTables_filter input[type="search"] {
|
||||
padding: .25em;
|
||||
font-size: 1em;
|
||||
line-height: 1.5em;
|
||||
font-weight: 400;
|
||||
border: 2px solid #ddd;
|
||||
background: #fff;
|
||||
-ms-appearance: none;
|
||||
appearance: none;
|
||||
border-radius: 0;
|
||||
min-height: 2em;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTables_length select:focus,
|
||||
[data-field="indexfield"] .dataTables_filter input[type="search"]:focus {
|
||||
outline: 0;
|
||||
border-color: #8dae28;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] .dataTable .btn:hover {
|
||||
color: #8dae28;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] td.no-padding-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
[data-field="indexfield"] td.center-cell {
|
||||
text-align: center;
|
||||
}
|
||||
345
site/OFF_plugins/kirby-index-field/fields/index/assets/js/datatables.min.js
vendored
Normal file
345
site/OFF_plugins/kirby-index-field/fields/index/assets/js/datatables.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,152 @@
|
|||
(function($) {
|
||||
|
||||
var Indexfield = function (el) {
|
||||
|
||||
var element = $(el);
|
||||
var table = element.find('table')
|
||||
var columns = table.data('indexfield-columns');
|
||||
var entriesapi = table.data('indexfield-entries');
|
||||
var rows = table.data('indexfield-rows');
|
||||
var order = table.data('indexfield-order');
|
||||
|
||||
var headers = Object.keys(columns).map(function (key) {
|
||||
if ($.isPlainObject(columns[key])) {
|
||||
return $('<th>' + columns[key].label + '</th>')
|
||||
} else {
|
||||
return $('<th>' + columns[key] + '</th>')
|
||||
}
|
||||
})
|
||||
|
||||
table.append(tableHead(headers, $('<thead></thead>')))
|
||||
table.append(tableHead(headers, $('<tfoot></tfoot>')))
|
||||
|
||||
var defs = columnDefs(columns)
|
||||
|
||||
var table = table.DataTable({
|
||||
columnDefs: defs,
|
||||
pageLength: rows,
|
||||
order: [[ 0, order ]],
|
||||
ajax: {
|
||||
url: entriesapi,
|
||||
dataSrc: function (json) {
|
||||
var formatted = Object.keys(json).map(function (k) {
|
||||
var i = json[k]
|
||||
var result = []
|
||||
|
||||
Object.keys(columns).forEach(function (key) {
|
||||
|
||||
/**
|
||||
* 1. Check for key under content object (page fields)
|
||||
* 2. Check for key under meta object (file fields)
|
||||
* 3. Use name as fallback for title on files
|
||||
* 4. Check for key under top level object
|
||||
* 5. Return empty string if no value
|
||||
*/
|
||||
|
||||
var item = i.content && i.content[key]
|
||||
? i.content[key]
|
||||
: i.meta && i.meta[key]
|
||||
? i.meta[key]
|
||||
: key === 'title' && !i.title && i.name
|
||||
? i.name
|
||||
: i[key]
|
||||
? i[key]
|
||||
: ''
|
||||
|
||||
result.push(item)
|
||||
})
|
||||
|
||||
return result.concat([editButton(i.panelurl)])
|
||||
})
|
||||
|
||||
return formatted
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// click row to edit
|
||||
table.on('click', 'tbody tr', function (e) {
|
||||
var $target = $(e.target)
|
||||
if (!$target.is('i') && !$target.is('a')) {
|
||||
var $edit = $(e.currentTarget).find('.structure-edit-button')
|
||||
if ($edit.length) $edit.get(0).click()
|
||||
}
|
||||
})
|
||||
|
||||
function editButton (editurl) {
|
||||
return ' \
|
||||
<a class="btn structure-edit-button" href="' + editurl + '"> \
|
||||
<i class="icon fa fa-pencil"></i> \
|
||||
</a> \
|
||||
'
|
||||
}
|
||||
|
||||
function tableHead (headers, $element) {
|
||||
var $row = $('<tr></tr>')
|
||||
headers.forEach(function ($header) {
|
||||
$row.append($header.clone())
|
||||
})
|
||||
|
||||
// edit col
|
||||
$row.append($('<th width="18"></th>'))
|
||||
|
||||
return $element.append($row);
|
||||
}
|
||||
|
||||
function columnDefs () {
|
||||
// column defs handle custom column widths and classnames
|
||||
var colCount = Object.keys(columns).length
|
||||
|
||||
var defs = [
|
||||
{ orderable: false, targets: [ colCount ] }
|
||||
]
|
||||
|
||||
Object.keys(columns).forEach(function (key, i) {
|
||||
if (columns[key].width) {
|
||||
defs.push({
|
||||
width: columns[key].width,
|
||||
targets: i
|
||||
})
|
||||
}
|
||||
if (columns[key].class) {
|
||||
defs.push({
|
||||
className: columns[key].class,
|
||||
targets: i
|
||||
})
|
||||
}
|
||||
if ($.isPlainObject(columns[key]) && columns[key].hasOwnProperty('visible')) {
|
||||
defs.push({
|
||||
visible: columns[key].visible,
|
||||
targets: i
|
||||
})
|
||||
}
|
||||
if ($.isPlainObject(columns[key]) && columns[key].hasOwnProperty('sort')) {
|
||||
defs.push({
|
||||
orderable: columns[key].sort,
|
||||
targets: i
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
return defs
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$.fn.indexfield = function () {
|
||||
|
||||
return this.each(function () {
|
||||
|
||||
if ($(this).data('indexfield')) {
|
||||
return $(this);
|
||||
} else {
|
||||
var indexfield = new Indexfield(this);
|
||||
$(this).data('indexfield', indexfield);
|
||||
return $(this);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
require __DIR__ . DS . 'options.php';
|
||||
|
||||
class IndexFieldController extends Kirby\Panel\Controllers\Field {
|
||||
|
||||
// get entries for the current table
|
||||
public function list_entries () {
|
||||
$field = $this->field();
|
||||
$data = Kirby\Panel\Form\IndexFieldOptions::build($field);
|
||||
if ($field->filter()) {
|
||||
$data = call_user_func($field->filter(), $data);
|
||||
}
|
||||
return response::json($data);
|
||||
}
|
||||
|
||||
}
|
||||
87
site/OFF_plugins/kirby-index-field/fields/index/index.php
Normal file
87
site/OFF_plugins/kirby-index-field/fields/index/index.php
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
|
||||
class IndexField extends BaseField {
|
||||
|
||||
static public $assets = [
|
||||
'css' => [
|
||||
'datatables.min.css',
|
||||
'main.css'
|
||||
],
|
||||
'js' => [
|
||||
'datatables.min.js',
|
||||
'main.js'
|
||||
]
|
||||
];
|
||||
|
||||
public function __construct () {
|
||||
$this->rows = 10;
|
||||
$this->order = 'asc';
|
||||
$this->type = 'index';
|
||||
$this->options = [];
|
||||
$this->icon = false;
|
||||
}
|
||||
|
||||
public function routes () {
|
||||
return array(
|
||||
array(
|
||||
'pattern' => 'list',
|
||||
'method' => 'get',
|
||||
'action' => 'list_entries'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function subpagelinks () {
|
||||
if (in_array($this->options, ['children', 'visibleChildren', 'invisibleChildren'])) {
|
||||
return <<<HTML
|
||||
<span class="hgroup-options shiv shiv-dark shiv-left">
|
||||
<span class="hgroup-option-right">
|
||||
<a href="{$this->page->url('subpages')}" title="Edit">
|
||||
<i class="icon icon-left fa fa-pencil"></i><span>Edit</span>
|
||||
</a>
|
||||
<a href="{$this->page->url('add')}" title="+" shortcut="+" data-modal="true">
|
||||
<i class="icon icon-left fa fa-plus-circle"></i><span>Add</span>
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
||||
HTML;
|
||||
}
|
||||
}
|
||||
|
||||
public function label () {
|
||||
if (!$this->label) return null;
|
||||
|
||||
$subpagelinks = '';
|
||||
if (isset($this->options) && $subpagelinks = $this->subpagelinks()) {
|
||||
if (!(isset($this->addedit) && !$this->addedit)) {
|
||||
$subpagelinks = $subpagelinks;
|
||||
}
|
||||
}
|
||||
|
||||
return <<<HTML
|
||||
<label class="label" for="{$this->id()}">
|
||||
<h2 class="hgroup hgroup-single-line hgroup-compressed cf">
|
||||
<span class="hgroup-title">{$this->i18n($this->label)}</span>
|
||||
{$subpagelinks}
|
||||
</h2>
|
||||
</label>
|
||||
HTML;
|
||||
}
|
||||
|
||||
public function columns () {
|
||||
return !empty($this->columns) ? $this->columns : [ 'title' => 'Title' ];
|
||||
}
|
||||
|
||||
public function content () {
|
||||
return tpl::load(__DIR__ . DS . 'template.php', array('field' => $this));
|
||||
}
|
||||
|
||||
public function url ($action) {
|
||||
return purl($this->model(), 'field/' . $this->name() . '/index/' . $action);
|
||||
}
|
||||
|
||||
public function validate () {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
198
site/OFF_plugins/kirby-index-field/fields/index/options.php
Normal file
198
site/OFF_plugins/kirby-index-field/fields/index/options.php
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
<?php
|
||||
|
||||
namespace Kirby\Panel\Form;
|
||||
|
||||
use Collection;
|
||||
use Str;
|
||||
use Remote;
|
||||
use V;
|
||||
|
||||
/**
|
||||
* Largely based on Kirby\Panel\Form\FieldOptions
|
||||
* Modified to only support query/method, and return collection object as array
|
||||
* Also add panel edit urls to the resulting array
|
||||
*/
|
||||
|
||||
class IndexFieldOptions {
|
||||
|
||||
public $field;
|
||||
public $activepage;
|
||||
public $options = array();
|
||||
|
||||
static public function build($field) {
|
||||
$obj = new static($field);
|
||||
return $obj->format();
|
||||
}
|
||||
|
||||
public function __construct($field) {
|
||||
|
||||
$this->field = $field;
|
||||
|
||||
if($this->field->options == 'query') {
|
||||
$this->options = $this->optionsFromQuery($this->field->query);
|
||||
} else {
|
||||
$this->options = $this->optionsFromPageMethod($this->field->page, $this->field->options);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function optionsFromPageMethod($page, $method) {
|
||||
// set active page (for use within format)
|
||||
$this->activepage = $page;
|
||||
|
||||
if($page && $items = $this->items($page, $method)) {
|
||||
return $items;
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function optionsFromQuery($query) {
|
||||
|
||||
// default query parameters
|
||||
$defaults = array(
|
||||
'page' => $this->field->page ? ($this->field->page->isSite() ? '/' : $this->field->page->id()) : '',
|
||||
'fetch' => 'children',
|
||||
'template' => false
|
||||
);
|
||||
|
||||
// sanitize the query
|
||||
if(!is_array($query)) {
|
||||
$query = array();
|
||||
}
|
||||
|
||||
// merge the default parameters with the actual query
|
||||
$query = array_merge($defaults, $query);
|
||||
|
||||
// dynamic page option
|
||||
// ../
|
||||
// ../../ etc.
|
||||
$page = $this->page($query['page']);
|
||||
$items = $this->items($page, $query['fetch']);
|
||||
|
||||
if($query['template']) {
|
||||
$items = $items->filter(function($item) use($query) {
|
||||
return in_array(str::lower($item->intendedTemplate()), array_map('str::lower', (array)$query['template']));
|
||||
});
|
||||
}
|
||||
|
||||
// set active page (for use within format)
|
||||
$this->activepage = $page;
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
public function page($uri) {
|
||||
|
||||
if(str::startsWith($uri, '../')) {
|
||||
if($currentPage = $this->field->page) {
|
||||
$path = $uri;
|
||||
while(str::startsWith($path, '../')) {
|
||||
if($parent = $currentPage->parent()) {
|
||||
$currentPage = $parent;
|
||||
} else {
|
||||
$currentPage = site();
|
||||
}
|
||||
$path = str::substr($path, 3);
|
||||
}
|
||||
if(!empty($path)) {
|
||||
$currentPage = $currentPage->find($path);
|
||||
}
|
||||
$page = $currentPage;
|
||||
} else {
|
||||
$page = null;
|
||||
}
|
||||
} else if($uri == '/') {
|
||||
$page = site();
|
||||
} else {
|
||||
$page = page($uri);
|
||||
}
|
||||
|
||||
return $page;
|
||||
|
||||
}
|
||||
|
||||
public function sort($options, $sort) {
|
||||
|
||||
if(empty($sort)) return $options;
|
||||
|
||||
switch(strtolower($sort)) {
|
||||
case 'asc':
|
||||
asort($options);
|
||||
break;
|
||||
case 'desc':
|
||||
arsort($options);
|
||||
break;
|
||||
}
|
||||
|
||||
return $options;
|
||||
|
||||
}
|
||||
|
||||
public function items($page, $method) {
|
||||
|
||||
if(!$page) return new Collection();
|
||||
|
||||
switch($method) {
|
||||
case 'visibleChildren':
|
||||
$items = $page->children()->published();
|
||||
break;
|
||||
case 'invisibleChildren':
|
||||
$items = $page->children()->invisible();
|
||||
break;
|
||||
case 'visibleGrandchildren':
|
||||
$items = $page->grandChildren()->published();
|
||||
break;
|
||||
case 'invisibleGrandchildren':
|
||||
$items = $page->grandChildren()->invisible();
|
||||
break;
|
||||
case 'siblings':
|
||||
$items = $page->siblings()->not($page);
|
||||
break;
|
||||
case 'visibleSiblings':
|
||||
$items = $page->siblings()->not($page)->published();
|
||||
break;
|
||||
case 'invisibleSiblings':
|
||||
$items = $page->siblings()->not($page)->invisible();
|
||||
break;
|
||||
case 'pages':
|
||||
$items = site()->index();
|
||||
$items = $items->sortBy('title', 'asc');
|
||||
break;
|
||||
case 'index':
|
||||
$items = $page->index();
|
||||
$items = $items->sortBy('title', 'asc');
|
||||
break;
|
||||
case 'children':
|
||||
case 'grandchildren':
|
||||
case 'files':
|
||||
case 'images':
|
||||
case 'documents':
|
||||
case 'videos':
|
||||
case 'audio':
|
||||
case 'code':
|
||||
case 'archives':
|
||||
$items = $page->{$method}();
|
||||
break;
|
||||
default:
|
||||
$items = new Collection();
|
||||
}
|
||||
|
||||
return $items;
|
||||
|
||||
}
|
||||
|
||||
public function format () {
|
||||
// add panel edit url to each item
|
||||
return array_map(function ($item) {
|
||||
if (isset($item['filename'])) {
|
||||
$item['panelurl'] = panel()->urls()->index() . '/pages/' . $this->activepage->uri() . '/file/' . $item['filename'] . '/edit';
|
||||
} else {
|
||||
$item['panelurl'] = panel()->urls()->index() . '/pages/' . $item['id'] . '/edit';
|
||||
}
|
||||
return $item;
|
||||
}, $this->options->toArray());
|
||||
}
|
||||
|
||||
}
|
||||
12
site/OFF_plugins/kirby-index-field/fields/index/template.php
Normal file
12
site/OFF_plugins/kirby-index-field/fields/index/template.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<div
|
||||
data-field="indexfield"
|
||||
>
|
||||
<table
|
||||
class="display"
|
||||
width="100%"
|
||||
data-indexfield-columns="<?php __(json_encode($field->columns())) ?>"
|
||||
data-indexfield-entries="<?php __($field->url('list')) ?>"
|
||||
data-indexfield-rows="<?php __($field->rows) ?>"
|
||||
data-indexfield-order="<?php __($field->order) ?>"
|
||||
></table>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue