Hotel Raxa - Advanced Booking System Implementation

🏨 Hotel Booking Enhancements:
- Implemented Eagle Booking Advanced Pricing add-on
- Added Booking.com-style rate management system
- Created professional calendar interface for pricing
- Integrated deals and discounts functionality

💰 Advanced Pricing Features:
- Dynamic pricing models (per room, per person, per adult)
- Base rates, adult rates, and child rates management
- Length of stay discounts and early bird deals
- Mobile rates and secret deals implementation
- Seasonal promotions and flash sales

📅 Availability Management:
- Real-time availability tracking
- Stop sell and restriction controls
- Closed to arrival/departure functionality
- Minimum/maximum stay requirements
- Automatic sold-out management

💳 Payment Integration:
- Maintained Redsys payment gateway integration
- Seamless integration with existing Eagle Booking
- No modifications to core Eagle Booking plugin

🛠️ Technical Implementation:
- Custom database tables for advanced pricing
- WordPress hooks and filters integration
- AJAX-powered admin interface
- Data migration from existing Eagle Booking
- Professional calendar view for revenue management

📊 Admin Interface:
- Booking.com-style management dashboard
- Visual rate and availability calendar
- Bulk operations for date ranges
- Statistics and analytics dashboard
- Modal dialogs for quick editing

🔧 Code Quality:
- WordPress coding standards compliance
- Secure database operations with prepared statements
- Proper input validation and sanitization
- Error handling and logging
- Responsive admin interface

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Hotel Raxa Dev
2025-07-11 07:43:22 +02:00
commit 5b1e2453c7
9816 changed files with 2784509 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
/*!
* CMB2 - v2.4.2 - 2018-06-09
* https://cmb2.io
* Copyright (c) 2018
* Licensed GPLv2+
*/
/*--------------------------------------------------------------
* CMB2 Display Styling
--------------------------------------------------------------*/
/* line 6, sass/partials/_display.scss */
.cmb2-colorpicker-swatch span {
display: inline-block;
width: 1em;
height: 1em;
border-radius: 1em;
float: right;
margin-top: 3px;
margin-left: 2px;
}
/* line 17, sass/partials/_display.scss */
.cmb2-code {
overflow: scroll;
}
/* line 21, sass/partials/_display.scss */
.cmb-image-display {
max-width: 100%;
height: auto;
}
/* line 26, sass/partials/_display.scss */
.cmb2-display-file-list li {
display: inline;
margin: 0 0 .5em .5em;
}
/* line 31, sass/partials/_display.scss */
.cmb2-oembed * {
max-width: 100%;
height: auto;
}
/*# sourceMappingURL=cmb2-display.css.map */

View File

@@ -0,0 +1,2 @@
/*! CMB2 - v2.4.2 - 2018-06-09 | https://cmb2.io | Copyright (c) 2018 CMB2 team | Licensed GPLv2 */
.cmb2-colorpicker-swatch span{display:inline-block;width:1em;height:1em;border-radius:1em;float:right;margin-top:3px;margin-left:2px}.cmb2-code{overflow:scroll}.cmb-image-display{max-width:100%;height:auto}.cmb2-display-file-list li{display:inline;margin:0 0 .5em .5em}.cmb2-oembed *{max-width:100%;height:auto}

View File

@@ -0,0 +1,45 @@
/*!
* CMB2 - v2.4.2 - 2018-06-09
* https://cmb2.io
* Copyright (c) 2018
* Licensed GPLv2+
*/
/*--------------------------------------------------------------
* CMB2 Display Styling
--------------------------------------------------------------*/
/* line 6, sass/partials/_display.scss */
.cmb2-colorpicker-swatch span {
display: inline-block;
width: 1em;
height: 1em;
border-radius: 1em;
float: left;
margin-top: 3px;
margin-right: 2px;
}
/* line 17, sass/partials/_display.scss */
.cmb2-code {
overflow: scroll;
}
/* line 21, sass/partials/_display.scss */
.cmb-image-display {
max-width: 100%;
height: auto;
}
/* line 26, sass/partials/_display.scss */
.cmb2-display-file-list li {
display: inline;
margin: 0 .5em .5em 0;
}
/* line 31, sass/partials/_display.scss */
.cmb2-oembed * {
max-width: 100%;
height: auto;
}
/*# sourceMappingURL=cmb2-display.css.map */

