Changeset 3394506
- Timestamp:
- 11/12/2025 04:28:20 PM (3 months ago)
- Location:
- anyapi/trunk
- Files:
-
- 17 edited
-
anyapi.php (modified) (2 diffs)
-
assets/css/style.css (modified) (4 diffs)
-
assets/css/style.css.map (modified) (1 diff)
-
assets/js/admin.js (modified) (1 diff)
-
assets/js/admin.min.js (modified) (1 diff)
-
assets/js/layout-tab.js (modified) (2 diffs)
-
assets/js/layout-tab.min.js (modified) (20 diffs)
-
assets/js/settings-api.js (modified) (5 diffs)
-
assets/js/settings-api.min.js (modified) (1 diff)
-
inc/Admin.php (modified) (4 diffs)
-
inc/Anyapi.php (modified) (1 diff)
-
inc/Controller/OrderIntegrations.php (modified) (5 diffs)
-
inc/Views/Dashboard.php (modified) (6 diffs)
-
inc/Views/OrderApi.php (modified) (9 diffs)
-
inc/Views/RestApi.php (modified) (6 diffs)
-
readme.txt (modified) (2 diffs)
-
templates/dashboard.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
anyapi/trunk/anyapi.php
r3376733 r3394506 8 8 * Plugin Name: AnyAPI 9 9 * Plugin URI: https://www.anyapiplugin.com 10 * Description: No- code REST API integration for WooCommerce. Connect orders to any API with webhooks, API logs, and easy setup in minutes11 * Version: 1.1. 210 * Description: No-Code WooCommerce REST API Integration. Connect Orders to any APIs with Automations, JSON Filter, API logs, and Easy Setup in Minutes. 11 * Version: 1.1.3 12 12 * Author: JC 13 13 * Author URI: https://www.anyapiplugin.com … … 22 22 if ( ! function_exists( 'add_action' ) ) { exit; } 23 23 24 define( 'ANYAPI_VERSION', '1.1. 2' );24 define( 'ANYAPI_VERSION', '1.1.3' ); 25 25 define( 'ANYAPI_ASSETS', '1.0.0' ); 26 26 -
anyapi/trunk/assets/css/style.css
r3376733 r3394506 173 173 background-color: #f34a4a; 174 174 } 175 .tag--cap { 176 color: #f34a4a; 177 background-color: #11111a; 178 } 175 179 .tag--disable { 176 180 color: #fff; … … 248 252 color: #f34a4a; 249 253 } 254 .btn--full.small { 255 font-size: 0.9rem; 256 border-radius: 26px; 257 font-weight: 500; 258 } 250 259 .btn--outline:link, 251 260 .btn--outline:visited { … … 464 473 transition: all 0.4s; 465 474 } 475 .notice-action-button { 476 float: right; 477 margin-top: -66px; 478 } 479 .action-tags { 480 margin-bottom: 1.2rem; 481 display: flex; 482 flex-wrap: wrap; 483 gap: 0.8rem 0.2rem; 484 } 485 .tag-item { 486 flex: 0 0 calc(50% - 0.1em); 487 display: flex; 488 flex-direction: column; 489 box-sizing: border-box; 490 } 491 .tag-wrapper { 492 display: flex; 493 align-items: center; 494 gap: 0.4rem; 495 margin-bottom: 0.3rem; 496 } 497 .tag-wrapper .tag { 498 flex-shrink: 0; 499 white-space: nowrap; 500 } 501 .tag-wrapper .image-container { 502 flex-shrink: 0; 503 } 504 .tag-wrapper .image-container img { 505 display: block; 506 } 507 .tag-desc { 508 margin: 0; 509 font-size: 0.85rem; 510 color: #666; 511 line-height: 1.4; 512 word-break: break-word; 513 } 466 514 .api-input-form { 467 515 display: grid; … … 587 635 text-align: right; 588 636 } 589 .image-container { 637 .api-label { 638 display: flex; 639 align-items: center; 640 gap: 6px; 641 font-weight: 500; 642 cursor: default; 643 } 644 .image-wrapper { 590 645 position: relative; 591 display: inline-block; 646 display: inline-flex; 647 align-items: center; 592 648 } 593 649 .image-info { 594 650 display: none; 595 background-color: #fff; 596 padding: 1px; 651 position: absolute; 652 left: 100%; 653 top: 50%; 654 transform: translateY(-50%); 655 margin-left: 10px; 656 background: #fff; 657 padding: 8px 12px; 597 658 border: 1px solid #ccc; 598 659 border-radius: 5px; 599 } 600 .image-container:hover .image-info { 660 font-size: 13px; 661 white-space: nowrap; 662 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12); 663 z-index: 10; 664 } 665 .image-info::before { 666 content: ""; 667 position: absolute; 668 top: 50%; 669 left: -16px; 670 transform: translateY(-50%); 671 border: 8px solid transparent; 672 border-right-color: #ccc; 673 } 674 .image-info::after { 675 content: ""; 676 position: absolute; 677 top: 50%; 678 left: -14px; 679 transform: translateY(-50%); 680 border: 7px solid transparent; 681 border-right-color: #fff; 682 z-index: 1; 683 } 684 .image-wrapper:hover .image-info { 601 685 display: block; 602 686 } -
anyapi/trunk/assets/css/style.css.map
r3376733 r3394506 1 {"version":3,"sources":["modules/tabs.scss","modules/button.scss","modules/checkbox.scss","modules/table.scss","modules/form.scss","modules/features.scss","modules/pretty.scss","modules/general.scss","modules/desert.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":[".nav-tabs,\n.nav-tabs-tools,\n.nav-tabs-filter,\n.nav-tabs-api,\n.nav-tabs-apiauth {\n float: left;\n width: 100%;\n margin: 0;\n list-style-type: none;\n border-bottom: 1px solid transparent;\n\n > li {\n float: left;\n margin-bottom: -1px;\n\n > a {\n margin-right: 2px;\n line-height: 1.5;\n padding: 10px;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n float: left;\n text-decoration: none;\n\n &:hover {\n border-color: #eee #eee #ddd;\n }\n }\n\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border-color: transparent;\n }\n }\n }\n}\n\n.tab-content > .tab-pane,\n.tab-content-tools > .tab-pane-tools {\n float: left;\n width: 98%;\n display: none;\n\n &.active {\n display: block;\n padding: 10px;\n background-color: #fff;\n box-shadow: 0 5px 4px -2px rgba(0, 0, 0, 0.15);\n }\n}\n\n#top-btn {\n display: none;\n position: fixed;\n bottom: 20px;\n right: 30px;\n z-index: 99;\n font-size: 18px;\n border: none;\n outline: none;\n background-color: purple;\n color: white;\n cursor: pointer;\n padding: 15px;\n border-radius: 4px;\n}\n\n#top-btn:hover {\n background-color: #555;\n}\n","/**************************/\n/* Tags */\n/**************************/\n\n.tag {\n display: inline-block;\n text-decoration: none;\n padding: 0.4rem 0.8rem; /* 0.4 0.8*/\n font-size: 0.9rem; /* 1.2 */\n color: none;\n border-radius: 100px;\n font-weight: 300;\n}\n\n.tag.small {\n font-size: 0.8rem;\n border-radius: 3px;\n font-weight: 300;\n}\n\n.tag.medium {\n font-size: 0.9rem;\n border-radius: 15px;\n font-weight: 300;\n}\n\n.tag.large {\n font-size: 1.4rem;\n border-radius: 15px;\n font-weight: 400;\n}\n\n.tag.step {\n font-size: 1.2rem;\n border-radius: 50px;\n font-weight: 500;\n}\n\n.tag.uppercase {\n text-transform: uppercase;\n}\n\n/* Basic */\n.tag--woo {\n color: #eee;\n background-color: rgb(108, 59, 164);\n}\n\n.tag--woorev {\n color: rgb(108, 59, 164);\n background-color: #eee;\n}\n\n.tag--wooadv {\n color: #eee;\n background-color: rgb(218, 179, 254);\n}\n\n.tag--auth {\n color: #333;\n background-color: rgb(246, 169, 14);\n}\n\n.tag--attr {\n color: #333;\n background-color: rgb(206, 206, 206);\n}\n\n.tag--large {\n color: #333;\n background-color: #eee;\n}\n\n/* Attributes */\n.tag--order {\n color: #eee;\n background-color: rgb(132, 95, 132);\n}\n\n.tag--billing {\n color: #333;\n background-color: rgb(206, 206, 206);\n}\n\n.tag--fields {\n color: lightblue;\n background-color: rgb(25, 25, 25);\n}\n\n/* Features */\n.tag--codefree {\n // background-color: rgb(249, 222, 0);\n color: #fff;\n background-color: #11111a;\n}\n\n.tag--secure {\n color: #fff;\n background-color: rgb(10, 151, 218);\n}\n\n.tag--notice {\n // background-color: #dd6413;\n color: #fff;\n background-color: #4a4af3;\n}\n\n.tag--new {\n color: #11111a;\n background-color: #f34a4a;\n}\n\n/* License */\n.tag--disable {\n color: #fff;\n background-color: rgb(231, 0, 0);\n}\n\n.tag--enable {\n color: #fff;\n background-color: #43aa8b;\n // background-color: rgb(48, 154, 62);\n}\n\n/**************************/\n/* Dynamic Tags */\n/**************************/\n\n.tag.available:hover {\n cursor: pointer;\n opacity: 0.7;\n}\n\n.tag.selected {\n cursor: pointer;\n opacity: 0.7;\n}\n\n.tag.disabled {\n color: white;\n background-color: #d2d2d2;\n /* text-decoration: line-through; */\n pointer-events: none;\n}\n\n.tag.pro {\n color: #333;\n background-color: #fdf2e9;\n cursor: not-allowed;\n}\n\n/* Step */\n.step-tag {\n color: #eee;\n background-color: #ccc;\n cursor: pointer;\n text-transform: uppercase;\n}\n\n.step-tag.current {\n background-color: rgb(108, 59, 164);\n}\n\n.order-api-step > .step-pane {\n display: none;\n &.active {\n display: block;\n }\n}\n\n.notice-tag {\n color: #eee;\n background-color: #ccc;\n}\n\n/**************************/\n/* Buttons */\n/**************************/\n\n.btn,\n.btn:link,\n.btn:visited {\n display: inline-block;\n text-decoration: none;\n font-size: 1rem; /* 2 */\n font-weight: 400;\n padding: 0.8rem 1.6rem; /* 1.6 3.2 */\n border-radius: 9px; /* 9 */\n\n /* default color*/\n // background-color: #f34a4a;\n color: #11111a;\n\n /* Only necessary for .btn */\n border: none;\n cursor: pointer;\n font-family: inherit;\n\n /* Put transition on original \"state\" */\n /* transition: background-color 0.3s; */\n transition: all 0.3s;\n}\n\n.btn.medium {\n font-size: 0.9rem;\n font-weight: 400;\n padding: 0.6rem 1rem;\n}\n\n.btn--full:link,\n.btn--full:visited {\n // background-color: #e67e22;\n // color: #fff;\n background-color: #f34a4a;\n color: #11111a;\n}\n\n.btn--full:hover,\n.btn--full:active {\n // background-color: #cf711f;\n background-color: #11111a;\n color: #f34a4a;\n}\n\n.btn--outline:link,\n.btn--outline:visited {\n // background-color: #fff;\n background-color: #2f2f48;\n // color: #555;\n}\n\n.btn--outline:hover,\n.btn--outline:active {\n // background-color: #fdf2e9;\n background-color: #11111a;\n color: #fff;\n\n // border: 3px solid #fff;\n /* Trick to add border inside */\n // box-shadow: inset 0 0 0 3px #fff;\n}\n\n/* Prev Next Save */\n.next-btn,\n.prev-btn,\n.save-btn,\n.back-btn,\n.save-settings {\n text-align: right;\n padding: 1px;\n}\n\n.btn-next,\n.btn-prev,\n.btn-save,\n.btn-back {\n float: right;\n}\n","/* $on: #009eea; */\n$on: rgb(108, 59, 164);\n$bg: #d9cb9e;\n$off: #8c8c8c;\n\n@mixin center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n@mixin userSelect($value) {\n -webkit-touch-callout: $value;\n -webkit-user-select: $value;\n -khtml-user-select: $value;\n -moz-user-select: $value;\n -ms-user-select: $value;\n user-select: $value;\n}\n\n@mixin ui-toggle($height, $on, $off) {\n margin: 0;\n padding: 0;\n\n input[type=\"checkbox\"] {\n display: none;\n\n &:checked + label {\n border-color: $on;\n background: $on;\n box-shadow: inset 0 0 0 #{$height / 2} $on;\n\n > div {\n margin-left: $height;\n }\n }\n }\n\n label {\n transition: all 200ms ease;\n display: inline-block;\n position: relative;\n\n @include userSelect(none);\n\n background: $off;\n box-shadow: inset 0 0 0 0 $on;\n border: 2px solid $off;\n border-radius: $height + 2;\n width: $height * 2;\n height: $height;\n\n div {\n transition: all 200ms ease;\n background: #ffffff;\n width: $height;\n height: $height;\n border-radius: $height / 2;\n }\n\n &:hover,\n & > div:hover {\n cursor: pointer;\n }\n }\n}\n\ndiv.ui-toggle {\n @include ui-toggle(16px, $on, $off);\n\n &.mb-10 {\n margin-bottom: 10px;\n }\n}\n",".api-table {\n width: 100%;\n border-spacing: 5px;\n text-align: left;\n\n &,\n & th,\n & td {\n border: 1px solid #ccc;\n border-collapse: collapse;\n padding: 10px;\n }\n\n & th {\n background-color: #f5f5f5;\n }\n}\n\n.tag-table {\n width: 100%;\n border-spacing: 5px;\n text-align: left;\n\n &,\n & th,\n & td {\n border: 0.8px solid #ccc;\n border-collapse: collapse;\n padding: 5px;\n }\n\n & th {\n background-color: none;\n }\n}\n\n.text-center {\n text-align: center;\n}\n",".inline-block {\n display: inline-block;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-right {\n text-align: right;\n}\n\n.w-50 {\n width: 49%;\n}\n\n.inline {\n display: inline-block;\n}\n\n.meta-label {\n display: inline-block;\n font-weight: bold;\n margin-bottom: 5px;\n}\n\n.meta-container {\n display: block;\n margin-top: 20px;\n}\n","/**************************/\n/* Feature CSS */\n/**************************/\n\n.section-features {\n padding: 9.6rem 0;\n}\n\n.feature {\n box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n border-radius: 11px;\n overflow: hidden;\n transition: all 0.4s;\n}\n\n/* card action */\n.feature:hover {\n transform: translateY(-1.2rem);\n box-shadow: 0 3.2rem 6.4rem rgba(0, 0, 0, 0.06);\n}\n\n/* content backgrpund */\n.feature-content {\n font-size: 0.9rem; /* 1.8 */\n line-height: 1.8;\n align-items: center;\n padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n /* 3.2rem 4.8rem 4.8rem 4.8rem;*/\n}\n\n.feature-cards {\n padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n}\n\n.feature-tags {\n margin-bottom: 1.2rem; /* 1.2rem */\n display: flex;\n gap: 0.4rem;\n}\n\n.feature-dashboard-tags {\n margin-top: 2.2rem; /* 1.2rem */\n margin-bottom: 2.2rem; /* 1.2rem */\n display: flex;\n gap: 0.4rem;\n}\n\n.feature-hidden {\n margin-bottom: 1.2rem;\n gap: 0.4rem;\n}\n\n.feature-name {\n font-size: 1.2rem; /* 2.4 */\n color: #333;\n font-weight: 600;\n margin-bottom: 1.6rem; /* 3.2 */\n}\n\n.feature-info {\n font-size: 0.9rem; /*1.8 */\n line-height: 1.6; /*1.8 */\n}\n\n.feature-attributes {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 0.2rem; /* 2 */\n}\n\n.feature-attribute {\n font-size: 1rem; /* 1.8 */\n display: flex;\n align-items: center;\n gap: 0.8rem; /* 1.6 */\n}\n\n.feature-icon {\n height: 2.4rem;\n width: 2.4rem;\n color: #e67e22;\n}\n\n.feature-img {\n width: 100%;\n}\n\n.call-to-action {\n text-align: center;\n margin-top: 2.4rem; /* 4.8 */\n}\n\n.all-features {\n text-align: center;\n font-size: 1rem; /* 1.8 */\n}\n\n/* pagination */\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #555;\n background-color: #fae5d3;\n border: 2px solid rgb(255, 255, 255);\n border-radius: 11px;\n}\n\n/**************************/\n/* Card CSS no movement */\n/**************************/\n\n.card-content {\n box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n border-radius: 11px;\n overflow: hidden;\n transition: all 0.4s;\n}\n\n/**************************/\n/* API input form */\n/**************************/\n\n.api-input-form {\n display: grid;\n /* grid-template-columns: 0.5fr 1fr; */\n border-radius: 11px;\n overflow: hidden;\n text-align: left;\n /* padding: 1.8rem 0rem 1.8rem 1.8rem; */\n padding: 0px 0px 18px 0px;\n /* font-size: 1.8rem; */\n font-size: 18px;\n line-height: 1.8;\n}\n\n.api-input-form label {\n /* display: block; */\n /* font-size: 1.6rem; */\n font-size: 16px;\n font-weight: 500;\n /*margin-bottom: 1.2rem; */\n margin-bottom: 12px;\n margin-top: 12px;\n}\n\n.api-input-form input,\n.api-input-form textarea,\n.api-input-form select {\n width: 60%;\n /* padding: 0.7rem;\n font-size: 1.5rem; */\n padding: 7px;\n font-size: 15px;\n font-family: inherit;\n color: inherit;\n border-radius: 9px;\n background-color: #fdf2e9;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.api-input-form input::placeholder,\n.api-input-form textarea::placeholder {\n color: #aaa;\n}\n\n.api-input-form *:focus {\n outline: none;\n /* box-shadow: 0 0 0 0.8rem rgba(253, 242, 233, 0.5); */\n box-shadow: 0 0 0 16px rgba(253, 242, 233, 0.5);\n}\n\n/**************************/\n/* Advance mode */\n/**************************/\n\n.adv-box-container {\n display: flex;\n flex-direction: row;\n padding: 0px 0px;\n}\n\n.adv-box {\n width: 350px;\n}\n\n.adv-pre {\n width: 650px;\n}\n\n.adv-box-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 10px 10px;\n}\n\n.adv-box-title {\n font-weight: bold;\n font-size: 0.9rem; /* 1.8 */\n margin: 0;\n}\n\n.adv-box-table-container {\n height: 250px;\n margin-bottom: 15px;\n overflow: auto;\n border: 1px solid #bbb;\n border-radius: 5px;\n}\n\n/* Idle */\n.adv-minus-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n}\n\n/* Delete button */\n.adv-box-btn {\n border-radius: 5px;\n transition: background-color 0.15s ease-in-out;\n user-select: none;\n border: none;\n cursor: pointer;\n font-size: 14px;\n height: 35px;\n}\n\n.adv-box-btn.circle {\n border-radius: 50px;\n}\n\n/* Button icon */\n.adv-box-btn-icon {\n height: 3px;\n width: 12px;\n border-radius: 5px;\n background-color: white;\n}\n\n.adv-box-btn-delete {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #e53c4a;\n height: 22px;\n width: 22px;\n}\n\n.adv-box-btn-delete:hover {\n background-color: #db3240;\n}\n\n.adv-box-btn-delete:active {\n background-color: #cc2331;\n}\n\n.adv-box td .adv-box-btn-delete {\n margin: auto;\n}\n\n.adv-box-footer {\n display: flex;\n flex-direction: column;\n}\n\n.adv-box-total {\n flex: 1;\n font-size: 14px;\n font-weight: bold;\n margin: 0 10px 15px;\n padding: 0;\n text-align: right;\n}\n\n/**************************/\n/* Tooltips*/\n/**************************/\n\n.image-container {\n position: relative;\n display: inline-block;\n}\n\n.image-info {\n display: none;\n /* position: absolute; */\n background-color: #fff;\n padding: 1px;\n border: 1px solid #ccc;\n border-radius: 5px;\n}\n\n.image-container:hover .image-info {\n display: block;\n}\n\n/**************************/\n/* Idle */\n/**************************/\n\n.aa-legend {\n list-style-type: none;\n margin: 17rem 0rem 0rem 5rem;\n}\n\n.aa-legend-item {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n padding: 0;\n}\n\n.aa-legend-description {\n margin: 0 0 0 10px;\n}\n\n.aa-legend-bullet {\n width: 22px;\n height: 22px;\n border-radius: 5px 5px 0 0;\n}\n\n.color1 {\n color: white;\n background-color: #277da1;\n}\n.color2 {\n color: white;\n background-color: #43aa8b;\n}\n.color3 {\n color: white;\n background-color: #f8961e;\n}\n","/* Scroll control */\n.scroll {\n /* background-color: #e9ecef;*/\n padding: 0px;\n /* How elements that don't fit into container appear */\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 40px;\n}\n/* Api Tools Section*/\n.pretty {\n background-color: #adb5bd;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.pretty.sendapi {\n height: 555px;\n}\n\n.pretty.filterapi {\n height: 222px;\n width: 777px;\n}\n\n.pretty.manageapi {\n height: 444px;\n}\n\n/* Order Api Section*/\n.pretty.api {\n height: 333px;\n}\n\n.pretty.advance {\n height: 250px;\n color: lightblue;\n}\n\n.pretty.props {\n height: 333px;\n align-items: left;\n}\n/* Hide pretty */\n.json {\n display: none;\n}\n",".container {\n /* 1140px */\n max-width: 80rem;\n /* max-width: 80rem;\n /*120rem*/\n padding: 0 3.2rem;\n margin: 0 auto;\n}\n\n.grid {\n display: grid;\n column-gap: 2.2rem; /* 6.4 */\n row-gap: 9.6rem;\n /* margin-bottom: 9.6rem; */\n}\n\n/*\n.grid:not(:last-child) {\n margin-bottom: 9.6rem;\n}\n*/\n.grid--2-cols {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.grid--3-cols {\n grid-template-columns: repeat(3, 1fr);\n}\n\n.grid--4-cols {\n grid-template-columns: repeat(4, 1fr);\n}\n\n.grid--5-cols {\n grid-template-columns: repeat(5, 1fr);\n}\n\n.grid--center-v {\n align-items: center;\n}\n\n/**************************/\n/* HEADER */\n/**************************/\n\n.header {\n background: #fff;\n box-sizing: border-box;\n padding: 0;\n position: fixed;\n width: calc(100% - 160px);\n top: 32px;\n z-index: 1001;\n}\n\n.header-title {\n padding: 1.2rem 0rem 1.2rem 0rem;\n}\n\n/**************************/\n/* General */\n/**************************/\n\n.heading-primary,\n.heading-secondary,\n.heading-tertiary {\n font-weight: 700;\n color: #333;\n /* color: #45260a; */\n /* color: #343a40; */\n letter-spacing: -0.5px;\n}\n\n.heading-primary {\n font-size: 5.2rem;\n line-height: 1.05;\n margin-bottom: 3.2rem;\n}\n\n.heading-secondary {\n font-size: 4.4rem;\n line-height: 1.2;\n margin-bottom: 9.6rem;\n}\n\n.heading-tertiary {\n font-size: 3rem;\n line-height: 1.2;\n margin-bottom: 3.2rem;\n}\n\n.subheading {\n display: block;\n font-size: 1.6rem;\n font-weight: 500;\n color: #cf711f;\n text-transform: uppercase;\n margin-bottom: 1.6rem;\n letter-spacing: 0.75px;\n}\n\n.list {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 1.6rem;\n}\n\n.list-item {\n font-size: 1.8rem;\n display: flex;\n align-items: center;\n gap: 1.6rem;\n}\n\n.list-icon {\n width: 3rem;\n height: 3rem;\n color: #e67e22;\n}\n\n*:focus {\n outline: none;\n /* outline: 4px dotted #e67e22; */\n /* outline-offset: 8px; */\n box-shadow: 0 0 0 0.8rem rgba(230, 125, 34, 0.5);\n}\n\n/* HELPER/SETTINGS CLASSES */\n.margin-right-sm {\n margin-right: 1.6rem !important;\n}\n\n.margin-bottom-md {\n margin-bottom: 4.8rem !important;\n}\n\n.center-text {\n text-align: center;\n}\n\nstrong {\n font-weight: 500;\n}\n\n/**************************/\n/* SECTION */\n/**************************/\n\n.section-pricing {\n padding: 9.6rem 0;\n}\n\n.pricing-plan {\n border-radius: 11px;\n\n width: 75%;\n}\n\n.pricing-plan--starter {\n justify-self: end;\n border: 2px solid #fdf2e9;\n padding: 4.6rem;\n}\n\n.pricing-plan--complete {\n background-color: #fdf2e9;\n padding: 4.8rem;\n position: relative;\n overflow: hidden;\n}\n\n.pricing-plan--complete::after {\n content: \"Best value\";\n position: absolute;\n top: 6%;\n right: -18%;\n\n text-transform: uppercase;\n font-size: 1.4rem;\n font-weight: 700;\n color: #333;\n background-color: #ffd43b;\n padding: 0.8rem 8rem;\n transform: rotate(45deg);\n}\n\n.plan-header {\n text-align: center;\n margin-bottom: 4.8rem;\n}\n\n.plan-name {\n color: #cf711f;\n font-weight: 600;\n font-size: 2rem;\n text-transform: uppercase;\n letter-spacing: 0.75;\n margin-bottom: 3.2rem;\n}\n\n.plan-price {\n font-size: 6.2rem;\n font-weight: 600;\n color: #333;\n margin-bottom: 1.6rem;\n}\n\n.plan-price span {\n font-size: 3rem;\n font-weight: 500;\n margin-right: 0.8rem;\n}\n\n.plan-text {\n font-size: 1.6rem;\n line-height: 1.6;\n color: #6f6f6f;\n}\n\n.plan-sing-up {\n text-align: center;\n margin-top: 4.8rem;\n}\n\n.plan-details {\n font-size: 1.6rem;\n line-height: 1.6;\n text-align: center;\n}\n\n.feature-icon {\n color: #e67e22;\n height: 3.2rem;\n width: 3.2rem;\n background-color: #fdf2e9;\n margin-bottom: 3.2rem;\n padding: 1.6rem;\n border-radius: 50%;\n}\n\n.feature-title {\n font-size: 2.4rem;\n color: #333;\n font-weight: 700;\n margin-bottom: 1.6rem;\n}\n\n.feature-text {\n font-size: 1.8rem;\n line-height: 1.8;\n}\n","/* desert scheme ported from vim to google prettify */\r\npre.prettyprint {\r\n display: block;\r\n background-color: #333;\r\n}\r\npre .nocode {\r\n background-color: none;\r\n color: #000;\r\n}\r\npre .str {\r\n color: #ffa0a0;\r\n} /* string - pink */\r\npre .kwd {\r\n color: #f0e68c;\r\n font-weight: bold;\r\n}\r\npre .com {\r\n color: #87ceeb;\r\n} /* comment - skyblue */\r\npre .typ {\r\n color: #98fb98;\r\n} /* type - lightgreen */\r\npre .lit {\r\n color: #cd5c5c;\r\n} /* literal - darkred */\r\npre .pun {\r\n color: #fff;\r\n} /* punctuation */\r\npre .pln {\r\n color: #fff;\r\n} /* plaintext */\r\npre .tag {\r\n color: #f0e68c;\r\n font-weight: bold;\r\n} /* html/xml tag - lightyellow */\r\npre .atn {\r\n color: #bdb76b;\r\n font-weight: bold;\r\n} /* attribute name - khaki */\r\npre .atv {\r\n color: #ffa0a0;\r\n} /* attribute value - pink */\r\npre .dec {\r\n color: #98fb98;\r\n} /* decimal - lightgreen */\r\n\r\n/* Specify class=linenums on a pre to get line numbering */\r\nol.linenums {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n color: #aeaeae;\r\n} /* IE indents via margin-left */\r\nli.L0,\r\nli.L1,\r\nli.L2,\r\nli.L3,\r\nli.L5,\r\nli.L6,\r\nli.L7,\r\nli.L8 {\r\n list-style-type: none;\r\n}\r\n/* Alternate shading for lines */\r\nli.L1,\r\nli.L3,\r\nli.L5,\r\nli.L7,\r\nli.L9 {\r\n}\r\n\r\n@media print {\r\n pre.prettyprint {\r\n background-color: none;\r\n }\r\n pre .str,\r\n code .str {\r\n color: #060;\r\n }\r\n pre .kwd,\r\n code .kwd {\r\n color: #006;\r\n font-weight: bold;\r\n }\r\n pre .com,\r\n code .com {\r\n color: #600;\r\n font-style: italic;\r\n }\r\n pre .typ,\r\n code .typ {\r\n color: #404;\r\n font-weight: bold;\r\n }\r\n pre .lit,\r\n code .lit {\r\n color: #044;\r\n }\r\n pre .pun,\r\n code .pun {\r\n color: #440;\r\n }\r\n pre .pln,\r\n code .pln {\r\n color: #000;\r\n }\r\n pre .tag,\r\n code .tag {\r\n color: #006;\r\n font-weight: bold;\r\n }\r\n pre .atn,\r\n code .atn {\r\n color: #404;\r\n }\r\n pre .atv,\r\n code .atv {\r\n color: #060;\r\n }\r\n}\r\n"]}1 {"version":3,"sources":["modules/tabs.scss","modules/button.scss","modules/checkbox.scss","modules/table.scss","modules/form.scss","modules/features.scss","modules/pretty.scss","modules/general.scss","modules/desert.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":[".nav-tabs,\n.nav-tabs-tools,\n.nav-tabs-filter,\n.nav-tabs-api,\n.nav-tabs-apiauth {\n float: left;\n width: 100%;\n margin: 0;\n list-style-type: none;\n border-bottom: 1px solid transparent;\n\n > li {\n float: left;\n margin-bottom: -1px;\n\n > a {\n margin-right: 2px;\n line-height: 1.5;\n padding: 10px;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n float: left;\n text-decoration: none;\n\n &:hover {\n border-color: #eee #eee #ddd;\n }\n }\n\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border-color: transparent;\n }\n }\n }\n}\n\n.tab-content > .tab-pane,\n.tab-content-tools > .tab-pane-tools {\n float: left;\n width: 98%;\n display: none;\n\n &.active {\n display: block;\n padding: 10px;\n background-color: #fff;\n box-shadow: 0 5px 4px -2px rgba(0, 0, 0, 0.15);\n }\n}\n\n#top-btn {\n display: none;\n position: fixed;\n bottom: 20px;\n right: 30px;\n z-index: 99;\n font-size: 18px;\n border: none;\n outline: none;\n background-color: purple;\n color: white;\n cursor: pointer;\n padding: 15px;\n border-radius: 4px;\n}\n\n#top-btn:hover {\n background-color: #555;\n}\n","/**************************/\n/* Tags */\n/**************************/\n\n.tag {\n display: inline-block;\n text-decoration: none;\n padding: 0.4rem 0.8rem; /* 0.4 0.8*/\n font-size: 0.9rem; /* 1.2 */\n color: none;\n border-radius: 100px;\n font-weight: 300;\n}\n\n.tag.small {\n font-size: 0.8rem;\n border-radius: 3px;\n font-weight: 300;\n}\n\n.tag.medium {\n font-size: 0.9rem;\n border-radius: 15px;\n font-weight: 300;\n}\n\n.tag.large {\n font-size: 1.4rem;\n border-radius: 15px;\n font-weight: 400;\n}\n\n.tag.step {\n font-size: 1.2rem;\n border-radius: 50px;\n font-weight: 500;\n}\n\n.tag.uppercase {\n text-transform: uppercase;\n}\n\n/* Basic */\n.tag--woo {\n color: #eee;\n background-color: rgb(108, 59, 164);\n}\n\n.tag--woorev {\n color: rgb(108, 59, 164);\n background-color: #eee;\n}\n\n.tag--wooadv {\n color: #eee;\n background-color: rgb(218, 179, 254);\n}\n\n.tag--auth {\n color: #333;\n background-color: rgb(246, 169, 14);\n}\n\n.tag--attr {\n color: #333;\n background-color: rgb(206, 206, 206);\n}\n\n.tag--large {\n color: #333;\n background-color: #eee;\n}\n\n/* Attributes */\n.tag--order {\n color: #eee;\n background-color: rgb(132, 95, 132);\n}\n\n.tag--billing {\n color: #333;\n background-color: rgb(206, 206, 206);\n}\n\n.tag--fields {\n color: lightblue;\n background-color: rgb(25, 25, 25);\n}\n\n/* Features */\n.tag--codefree {\n // background-color: rgb(249, 222, 0);\n color: #fff;\n background-color: #11111a;\n}\n\n.tag--secure {\n color: #fff;\n background-color: rgb(10, 151, 218);\n}\n\n.tag--notice {\n // background-color: #dd6413;\n color: #fff;\n background-color: #4a4af3;\n}\n\n.tag--new {\n color: #11111a;\n background-color: #f34a4a;\n}\n\n.tag--cap {\n color: #f34a4a;\n background-color: #11111a;\n}\n\n/* License */\n.tag--disable {\n color: #fff;\n background-color: rgb(231, 0, 0);\n}\n\n.tag--enable {\n color: #fff;\n background-color: #43aa8b;\n // background-color: rgb(48, 154, 62);\n}\n\n/**************************/\n/* Dynamic Tags */\n/**************************/\n\n.tag.available:hover {\n cursor: pointer;\n opacity: 0.7;\n}\n\n.tag.selected {\n cursor: pointer;\n opacity: 0.7;\n}\n\n.tag.disabled {\n color: white;\n background-color: #d2d2d2;\n /* text-decoration: line-through; */\n pointer-events: none;\n}\n\n.tag.pro {\n color: #333;\n background-color: #fdf2e9;\n cursor: not-allowed;\n}\n\n/* Step */\n.step-tag {\n color: #eee;\n background-color: #ccc;\n cursor: pointer;\n text-transform: uppercase;\n}\n\n.step-tag.current {\n background-color: rgb(108, 59, 164);\n}\n\n.order-api-step > .step-pane {\n display: none;\n &.active {\n display: block;\n }\n}\n\n.notice-tag {\n color: #eee;\n background-color: #ccc;\n}\n\n/**************************/\n/* Buttons */\n/**************************/\n\n.btn,\n.btn:link,\n.btn:visited {\n display: inline-block;\n text-decoration: none;\n font-size: 1rem; /* 2 */\n font-weight: 400;\n padding: 0.8rem 1.6rem; /* 1.6 3.2 */\n border-radius: 9px; /* 9 */\n\n /* default color*/\n // background-color: #f34a4a;\n color: #11111a;\n\n /* Only necessary for .btn */\n border: none;\n cursor: pointer;\n font-family: inherit;\n\n /* Put transition on original \"state\" */\n /* transition: background-color 0.3s; */\n transition: all 0.3s;\n}\n\n.btn.medium {\n font-size: 0.9rem;\n font-weight: 400;\n padding: 0.6rem 1rem;\n}\n\n.btn--full:link,\n.btn--full:visited {\n // background-color: #e67e22;\n // color: #fff;\n background-color: #f34a4a;\n color: #11111a;\n}\n\n.btn--full:hover,\n.btn--full:active {\n // background-color: #cf711f;\n background-color: #11111a;\n color: #f34a4a;\n}\n\n.btn--full.small {\n font-size: 0.9rem;\n border-radius: 26px;\n font-weight: 500;\n}\n\n.btn--outline:link,\n.btn--outline:visited {\n // background-color: #fff;\n background-color: #2f2f48;\n // color: #555;\n}\n\n.btn--outline:hover,\n.btn--outline:active {\n // background-color: #fdf2e9;\n background-color: #11111a;\n color: #fff;\n\n // border: 3px solid #fff;\n /* Trick to add border inside */\n // box-shadow: inset 0 0 0 3px #fff;\n}\n\n/* Prev Next Save */\n.next-btn,\n.prev-btn,\n.save-btn,\n.back-btn,\n.save-settings {\n text-align: right;\n padding: 1px;\n}\n\n.btn-next,\n.btn-prev,\n.btn-save,\n.btn-back {\n float: right;\n}\n","/* $on: #009eea; */\n$on: rgb(108, 59, 164);\n$bg: #d9cb9e;\n$off: #8c8c8c;\n\n@mixin center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n@mixin userSelect($value) {\n -webkit-touch-callout: $value;\n -webkit-user-select: $value;\n -khtml-user-select: $value;\n -moz-user-select: $value;\n -ms-user-select: $value;\n user-select: $value;\n}\n\n@mixin ui-toggle($height, $on, $off) {\n margin: 0;\n padding: 0;\n\n input[type=\"checkbox\"] {\n display: none;\n\n &:checked + label {\n border-color: $on;\n background: $on;\n box-shadow: inset 0 0 0 #{$height / 2} $on;\n\n > div {\n margin-left: $height;\n }\n }\n }\n\n label {\n transition: all 200ms ease;\n display: inline-block;\n position: relative;\n\n @include userSelect(none);\n\n background: $off;\n box-shadow: inset 0 0 0 0 $on;\n border: 2px solid $off;\n border-radius: $height + 2;\n width: $height * 2;\n height: $height;\n\n div {\n transition: all 200ms ease;\n background: #ffffff;\n width: $height;\n height: $height;\n border-radius: $height / 2;\n }\n\n &:hover,\n & > div:hover {\n cursor: pointer;\n }\n }\n}\n\ndiv.ui-toggle {\n @include ui-toggle(16px, $on, $off);\n\n &.mb-10 {\n margin-bottom: 10px;\n }\n}\n",".api-table {\n width: 100%;\n border-spacing: 5px;\n text-align: left;\n\n &,\n & th,\n & td {\n border: 1px solid #ccc;\n border-collapse: collapse;\n padding: 10px;\n }\n\n & th {\n background-color: #f5f5f5;\n }\n}\n\n.tag-table {\n width: 100%;\n border-spacing: 5px;\n text-align: left;\n\n &,\n & th,\n & td {\n border: 0.8px solid #ccc;\n border-collapse: collapse;\n padding: 5px;\n }\n\n & th {\n background-color: none;\n }\n}\n\n.text-center {\n text-align: center;\n}\n",".inline-block {\n display: inline-block;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-right {\n text-align: right;\n}\n\n.w-50 {\n width: 49%;\n}\n\n.inline {\n display: inline-block;\n}\n\n.meta-label {\n display: inline-block;\n font-weight: bold;\n margin-bottom: 5px;\n}\n\n.meta-container {\n display: block;\n margin-top: 20px;\n}\n","/**************************/\n/* Feature CSS */\n/**************************/\n\n.section-features {\n padding: 9.6rem 0;\n}\n\n.feature {\n box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n border-radius: 11px;\n overflow: hidden;\n transition: all 0.4s;\n}\n\n/* card action */\n.feature:hover {\n transform: translateY(-1.2rem);\n box-shadow: 0 3.2rem 6.4rem rgba(0, 0, 0, 0.06);\n}\n\n/* content backgrpund */\n.feature-content {\n font-size: 0.9rem; /* 1.8 */\n line-height: 1.8;\n align-items: center;\n padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n /* 3.2rem 4.8rem 4.8rem 4.8rem;*/\n}\n\n.feature-cards {\n padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n}\n\n.feature-tags {\n margin-bottom: 1.2rem; /* 1.2rem */\n display: flex;\n gap: 0.4rem;\n}\n\n.feature-dashboard-tags {\n margin-top: 2.2rem; /* 1.2rem */\n margin-bottom: 2.2rem; /* 1.2rem */\n display: flex;\n gap: 0.4rem;\n}\n\n.feature-hidden {\n margin-bottom: 1.2rem;\n gap: 0.4rem;\n}\n\n.feature-name {\n font-size: 1.2rem; /* 2.4 */\n color: #333;\n font-weight: 600;\n margin-bottom: 1.6rem; /* 3.2 */\n}\n\n.feature-info {\n font-size: 0.9rem; /*1.8 */\n line-height: 1.6; /*1.8 */\n}\n\n.feature-attributes {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 0.2rem; /* 2 */\n}\n\n.feature-attribute {\n font-size: 1rem; /* 1.8 */\n display: flex;\n align-items: center;\n gap: 0.8rem; /* 1.6 */\n}\n\n.feature-icon {\n height: 2.4rem;\n width: 2.4rem;\n color: #e67e22;\n}\n\n.feature-img {\n width: 100%;\n}\n\n.call-to-action {\n text-align: center;\n margin-top: 2.4rem; /* 4.8 */\n}\n\n.all-features {\n text-align: center;\n font-size: 1rem; /* 1.8 */\n}\n\n/* pagination */\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #555;\n background-color: #fae5d3;\n border: 2px solid rgb(255, 255, 255);\n border-radius: 11px;\n}\n\n/**************************/\n/* Card CSS no movement */\n/**************************/\n\n.card-content {\n box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n border-radius: 11px;\n overflow: hidden;\n transition: all 0.4s;\n}\n\n/**************************/\n/* Admin Notice */\n/**************************/\n\n.notice-action-button {\n float: right;\n margin-top: -66px;\n}\n\n/**************************/\n/* Order API */\n/**************************/\n\n/* action span */\n.action-tags {\n margin-bottom: 1.2rem;\n display: flex;\n flex-wrap: wrap;\n gap: 0.8rem 0.2rem;\n}\n\n.tag-item {\n flex: 0 0 calc(50% - 0.1em);\n display: flex;\n // align-items: center;\n // gap: 0.4rem;\n // box-sizing: border-box;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n.tag-wrapper {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n margin-bottom: 0.3rem;\n}\n\n.tag-wrapper .tag {\n flex-shrink: 0;\n white-space: nowrap;\n}\n\n.tag-wrapper .image-container {\n flex-shrink: 0;\n}\n\n.tag-wrapper .image-container img {\n display: block;\n}\n\n.tag-desc {\n margin: 0;\n font-size: 0.85rem;\n color: #666;\n line-height: 1.4;\n word-break: break-word;\n}\n\n/**************************/\n/* API input form */\n/**************************/\n\n.api-input-form {\n display: grid;\n /* grid-template-columns: 0.5fr 1fr; */\n border-radius: 11px;\n overflow: hidden;\n text-align: left;\n /* padding: 1.8rem 0rem 1.8rem 1.8rem; */\n padding: 0px 0px 18px 0px;\n /* font-size: 1.8rem; */\n font-size: 18px;\n line-height: 1.8;\n}\n\n.api-input-form label {\n /* display: block; */\n /* font-size: 1.6rem; */\n font-size: 16px;\n font-weight: 500;\n /*margin-bottom: 1.2rem; */\n margin-bottom: 12px;\n margin-top: 12px;\n}\n\n.api-input-form input,\n.api-input-form textarea,\n.api-input-form select {\n width: 60%;\n /* padding: 0.7rem;\n font-size: 1.5rem; */\n padding: 7px;\n font-size: 15px;\n font-family: inherit;\n color: inherit;\n border-radius: 9px;\n background-color: #fdf2e9;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.api-input-form input::placeholder,\n.api-input-form textarea::placeholder {\n color: #aaa;\n}\n\n.api-input-form *:focus {\n outline: none;\n /* box-shadow: 0 0 0 0.8rem rgba(253, 242, 233, 0.5); */\n box-shadow: 0 0 0 16px rgba(253, 242, 233, 0.5);\n}\n\n/**************************/\n/* Advance mode */\n/**************************/\n\n.adv-box-container {\n display: flex;\n flex-direction: row;\n padding: 0px 0px;\n}\n\n.adv-box {\n width: 350px;\n}\n\n.adv-pre {\n width: 650px;\n}\n\n.adv-box-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 10px 10px;\n}\n\n.adv-box-title {\n font-weight: bold;\n font-size: 0.9rem; /* 1.8 */\n margin: 0;\n}\n\n.adv-box-table-container {\n height: 250px;\n margin-bottom: 15px;\n overflow: auto;\n border: 1px solid #bbb;\n border-radius: 5px;\n}\n\n/* Idle */\n.adv-minus-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n}\n\n/* Delete button */\n.adv-box-btn {\n border-radius: 5px;\n transition: background-color 0.15s ease-in-out;\n user-select: none;\n border: none;\n cursor: pointer;\n font-size: 14px;\n height: 35px;\n}\n\n.adv-box-btn.circle {\n border-radius: 50px;\n}\n\n/* Button icon */\n.adv-box-btn-icon {\n height: 3px;\n width: 12px;\n border-radius: 5px;\n background-color: white;\n}\n\n.adv-box-btn-delete {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #e53c4a;\n height: 22px;\n width: 22px;\n}\n\n.adv-box-btn-delete:hover {\n background-color: #db3240;\n}\n\n.adv-box-btn-delete:active {\n background-color: #cc2331;\n}\n\n.adv-box td .adv-box-btn-delete {\n margin: auto;\n}\n\n.adv-box-footer {\n display: flex;\n flex-direction: column;\n}\n\n.adv-box-total {\n flex: 1;\n font-size: 14px;\n font-weight: bold;\n margin: 0 10px 15px;\n padding: 0;\n text-align: right;\n}\n\n/**************************/\n/* Tooltips*/\n/**************************/\n\n// .image-container {\n// position: relative;\n// display: inline-block;\n// }\n\n// .image-info {\n// display: none;\n// /* position: absolute; */\n// position: absolute;\n// background-color: #fff;\n// padding: 1px;\n// border: 1px solid #ccc;\n// border-radius: 5px;\n// }\n\n// .image-container:hover .image-info {\n// display: block;\n// }\n\n.api-label {\n display: flex;\n align-items: center; // 文字與圖片垂直置中\n gap: 6px; // 文字與圖片之間的間距\n font-weight: 500;\n cursor: default;\n}\n\n/* 圖片 + info 的容器 */\n.image-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.image-info {\n display: none;\n position: absolute;\n left: 100%; // 貼在圖片右側\n top: 50%;\n transform: translateY(-50%);\n margin-left: 10px; // 留出箭頭空間\n background: #fff;\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 5px;\n font-size: 13px;\n white-space: nowrap;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n z-index: 10;\n\n /* 小箭頭(左側指向圖片) */\n &::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: -16px; // 箭頭寬度\n transform: translateY(-50%);\n border: 8px solid transparent;\n border-right-color: #ccc; // 外框箭頭(與邊框同色)\n }\n\n /* 內層白色箭頭(蓋掉邊框,讓看起來乾淨) */\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: -14px; // 比外箭頭內縮 1px\n transform: translateY(-50%);\n border: 7px solid transparent;\n border-right-color: #fff; // 填滿背景色\n z-index: 1;\n }\n}\n\n/* Hover 時顯示 */\n.image-wrapper:hover .image-info {\n display: block;\n}\n\n/**************************/\n/* Idle */\n/**************************/\n\n.aa-legend {\n list-style-type: none;\n margin: 17rem 0rem 0rem 5rem;\n}\n\n.aa-legend-item {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n padding: 0;\n}\n\n.aa-legend-description {\n margin: 0 0 0 10px;\n}\n\n.aa-legend-bullet {\n width: 22px;\n height: 22px;\n border-radius: 5px 5px 0 0;\n}\n\n.color1 {\n color: white;\n background-color: #277da1;\n}\n.color2 {\n color: white;\n background-color: #43aa8b;\n}\n.color3 {\n color: white;\n background-color: #f8961e;\n}\n","/* Scroll control */\n.scroll {\n /* background-color: #e9ecef;*/\n padding: 0px;\n /* How elements that don't fit into container appear */\n overflow: auto;\n display: flex;\n flex-direction: column;\n gap: 40px;\n}\n/* Api Tools Section*/\n.pretty {\n background-color: #adb5bd;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.pretty.sendapi {\n height: 555px;\n}\n\n.pretty.filterapi {\n height: 222px;\n width: 777px;\n}\n\n.pretty.manageapi {\n height: 444px;\n}\n\n/* Order Api Section*/\n.pretty.api {\n height: 333px;\n}\n\n.pretty.advance {\n height: 250px;\n color: lightblue;\n}\n\n.pretty.props {\n height: 333px;\n align-items: left;\n}\n/* Hide pretty */\n.json {\n display: none;\n}\n",".container {\n /* 1140px */\n max-width: 80rem;\n /* max-width: 80rem;\n /*120rem*/\n padding: 0 3.2rem;\n margin: 0 auto;\n}\n\n.grid {\n display: grid;\n column-gap: 2.2rem; /* 6.4 */\n row-gap: 9.6rem;\n /* margin-bottom: 9.6rem; */\n}\n\n/*\n.grid:not(:last-child) {\n margin-bottom: 9.6rem;\n}\n*/\n.grid--2-cols {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.grid--3-cols {\n grid-template-columns: repeat(3, 1fr);\n}\n\n.grid--4-cols {\n grid-template-columns: repeat(4, 1fr);\n}\n\n.grid--5-cols {\n grid-template-columns: repeat(5, 1fr);\n}\n\n.grid--center-v {\n align-items: center;\n}\n\n/**************************/\n/* HEADER */\n/**************************/\n\n.header {\n background: #fff;\n box-sizing: border-box;\n padding: 0;\n position: fixed;\n width: calc(100% - 160px);\n top: 32px;\n z-index: 1001;\n}\n\n.header-title {\n padding: 1.2rem 0rem 1.2rem 0rem;\n}\n\n/**************************/\n/* General */\n/**************************/\n\n.heading-primary,\n.heading-secondary,\n.heading-tertiary {\n font-weight: 700;\n color: #333;\n /* color: #45260a; */\n /* color: #343a40; */\n letter-spacing: -0.5px;\n}\n\n.heading-primary {\n font-size: 5.2rem;\n line-height: 1.05;\n margin-bottom: 3.2rem;\n}\n\n.heading-secondary {\n font-size: 4.4rem;\n line-height: 1.2;\n margin-bottom: 9.6rem;\n}\n\n.heading-tertiary {\n font-size: 3rem;\n line-height: 1.2;\n margin-bottom: 3.2rem;\n}\n\n.subheading {\n display: block;\n font-size: 1.6rem;\n font-weight: 500;\n color: #cf711f;\n text-transform: uppercase;\n margin-bottom: 1.6rem;\n letter-spacing: 0.75px;\n}\n\n.list {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 1.6rem;\n}\n\n.list-item {\n font-size: 1.8rem;\n display: flex;\n align-items: center;\n gap: 1.6rem;\n}\n\n.list-icon {\n width: 3rem;\n height: 3rem;\n color: #e67e22;\n}\n\n*:focus {\n outline: none;\n /* outline: 4px dotted #e67e22; */\n /* outline-offset: 8px; */\n box-shadow: 0 0 0 0.8rem rgba(230, 125, 34, 0.5);\n}\n\n/* HELPER/SETTINGS CLASSES */\n.margin-right-sm {\n margin-right: 1.6rem !important;\n}\n\n.margin-bottom-md {\n margin-bottom: 4.8rem !important;\n}\n\n.center-text {\n text-align: center;\n}\n\nstrong {\n font-weight: 500;\n}\n\n/**************************/\n/* SECTION */\n/**************************/\n\n.section-pricing {\n padding: 9.6rem 0;\n}\n\n.pricing-plan {\n border-radius: 11px;\n\n width: 75%;\n}\n\n.pricing-plan--starter {\n justify-self: end;\n border: 2px solid #fdf2e9;\n padding: 4.6rem;\n}\n\n.pricing-plan--complete {\n background-color: #fdf2e9;\n padding: 4.8rem;\n position: relative;\n overflow: hidden;\n}\n\n.pricing-plan--complete::after {\n content: \"Best value\";\n position: absolute;\n top: 6%;\n right: -18%;\n\n text-transform: uppercase;\n font-size: 1.4rem;\n font-weight: 700;\n color: #333;\n background-color: #ffd43b;\n padding: 0.8rem 8rem;\n transform: rotate(45deg);\n}\n\n.plan-header {\n text-align: center;\n margin-bottom: 4.8rem;\n}\n\n.plan-name {\n color: #cf711f;\n font-weight: 600;\n font-size: 2rem;\n text-transform: uppercase;\n letter-spacing: 0.75;\n margin-bottom: 3.2rem;\n}\n\n.plan-price {\n font-size: 6.2rem;\n font-weight: 600;\n color: #333;\n margin-bottom: 1.6rem;\n}\n\n.plan-price span {\n font-size: 3rem;\n font-weight: 500;\n margin-right: 0.8rem;\n}\n\n.plan-text {\n font-size: 1.6rem;\n line-height: 1.6;\n color: #6f6f6f;\n}\n\n.plan-sing-up {\n text-align: center;\n margin-top: 4.8rem;\n}\n\n.plan-details {\n font-size: 1.6rem;\n line-height: 1.6;\n text-align: center;\n}\n\n.feature-icon {\n color: #e67e22;\n height: 3.2rem;\n width: 3.2rem;\n background-color: #fdf2e9;\n margin-bottom: 3.2rem;\n padding: 1.6rem;\n border-radius: 50%;\n}\n\n.feature-title {\n font-size: 2.4rem;\n color: #333;\n font-weight: 700;\n margin-bottom: 1.6rem;\n}\n\n.feature-text {\n font-size: 1.8rem;\n line-height: 1.8;\n}\n","/* desert scheme ported from vim to google prettify */\r\npre.prettyprint {\r\n display: block;\r\n background-color: #333;\r\n}\r\npre .nocode {\r\n background-color: none;\r\n color: #000;\r\n}\r\npre .str {\r\n color: #ffa0a0;\r\n} /* string - pink */\r\npre .kwd {\r\n color: #f0e68c;\r\n font-weight: bold;\r\n}\r\npre .com {\r\n color: #87ceeb;\r\n} /* comment - skyblue */\r\npre .typ {\r\n color: #98fb98;\r\n} /* type - lightgreen */\r\npre .lit {\r\n color: #cd5c5c;\r\n} /* literal - darkred */\r\npre .pun {\r\n color: #fff;\r\n} /* punctuation */\r\npre .pln {\r\n color: #fff;\r\n} /* plaintext */\r\npre .tag {\r\n color: #f0e68c;\r\n font-weight: bold;\r\n} /* html/xml tag - lightyellow */\r\npre .atn {\r\n color: #bdb76b;\r\n font-weight: bold;\r\n} /* attribute name - khaki */\r\npre .atv {\r\n color: #ffa0a0;\r\n} /* attribute value - pink */\r\npre .dec {\r\n color: #98fb98;\r\n} /* decimal - lightgreen */\r\n\r\n/* Specify class=linenums on a pre to get line numbering */\r\nol.linenums {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n color: #aeaeae;\r\n} /* IE indents via margin-left */\r\nli.L0,\r\nli.L1,\r\nli.L2,\r\nli.L3,\r\nli.L5,\r\nli.L6,\r\nli.L7,\r\nli.L8 {\r\n list-style-type: none;\r\n}\r\n/* Alternate shading for lines */\r\nli.L1,\r\nli.L3,\r\nli.L5,\r\nli.L7,\r\nli.L9 {\r\n}\r\n\r\n@media print {\r\n pre.prettyprint {\r\n background-color: none;\r\n }\r\n pre .str,\r\n code .str {\r\n color: #060;\r\n }\r\n pre .kwd,\r\n code .kwd {\r\n color: #006;\r\n font-weight: bold;\r\n }\r\n pre .com,\r\n code .com {\r\n color: #600;\r\n font-style: italic;\r\n }\r\n pre .typ,\r\n code .typ {\r\n color: #404;\r\n font-weight: bold;\r\n }\r\n pre .lit,\r\n code .lit {\r\n color: #044;\r\n }\r\n pre .pun,\r\n code .pun {\r\n color: #440;\r\n }\r\n pre .pln,\r\n code .pln {\r\n color: #000;\r\n }\r\n pre .tag,\r\n code .tag {\r\n color: #006;\r\n font-weight: bold;\r\n }\r\n pre .atn,\r\n code .atn {\r\n color: #404;\r\n }\r\n pre .atv,\r\n code .atv {\r\n color: #060;\r\n }\r\n}\r\n"]} -
anyapi/trunk/assets/js/admin.js
r3347672 r3394506 4 4 5 5 jQuery(document).ready(function ($) { 6 $(document).on("click", ".n umber-of-keys", function () {6 $(document).on("click", ".notice-action", function () { 7 7 jQuery.post(ajaxurl, { 8 action: "close_n umberofkey_notice",8 action: "close_notice", 9 9 }); 10 10 }); -
anyapi/trunk/assets/js/admin.min.js
r3347672 r3394506 1 !(function o(t, u, i) { 2 function c(e, r) { 3 if (!u[e]) { 4 if (!t[e]) { 5 var n = "function" == typeof require && require; 6 if (!r && n) return n(e, !0); 7 if (f) return f(e, !0); 8 throw ( 9 (((r = new Error("Cannot find module '" + e + "'")).code = 10 "MODULE_NOT_FOUND"), 11 r) 12 ); 13 } 14 (n = u[e] = { exports: {} }), 15 t[e][0].call( 16 n.exports, 17 function (r) { 18 return c(t[e][1][r] || r); 19 }, 20 n, 21 n.exports, 22 o, 23 t, 24 u, 25 i 26 ); 27 } 28 return u[e].exports; 29 } 30 for ( 31 var f = "function" == typeof require && require, r = 0; 32 r < i.length; 33 r++ 34 ) 35 c(i[r]); 36 return c; 37 })( 38 { 39 1: [ 40 function (r, e, n) { 41 "use strict"; 42 jQuery(document).ready(function (r) { 43 r(document).on("click", ".number-of-keys", function () { 44 jQuery.post(ajaxurl, { action: "close_numberofkey_notice" }); 45 }); 46 }); 47 }, 48 {}, 49 ], 50 }, 51 {}, 52 [1] 53 ); 1 !function t(o,u,i){function c(n,r){if(!u[n]){if(!o[n]){var e="function"==typeof require&&require;if(!r&&e)return e(n,!0);if(f)return f(n,!0);throw(r=new Error("Cannot find module '"+n+"'")).code="MODULE_NOT_FOUND",r}e=u[n]={exports:{}},o[n][0].call(e.exports,function(r){return c(o[n][1][r]||r)},e,e.exports,t,o,u,i)}return u[n].exports}for(var f="function"==typeof require&&require,r=0;r<i.length;r++)c(i[r]);return c}({1:[function(r,n,e){"use strict";jQuery(document).ready(function(r){r(document).on("click",".notice-action",function(){jQuery.post(ajaxurl,{action:"close_notice"})})})},{}]},{},[1]); -
anyapi/trunk/assets/js/layout-tab.js
r3323765 r3394506 126 126 }); 127 127 } 128 let apiLogActivate = document.querySelector("button.apilogs-activate"); 129 if (apiLogActivate) { 130 apiLogActivate.addEventListener("click", function () { 131 const checkbox = document.getElementById("apiLogsCheckbox"); 132 if (this.textContent.trim() === "Activate") { 133 checkbox.checked = true; 134 } else { 135 checkbox.checked = false; 136 } 137 }); 138 } 128 139 }); 129 140 … … 210 221 } 211 222 }); 223 212 224 document.addEventListener("DOMContentLoaded", function () { 213 225 var methodSelect = document.getElementById("method"); 214 226 var textareaLabel = document.getElementById("bodyLabel"); 215 var textareaRow = document.getElementById("body"); 227 var textareaRow = document.getElementById("rest-api-body-text"); 228 216 229 if (methodSelect) { 217 230 methodSelect.addEventListener("change", function () { -
anyapi/trunk/assets/js/layout-tab.min.js
r3323765 r3394506 40 40 function (e, t, $) { 41 41 var _, n, r, a, o, i, s, l, c, u, d, f, p, h, m, N, L, g, A, v, y, b; 42 function S(e) {42 function x(e) { 43 43 for (var c = 0, u = !1, t = !1, n = 0, r = e.length; n < r; ++n) 44 44 if ((i = e[n]).ignoreCase) t = !0; … … 222 222 a.push.apply(a, r.decorations)); 223 223 } 224 function x(e, x) {224 function S(e, S) { 225 225 for ( 226 var w, C = {}, t = e.concat( x), n = [], r = {}, a = 0, o = t.length;226 var w, C = {}, t = e.concat(S), n = [], r = {}, a = 0, o = t.length; 227 227 a < o; 228 228 ++a … … 235 235 r.hasOwnProperty(u) || (n.push(c), (r[u] = null)); 236 236 } 237 n.push(/[\0-\uffff]/), (w = S(n));237 n.push(/[\0-\uffff]/), (w = x(n)); 238 238 function E(e) { 239 239 for ( … … 260 260 else { 261 261 for (var m = 0; m < k; ++m) 262 if (((h = x[m]), (p = d.match(h[1])))) {262 if (((h = S[m]), (p = d.match(h[1])))) { 263 263 f = h[0]; 264 264 break; … … 275 275 y, 276 276 b, 277 S= o;277 x = o; 278 278 (o += d.length), 279 279 u … … 282 282 p[2] && (v = (y = d.length - p[2].length) - g.length), 283 283 (b = f.substring(5)), 284 q(r, n + S, d.substring(0, v), E, a),285 q(r, n + S+ v, g, T(b, g), a),286 q(r, n + S+ y, d.substring(y), E, a))287 : a.push(n + S, f);284 q(r, n + x, d.substring(0, v), E, a), 285 q(r, n + x + v, g, T(b, g), a), 286 q(r, n + x + y, d.substring(y), E, a)) 287 : a.push(n + x, f); 288 288 } 289 289 e.decorations = a; 290 290 } 291 var k = x.length;291 var k = S.length; 292 292 return E; 293 293 } … … 397 397 [m, new RegExp(r), null] 398 398 ), 399 x(t, n)399 S(t, n) 400 400 ); 401 401 } … … 508 508 m = i.decorations, 509 509 g = 0; 510 for (m[( S = m.length)] = u, r = n = 0; r < S; )510 for (m[(x = m.length)] = u, r = n = 0; r < x; ) 511 511 m[r] !== m[r + 2] 512 512 ? ((m[n++] = m[r++]), (m[n++] = m[r++])) 513 513 : (r += 2); 514 for ( S = n, r = n = 0; r < S; ) {514 for (x = n, r = n = 0; r < x; ) { 515 515 for ( 516 516 var v = m[r], y = m[r + 1], b = r + 2; 517 b + 2 <= S&& m[b + 1] === y;517 b + 2 <= x && m[b + 1] === y; 518 518 519 519 ) … … 521 521 (m[n++] = v), (m[n++] = y), (r = b); 522 522 } 523 var S= (m.length = n),523 var x = (m.length = n), 524 524 i = i.sourceNode, 525 x= "";526 i && (( x= i.style.display), (i.style.display = "none"));525 S = ""; 526 i && ((S = i.style.display), (i.style.display = "none")); 527 527 try { 528 528 for (; h < p; ) { … … 551 551 } 552 552 } finally { 553 i && (i.style.display = x);553 i && (i.style.display = S); 554 554 } 555 555 } catch (e) { … … 600 600 }), 601 601 0), 602 S= /\blang(?:uage)?-([\w.]+)(?!\S)/,603 x= /\bprettyprint\b/,602 x = /\blang(?:uage)?-([\w.]+)(?!\S)/, 603 S = /\bprettyprint\b/, 604 604 w = /\bprettyprinted\b/, 605 605 C = /pre|xmp/i, … … 631 631 } 632 632 var s = n.className; 633 if ((r !== N || x.test(s)) && !w.test(s)) {633 if ((r !== N || S.test(s)) && !w.test(s)) { 634 634 for ( 635 635 var l, c, u, d, f = !1, p = n.parentNode; … … 638 638 ) { 639 639 var h = p.tagName; 640 if (k.test(h) && p.className && x.test(p.className)) {640 if (k.test(h) && p.className && S.test(p.className)) { 641 641 f = !0; 642 642 break; … … 648 648 (l = r.lang) || 649 649 ((l = 650 !(l = s.match( S)) &&650 !(l = s.match(x)) && 651 651 (c = (function (e) { 652 652 for ( … … 667 667 })(n)) && 668 668 E.test(c.tagName) 669 ? c.className.match( S)669 ? c.className.match(x) 670 670 : l) && 671 671 l[1])), … … 760 760 C(v, ["default-code"]), 761 761 C( 762 x(762 S( 763 763 [], 764 764 [ … … 778 778 ), 779 779 C( 780 x(780 S( 781 781 [ 782 782 [N, /^[\s]+/, null, " \t\r\n"], … … 798 798 ["in.tag"] 799 799 ), 800 C( x([], [[g, /^[\s\S]+/]]), ["uq.val"]),800 C(S([], [[g, /^[\s\S]+/]]), ["uq.val"]), 801 801 C( 802 802 w({ keywords: a, hashComments: !0, cStyleComments: !0, types: u }), … … 866 866 ["coffee"] 867 867 ), 868 C( x([], [[d, /^[\s\S]+/]]), ["regex"]),868 C(S([], [[d, /^[\s\S]+/]]), ["regex"]), 869 869 (b = _.PR = 870 870 { 871 createSimpleLexer: x,871 createSimpleLexer: S, 872 872 registerLangHandler: C, 873 873 sourceDecorator: w, … … 1044 1044 var e = document.getElementById("method"), 1045 1045 t = document.getElementById("bodyLabel"), 1046 n = document.getElementById(" body");1046 n = document.getElementById("rest-api-body-text"); 1047 1047 e && 1048 1048 e.addEventListener("change", function () { -
anyapi/trunk/assets/js/settings-api.js
r3323765 r3394506 183 183 expertMode.classList.add("disabled"); 184 184 expertMode.classList.remove("available"); 185 185 186 advancePreview.classList.remove("json"); 186 187 cloneJson.innerHTML = advancePreview.outerHTML;188 selectedMode.value = basicMode.innerHTML;189 localStorage.setItem("mode", basicMode.innerHTML);190 localStorage.setItem("json", "Original JSON will be send");187 cloneMode.innerHTML = advanceMode.outerHTML; 188 cloneJson.innerHTML = cloneJson.outerHTML; 189 selectedMode.value = advanceMode.innerHTML; 190 localStorage.setItem("mode", advanceMode.innerHTML); 191 // localStorage.setItem("json", "Original JSON will be send"); 191 192 } else { 192 193 advanceMode.classList.add("available"); … … 271 272 }); 272 273 273 // Setting Steps 274 /** 275 * Setting Steps 276 */ 277 274 278 window.addEventListener("load", function () { 275 279 PR.prettyPrint(); … … 283 287 let jsons = document.querySelectorAll("div.mode-pre"); 284 288 let cloneAdvance = document.querySelector("div.adv-box-table-container"); 289 let selectedJson = document.querySelector(".final-json"); 285 290 286 291 // Step One instruction span … … 336 341 let previewFilterTag = document.querySelector("span.preview-filter-tag"); 337 342 let jsonPre = document.querySelector("div.json-pre"); 338 let filterTag = document.querySelector("span.filter-tag"); 339 340 if (basicTag) { 341 basicTag.addEventListener("click", function (event) { 342 event.preventDefault(); 343 filterTag.innerHTML = "Basic mode - original json data will be send"; 344 }); 345 } 346 347 if (advanceTag) { 348 advanceTag.addEventListener("click", function (event) { 349 event.preventDefault(); 350 filterTag.innerHTML = 351 "Advance mode - filter the json attribute which will be selected"; 352 }); 353 } 354 355 if (expertTag) { 356 expertTag.addEventListener("click", function (event) { 357 event.preventDefault(); 358 filterTag.innerHTML = 359 "Expert mode - Any custom fields will be filtered, Stay tuned for updates"; 360 }); 343 let cloneJson = document.querySelector("div.json-mode > pre"); 344 345 // let filterTag = document.querySelector("span.filter-tag"); 346 347 let productId = document.querySelector("span.fields-product-id"); 348 let productName = document.querySelector("span.fields-product-name"); 349 let productTotal = document.querySelector("span.fields-product-total"); 350 let filterOutput = document.getElementById("filter-output"); 351 352 let lineItem = { 353 name: undefined, 354 product_id: undefined, 355 total: undefined, 356 }; 357 358 if (productId) { 359 productId.addEventListener("click", function (event) { 360 event.preventDefault(); 361 // filterTag.innerHTML = "Basic mode - original json data will be send"; 362 // lineItem.product_id = ""; 363 toggleActive(productId); 364 lineItem.product_id = lineItem.product_id === undefined ? "" : undefined; 365 updateOutput(); 366 }); 367 } 368 369 if (productName) { 370 productName.addEventListener("click", function (event) { 371 event.preventDefault(); 372 // filterTag.innerHTML = 373 // "Advance mode - filter the json fields which will be selected"; 374 // lineItem.name = ""; 375 toggleActive(productName); 376 lineItem.name = lineItem.name === undefined ? "" : undefined; 377 updateOutput(); 378 }); 379 } 380 381 if (productTotal) { 382 productTotal.addEventListener("click", function (event) { 383 event.preventDefault(); 384 // filterTag.innerHTML = 385 // "Expert mode - Any custom fields will be filtered, Stay tuned for updates"; 386 // lineItem.total = ""; 387 toggleActive(productTotal); 388 lineItem.total = lineItem.total === undefined ? "" : undefined; 389 updateOutput(); 390 }); 391 } 392 393 function toggleActive(element) { 394 element.classList.toggle("selected"); 395 } 396 397 function updateOutput() { 398 const filteredLineItem = {}; 399 if (lineItem.name !== undefined) filteredLineItem.name = lineItem.name; 400 if (lineItem.product_id !== undefined) 401 filteredLineItem.product_id = lineItem.product_id; 402 if (lineItem.total !== undefined) filteredLineItem.total = lineItem.total; 403 404 const jsonOutput = JSON.stringify( 405 { 406 line_items: [filteredLineItem], 407 }, 408 null, 409 2 410 ); 411 filterOutput.innerHTML = jsonOutput; 412 selectedJson.value = jsonOutput; 413 cloneJson.innerHTML = jsonOutput; 414 cloneAdvance.innerHTML = "<span>Hello.AnyAPI</span>"; 415 localStorage.setItem("json", selectedJson.value); 361 416 } 362 417 … … 367 422 selectFilterTag.classList.remove("notice-tag"); 368 423 previewFilterTag.classList.remove("notice-tag"); 369 filterTag.removeAttribute("hidden");424 // filterTag.removeAttribute("hidden"); 370 425 jsonPre.removeAttribute("hidden"); 371 426 } else { 372 427 selectFilterTag.classList.add("notice-tag"); 373 428 previewFilterTag.classList.add("notice-tag"); 374 filterTag.setAttribute("hidden", "true");429 // filterTag.setAttribute("hidden", "true"); 375 430 jsonPre.setAttribute("hidden", "true"); 376 431 } -
anyapi/trunk/assets/js/settings-api.min.js
r3323765 r3394506 1 !function r(a,c, l){function i(t,e){if(!c[t]){if(!a[t]){var s="function"==typeof require&&require;if(!e&&s)return s(t,!0);if(n)return n(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}s=c[t]={exports:{}},a[t][0].call(s.exports,function(e){return i(a[t][1][e]||e)},s,s.exports,r,a,c,l)}return c[t].exports}for(var n="function"==typeof require&&require,e=0;e<l.length;e++)i(l[e]);return i}({1:[function(e,t,s){"use strict";document.addEventListener("DOMContentLoaded",function(){PR.prettyPrint();var c=document.querySelector("div.selected-key"),t=document.querySelector("div.trigger-action"),e=document.querySelector("div.api-mode"),s=document.querySelector("div.json-mode > pre"),l=document.querySelector(".final-id"),r=document.querySelector(".final-url"),a=document.querySelector(".final-body"),i=document.querySelector(".final-trigger"),n=document.querySelector(".final-mode"),o=document.querySelector(".final-json"),d=document.querySelector("span.api-id"),u=document.querySelector("span.api-url"),m=document.querySelector("span.api-body"),v=document.querySelector("span.api-trigger"),L=document.querySelector("span.api-mode"),y=document.querySelector("span.api-json"),p=document.querySelector("input#api-url"),S=document.querySelector("textarea#api-body");p&&(p.oninput=function(){r.value=p.value,localStorage.setItem("url",r.value)}),S&&(S.oninput=function(){a.value=S.value,localStorage.setItem("body",a.value)});document.querySelectorAll("span.tag-key").forEach(function(r){var a,e=r.getAttribute("id");e&&e.includes("[")&&e.includes("]")&&(a=e.substring(e.indexOf("[")+1,e.indexOf("]")),r.addEventListener("click",function(){var e=document.querySelector("table.api-data"),t=document.getElementById("tag-header"),s=(document.querySelectorAll("table.api-data > tbody > tr").forEach(function(e){e.style.display="none"}),document.getElementById(a));s?(s.style.display="table-row",t.style.display="table-row",e.removeAttribute("hidden"),c.innerHTML=r.outerHTML,l.value=r.innerHTML,localStorage.setItem("id",r.innerHTML)):(c.innerHTML="",l.value=""),r.classList.toggle("available","none"===s.style.display),r.classList.toggle("selected","none"!==s.style.display),r.classList.toggle("selected-key","none"!==s.style.display),document.querySelectorAll("span.tag-key").forEach(function(e){e!==r&&e.classList.remove("selected")})}))});var b=document.querySelectorAll("span.trigger"),q=null,f=(b.forEach(function(e){Array.from(e.classList).some(function(e){return e.startsWith("order-status-")})&&(e.classList.add("disabled"),e.classList.remove("available"),t.innerHTML="",i.value=""),e.addEventListener("click",function(){e.classList.contains("available")?(null!==q&&(q.classList.add("available"),q.classList.remove("selected")),e.classList.remove("available"),e.classList.add("selected"),t.innerHTML=e.outerHTML,i.value=e.innerHTML,q=e,localStorage.setItem("trigger",e.innerHTML)):(e.classList.add("available"),e.classList.remove("selected"),t.innerHTML="",i.value="",q=null)})}),document.querySelector("span.filter-tag-basic")),g=document.querySelector("span.filter-tag-advance"),h=document.querySelector("span.filter-tag-expert"),M=document.querySelector("div.next-btn"),T=document.querySelector("div.filter-json-basic"),H=document.querySelector("div.filter-json-advance"),A=document.querySelector("div.filter-json-advance-sample"),E=document.querySelector("div.filter-json-expert"),b=(f&&f.addEventListener("click",function(){f.classList.contains("available")?(f.classList.add("selected"),f.classList.remove("available"),g.classList.add("disabled"),g.classList.remove("available"),h.classList.add("disabled"),h.classList.remove("available"),T.classList.remove("json"),e.innerHTML=f.outerHTML,s.innerHTML=T.outerHTML,n.value=f.innerHTML,localStorage.setItem("mode",f.innerHTML),localStorage.setItem("json","Original JSON will be send")):(f.classList.add("available"),f.classList.remove("selected"),g.classList.add("available"),g.classList.remove("disabled"),h.classList.add("available"),h.classList.remove("disabled"),T.classList.add("json"),e.innerHTML="",s.classList.remove("scroll"),s.innerHTML="",n.value="")}),g&&g.addEventListener("click",function(){g.classList.contains("available")?(g.classList.add("selected"),g.classList.remove("available"),f.classList.add("disabled"),f.classList.remove("available"),h.classList.add("disabled"),h.classList.remove("available"),A.classList.remove("json"),s.innerHTML=A.outerHTML,n.value=f.innerHTML,localStorage.setItem("mode",f.innerHTML),localStorage.setItem("json","Original JSON will be send")):(g.classList.add("available"),g.classList.remove("selected"),f.classList.add("available"),f.classList.remove("disabled"),h.classList.add("available"),h.classList.remove("disabled"),A.classList.add("json"),H.classList.add("json"),e.innerHTML="",s.classList.remove("scroll"),n.value="",o.value="")}),h&&h.addEventListener("click",function(){h.classList.contains("available")?(h.classList.add("selected"),h.classList.remove("available"),f.classList.add("disabled"),f.classList.remove("available"),g.classList.add("disabled"),g.classList.remove("available"),E.classList.remove("json"),e.innerHTML=h.outerHTML,s.innerHTML=E.outerHTML,n.value=h.innerHTML,localStorage.setItem("mode",h.innerHTML),localStorage.setItem("json","Original JSON will be send"),M.setAttribute("hidden","true")):(h.classList.add("available"),h.classList.remove("selected"),f.classList.add("available"),f.classList.remove("disabled"),g.classList.add("available"),g.classList.remove("disabled"),E.classList.add("json"),e.innerHTML="",s.innerHTML="",n.value="",M.removeAttribute("hidden"))}),document.querySelector("div.api-setup")),k=document.querySelector("div.api-submit"),b=("true"===localStorage.getItem("apiRecordVisible")&&(b.setAttribute("hidden","true"),k.removeAttribute("hidden"),d.innerHTML=localStorage.getItem("id"),u.innerHTML=localStorage.getItem("url"),v.innerHTML=localStorage.getItem("trigger"),m.innerHTML=localStorage.getItem("body"),L.innerHTML=localStorage.getItem("mode"),y.innerHTML=localStorage.getItem("json"),localStorage.setItem("apiRecordVisible","false")),document.querySelector("div.save-btn form.save")),k=(b&&b.addEventListener("submit",function(){localStorage.setItem("apiRecordVisible","true")}),document.querySelector("div.back-btn"));k&&k.addEventListener("click",function(){location.reload()})}),window.addEventListener("load",function(){PR.prettyPrint();var a=document.querySelector("div.next-btn"),c=document.querySelector("div.prev-btn"),l=document.querySelector("div.save-btn"),e=document.querySelector("div.preview-btn"),i=document.querySelectorAll("span.trigger"),n=document.querySelectorAll("span.filter-mode"),t=document.querySelectorAll("div.mode-pre"),o=document.querySelector("div.adv-box-table-container"),s=document.querySelector("#api-url"),r=document.querySelector("span.url-tag"),s=(s&&s.addEventListener("click",function(e){e.preventDefault(),r.classList.add("notice-tag")}),document.querySelectorAll("span.step-one-key")),d=document.querySelector("span.key-tag"),s=(s.forEach(function(t){t.addEventListener("click",function(e){t.classList.contains("available")?d.classList.remove("notice-tag"):d.classList.add("notice-tag")})}),document.querySelectorAll("span.trigger")),u=document.querySelector("span.action-tag"),s=(s.forEach(function(t){t.addEventListener("click",function(e){t.classList.contains("available")?u.classList.remove("notice-tag"):u.classList.add("notice-tag")})}),document.querySelector("#api-body")),m=document.querySelector("span.body-tag"),v=(s&&s.addEventListener("click",function(e){e.preventDefault(),m.classList.add("notice-tag")}),document.querySelector("span.filter-tag-basic")),L=document.querySelector("span.filter-tag-advance"),y=document.querySelector("span.filter-tag-expert"),s=document.querySelectorAll("span.filter-mode"),p=document.querySelector("span.select-filter-tag"),S=document.querySelector("span.preview-filter-tag"),b=document.querySelector("div.json-pre"),q=document.querySelector("span.filter-tag");v&&v.addEventListener("click",function(e){e.preventDefault(),q.innerHTML="Basic mode - original json data will be send"}),L&&L.addEventListener("click",function(e){e.preventDefault(),q.innerHTML="Advance mode - filter the json attribute which will be selected"}),y&&y.addEventListener("click",function(e){e.preventDefault(),q.innerHTML="Expert mode - Any custom fields will be filtered, Stay tuned for updates"}),s.forEach(function(t){t.addEventListener("click",function(e){e.preventDefault(),t.classList.contains("available")?(p.classList.remove("notice-tag"),S.classList.remove("notice-tag"),q.removeAttribute("hidden"),b.removeAttribute("hidden")):(p.classList.add("notice-tag"),S.classList.add("notice-tag"),q.setAttribute("hidden","true"),b.setAttribute("hidden","true"))})});document.querySelectorAll('input[class^="final-"]').forEach(function(e){e.type="hidden"}),c&&e.setAttribute("hidden","true"),a&&a.addEventListener("click",function(e){e.preventDefault();var e=document.querySelector(".api-data"),t=document.querySelector("input#api-url"),s=(!e.hasAttribute("hidden")&""!==t.value.trim()?(document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.add("active"),document.querySelector(".step-3").classList.remove("active"),document.querySelector(".step-4").classList.remove("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.add("current"),document.querySelector("#step-03").classList.remove("current"),document.querySelector("#step-04").classList.remove("current"),c.removeAttribute("hidden"),a.querySelector("input#submit").value="Next"):t.setAttribute("placeholder","API URL Required"),document.querySelector("textarea#api-body"));function r(){document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-3").classList.remove("active"),document.querySelector(".step-4").classList.add("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.remove("current"),document.querySelector("#step-03").classList.remove("current"),document.querySelector("#step-04").classList.add("current"),a.setAttribute("hidden","true"),c.setAttribute("hidden","true"),l.removeAttribute("hidden")}i.forEach(function(e){e.classList.contains("selected")&&""!==s.value.trim()?(document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-3").classList.add("active"),document.querySelector(".step-4").classList.remove("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.remove("current"),document.querySelector("#step-03").classList.add("current"),document.querySelector("#step-04").classList.remove("current"),a.querySelector("input#submit").value="Save"):s.setAttribute("placeholder","API Body Required")}),n.forEach(function(e){v.classList.contains("selected")&&r(),L.classList.contains("selected")&&""!==o.innerHTML&&r()})});var f=document.querySelector("#step-01"),g=document.querySelector("#step-02"),h=document.querySelector("#step-03"),M=document.querySelector("#step-04");c&&c.addEventListener("click",function(e){e.preventDefault(),g.classList.contains("current")&&(f.classList.add("current"),g.classList.remove("current"),h.classList.remove("current"),M.classList.remove("current"),i.forEach(function(e){e.classList.remove("selected")}),u.classList.remove("notice-tag"),document.querySelector(".step-1").classList.add("active"),document.querySelector(".step-2").classList.remove("active"),c.setAttribute("hidden","true"),a.querySelector("input#submit").value="Next"),h.classList.contains("current")&&(g.classList.add("current"),f.classList.remove("current"),h.classList.remove("current"),M.classList.remove("current"),u.classList.remove("notice-tag"),i.forEach(function(e){e.classList.remove("selected")}),n.forEach(function(e){e.classList.remove("selected"),e.classList.remove("disabled"),e.classList.add("available")}),t.forEach(function(e){e.classList.add("json")}),document.querySelector(".step-2").classList.add("active"),document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-3").classList.remove("active"),a.removeAttribute("hidden"),c.removeAttribute("hidden"),l.setAttribute("hidden","true"),a.querySelector("input#submit").value="Next"),M.classList.contains("current")&&(h.classList.add("current"),f.classList.remove("current"),g.classList.remove("current"),M.classList.remove("current"),u.classList.remove("notice-tag"),i.forEach(function(e){e.classList.remove("selected")}),document.querySelector(".step-3").classList.add("active"),document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-4").classList.remove("active"),a.removeAttribute("hidden"),c.removeAttribute("hidden"),l.setAttribute("hidden","true"),v.classList.remove("disabled"),advanceTagclassList.remove("disabled"),y.classList.remove("disabled"),a.querySelector("input#submit").value="Next")})})},{}]},{},[1]);1 !function r(a,c,i){function l(t,e){if(!c[t]){if(!a[t]){var s="function"==typeof require&&require;if(!e&&s)return s(t,!0);if(o)return o(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}s=c[t]={exports:{}},a[t][0].call(s.exports,function(e){return l(a[t][1][e]||e)},s,s.exports,r,a,c,i)}return c[t].exports}for(var o="function"==typeof require&&require,e=0;e<i.length;e++)l(i[e]);return l}({1:[function(e,t,s){"use strict";document.addEventListener("DOMContentLoaded",function(){PR.prettyPrint();var c=document.querySelector("div.selected-key"),t=document.querySelector("div.trigger-action"),e=document.querySelector("div.api-mode"),s=document.querySelector("div.json-mode > pre"),i=document.querySelector(".final-id"),r=document.querySelector(".final-url"),a=document.querySelector(".final-body"),l=document.querySelector(".final-trigger"),o=document.querySelector(".final-mode"),n=document.querySelector(".final-json"),d=document.querySelector("span.api-id"),u=document.querySelector("span.api-url"),m=document.querySelector("span.api-body"),v=document.querySelector("span.api-trigger"),L=document.querySelector("span.api-mode"),y=document.querySelector("span.api-json"),p=document.querySelector("input#api-url"),S=document.querySelector("textarea#api-body");p&&(p.oninput=function(){r.value=p.value,localStorage.setItem("url",r.value)}),S&&(S.oninput=function(){a.value=S.value,localStorage.setItem("body",a.value)});document.querySelectorAll("span.tag-key").forEach(function(r){var a,e=r.getAttribute("id");e&&e.includes("[")&&e.includes("]")&&(a=e.substring(e.indexOf("[")+1,e.indexOf("]")),r.addEventListener("click",function(){var e=document.querySelector("table.api-data"),t=document.getElementById("tag-header"),s=(document.querySelectorAll("table.api-data > tbody > tr").forEach(function(e){e.style.display="none"}),document.getElementById(a));s?(s.style.display="table-row",t.style.display="table-row",e.removeAttribute("hidden"),c.innerHTML=r.outerHTML,i.value=r.innerHTML,localStorage.setItem("id",r.innerHTML)):(c.innerHTML="",i.value=""),r.classList.toggle("available","none"===s.style.display),r.classList.toggle("selected","none"!==s.style.display),r.classList.toggle("selected-key","none"!==s.style.display),document.querySelectorAll("span.tag-key").forEach(function(e){e!==r&&e.classList.remove("selected")})}))});var q=document.querySelectorAll("span.trigger"),b=null,f=(q.forEach(function(e){Array.from(e.classList).some(function(e){return e.startsWith("order-status-")})&&(e.classList.add("disabled"),e.classList.remove("available"),t.innerHTML="",l.value=""),e.addEventListener("click",function(){e.classList.contains("available")?(null!==b&&(b.classList.add("available"),b.classList.remove("selected")),e.classList.remove("available"),e.classList.add("selected"),t.innerHTML=e.outerHTML,l.value=e.innerHTML,b=e,localStorage.setItem("trigger",e.innerHTML)):(e.classList.add("available"),e.classList.remove("selected"),t.innerHTML="",l.value="",b=null)})}),document.querySelector("span.filter-tag-basic")),g=document.querySelector("span.filter-tag-advance"),M=document.querySelector("span.filter-tag-expert"),T=document.querySelector("div.next-btn"),H=document.querySelector("div.filter-json-basic"),h=document.querySelector("div.filter-json-advance"),A=document.querySelector("div.filter-json-advance-sample"),E=document.querySelector("div.filter-json-expert"),q=(f&&f.addEventListener("click",function(){f.classList.contains("available")?(f.classList.add("selected"),f.classList.remove("available"),g.classList.add("disabled"),g.classList.remove("available"),M.classList.add("disabled"),M.classList.remove("available"),H.classList.remove("json"),e.innerHTML=f.outerHTML,s.innerHTML=H.outerHTML,o.value=f.innerHTML,localStorage.setItem("mode",f.innerHTML),localStorage.setItem("json","Original JSON will be send")):(f.classList.add("available"),f.classList.remove("selected"),g.classList.add("available"),g.classList.remove("disabled"),M.classList.add("available"),M.classList.remove("disabled"),H.classList.add("json"),e.innerHTML="",s.classList.remove("scroll"),s.innerHTML="",o.value="")}),g&&g.addEventListener("click",function(){g.classList.contains("available")?(g.classList.add("selected"),g.classList.remove("available"),f.classList.add("disabled"),f.classList.remove("available"),M.classList.add("disabled"),M.classList.remove("available"),A.classList.remove("json"),e.innerHTML=g.outerHTML,s.innerHTML=s.outerHTML,o.value=g.innerHTML,localStorage.setItem("mode",g.innerHTML)):(g.classList.add("available"),g.classList.remove("selected"),f.classList.add("available"),f.classList.remove("disabled"),M.classList.add("available"),M.classList.remove("disabled"),A.classList.add("json"),h.classList.add("json"),e.innerHTML="",s.classList.remove("scroll"),o.value="",n.value="")}),M&&M.addEventListener("click",function(){M.classList.contains("available")?(M.classList.add("selected"),M.classList.remove("available"),f.classList.add("disabled"),f.classList.remove("available"),g.classList.add("disabled"),g.classList.remove("available"),E.classList.remove("json"),e.innerHTML=M.outerHTML,s.innerHTML=E.outerHTML,o.value=M.innerHTML,localStorage.setItem("mode",M.innerHTML),localStorage.setItem("json","Original JSON will be send"),T.setAttribute("hidden","true")):(M.classList.add("available"),M.classList.remove("selected"),f.classList.add("available"),f.classList.remove("disabled"),g.classList.add("available"),g.classList.remove("disabled"),E.classList.add("json"),e.innerHTML="",s.innerHTML="",o.value="",T.removeAttribute("hidden"))}),document.querySelector("div.api-setup")),I=document.querySelector("div.api-submit"),q=("true"===localStorage.getItem("apiRecordVisible")&&(q.setAttribute("hidden","true"),I.removeAttribute("hidden"),d.innerHTML=localStorage.getItem("id"),u.innerHTML=localStorage.getItem("url"),v.innerHTML=localStorage.getItem("trigger"),m.innerHTML=localStorage.getItem("body"),L.innerHTML=localStorage.getItem("mode"),y.innerHTML=localStorage.getItem("json"),localStorage.setItem("apiRecordVisible","false")),document.querySelector("div.save-btn form.save")),I=(q&&q.addEventListener("submit",function(){localStorage.setItem("apiRecordVisible","true")}),document.querySelector("div.back-btn"));I&&I.addEventListener("click",function(){location.reload()})}),window.addEventListener("load",function(){PR.prettyPrint();var a=document.querySelector("div.next-btn"),c=document.querySelector("div.prev-btn"),i=document.querySelector("div.save-btn"),e=document.querySelector("div.preview-btn"),l=document.querySelectorAll("span.trigger"),o=document.querySelectorAll("span.filter-mode"),t=document.querySelectorAll("div.mode-pre"),n=document.querySelector("div.adv-box-table-container"),s=document.querySelector(".final-json"),r=document.querySelector("#api-url"),d=document.querySelector("span.url-tag"),r=(r&&r.addEventListener("click",function(e){e.preventDefault(),d.classList.add("notice-tag")}),document.querySelectorAll("span.step-one-key")),u=document.querySelector("span.key-tag"),r=(r.forEach(function(t){t.addEventListener("click",function(e){t.classList.contains("available")?u.classList.remove("notice-tag"):u.classList.add("notice-tag")})}),document.querySelectorAll("span.trigger")),m=document.querySelector("span.action-tag"),r=(r.forEach(function(t){t.addEventListener("click",function(e){t.classList.contains("available")?m.classList.remove("notice-tag"):m.classList.add("notice-tag")})}),document.querySelector("#api-body")),v=document.querySelector("span.body-tag"),L=(r&&r.addEventListener("click",function(e){e.preventDefault(),v.classList.add("notice-tag")}),document.querySelector("span.filter-tag-basic")),y=document.querySelector("span.filter-tag-advance"),p=document.querySelector("span.filter-tag-expert"),r=document.querySelectorAll("span.filter-mode"),S=document.querySelector("span.select-filter-tag"),q=document.querySelector("span.preview-filter-tag"),b=document.querySelector("div.json-pre"),f=document.querySelector("div.json-mode > pre"),g=document.querySelector("span.fields-product-id"),M=document.querySelector("span.fields-product-name"),T=document.querySelector("span.fields-product-total"),H=document.getElementById("filter-output"),h={name:void 0,product_id:void 0,total:void 0};function A(e){e.classList.toggle("selected")}function E(){var e={},e=(void 0!==h.name&&(e.name=h.name),void 0!==h.product_id&&(e.product_id=h.product_id),void 0!==h.total&&(e.total=h.total),JSON.stringify({line_items:[e]},null,2));H.innerHTML=e,s.value=e,f.innerHTML=e,n.innerHTML="<span>Hello.AnyAPI</span>",localStorage.setItem("json",s.value)}g&&g.addEventListener("click",function(e){e.preventDefault(),A(g),h.product_id=void 0===h.product_id?"":void 0,E()}),M&&M.addEventListener("click",function(e){e.preventDefault(),A(M),h.name=void 0===h.name?"":void 0,E()}),T&&T.addEventListener("click",function(e){e.preventDefault(),A(T),h.total=void 0===h.total?"":void 0,E()}),r.forEach(function(t){t.addEventListener("click",function(e){e.preventDefault(),t.classList.contains("available")?(S.classList.remove("notice-tag"),q.classList.remove("notice-tag"),b.removeAttribute("hidden")):(S.classList.add("notice-tag"),q.classList.add("notice-tag"),b.setAttribute("hidden","true"))})});document.querySelectorAll('input[class^="final-"]').forEach(function(e){e.type="hidden"}),c&&e.setAttribute("hidden","true"),a&&a.addEventListener("click",function(e){e.preventDefault();var e=document.querySelector(".api-data"),t=document.querySelector("input#api-url"),s=(!e.hasAttribute("hidden")&""!==t.value.trim()?(document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.add("active"),document.querySelector(".step-3").classList.remove("active"),document.querySelector(".step-4").classList.remove("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.add("current"),document.querySelector("#step-03").classList.remove("current"),document.querySelector("#step-04").classList.remove("current"),c.removeAttribute("hidden"),a.querySelector("input#submit").value="Next"):t.setAttribute("placeholder","API URL Required"),document.querySelector("textarea#api-body"));function r(){document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-3").classList.remove("active"),document.querySelector(".step-4").classList.add("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.remove("current"),document.querySelector("#step-03").classList.remove("current"),document.querySelector("#step-04").classList.add("current"),a.setAttribute("hidden","true"),c.setAttribute("hidden","true"),i.removeAttribute("hidden")}l.forEach(function(e){e.classList.contains("selected")&&""!==s.value.trim()?(document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-3").classList.add("active"),document.querySelector(".step-4").classList.remove("active"),document.querySelector("#step-01").classList.remove("current"),document.querySelector("#step-02").classList.remove("current"),document.querySelector("#step-03").classList.add("current"),document.querySelector("#step-04").classList.remove("current"),a.querySelector("input#submit").value="Save"):s.setAttribute("placeholder","API Body Required")}),o.forEach(function(e){L.classList.contains("selected")&&r(),y.classList.contains("selected")&&""!==n.innerHTML&&r()})});var I=document.querySelector("#step-01"),k=document.querySelector("#step-02"),j=document.querySelector("#step-03"),x=document.querySelector("#step-04");c&&c.addEventListener("click",function(e){e.preventDefault(),k.classList.contains("current")&&(I.classList.add("current"),k.classList.remove("current"),j.classList.remove("current"),x.classList.remove("current"),l.forEach(function(e){e.classList.remove("selected")}),m.classList.remove("notice-tag"),document.querySelector(".step-1").classList.add("active"),document.querySelector(".step-2").classList.remove("active"),c.setAttribute("hidden","true"),a.querySelector("input#submit").value="Next"),j.classList.contains("current")&&(k.classList.add("current"),I.classList.remove("current"),j.classList.remove("current"),x.classList.remove("current"),m.classList.remove("notice-tag"),l.forEach(function(e){e.classList.remove("selected")}),o.forEach(function(e){e.classList.remove("selected"),e.classList.remove("disabled"),e.classList.add("available")}),t.forEach(function(e){e.classList.add("json")}),document.querySelector(".step-2").classList.add("active"),document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-3").classList.remove("active"),a.removeAttribute("hidden"),c.removeAttribute("hidden"),i.setAttribute("hidden","true"),a.querySelector("input#submit").value="Next"),x.classList.contains("current")&&(j.classList.add("current"),I.classList.remove("current"),k.classList.remove("current"),x.classList.remove("current"),m.classList.remove("notice-tag"),l.forEach(function(e){e.classList.remove("selected")}),document.querySelector(".step-3").classList.add("active"),document.querySelector(".step-1").classList.remove("active"),document.querySelector(".step-2").classList.remove("active"),document.querySelector(".step-4").classList.remove("active"),a.removeAttribute("hidden"),c.removeAttribute("hidden"),i.setAttribute("hidden","true"),L.classList.remove("disabled"),advanceTagclassList.remove("disabled"),p.classList.remove("disabled"),a.querySelector("input#submit").value="Next")})})},{}]},{},[1]); -
anyapi/trunk/inc/Admin.php
r3376733 r3394506 37 37 add_action( 'admin_enqueue_scripts', array( $this, 'enqueueFiles') ); 38 38 39 add_action( 'wp_ajax_close_n umberofkey_notice', function() {40 set_transient( 'anyapi_n umberofkey_notice_closed', true, 1800 );39 add_action( 'wp_ajax_close_notice', function() { 40 set_transient( 'anyapi_notice_closed', true, 259200 ); 41 41 }); 42 42 … … 221 221 $apiStatus = get_option( $name[ 'anyApiOrderApi' ], array() ); 222 222 $notice = self::getConfig()[ 'message' ]; 223 $logCount = self::getNumberOfLog( 'count' , 'anyapi_log_anyapi' ); 223 224 224 225 if ( ! isset( $numberOfKey ) || count( $numberOfKey ) === 0 ) { 225 $type = 'updated'; 226 $message = $notice[ 'system_1' ]; 227 if ( get_transient( 'anyapi_numberofkey_notice_closed' ) ) { 228 return; 229 } 230 $this->adminMessage( 'anyapi', 'number-of-keys', $type, $message ); 226 $type = 'notice'; 227 $message = '<h4>' . $notice[ 'system_1' ] . '</h4>'; 228 $this->adminMessage( 229 'anyapi', 230 '', 231 $type, 232 $message, 233 '', 234 ); 231 235 } 232 236 … … 234 238 foreach ( $apiStatus as $key ) { 235 239 if ( ! isset( $key['status'] ) ) { 236 $type = 'updated'; 237 $message = $notice[ 'system_2' ]; 238 $this->adminMessage( 'anyapi_orderapi', '', $type, $message ); 240 $type = 'notice'; 241 $message = '<h4>' . $notice[ 'system_2' ] . '</h4>'; 242 $this->adminMessage( 243 'anyapi_orderapi', 244 '', 245 $type, 246 $message, 247 '', 248 ); 239 249 } 240 250 } 241 251 } 242 252 243 } 244 245 private function adminMessage( $page, $class, $type, $message ) { 253 if ( isset( $logCount ) && $logCount > 10 ) { 254 if ( get_transient( 'anyapi_notice_closed' ) ) { 255 return; 256 } 257 $type = 'updated'; 258 $text = $notice[ 'system_3' ]; 259 $message = sprintf( 260 '<p>📨 Thank you for using the <a href="%s"><span class="tag tag--new">AnyAPI</span></a> plugin. You’ve been using the Order API Integration '. $logCount .' times now.</p> 261 <p>'. $text .'</p>', 262 esc_url( '/wp-admin/admin.php?page=anyapi' ), 263 ); 264 $button = sprintf( 265 '<a href="%s" class="btn btn--full small notice-action-button" target="_blank" rel="noopener">%s</a>', 266 esc_url( 'https://wordpress.org/support/plugin/anyapi/reviews' ), 267 esc_html( 'Rate AnyAPI' ) 268 ); 269 $this->adminMessage( 270 '', 271 'notice-action', 272 $type, 273 $message, 274 $button 275 ); 276 } 277 278 } 279 280 private function adminMessage( $page, $class, $type, $message, $button ) { 246 281 247 282 if ( ! $message ) return ; 248 if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] === $page ) { 249 echo '<div class="notice is-dismissible '. esc_attr( $class ).' ' . esc_attr( $type ) . '"><p>' . esc_html ( $message ). '</p></div>'; 283 284 if ( empty( $page ) || isset( $_GET[ 'page' ] ) && sanitize_key( $_GET[ 'page' ] ) === $page ) { 285 echo sprintf( 286 '<div class="notice is-dismissible %s %s">%s%s</div>', 287 esc_attr( $class ), 288 esc_attr( $type ), 289 wp_kses_post( $message ), 290 wp_kses_post( $button ) 291 ); 292 } 293 294 } 295 296 private function getNumberOfLog( $cache, $suffix ) { 297 298 global $wpdb; 299 $results = wp_cache_get( 'anyapi_log_'. $cache, 'anyapi_log_cache' ); 300 $searchTable = $wpdb->prefix . $suffix; 301 302 if ( false === $results ) { 303 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Custom table query required for API logs. 304 $results = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM %i" , $searchTable ) ); 305 wp_cache_set( 'anyapi_log_'. $cache, $results, 'anyapi_log_cache', 300 ); 306 return $results; 250 307 } 251 308 … … 408 465 'message' => array( 409 466 'system_1' => 'Reminder : Create first Order API Integrations with API key.', 410 'system_2' => 'Reminder : Toogle the status to activate the trigger for API Integration.' 467 'system_2' => 'Reminder : Toogle the status to activate the trigger for API Integration.', 468 'system_3' => 'We hope you’re happy with our service. Any feedback, positive or negative, is appreciated and helps us improve it. 😊' 411 469 ), 412 470 ); -
anyapi/trunk/inc/Anyapi.php
r3376733 r3394506 41 41 42 42 $this->option = self::getOption(); 43 // $this->restApiRespond();44 43 45 44 } -
anyapi/trunk/inc/Controller/OrderIntegrations.php
r3323765 r3394506 49 49 50 50 $id = trim( $option[ 'id' ] ); 51 52 51 $args = $this->initOrderApi( $id, $option[ 'trigger' ] ); 52 53 53 if ( empty( $args ) ) { return; }; 54 54 … … 57 57 if ( $id === trim( $key[ 'id' ] ) ) { 58 58 59 $params = [59 $params = array( 60 60 'id' => $id, 61 61 'trigger' => $option[ 'trigger' ], 62 62 'args' => $key, 63 ];63 ); 64 64 65 65 add_action( $hook, function( $order_id ) use ( $params ) { … … 131 131 public function handleOrderApi( $order_id, $params ) { 132 132 133 $id = $params[ 'id' ];134 133 $trigger = $params[ 'trigger' ]; 135 134 $args = $params[ 'args' ]; … … 154 153 } 155 154 155 if ( ! empty( $args['json'] ) ) { 156 $json = json_decode( $args['json'], true ); 157 $attributes = $this->jsonFilter( $json, $order_id ); 158 if ( is_array( $attributes ) && ! empty( $attributes ) ) { 159 $body[ 'Order Attributes' ] = $attributes; 160 } 161 } 162 156 163 if ( empty( $body[ 'Order Attributes' ] ) ) { 157 164 $order = wc_get_order( $order_id ); … … 177 184 178 185 $this->apiLog( $response, $order_id, $trigger ); 186 187 } 188 189 private function jsonFilter( $json, $orderId ) { 190 191 if ( ! is_array( $json ) || empty( $json['line_items'] ) ) { 192 return null; 193 } 194 195 $order = wc_get_order( $orderId ); 196 if ( ! $order ) return null; 197 198 $sampleItem = $json['line_items'][0] ?? []; 199 if ( ! is_array( $sampleItem ) ) return null; 200 201 $requestedKeys = array_keys( $sampleItem ); 202 if ( empty( $requestedKeys ) ) return null; 203 204 $keyMap = [ 205 'name' => 'get_name', 206 'product_id' => 'get_product_id', 207 'total' => 'get_total', 208 ]; 209 210 $neededMethods = []; 211 foreach ( $requestedKeys as $key ) { 212 if ( isset( $keyMap[ $key ] ) ) { 213 $neededMethods[ $key ] = $keyMap[ $key ]; 214 } 215 } 216 if ( empty( $neededMethods ) ) return null; 217 218 $productData = []; 219 foreach ( $order->get_items() as $item ) { 220 $row = []; 221 foreach ( $neededMethods as $targetKey => $method ) { 222 $row[ $targetKey ] = $item->{ $method }(); 223 } 224 if ( ! empty( $row ) ) { 225 $productData[] = $row; 226 } 227 } 228 return $productData; 179 229 180 230 } -
anyapi/trunk/inc/Views/Dashboard.php
r3347672 r3394506 32 32 33 33 echo '<ul class="feature-attributes">'; 34 echo '<li class="feature-attribute"><span><strong>Easy</strong> to Setup</span></li>';35 echo '<li class="feature-attribute"><span><strong>T igger</strong> Order Status</span></li>';36 echo '<li class="feature-attribute"><span><strong>Preview</strong> API JSON </span></li>';37 echo '<li class="feature-attribute"><span><strong>Filter</strong> Order API fields</span><div class="image-container"><img src="' . esc_url( Anyapi::getImages( 'lite' ) ) . '" alt="" width="16" height="16"></div></li>';34 echo '<li class="feature-attribute"><span><strong>Easy</strong> to <b>Automate</b> WooCommerce Order</span></li>'; 35 echo '<li class="feature-attribute"><span><strong>Trigger</strong> Order Created</span></li>'; 36 echo '<li class="feature-attribute"><span><strong>Preview</strong> API JSON Fields</span></li>'; 37 echo '<li class="feature-attribute"><span><strong>Filter</strong> Order API Fields</span><div class="image-container"><img src="' . esc_url( Anyapi::getImages( 'lite' ) ) . '" alt="" width="16" height="16"></div></li>'; 38 38 echo '</ul>'; 39 39 … … 43 43 44 44 echo '<ul class="feature-attributes">'; 45 echo '<li class="feature-attribute"><span><strong> Log</strong> all API data</span></li>';46 echo '<li class="feature-attribute"><span><strong> HTTP</strong> Response</span></li>';47 echo '<li class="feature-attribute"><span><strong> Payload</strong> Logs</span></li>';48 echo '<li class="feature-attribute"><span><strong> Order API</strong>Logs</span><div class="image-container"><img src="' . esc_url( Anyapi::getImages( 'lite' ) ) . '" alt="" width="16" height="16"></div></li>';45 echo '<li class="feature-attribute"><span><strong>Monitor</strong> <b>Real-time</b> API Logging</span></li>'; 46 echo '<li class="feature-attribute"><span><strong>Track</strong> API Performance</span></li>'; 47 echo '<li class="feature-attribute"><span><strong>Logs</strong> Including Status, Payloads, Error etc..</span></li>'; 48 echo '<li class="feature-attribute"><span><strong>Full</strong> API Logs</span><div class="image-container"><img src="' . esc_url( Anyapi::getImages( 'lite' ) ) . '" alt="" width="16" height="16"></div></li>'; 49 49 echo '</ul>'; 50 50 … … 105 105 $inputValue = ''; 106 106 echo '<div class="api-input-form">'; 107 echo '<label for="' . esc_attr( $label ) . '">' . esc_attr( $label ) . '<div class="image-container"><img src="' . esc_url( $image ) . '" alt="" width="16" height="16"><div class="image-container"><div class="image-info"><p>'. esc_attr( $tooltips ) .'</p></div></div></div></label><input type="text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $optionName ). '[' . esc_attr( $name ) . ']" value="' . esc_attr( $inputValue ). '" placeholder="' . esc_attr( $placeholder ) . '" required> 107 echo '<label for="' . esc_attr( $label ) . '" class="api-label">' . esc_attr( $label ); 108 echo '<span class="image-wrapper">'; 109 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 110 echo '<span class="image-info">'. esc_attr( $tooltips ) .'</span>'; 111 echo '</span></label>'; 112 echo '<input type="text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $optionName ). '[' . esc_attr( $name ) . ']" value="' . esc_attr( $inputValue ). '" placeholder="' . esc_attr( $placeholder ) . '" required> 108 113 </div>'; 114 109 115 } 110 116 … … 193 199 'keyId' => array( 194 200 'id' => array( 195 'title' => ' Description',196 'placeholder' => ' Name of API Key',197 'tooltip' => ' Enter the unique name of API Key',201 'title' => 'Name', 202 'placeholder' => 'ID of Automation (Webhook)', 203 'tooltip' => 'Unique name for identifying this Automation', 198 204 ), 199 205 ), … … 201 207 'basicKey' => array( 202 208 'title' => 'Consumer Key', 203 'placeholder' => ' Enter consumer key',204 'tooltip' => ' Please enter the Basic Auth Consumer Key',209 'placeholder' => 'Username', 210 'tooltip' => 'Basic Auth Consumer Key refers to an identifier assigned to the URL', 205 211 ), 206 212 'basicSecret' => array( 207 213 'title' => 'Consumer Secret', 208 'placeholder' => ' Enter consumer secret',209 'tooltip' => ' Please enter the Basic Auth Consumer Secret',214 'placeholder' => 'Password', 215 'tooltip' => 'Basic Auth Consumer Secret used to sign requests or generate access tokens', 210 216 ), 211 217 ), … … 213 219 'bearerToken' => array( 214 220 'title' => 'Token', 215 'placeholder' => ' Enter token',216 'tooltip' => ' Please enter the Bearer Token',221 'placeholder' => 'Token', 222 'tooltip' => 'Bearer Token requests to access a protected API or resource', 217 223 ), 218 224 ), -
anyapi/trunk/inc/Views/OrderApi.php
r3347672 r3394506 18 18 $image = Anyapi::getImages( 'tips' ); 19 19 echo '<div class="api-input-form">'; 20 echo '<div class="feature-tags"><span class=" ">Add a new API Integration</span></div>';20 echo '<div class="feature-tags"><span class="tag tag--cap"><b>Create a new API Automation</span></b></div>'; 21 21 echo '<div class="feature-tags">'; 22 22 echo "<span class=\"tag-key tag large tag--large url-tag\">Enter URL</span></div>"; 23 23 echo '<div class="api-input-form">'; 24 echo '<label for="apiurl">URL<div class="image-container"><img src="' . esc_url( $image ) . '" alt="" width="16" height="16"><div class="image-container"><div class="image-info"><p>API request for order api intgeration</p></div></div></div></label>'; 25 echo '<input type="text" class="" id="api-url" name="" placeholder="Please input API URL" value=""></div>'; 24 echo '<label for="apiurl" class="api-label">URL'; 25 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 26 echo '<span class="image-info">URL where the payload deliverd (JSON)</span>'; 27 echo '</span></label>'; 28 echo '<input type="text" id="api-url" name="" placeholder="Please input API URL" value=""></div>'; 26 29 echo '</div>'; 27 30 … … 75 78 76 79 echo '<div class="api-input-form">'; 77 echo '<div class="feature-tags">'; 78 echo "<span class=\"tag-key tag large tag--large body-tag\">Enter API Body</span></div>"; 79 echo '<label for="apibody">API BODY<div class="image-container"><img src="' . esc_url( $image ) . '" alt="" width="16" height="16"><div class="image-container"><div class="image-info"><p>API request BODY which will be send out</p></div></div></div></label>'; 80 echo '<textarea id="api-body" name="" class="" placeholder="Please input API BODY" value="" rows="6"></textarea></div>'; 81 82 echo '<div class="api-input-form">'; 83 echo '<div class="feature-tags"><span class="">Create Order API actions</span></div>'; 84 echo '<div class="feature-tags">'; 85 echo "<span class=\"tag-key tag large tag--large action-tag\">Select Order API actions</span></div>"; 80 echo '<div class="feature-tags"><span class="tag tag--cap"><b>Create Order Actions that will trigger in this Automation</b></span></div>'; 81 echo '<div class="feature-tags">'; 82 echo "<span class=\"tag-key tag large tag--large action-tag\">Select Actions</span></div>"; 86 83 87 84 $fields = self::fields(); 88 foreach( $fields[ 'action' ] as $key => $value ) { 89 $class = $value['class' ]; 90 $text = $value[ 'text' ]; 91 echo '<div class="feature-tags order-status">'; 92 echo '<span class="' . esc_attr( $class ) . ' tag tag--woo">' . esc_attr( $text ) . '</span>'; 93 if ( $key !== 'thankyou' && $key !== 'new order' ) { 94 echo '<div class="image-container"><img src="' . esc_url( $image2 ) . '" alt="" width="16" height="16"></div>'; 95 } 85 echo '<div class="action-tags order-status">'; 86 87 foreach ( $fields[ 'action' ] as $key => $value ) { 88 $class = $value[ 'class' ]; 89 $title = $value[ 'title']; 90 $text = $value[ 'text']; 91 echo '<div class="tag-item">'; 92 echo '<div class="tag-wrapper">'; 93 echo '<span class="' . esc_attr( $class ) . ' tag tag--woo">' . esc_html( $title ) . '</span>'; 94 if ($key !== 'thankyou' && $key !== 'new order') { 95 echo '<div class="image-container"><img src="' . esc_url($image2) . '" alt="" width="16" height="16"></div>'; 96 } 97 echo '</div>'; 98 echo '<p class="tag-desc">'. esc_attr( $text ) .'</p>'; 96 99 echo '</div>'; 97 100 } 98 101 echo '</div>'; 102 103 echo '<div class="api-input-form">'; 104 echo '<div class="feature-tags">'; 105 echo "<span class=\"tag-key tag large tag--large body-tag\">Enter API Body</span></div>"; 106 echo '</div>'; 107 108 echo '<div class="api-input-form">'; 109 echo '<label for="apibody" class="api-label">API BODY'; 110 echo '<span class="image-wrapper">'; 111 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 112 echo '<span class="image-info">Payload or data you send in the request body to the APIs</span>'; 113 echo '</span></label>'; 114 echo '<textarea id="api-body" name="" class="" placeholder="Please input API BODY" value="" rows="6"></textarea></div>'; 99 115 echo '</div>'; 100 116 … … 109 125 echo '<hr><br>'; 110 126 echo '<div class="api-input-form">'; 111 echo '<div class="feature-tags"><span class=" ">Preview json</span></div>';127 echo '<div class="feature-tags"><span class="tag tag--cap"><b>Preview JSON</b></span></div>'; 112 128 echo '<div class="feature-tags">'; 113 129 echo "<span class=\"tag-key tag large tag--large select-filter-tag\">Select filter mode</span></div>"; … … 123 139 echo "<span class=\"tag-key tag large tag--large preview-filter-tag\">Preview Json</span></div>"; 124 140 echo '<div class="feature-hidden json-pre" hidden>'; 125 echo "<span class=\"tag-key tag tag--woo filter-tag\"></span></div>";141 echo '</div>'; 126 142 127 143 // Basic mode … … 135 151 public function selectApiFields() { 136 152 153 $image2 = Anyapi::getImages( 'lite' ); 154 137 155 // Advance mode 138 156 echo '<div class="filter-json-advance mode-pre json">'; 139 157 echo '<div class="adv-box-table-container"></div></div>'; 140 158 159 // Advance mode filter 160 echo '<div class="filter-json-advance-sample mode-pre json">'; 161 162 echo '<div class="feature-tags order-properties">'; 163 echo '<span class="fields-line-items tag tag--order available">Line items fields</span>'; 164 echo '<span class="fields-product-id tag tag--fields available">Product ID</span>'; 165 echo '<span class="fields-product-name tag tag--fields available">Product name</span>'; 166 echo '<span class="fields-product-total tag tag--fields available">Total</span>'; 167 echo '</div>'; 168 169 echo '<div class="feature-tags order-properties">'; 170 echo '<a href="https://anyapiplugin.com/pricing"><span class="upgrade tag tag--woo available">Unlock All fields</span></a>'; 171 echo '<div class="image-container"><img src="' . esc_url( $image2 ) . '" alt="" width="16" height="16"></div>'; 172 echo '</div>'; 173 141 174 // Advance mode preview 142 echo '<div class="filter-json-advance-sample mode-pre json">'; 143 echo '<pre class="prettyprint scroll pretty advance prettyprinted">'; 144 self::advanceJsonSample(); 175 echo '<pre class="prettyprint scroll pretty advance prettyprinted" id="filter-output">'; 145 176 echo '</pre></div>'; 146 177 … … 283 314 'action' => array( 284 315 'thankyou' => array( 285 'class' => 'trigger thankyoupage', 286 'text' => 'Trigger - thankyou page', 316 'class' => 'trigger thankyoupage', 317 'title' => 'Watch Orders', 318 'text' => 'Trigger when the order checkout in thankyou page' 287 319 ), 288 320 'new order' => array( 289 'class' => 'trigger neworder', 290 'text' => 'Trigger - new order created', 291 ), 292 'pending' => array( 293 'class' => 'trigger order-status-pending', 294 'text' => 'Order Status - pending', 295 ), 296 'processing' => array( 297 'class' => 'trigger order-status-processing', 298 'text' => 'Order Status - processing', 299 ), 300 'on-hold' => array( 301 'class' => 'trigger order-status-on-hold', 302 'text' => 'Order Status - on-hold', 303 ), 304 'completed' => array( 305 'class' => 'trigger order-status-completed', 306 'text' => 'Order Status - completed', 307 ), 308 'cancelled' => array( 309 'class' => 'trigger order-status-cancelled', 310 'text' => 'Order Status - cancelled', 311 ), 312 'refunded' => array( 313 'class' => 'trigger order-status-refunded', 314 'text' => 'Order Status - refunded', 321 'class' => 'trigger neworder', 322 'title' => 'Watch New Orders', 323 'text' => 'Trigger when a new order is created' 324 ), 325 'pending' => array( 326 'class' => 'trigger order-status-pending', 327 'title' => 'Watch Pending Order', 328 'text' => 'Trigger when the order status is pending' 329 ), 330 'processing' => array( 331 'class' => 'trigger order-status-processing', 332 'title' => 'Watch Processing Order', 333 'text' => 'Trigger when the order status is processing' 334 ), 335 'on-hold' => array( 336 'class' => 'trigger order-status-on-hold', 337 'title' => 'Watch On Hold Order', 338 'text' => 'Trigger when the order status is on hold' 339 ), 340 'completed' => array( 341 'class' => 'trigger order-status-completed', 342 'title' => 'Watch Completed Order', 343 'text' => 'Trigger when the order status is completed' 344 ), 345 'cancelled' => array( 346 'class' => 'trigger order-status-cancelled', 347 'title' => 'Watch Cancelled Order', 348 'text' => 'Trigger when the order status is cancelled' 349 ), 350 'refunded' => array( 351 'class' => 'trigger order-status-refunded', 352 'title' => 'Watch Refunded Order', 353 'text' => 'Trigger when the order status is refunded' 315 354 ), 316 355 'failed' => array( 317 356 'class' => 'trigger order-status-failed', 318 'text' => 'Order Status - failed', 357 'title' => 'Watch Failed Order', 358 'text' => 'Trigger when the order status is failed' 319 359 ), 320 360 ), … … 333 373 return array( 334 374 'action' => array( 335 ' thankyou' => array(375 'Orders' => array( 336 376 'status' => 'woocommerce_thankyou' 337 377 ), 338 ' new order' => array(378 'New Orders' => array( 339 379 'status' => 'woocommerce_new_order' 340 380 ), … … 345 385 public static function basicJsonSample() { 346 386 347 echo ' *** Original Order API json sample***387 echo ' *** JSON response example: *** 348 388 { 349 389 "id": 727, … … 516 556 public static function advanceJsonSample() { 517 557 518 echo ' *** Upgrade and filter the Order API json fields ***';519 echo ' 520 558 echo ' *** Upgrade now ! Filter the Order API json fields ***'; 559 echo ' 560 *** JSON response example: *** 521 561 { 522 "status": "completed", 523 "currency": "USD", 524 "shipping_total": "10.00", 525 "total": "29.35", 526 "billing": { 527 "first_name": "John", 528 "last_name": "Doe", 529 "email": "[email protected]", 530 "phone": "(555) 555-5555" 562 "id" : "", 563 "status" : "", 564 "total" : "", 565 "billing" : { 566 "first_name": "", 567 "last_name": "", 531 568 }, 532 569 "line_items": [ 533 { 534 "id": 315, 535 "name": "Woo Single #1", 536 "product_id": 93, 537 "total": "6.00", 538 }, 570 { 571 "name" : "", 572 "product_id" : "", 573 "sku" : "", 574 }, 539 575 ], 540 "payment_method": "bacs",541 "payment_method_title": "Direct Bank Transfer",542 576 }'; 543 577 -
anyapi/trunk/inc/Views/RestApi.php
r3376733 r3394506 30 30 31 31 echo '<div class="api-input-form">'; 32 echo '<label for="' . esc_attr( $label ) . '">' . esc_attr( $label ) . '<div class="image-container"><img src="' . esc_url( $image ) . '" alt="tooltips icon" width="16" height="16"><div class="image-container"><div class="image-info"><p>'. esc_attr( $tooltips ) .'</p></div></div></div></label>'; 32 echo '<label for="' . esc_attr( $label ) . '" class="api-label">' . esc_attr( $label ); 33 echo '<span class="image-wrapper">'; 34 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 35 echo '<span class="image-info">'. esc_attr( $tooltips ) .'</span>'; 36 echo '</span></label>'; 37 33 38 echo '<select class="dropdown" id="' . esc_attr( $name ) . '" name="' . esc_attr( $args[ 'option' ] ) . '[' . esc_attr( $name ) . ']">'; 34 39 … … 56 61 $textAreaValue = $apiBody; 57 62 echo '<div class="api-input-form">'; 58 echo '<label id="bodyLabel" hidden>API BODY<div class="image-container"><img src="' . esc_url( $image ) . '" alt="tooltips icon" width="16" height="16"><div class="image-container"><div class="image-info"><p>API Body</p></div></div></div></label>'; 59 echo '<textarea id="body" name="' . esc_attr( $args[ 'option' ] ) . '[body]" class="" placeholder="Please input API BODY" rows="6" hidden>' . esc_attr( $textAreaValue ) . '</textarea></div>'; 63 64 echo '<label id="bodyLabel" hidden >API BODY'; 65 echo '<span class="image-wrapper">'; 66 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 67 echo '<span class="image-info">'. esc_attr( $tooltips ) .'</span>'; 68 echo '</span></label>'; 69 70 echo '<textarea id="rest-api-body-text" name="' . esc_attr( $args[ 'option' ] ) . '[body]" class="" placeholder="Please input API BODY" rows="6" hidden>' . esc_attr( $textAreaValue ) . '</textarea></div>'; 60 71 61 72 foreach ( $fields[ 'text' ] as $key => $value ) { … … 110 121 111 122 echo '<div class="api-input-form">'; 112 echo '<label for="' . esc_attr( $label ) . '">' . esc_attr( $label ) . '<div class="image-container"><img src="' . esc_url( $image ) . '" alt="tooltips icon" width="16" height="16"><div class="image-container"><div class="image-info"><p>'. esc_attr( $tooltips ) .'</p></div></div></div></label><input type="text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $args[ 'option' ] ) . '[' . esc_attr( $name ) . ']" value="' . esc_attr( $inputValue ) . '" placeholder="' . esc_attr( $placeholder ) . '" required> 123 echo '<label for="' . esc_attr( $label ) . '" class="api-label">' . esc_attr( $label ); 124 echo '<span class="image-wrapper">'; 125 echo '<img src="' . esc_url( $image ) . '" alt="" width="16" height="16">'; 126 echo '<span class="image-info">'. esc_attr( $tooltips ) .'</span>'; 127 echo '</span></label>'; 128 129 echo '<input type="text" id="' . esc_attr( $name ) . '" name="' . esc_attr( $args[ 'option' ] ) . '[' . esc_attr( $name ) . ']" value="' . esc_attr( $inputValue ) . '" placeholder="' . esc_attr( $placeholder ) . '" required> 113 130 </div>'; 114 131 … … 130 147 'type' => array( 131 148 'title' => 'API Type', 132 'tooltip' => ' WooCommerce API Type',149 'tooltip' => 'Select the WooCommerce API allows you to create, view, update, and delete individual', 133 150 'option' => array( 134 151 'orders' => 'Orders', … … 139 156 'method' => array( 140 157 'title' => 'API Methods', 141 'tooltip' => ' API Methods',158 'tooltip' => 'Select the API Methods', 142 159 'option' => array( 143 160 'get' => 'GET', … … 152 169 'title' => 'Domain Name', 153 170 'placeholder' => 'Enter domain name', 154 'tooltip' => ' Request API URL',171 'tooltip' => 'URL that request WooCommerce API', 155 172 ), 156 173 'id' => array( 157 'title' => 'I D',158 'placeholder' => 'Enter Order ID',159 'tooltip' => ' ID ofrequest',174 'title' => 'Id', 175 'placeholder' => 'Enter ID for WooCommerce API', 176 'tooltip' => 'Enter ID if specified request', 160 177 ), 161 178 'key' => array( 162 179 'title' => 'Consumer Key', 163 180 'placeholder' => 'Enter consumer key', 164 'tooltip' => 'WooCommerce API Consumer Key',181 'tooltip' => 'WooCommerce REST API Consumer Key', 165 182 ), 166 183 'secret' => array( 167 184 'title' => 'Consumer Secret', 168 185 'placeholder' => 'Enter consumer secret', 169 'tooltip' => 'WooCommerce API Consumer Secret',186 'tooltip' => 'WooCommerce REST API Consumer Secret', 170 187 ), 171 188 ), -
anyapi/trunk/readme.txt
r3376733 r3394506 2 2 Contributors: anyapi 3 3 Donate link: 4 Tags: api, json, rest, field, product4 Tags: api, json, webhooks, automation, automator 5 5 Tested up to: 6.8 6 Stable tag: 1.1. 26 Stable tag: 1.1.3 7 7 License: GPLv2 or later 8 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html 9 9 10 No-code WooCommerce REST API integration. Connect orders to any API with webhooks, API logs, and easy setup in minutes.10 AnyAPI No-Code WooCommerce REST API Integration. Connect Orders to any APIs with Automations, JSON Filter, API logs, and Easy Setup in Minutes. 11 11 12 12 == Description == 13 13 14 [AnyAPI](https://www.anyapiplugin.com) lets you connect WooCommerce and WordPress to any REST API without coding. Set up powerful API integrations in minutes with a beginner-friendly interface and detailed API logs. Perfect for syncing orders to ERPs, AI chatbots, or custom platforms.14 [AnyAPI](https://www.anyapiplugin.com) lets you connect WooCommerce and WordPress to **any REST API without coding**. Set up powerful API integrations in minutes with a beginner-friendly interface and detailed API logs. Perfect for syncing orders to ERPs, AI chatbots, or custom platforms. 15 15 16 * Features: single API key, order triggers, REST API tools and API logs. 17 * No coding required – ideal for business owners, developers, and project managers. 18 * Supports Basic Auth and Bearer Token authentication. 19 * Fully tested with WordPress 6.8 and WooCommerce 9.4.1. 16 * Features - API Automation, Order Triggers, Woo API Development Tools and API Logs. 17 * No Coding Required – Ideal for Business Owners, Developers, and Project Managers. 18 * Fully Tested with WordPress 6.8 and WooCommerce 9.4.1. 20 19 21 = ****** Key Features ****** = 20 = E-commerce Automation = 21 22 When an order action is triggered, AnyAPI **automatically sends JSON** to kick off. 23 Use **1-click JSON Filter** and **API logs** to connect in seconds. Send **unlimited outgoing webhooks** even on the free plan. 24 25 = Webhook Automation = 26 27 Need webhook connectivity? AnyAPI supports: 28 - Security headers 29 - Any HTTP method (GET, POST, PUT, PATCH, DELETE) 30 - Supports Basic Auth and Bearer Token Authentication. 22 31 23 32 = Order API Integration = 24 33 25 - **Seamlessly integrate WordPress, WooCommerce, and any REST API.26 - **Trigger most WooCommerce Order API actions (e.g. new order, status change).27 - **Custom filter for WooCommerce Order API JSON fields.28 - **Preview API JSON for easy setup.34 - Seamlessly integrate WordPress, WooCommerce, and any REST API. 35 - Trigger most WooCommerce Order API actions (e.g. new order, status change). 36 - Custom Filter for WooCommerce Order API JSON fields. 37 - Preview API JSON fields. 29 38 30 = Woo Commerce RESTAPITools =39 = Woo API Development Tools = 31 40 32 - **Perform CRUD operations (Create, Read, Update, Delete).33 - **Access Orders, Products, and Customers APIs.34 - **View Response JSON for debugging.41 - Perform CRUD operations (Create, Read, Update, Delete). 42 - Access Orders, Products, and Customers APIs. 43 - View Response JSON for debugging. 35 44 36 45 = API Integration Logs = 37 46 38 - **Log all API integration data (Order ID, HTTP Code, URL, Payload, etc.).39 - **Monitor and troubleshoot integrations with ease.40 47 - Monitor Real-time API Logging 48 - Log all API integration data (Status, Payloads, Error etc..). 49 - Monitor and troubleshoot integrations with ease. 41 50 42 51 == Frequently Asked Questions == … … 48 57 = What is Order API integration ? = 49 58 50 Send order data to any REST API when a customer purchases on your WooCommerce site. AnyAPI triggers actions and syncs data effortlessly. 59 If you want to send data to any REST API when a customer purchases a product on your website, you can create an OrderAPI integration to trigger actions and send out the purchase data. 60 61 = What is REST API Tools ? = 62 63 You can use AnyAPI’s built-in REST API tools to test WooCommerce APIs, and it also provides a simple way to perform CRUD methods. 64 65 = Do I need to have coding skills to use AnyAPI ? = 66 67 No. Coding skills are not required to use AnyAPI. 51 68 52 69 = Where are the user guides ? = 53 70 54 Visit our [Getting Started](https://anyapiplugin.com/documentation/) guide for step-by-step setup and configuration. 55 71 Visit our [Getting Started](https://anyapiplugin.com/documentation/?utm_source=anyapi_plugin&utm_medium=plugin_details&utm_campaign=docs_in_details) guide for step-by-step setup and configuration. 56 72 57 73 == Screenshots == 58 Dashboard Features 59 Dashboard Setup Key 60 WooCommerce Order API Integration Step 1 61 WooCommerce Order API Integration Step 2 62 WooCommerce Order API Integration Step 3 63 74 1.**Automation** - WooCommerce Order API 75 2.**AnyAPI** Dashboard 76 3.**API logs* - Monitoring your WooCommerce API integration data 77 4.**Visual Interface** - 1-click JSON Filter 78 5.**Trigger API** - Turn API status ON to Automate workflows 64 79 65 80 == Changelog == 81 82 = 1.1.3 (2025-11-12) = 83 * Added - filter fields and json preview in advance mode 84 * Added - notice for apilog 85 * Tweak - tooltips, feature content, orderapi content and description 66 86 67 87 = 1.1.2 (2025-10-11) = -
anyapi/trunk/templates/dashboard.php
r3347672 r3394506 24 24 <div class="feature-dashboard-tags"> 25 25 <span class="tag tag--codefree">Code-free</span> 26 <span class="tag tag--woo">Woo Commerce</span>27 < span><small><a href="https://anyapiplugin.com/docs/order-api/setup-order-api-integration/" target="_blank">Start Guide</a></small></span>26 <span class="tag tag--woo">Woo</span> 27 <a href="https://anyapiplugin.com/docs/setup-order-api-integration/?utm_source=anyapi_plugin&utm_medium=plugin_dashboard&utm_campaign=setup_docs_link" target="_blank"><span class="tag tag--new">Start Guide</span></a> 28 28 </div> 29 <p class="feature-name">Order API Integration </p>29 <p class="feature-name">Order API Integration to any APIs</p> 30 30 <?php 31 31 do_settings_sections( 'anyapi_orderapi_integration_content' ); … … 43 43 <div class="feature-dashboard-tags"> 44 44 <span class="tag tag--codefree">Code-free</span> 45 <span class="tag tag--woo">Woo Commerce</span>46 < span><small><a href="https://anyapiplugin.com/docs/woocommerce-api-tools/development-tools/" target="_blank">Start Guide</a></small></span>45 <span class="tag tag--woo">Woo</span> 46 <a href="https://anyapiplugin.com/docs/woocommerce-api-tools/development-tools/?utm_source=anyapi_plugin&utm_medium=plugin_dashboard&utm_campaign=setup_docs_link" target="_blank"><span class="tag tag--new">Start Guide</span></a> 47 47 </div> 48 <p class="feature-name"> API Development Tools</p>48 <p class="feature-name">Woo API Development Tools</p> 49 49 50 50 <ul class="feature-attributes"> 51 51 <li class="feature-attribute"> 52 <span><strong>Easy</strong> to Use</span>52 <span><strong>Easy</strong> for Testing</span> 53 53 </li> 54 54 <li class="feature-attribute"> … … 56 56 </li> 57 57 <li class="feature-attribute"> 58 <span><strong>A PI</strong> order, products, customers</span>58 <span><strong>Access</strong> Order, Products, Customers APIs</span> 59 59 </li> 60 60 <li class="feature-attribute"> 61 <span><strong> Response</strong> JSON</span>61 <span><strong>View</strong> Response JSON for debugging</span> 62 62 </li> 63 63 </ul>
Note: See TracChangeset
for help on using the changeset viewer.