View File

@@ -0,0 +1,7 @@
{
"version": 3,
"mappings": "AAAA;;gEAEgE;;AAG/D,6BAAK;EACJ,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,YAAY,EAAE,GAAG;;;;AAInB,UAAW;EACV,QAAQ,EAAE,MAAM;;;;AAGjB,kBAAmB;EAClB,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;;;;AAGb,0BAA2B;EAC1B,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,aAAa;;;;AAGtB,cAAe;EACd,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI",
"sources": ["sass/partials/_display.scss"],
"names": [],
"file": "cmb2-display.css"
}

View File

@@ -0,0 +1,2 @@
/*! CMB2 - v2.4.2 - 2018-06-09 | https://cmb2.io | Copyright (c) 2018 CMB2 team | Licensed GPLv2 */
.cmb2-colorpicker-swatch span{display:inline-block;width:1em;height:1em;border-radius:1em;float:left;margin-top:3px;margin-right:2px}.cmb2-code{overflow:scroll}.cmb-image-display{max-width:100%;height:auto}.cmb2-display-file-list li{display:inline;margin:0 .5em .5em 0}.cmb2-oembed *{max-width:100%;height:auto}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden

View File

@@ -0,0 +1 @@
@import "partials/display";

View File

@@ -0,0 +1,14 @@
@import "partials/variables";
@import "partials/mixins";
@import "partials/main_wrap";
@import "partials/post_metaboxes";
@import "partials/context_metaboxes";
@import "partials/misc";
@import "partials/collapsible_ui";
@import "partials/jquery_ui";
/**
* CMB2 Frontend
*/
@import "partials/front";

View File

@@ -0,0 +1,12 @@
@import "partials/variables";
@import "partials/mixins";
@import "partials/main_wrap";
@import "partials/post_metaboxes";
@import "partials/context_metaboxes";
@import "partials/options-page";
@import "partials/new_term";
@import "partials/misc";
@import "partials/sidebar_placements";
@import "partials/collapsible_ui";
@import "partials/jquery_ui";

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden

View File

@@ -0,0 +1,56 @@
/*--------------------------------------------------------------
* Collapsible UI
--------------------------------------------------------------*/
.cmb2-metabox {
.cmbhandle {
color: $gray;
float: right;
width: 27px;
height: 30px;
cursor: pointer;
right: -1em;
position: relative;
&:before {
content: '\f142';
right: 12px;
font: normal 20px/1 'dashicons';
speak: none;
display: inline-block;
padding: 8px 10px;
top: 0;
position: relative;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-decoration: none !important;
}
}
.postbox.closed {
.cmbhandle {
&:before {
content: '\f140';
}
}
}
button.dashicons-before.dashicons-no-alt.cmb-remove-group-row {
-webkit-appearance: none !important;
background: none !important;
border: none !important;
position: absolute;
left: 0;
top: .5em;
line-height: 1em;
padding: 2px 6px 3px;
opacity: .5;
&:not([disabled]) {
cursor: pointer;
color: $dark-red;
opacity: 1;
&:hover {
color: $red;
}
}
}
}

View File

@@ -0,0 +1,107 @@
/*--------------------------------------------------------------
* Context Metaboxes
--------------------------------------------------------------*/
/* Metabox collapse arrow indicators */
.js .cmb2-postbox.context-box {
.toggle-indicator {
&:before {
content: "\f142";
display: inline-block;
font: normal 20px/1 dashicons;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-decoration: none !important;
}
}
&.closed {
.toggle-indicator {
&:before {
content: "\f140";
}
}
}
}
.cmb2-postbox.context-box {
margin-bottom: 10px;
&.context-before_permalink-box {
margin-top: 10px;
}
&.context-after_title-box {
margin-top: 10px;
}
&.context-after_editor-box {
margin-top: 20px;
margin-bottom: 0;
}
&.context-form_top-box {
margin-top: 10px;
.hndle {
font-size: 14px;
padding: 8px 12px;
margin: 0;
line-height: 1.4;
}
}
.hndle {
cursor: auto;
}
}
.cmb2-context-wrap {
margin-top: 10px;
&.cmb2-context-wrap-form_top {
margin-right: 300px;
width: auto;
}
&.cmb2-context-wrap-no-title {
.cmb2-metabox {
padding: 10px;
}
}
.cmb-th {
padding: 0 2% 0 0;
width: 18%;
}
.cmb-td {
width: 80%;
padding: 0;
}
.cmb-row {
margin-bottom: 10px;
&:last-of-type {
margin-bottom: 0;
}
}
}
/* one column on the post write/edit screen */
@media only screen and (max-width: 850px) {
.cmb2-context-wrap.cmb2-context-wrap-form_top {
margin-right: 0;
}
}

View File

@@ -0,0 +1,34 @@
/*--------------------------------------------------------------
* CMB2 Display Styling
--------------------------------------------------------------*/
.cmb2-colorpicker-swatch {
span {
display: inline-block;
width: 1em;
height: 1em;
border-radius: 1em;
float: left;
margin-top: 3px;
margin-right: 2px;
}
}
.cmb2-code {
overflow: scroll;
}
.cmb-image-display {
max-width: 100%;
height: auto;
}
.cmb2-display-file-list li {
display: inline;
margin: 0 .5em .5em 0;
}
.cmb2-oembed * {
max-width: 100%;
height: auto;
}

View File

@@ -0,0 +1,56 @@
/*--------------------------------------------------------------
* CMB2 Frontend
--------------------------------------------------------------*/
.closed .inside {
display: none;
}
.cmb-repeatable-grouping {
position: relative;
.cmb-group-title {
margin-left: -1em;
margin-right: -1em;
min-height: 1.5em;
}
h3 {
font-size: 14px;
padding: 8px 12px;
margin: 0;
line-height: 1.4;
}
}
.cmb-repeatable-group {
&.repeatable .cmb-group-title {
padding-left: 2.2em;
}
&.non-repeatable .cmb-group-title {
padding-left: 12px;
}
}
.cmb-type-group .cmb-row .cmbhandle {
right: 0;
position: absolute;
}
.cmb-spinner {
background: url(/wp-admin/images/spinner.gif) no-repeat;
-webkit-background-size: 20px 20px;
background-size: 20px 20px;
display: none;
float: right;
vertical-align: middle;
opacity: 0.7;
filter: alpha(opacity=70);
width: 20px;
height: 20px;
margin: 4px 10px 0;
}

View File

@@ -0,0 +1,457 @@
/*
* jQuery UI CSS Framework 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress"
* https://github.com/stuttter/wp-datepicker-styling
*
*/
* html .cmb2-element.ui-helper-clearfix {
height:1%;
}
$weekend: #f4f4f4;
$freshblue: #00a0d2;
$freshdark: #32373c;
$freshdarkblue: #0073aa;
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
padding: 0;
margin: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
background-color: #fff;
border: 1px solid #dfdfdf;
border-top: none;
-webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075);
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075);
min-width: 17em;
width: auto;
* {
padding: 0;
font-family: "Open Sans", sans-serif;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
table {
font-size: 13px;
margin: 0;
border: none;
border-collapse: collapse;
}
.ui-widget-header,
.ui-datepicker-header {
background-image: none;
border: none;
color: #fff;
font-weight: normal;
}
.ui-datepicker-header .ui-state-hover {
background: transparent;
border-color: transparent;
cursor: pointer;
}
.ui-datepicker-title {
margin: 0;
padding: 10px 0;
color: #fff;
font-size: 14px;
line-height: 14px;
text-align: center;
select {
margin-top: -8px;
margin-bottom: -8px;
}
}
.ui-datepicker-prev,
.ui-datepicker-next {
position: relative;
top: 0;
height: 34px;
width: 34px;
}
.ui-state-hover.ui-datepicker-prev,
.ui-state-hover.ui-datepicker-next {
border: none;
}
.ui-datepicker-prev,
.ui-datepicker-prev-hover {
left: 0;
}
.ui-datepicker-next,
.ui-datepicker-next-hover {
right: 0;
}
.ui-datepicker-next span,
.ui-datepicker-prev span {
display: none;
}
.ui-datepicker-prev {
float: left;
}
.ui-datepicker-next {
float: right;
}
.ui-datepicker-prev:before,
.ui-datepicker-next:before {
font: normal 20px/34px 'dashicons';
padding-left: 7px;
color: #fff;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 34px;
height: 34px;
}
.ui-datepicker-prev:before {
content: '\f341';
}
.ui-datepicker-next:before {
content: '\f345';
}
.ui-datepicker-prev-hover:before,
.ui-datepicker-next-hover:before {
opacity: 0.7;
}
select.ui-datepicker-month,
select.ui-datepicker-year {
width: 33%;
background: transparent;
border-color: transparent;
box-shadow: none;
color: #fff;
option {
color: #333;
}
}
thead {
color: #fff;
font-weight: 600;
th {
font-weight: normal;
}
}
th {
padding: 10px;
}
td {
padding: 0;
border: 1px solid $weekend;
}
td.ui-datepicker-other-month {
border: transparent;
}
td.ui-datepicker-week-end {
background-color: $weekend;
border: 1px solid $weekend;
&.ui-datepicker-today {
-webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1);
box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1);
}
}
td.ui-datepicker-today {
background-color: #f0f0c0;
}
td.ui-datepicker-current-day {
background: #bbdd88;
}
td .ui-state-default {
background: transparent;
border: none;
text-align: center;
text-decoration: none;
width: auto;
display: block;
padding: 5px 10px;
font-weight: normal;
color: #444;
}
td.ui-state-disabled .ui-state-default {
opacity: 0.5;
}
/* Default Color Scheme */
.ui-widget-header,
.ui-datepicker-header {
background: $freshblue;
}
thead {
background: $freshdark;
}
td .ui-state-hover, td .ui-state-active {
background: $freshdarkblue;
color: #fff;
}
.ui-timepicker-div {
font-size: 14px;
dl {
text-align: left;
padding: 0 .6em;
dt {
float: left;
clear:left;
padding: 0 0 0 5px;
}
dd {
margin: 0 10px 10px 40%;
select {
width: 100%;
}
}
}
+ .ui-datepicker-buttonpane {
padding: .6em;
text-align: left;
.button-primary, .button-secondary {
padding: 0 10px 1px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
margin: 0 .6em .4em .4em;
}
}
}
}
.admin-color-fresh {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: $freshblue;
}
thead {
background: $freshdark;
}
td .ui-state-hover {
background: $freshdarkblue;
color: #fff;
}
}
}
.admin-color-blue {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #52accc;
}
thead {
background: #4796b3;
}
// td .ui-state-hover {
// background: #096484;
// }
td {
.ui-state-hover, .ui-state-active {
background: #096484;
color: #fff;
}
&.ui-datepicker-today {
background: #eee;
}
}
}
}
.admin-color-coffee {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #59524c;
}
thead {
background: #46403c;
}
td .ui-state-hover {
background: #c7a589;
color: #fff;
}
}
}
.admin-color-ectoplasm {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #523f6d;
}
thead {
background: #413256;
}
td .ui-state-hover {
background: #a3b745;
color: #fff;
}
}
}
.admin-color-midnight {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #363b3f;
}
thead {
background: #26292c;
}
td .ui-state-hover {
background: #e14d43;
color: #fff;
}
}
}
.admin-color-ocean {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #738e96;
}
thead {
background: #627c83;
}
td .ui-state-hover {
background: #9ebaa0;
color: #fff;
}
}
}
.admin-color-sunrise {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header,
.ui-datepicker-header .ui-state-hover {
background: #cf4944;
}
th {
border-color: #be3631;
background: #be3631;
}
td .ui-state-hover {
background: #dd823b;
color: #fff;
}
}
}
.admin-color-light {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #e5e5e5;
}
select.ui-datepicker-month,
select.ui-datepicker-year {
color: #555;
}
thead {
background: #888;
}
.ui-datepicker-title,
td .ui-state-default,
.ui-datepicker-prev:before,
.ui-datepicker-next:before {
color: #555;
}
td {
.ui-state-hover, .ui-state-active {
background: #ccc;
}
&.ui-datepicker-today {
background: #eee;
}
}
}
}
.admin-color-bbp-evergreen {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #56b274;
}
thead {
background: #36533f;
}
td .ui-state-hover {
background: #446950;
color: #fff;
}
}
}
.admin-color-bbp-mint {
.cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker {
.ui-widget-header,
.ui-datepicker-header {
background: #4ca26a;
}
thead {
background: #4f6d59;
}
td .ui-state-hover {
background: #5fb37c;
color: #fff;
}
}
}

View File

@@ -0,0 +1,530 @@
/*--------------------------------------------------------------
* Main Wrap
--------------------------------------------------------------*/
.cmb2-wrap {
margin: 0;
input,
textarea {
font-size: $font-size;
max-width: 100%;
padding: 5px;
}
input[type=text] {
&.cmb2-oembed {
width: 100%;
}
}
textarea {
width: 500px;
&.cmb2-textarea-code {
font-family: $font-mono;
line-height: 16px;
}
}
input {
&.cmb2-text-small,
&.cmb2-timepicker {
width: 100px;
// margin-right: 15px
}
&.cmb2-text-money {
width: 90px;
// margin-right: 15px
}
&.cmb2-text-medium {
width: 230px;
// margin-right: 15px
}
&.cmb2-upload-file {
width: 65%;
}
&.ed_button {
padding: 2px 4px;
}
&:not([type="hidden"]) {
+ input,
+ .button-secondary,
+ select {
margin-left: 20px;
}
}
}
ul {
margin: 0;
}
li {
font-size: $font-size;
line-height: 16px;
margin: 1px 0 5px 0;
}
// .cmb-field-list .cmb-field-list {
// padding-top:5px;
// margin: 0;
// }
select {
font-size: $font-size;
margin-top: 3px;
}
input:focus,
textarea:focus {
background: $light-yellow;
}
input[type="radio"] {
margin: 0 5px 0 0;
padding: 0
}
input[type="checkbox"] {
margin: 0 5px 0 0;
padding: 0;
}
button,
.button-secondary {
white-space: nowrap;
}
.mceLayout {
border: 1px solid $light-gray !important;
}
.mceIframeContainer {
background: $white;
}
.meta_mce {
width: 97%;
textarea {
width: 100%;
}
}
// Color picker
.wp-color-result,
.wp-picker-input-wrap {
vertical-align: middle;
}
.wp-color-result,
.wp-picker-container {
margin: 0 10px 0 0;
}
.cmb-row {
margin: 0;
&:after {
content: '';
clear: both;
display: block;
width: 100%;
}
&.cmb-repeat .cmb2-metabox-description {
padding-top: 0;
padding-bottom: 1em;
}
}
}
.cmb2-metabox {
clear: both;
margin: 0;
> .cmb-row:first-of-type >,
.cmb-field-list > .cmb-row:first-of-type > {
.cmb-td,
.cmb-th {
border: 0;
}
}
}
.cmb-add-row {
margin: 1.8em 0 0;
}
.cmb-nested .cmb-td,
.cmb-repeatable-group .cmb-th,
.cmb-repeatable-group:first-of-type {
border: 0;
}
.cmb-row:last-of-type,
.cmb2-wrap .cmb-row:last-of-type,
.cmb-repeatable-group:last-of-type {
border-bottom: 0;
}
.cmb-repeatable-grouping {
border: 1px solid $light-gray;
padding: 0 1em;
&.cmb-row {
margin: 0 0 0.8em;
}
+ .cmb-repeatable-grouping {
}
}
.cmb-th {
color: $dark-gray;
float: left;
font-weight: 600;
line-height: 1.3;
padding: 20px 10px 20px 0;
vertical-align: top;
width: 200px;
@media (max-width: $mobile-break) {
@include fullth;
}
}
.cmb-td {
line-height: 1.3;
max-width: 100%;
padding: 15px 10px;
vertical-align: middle;
}
.cmb-type-title {
.cmb-td {
padding: 0;
}
}
.cmb-th label {
display: block;
padding: 5px 0;
}
.cmb-th + .cmb-td {
float: left;
}
.cmb-td .cmb-td {
padding-bottom: 1em;
}
.cmb-remove-row {
text-align: right;
}
.empty-row.hidden {
display: none;
}
// Repeatable fields styles
.cmb-repeat-table {
background-color: $almostwhite;
border: 1px solid darken($light-gray, 3%);
.cmb-row.cmb-repeat-row {
position: relative;
counter-increment: el;
margin: 0;
padding: 10px 10px 10px 50px;
border-bottom: none !important; // Sometime, we need !important :).
& + .cmb-repeat-row {
border-top: solid 1px $light-gray;
}
&.ui-sortable-helper {
outline: dashed 2px $light-gray !important; // Sometime, we need !important :).
}
&:before {
content: counter(el);
display: block;
top: 0;
left: 0;
position: absolute;
width: 35px;
height: 100%;
line-height: 35px;
cursor: move;
color: $gray;
text-align: center;
border-right: solid 1px $light-gray;
}
.cmb-td {
margin: 0;
padding: 0;
}
}
+ .cmb-add-row {
margin: 0;
&:before {
content: '';
width: 1px;
height: 1.6em;
display: block;
margin-left: 17px;
background-color: darken($light-gray, 5%);
}
}
.cmb-remove-row {
top: 7px;
right: 7px;
position: absolute;
width: auto;
margin-left: 0;
padding: 0 !important; // Sometime, we need !important :).
display: none;
> .cmb-remove-row-button {
font-size: 20px;
text-indent: -1000px;
overflow: hidden;
position: relative;
height: auto;
line-height: 1;
padding: 0 10px 0;
&:before {
@include pseudo-dashicons("\f335");
}
}
}
.cmb-repeat-row:hover .cmb-remove-row {
display: block;
}
}
.cmb-repeatable-group {
.cmb-th {
padding: 5px;
}
.cmb-group-title {
background-color: $light-gray;
padding: 8px 12px 8px 2.2em;
margin: 0 -1em;
min-height: 1.5em;
font-size: 14px;
line-height: 1.4;
h4 {
border: 0;
margin: 0;
font-size: 1.2em;
font-weight: 500;
padding: 0.5em 0.75em;
}
.cmb-th {
display: block;
width: 100%;
}
}
.cmb-group-description .cmb-th {
@include fullth;
}
.cmb-shift-rows {
font-size: 1em;
margin-right: 1em;
text-decoration: none;
.dashicons {
font-size: 1.5em;
height: 1.5em;
line-height: 1.2em;
width: 1em;
&.dashicons-arrow-down-alt2 {
line-height: 1.3em;
}
}
}
.cmb2-upload-button {
float: right;
}
}
p.cmb2-metabox-description {
color: $gray;
font-style: italic;
margin: 0;
padding-top: .5em;
}
span.cmb2-metabox-description {
color: $gray;
font-style: italic;
}
.cmb2-metabox-title {
margin: 0 0 5px 0;
padding: 5px 0 0 0;
font-size: 14px;
}
.cmb-inline ul {
padding: 4px 0 0 0;
}
.cmb-inline li {
display: inline-block;
padding-right: 18px;
}
.cmb-type-textarea-code pre {
margin: 0;
}
.cmb2-media-status {
.img-status {
clear: none;
display: inline-block;
vertical-align: middle;
margin-right: 10px;
width: auto;
img {
max-width: 350px;
height: auto;
}
}
.img-status img,
.embed-status {
background: $lightchecker;
border: 5px solid $white;
outline: 1px solid $light-gray;
box-shadow: inset 0 0 15px rgba( 0, 0, 0, 0.3 ), inset 0 0 0 1px rgba( 0, 0, 0, 0.05 );
background-image: linear-gradient(45deg, $darkchecker 25%, transparent 25%, transparent 75%, $darkchecker 75%, $darkchecker), linear-gradient(45deg, $darkchecker 25%, transparent 25%, transparent 75%, $darkchecker 75%, $darkchecker);
background-position: 0 0, 10px 10px;
background-size: 20px 20px;
border-radius: 2px;
-moz-border-radius: 2px;
margin: 15px 0 0 0;
}
.embed-status {
float: left;
max-width: 800px;
}
.img-status, .embed-status {
position: relative;
.cmb2-remove-file-button {
background: url(../images/ico-delete.png);
height: 16px;
left: -5px;
position: absolute;
text-indent: -9999px;
top: -5px;
width: 16px;
}
}
.img-status {
.cmb2-remove-file-button {
top: 10px;
}
}
.img-status img, .file-status > span {
cursor: pointer;
}
&.cmb-attach-list {
.img-status img, .file-status > span {
cursor: move;
}
}
}
.cmb-type-file-list .cmb2-media-status .img-status {
clear: none;
vertical-align: middle;
width: auto;
margin-right: 10px;
margin-bottom: 10px;
margin-top: 0;
}
.cmb-attach-list li {
clear: both;
display: inline-block;
width: 100%;
margin-top: 5px;
margin-bottom: 10px;
img {
float: left;
margin-right: 10px;
}
}
.cmb2-remove-wrapper {
margin: 0;
}
.child-cmb2 .cmb-th {
text-align: left;
}
.cmb2-indented-hierarchy {
padding-left: 1.5em;
}
@media (max-width: $mobile-break) {
.cmb-th,
.cmb-td,
.cmb-th + .cmb-td {
display: block;
float: none;
width: 100%;
}
}

View File

@@ -0,0 +1,29 @@
/*--------------------------------------------------------------
* Misc.
--------------------------------------------------------------*/
#poststuff .cmb-repeatable-group h2 {
margin: 0;
}
.edit-tags-php,
.profile-php,
.user-edit-php {
.cmb2-metabox-title {
font-size: 1.4em;
}
}
.cmb2-postbox, .cmb2-no-box-wrap {
.cmb-spinner {
float: left;
display: none;
}
}
.cmb-spinner {
display: none;
&.is-active {
display: block;
}
}

View File

@@ -0,0 +1,51 @@
//--------------------------------------------------------------
// Mixins
//--------------------------------------------------------------
@mixin fullth() {
font-size: 1.2em;
@include _fullth;
}
@mixin fullth_side() {
@include _fullth;
label {
font-size: $font-size;
line-height: 1.4em;
}
}
@mixin _fullth() {
display: block;
float: none;
padding-bottom: 1em;
text-align: left;
width: 100%;
label {
display: block;
margin-top: 0;
margin-bottom: 0.5em;
}
}
@mixin pseudo-dashicons( $glyph: "\f333" ) {
content: $glyph;
font-family: 'Dashicons';
speak: none;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
margin: 0;
text-indent: 0;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: center;
}

View File

@@ -0,0 +1,31 @@
/*--------------------------------------------------------------
* New-Term Page
--------------------------------------------------------------*/
#addtag {
.cmb-th {
float: none;
width: auto;
padding: 20px 0 0;
}
.cmb-td {
padding: 0;
}
.cmb-th + .cmb-td {
float: none;
}
select {
max-width: 100%;
}
.cmb2-metabox {
padding-bottom: 20px;
}
.cmb-row li label {
display: inline;
}
}

View File

@@ -0,0 +1,71 @@
/*--------------------------------------------------------------
* Options page
--------------------------------------------------------------*/
.cmb2-options-page {
max-width: 1200px;
&.wrap > h2 {
margin-bottom: 1em;
}
.cmb2-metabox > .cmb-row {
padding: 1em;
margin-top: -1px;
background: $white;
border: 1px solid $light-gray;
box-shadow: 0 1px 1px rgba(black, 0.05);
> .cmb-th {
padding: 0;
font-weight: initial;
}
> .cmb-th + .cmb-td {
float: none;
padding: 0 0 0 1em;
margin-left: 200px;
@media (max-width: $mobile-break) {
padding: 0;
margin-left: 0;
}
}
}
// Title field style.
.cmb2-wrap .cmb-type-title {
margin-top: 1em;
padding: 0.6em 1em;
background-color: $almostwhite;
.cmb2-metabox-title {
font-size: 12px;
margin-top: 0;
margin-bottom: 0;
text-transform: uppercase;
}
.cmb2-metabox-description {
padding-top: 0.25em;
}
}
.cmb-repeatable-group {
.cmb-group-description .cmb-th {
padding: 0 0 0.8em 0;
}
.cmb-group-name {
font-size: 16px;
margin-top: 0;
margin-bottom: 0;
}
.cmb-th > .cmb2-metabox-description {
font-weight: 400;
padding-bottom: 0 !important;
}
}
}

View File

@@ -0,0 +1,83 @@
/*--------------------------------------------------------------
* Post Metaboxes
--------------------------------------------------------------*/
#poststuff .cmb-group-title {
margin-left: -1em;
margin-right: -1em;
min-height: 1.5em;
}
#poststuff .repeatable .cmb-group-title {
padding-left: 2.2em;
}
.cmb2-postbox, .cmb-type-group {
.cmb2-wrap {
margin: 0;
> .cmb-field-list > .cmb-row {
padding: 1.8em 0;
}
input[type=text] {
&.cmb2-oembed {
width: 100%;
}
}
}
.cmb-row {
padding: 0 0 1.8em;
margin: 0 0 0.8em;
.cmbhandle {
right: -1em;
position: relative;
}
}
.cmb-repeatable-grouping {
padding: 0 1em;
max-width: 100%;
min-width: 1px !important;
}
.cmb-repeatable-group > .cmb-row {
padding-bottom: 0;
}
.cmb-th {
width: 18%;
padding: 0 2% 0 0;
// text-align: right;
}
.cmb-td {
margin-bottom: 0;
padding: 0;
line-height: 1.3;
}
.cmb-th + .cmb-td {
width: 80%;
float: right;
}
.cmb-row:not(:last-of-type),
.cmb-repeatable-group:not(:last-of-type) {
border-bottom: 1px solid $light-gray;
@media (max-width: $mobile-break) {
border-bottom: 0;
}
}
.cmb-repeat-group-field,
.cmb-remove-field-row {
padding-top: 1.8em;
}
}

View File

@@ -0,0 +1,146 @@
/*--------------------------------------------------------------
* Sidebar Placement Adjustments
--------------------------------------------------------------*/
.inner-sidebar,
#side-sortables {
.cmb2-wrap {
> .cmb-field-list > .cmb-row {
padding: 1.4em 0;
}
input {
&[type=text]:not( .wp-color-picker ) {
width: 100%;
}
+ input:not( .wp-picker-clear ), + select {
margin-left: 0;
margin-top: 1em;
display: block;
}
&.cmb2-text-money {
max-width: 70%;
+ .cmb2-metabox-description {
display: block;
}
}
}
label {
display: block;
font-weight: 700;
padding: 0 0 5px;
}
}
textarea {
max-width: 99%;
}
.cmb-repeatable-group {
border-bottom: 1px solid $light-gray;
}
.cmb-type-group > .cmb-td > .cmb-repeatable-group {
border-bottom: 0;
margin-bottom: -1.4em;
}
.cmb-th,
.cmb-td:not(.cmb-remove-row),
.cmb-th + .cmb-td {
width: 100%;
display: block;
float: none;
}
.closed .inside {
display: none;
}
.cmb-th {
@include fullth_side;
padding-left: 0;
padding-right: 0;
}
.cmb-group-description {
.cmb-th {
padding-top: 0;
}
.cmb2-metabox-description {
padding: 0;
}
}
.cmb-group-title {
// padding-bottom: 0;
.cmb-th {
padding: 0;
}
}
.cmb-repeatable-grouping {
+ .cmb-repeatable-grouping {
margin-top: 1em;
}
}
.cmb2-media-status {
.img-status,
.embed-status {
img {
max-width: 90%;
// width: auto;
height: auto;
}
}
}
.cmb2-list label {
display: inline;
font-weight: normal;
}
.cmb2-metabox-description {
display: block;
padding: 7px 0 0;
}
.cmb-type-checkbox {
.cmb-td label,
.cmb2-metabox-description {
font-weight: normal;
display: inline;
}
}
.cmb-row .cmb2-metabox-description {
padding-bottom: 1.8em;
}
.cmb2-metabox-title {
font-size: 1.2em;
font-style: italic;
}
.cmb-remove-row {
clear: both;
padding-top: 12px;
padding-bottom: 0;
}
.cmb2-upload-button {
clear: both;
margin-top: 12px;
}
}

View File

@@ -0,0 +1,25 @@
//--------------------------------------------------------------
// Variables
//--------------------------------------------------------------
// Mobile break-point
$mobile-break : 450px;
// Fonts
$font-sans : sans-serif;
$font-serif : Georgia, Times, "Times New Roman", serif;
$font-mono : "Courier 10 Pitch", Courier, monospace;
$font-size : 14px;
// Colors
$dark-gray : #222222;
$gray : #aaaaaa;
$light-gray : #e9e9e9;
$lightchecker : #eee;
$darkchecker : #d0d0d0;
$blue : #0063ce;
$light-yellow : #fffff8;
$white : #ffffff;
$almostwhite : #fafafa;
$red : #f00;
$dark-red : #a00;

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden