Plugin Directory

Changeset 3439940


Ignore:
Timestamp:
01/15/2026 01:03:07 AM (5 weeks ago)
Author:
richplugins
Message:
  • Major rewrite of the plugin architecture
  • New Google reviews connection wizard
  • Added support for Facebook recommendations with platform icons
  • Improved and stabilized Yelp reviews integration
  • Added support for TripAdvisor reviews
  • Ability to combine reviews from multiple platforms into a single feed or separately
  • Fully redesigned reviews data structure with multilingual text support
  • Complete refactor of frontend styles
  • Performance improvements
  • Major bug fixes
Location:
fb-reviews-widget
Files:
4 added
4 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • fb-reviews-widget/trunk/assets/css/admin-main-rtl.css

    r3406362 r3439940  
    1 @charset "UTF-8";.trustreviews-admin #wpcontent{padding:0}.trust-reviews_page_trustreviews-builder #wpcontent,.trustreviews-admin.trust-reviews_page_trustreviews-builder #wpcontent{padding-left:300px}.toplevel_page_trustreviews .wp-menu-image img{width:18px}.trustreviews-admin.edit-php #wpbody{color:#5d6f80;padding-right:20px;position:relative}.trustreviews-admin.edit-php #wpbody .wp-header-end,.trustreviews-admin.post-new-php #wpbody .wp-header-end,.trustreviews-admin.post-php #wpbody .wp-header-end{margin-top:6px}.trustreviews-admin .update-nag{margin:20px 20px 0 0}.trustreviews-admin.edit-php .update-nag{margin:20px 0 0 20px}.trustreviews-admin.edit-php .update-nag~.update-nag{margin-right:0}.trustreviews-admin #wpbody #screen-meta-links{display:none}.trustreviews-admin #screen-meta{background-color:#ecf0f1;border:0;margin:0}.trustreviews-admin #screen-meta-links{position:absolute;top:0;left:0;z-index:1}.trustreviews-admin .notice p{font-size:14px}.trustreviews-admin .notice.notice-error p{color:#d63638}.trustreviews-tophead{-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-box-sizing:border-box;align-items:center;background-color:#fff;border-bottom:1px solid #cfd9db;padding:15px 20px;box-sizing:border-box;position:relative;top:46px;width:100%}@media (min-width:601px){.trustreviews-tophead{-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0}}.trustreviews-tophead img{width:32px;margin:0 0 0 4px;vertical-align:middle}.trustreviews-tophead-title{padding:0;font-size:18px;font-weight:600;line-height:1.4em}.trustreviews-page-title{font-size:23px;font-weight:400;margin:0;padding:20px 20px 0 0;line-height:29px}.trustreviews-version{position:absolute;top:0;left:16px;text-align:center}.trustreviews-version-free{display:inline-block;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:12px 0 3px;padding:4px 10px;font-size:12px;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.trustreviews-version-upgrade span{color:#4ea2e7;font-size:11px;font-weight:600;padding:6px 4px;cursor:default;transition:color .3s;text-transform:uppercase}.trustreviews-version-upgrade span:hover{color:#157cd1}.trustreviews-version-upgrade .trustreviews-upgrade-head{margin:0 0 5px;font-weight:600}#trustreviews-upgrade-tips{position:absolute;left:0;border:2px solid #ccc;border-radius:5px;padding:10px 12px;margin:2px 0 0;z-index:5;background:#fff;width:256px;text-align:right;font-size:16px;line-height:24px;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease}#trustreviews-upgrade-tips:hover,.trustreviews-version-upgrade span:hover+#trustreviews-upgrade-tips{opacity:1;visibility:visible}#trustreviews-upgrade-tips>a{display:inline-block;width:100%;font-size:14px;font-weight:700;text-align:center;margin:10px 0 0;padding:5px 0 0;border-top:1px solid #ccc;text-transform:uppercase}.trustreviews-toolbar{padding:15px 20px;background-color:#fff;border-bottom:1px solid #cfd9db}@media (min-width:783px){.trustreviews-toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.trustreviews-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-bottom:0;margin-left:20px;min-width:0}.trustreviews-toolbar-title-input{background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:100%}.trustreviews-toolbar-title-input{font-size:18px;font-weight:400;line-height:1.4em;margin:0;padding:0}.trustreviews-toolbar-control{display:-webkit-box;display:-ms-flexbox;display:flex}.trustreviews-toolbar-control button{margin-right:20px!important}.trustreviews-toolbar-control input[type=text]{width:200px;height:34px;font-size:14px}.trustreviews-toolbar-options label{display:block;padding:0 4px 0 0}.trustreviews-admin .type-trustreviews_collection .title.column-title{font-size:0}.trustreviews-admin .type-trustreviews_collection .title.column-title .row-actions,.trustreviews-admin .type-trustreviews_collection .title.column-title strong{line-height:1.5em}.trustreviews-builder-workspace{display:block;position:relative;width:100%;overflow-y:hidden;box-sizing:border-box}.trustreviews-builder-preview{font-size:14px;grid-area:preview;min-height:0;min-width:0;padding:20px;line-height:1.75}.trustreviews-builder-options{box-sizing:border-box;position:fixed;top:32px;bottom:0;left:0;width:300px;overflow:hidden;transition:all .3s;z-index:1;overflow-y:auto;background:#fafafa}.trustreviews-builder-options.trustreviews-block-options{position:relative;width:100%}.trustreviews .wp-review-hidden{opacity:.5!important}.trustreviews .wp-review-hide{color:#fff!important;font-size:12px!important;font-weight:600!important;line-height:26px!important;text-decoration:none!important;text-transform:uppercase!important;padding:2px 8px!important;border-radius:3px!important;border-color:#0062cc!important;background-color:#427fbf!important}.trustreviews .wp-review-hide:hover{background-color:#1d62ab!important}#trustreviews-rate_us-wrap{display:block;position:fixed;right:0;top:100%;width:auto;font-size:16px;z-index:99999}#trustreviews-rate_us{padding:18px;opacity:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease}#trustreviews-rate_us.trustreviews-flash-visible{opacity:1;-webkit-transform:translate(0,-100%);-ms-transform:translate(0,-100%);transform:translate(0,-100%);text-align:right}#trustreviews-rate_us.trustreviews-flash-visible.trustreviews-flash-gout{opacity:.5;-webkit-transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease}.trustreviews-rate_us-content{padding:15px;background:#fff;border-radius:5px;box-shadow:0 1px 2px RGB(60 64 67/30%),0 2px 6px 2px RGB(60 64 67/15%)}.trustreviews-rate_us-head{font-size:22px;font-weight:600;margin:0 0 20px 0}.trustreviews-rate_us-body{font-size:18px}#trustreviews-rate_us-feedback svg,.trustreviews-rate_us-body svg{display:inline-block;padding:2px 4px;width:24px;height:24px;cursor:pointer;vertical-align:middle}.trustreviews-rate_us-body svg use{fill:#fa8e08}.trustreviews-rate_us-body svg:hover~svg use{fill:#ccc}#trustreviews-rate_us-feedback{font-size:18px;line-height:30px;text-align:center}#trustreviews-rate_us-feedback input{width:100%}#trustreviews-rate_us-feedback textarea{width:100%;height:128px}#trustreviews-rate_us-feedback button{margin:0 10px;padding:5px 15px;cursor:pointer}.trustreviews-overview-workspace{position:relative;font-size:14px;margin:20px}.trustreviews-overview-places{position:absolute;top:-50px;left:0}#trustreviews-overview-rating{font-size:15px}#trustreviews-overview-rating .trustreviews-rating{color:#fb8e28!important;font-weight:700!important}#trustreviews-overview-rating .wp-star svg{vertical-align:middle}.trustreviews-overview-h{margin:0 0 6px;color:#000;font-size:15px;font-weight:600}#trustreviews-overview-stats>div{line-height:32px}.trustreviews-stat-val{float:left;color:#29af4c;font-size:18px;font-weight:600}.trustreviews-stat-val.trustreviews-stat-up{color:#29af4c}.trustreviews-stat-val.trustreviews-stat-down{color:#e94135}.trustreviews-stat-val:after{position:absolute;left:6px;font-size:16px}.trustreviews-stat-val.trustreviews-stat-up:after{content:"⇧"}.trustreviews-stat-val.trustreviews-stat-down:after{content:"⇩"}.trustreviews-card{margin:0;padding:0;color:#36476c;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;position:relative;background:#fff;border-radius:0}.trustreviews-card-bordered{border:0;border-radius:10px}.trustreviews-card-body{padding:20px}.trustreviews-card-fh{max-height:500px;overflow-y:auto}.trustreviews-card-header{font-size:15px;font-weight:600;padding:10px 20px;background-color:#f6f7fa}.trustreviews-shadow{border-radius:10px;box-shadow:0 4px 4px RGB(54 71 108/15%)}.trustreviews-feedback span:first-child{display:inline-flex;align-items:center;vertical-align:sub!important}.nav-tab.nav-tab-active{box-shadow:none;background:#fff;border-bottom-color:#fff}.trustreviews-settings-workspace{font-size:14px;margin:20px;padding:20px;background:#fff}.trustreviews-settings-workspace p{font-size:14px}.trustreviews-settings-workspace .trustreviews-alert{max-width:500px;word-wrap:break-word}.trustreviews-warn{padding:10px;margin:20px 0 10px;font-size:15px;line-height:26px;font-weight:600;color:#000;border:1px solid #ccc;border-radius:3px;background-color:#ffeb3b}.trustreviews-support-question{padding-bottom:10px}.trustreviews-support-workspace{font-size:15px;line-height:22px;margin:20px;padding:20px;background:#fff}.trustreviews-support-workspace p{font-size:15px}.trustreviews-support-workspace #fig p{line-height:24px}.trustreviews-support-workspace img{width:100%}.trustreviews-support-workspace .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}.trustreviews-support-workspace .trustreviews-flex-col3>b:first-child,.trustreviews-support-workspace .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-left:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.box-img{padding:15px;margin:0 0 10px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}#fig hr{border-top:1px solid #bbb;border-bottom:2px solid #eee}#fig .trustreviews-flex-row{align-items:center!important;text-align:right;margin-bottom:40px}#fig .trustreviews-flex-col,#fig .trustreviews-flex-col3{padding:0 20px;line-height:24px}#fig .trustreviews-flex-col3:first-child,#fig .trustreviews-flex-col:first-child{padding-left:10px}#fig img{width:100%}#fig .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}#fig .trustreviews-flex-col3>b:first-child,#fig .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-left:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.trustreviews-field,.trustreviews-field *{box-sizing:border-box}.trustreviews-field{padding:0 0 15px 0;margin-top:1em;margin-bottom:1em;border-bottom:1px dashed #ddd}@media (min-width:600px){.trustreviews-field{display:flex;flex-wrap:wrap}.trustreviews-field-label{flex:0 0 28%;padding-left:2%}.trustreviews-field-option{flex:0 0 75%}}.trustreviews-field input[type=text]{margin:0;padding:5px 8px;border-radius:2px}.trustreviews-field select{width:15em;margin-right:0}.trustreviews-flex-row{display:flex;flex-flow:row wrap;width:100%}.trustreviews-flex-col,.trustreviews-flex-col2,.trustreviews-flex-col3,.trustreviews-flex-col4,.trustreviews-flex-col6,.trustreviews-flex-col7{width:100%;box-sizing:border-box}.trustreviews-flex-col3+.trustreviews-flex-col3,.trustreviews-flex-col3:first-child,.trustreviews-flex-col6:first-child,.trustreviews-flex-col:first-child{padding-left:10px}@media (min-width:800px){.trustreviews-flex-col{width:50%}.trustreviews-flex-col2{width:25%}.trustreviews-flex-col3{width:30%}.trustreviews-flex-col4{width:40%}.trustreviews-flex-col6{width:60%}.trustreviews-flex-col7{width:70%}}.trustreviews-alert{font-size:14px;line-height:1.846;border:none;color:#fff;padding:15px;border:1px solid transparent;border-radius:3px}.trustreviews-alert-dismissable,.trustreviews-alert-dismissible{padding-left:35px}.trustreviews-alert-success{color:#fff;border-color:#d6e9c6;background-color:#4caf50}.trustreviews-alert-warning{background-color:#a22525}.trustreviews-alert .alert-link,.trustreviews-alert a:not(.close){color:#fff;font-weight:700}.trustreviews-builder-platforms{position:relative;box-sizing:border-box}.trustreviews-connect-text{font-size:14px;font-weight:600;margin:0 0 10px 0;color:#ffaf02;text-transform:uppercase;text-decoration:underline}.trustreviews-builder-top{padding:10px;color:#23282d;font-size:13px;font-weight:600;line-height:1.4em;cursor:pointer;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fafafa url("../img/button-down-black.svg") no-repeat left}.trustreviews-builder-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.trustreviews-builder-inside{border-top:none;padding:10px 10px 0;line-height:16px;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.trustreviews-builder-inside .trustreviews-builder-option{margin:10px 0 0;position:relative}.trustreviews-builder-inside .trustreviews-builder-option:first-child{margin-top:0}.trustreviews-builder-inside .trustreviews-builder-option:last-child{margin-bottom:10px}.trustreviews-builder-inside button,.trustreviews-builder-inside input[type=text],.trustreviews-builder-inside select,.trustreviews-builder-inside textarea{width:100%;clear:both;border-spacing:0}.trustreviews-builder-inside pre{margin:0;color:#b73434;font-size:10px;line-height:16px;padding:4px;background:#fff;overflow:auto}.trustreviews-builder-connect{display:inline-block;margin:0 0 5px 10px;padding:6px;font-weight:600;font-size:12px;color:#fff;border:none;cursor:pointer;text-align:center;background:#eee;text-transform:uppercase}.trustreviews-builder-connect:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-builder-connect:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-btn{color:#fff;border:0;outline:0;cursor:pointer;font-weight:600;font-size:12px;padding:5px 10px;text-transform:uppercase;background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 2px 4px RGB(0 0 0/24%);text-decoration:none;user-select:none}.trustreviews-connect-btn:hover{background:#ef8d14;box-shadow:0 0 2px RGB(0 0 0/12%),0 3px 5px RGB(0 0 0/24%)}.trustreviews-connect-btn:active{background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 0 1px RGB(0 0 0/24%)}.trustreviews-connect-google-inside{padding:0 1px}.trustreviews-connections{padding-bottom:10px}.trustreviews-connection{cursor:move}.trustreviews-connect-business{display:block;color:#333;text-align:right;margin:10px 0 0;border:1px solid #ccc;background:#fafafa url(../img/button-down-black.svg) no-repeat left}.trustreviews-connect-business:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-connect-business:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-business+div{padding:4px;border:1px solid #ccc;border-top:0}.trustreviews-connect-select{display:none!important}.trustreviews-platform-multiple .trustreviews-connect-select{display:inline-block!important}img.trustreviews-connect-photo{width:24px;height:24px;margin-left:10px;border-radius:50%;border:1px solid #ccc;vertical-align:middle}.trustreviews-connect-photo-change{margin-left:10px}.trustreviews-connect-error{color:#e60909;font-size:13px}.trustreviews-connection-checkbox{display:none;margin:10px 6px 0 0}.trustreviews-platform-multiple .trustreviews-connection-checkbox{display:block}.trustreviews-quest{position:absolute;top:6px;left:3px;width:16px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;border:1px solid #ccc;border-radius:50px;background:#eee}.trustreviews-quest.trustreviews-quest-top{top:0}.trustreviews-quest.trustreviews-quest-top22{top:22px}.trustreviews-quest:hover{border:1px solid #999}.trustreviews-quest-help{display:none;margin:0 0 10px 0;padding:4px;font-size:13px;line-height:18px;background:#eee}.trustreviews-well{padding:10px;margin:10px 0;border-radius:3px;border:1px solid #d9d9d9;background:#f1f1f1}#rating_temp{height:260px;font-size:12px;word-break:break-all}#trustreviews-connect-wizard[data-platform] [data-platform]{display:none}#trustreviews-connect-wizard[data-platform=google] [data-platform=google]{display:block}#trustreviews-connect-wizard[data-platform=yelp] [data-platform=yelp]{display:block}#trustreviews-connect-wizard p{color:#ef4e4e;font-size:15px;font-weight:600}#trustreviews-connect-wizard p span{display:inline-block;color:#fff;padding:1px;width:18px;height:18px;font-size:12px;text-align:center;line-height:18px;border-radius:50%;text-shadow:-1px 1px 0 #777;background:#4cc310}#trustreviews-connect-wizard input,#trustreviews-connect-wizard select{width:45%;min-height:30px;vertical-align:bottom;border-radius:4px;border:1px solid #8c8f94}#trustreviews-connect-wizard button{display:block;width:45%;height:30px;margin:0 auto}#trustreviews-connect-wizard .trustreviews-wiz-arr{position:relative}#trustreviews-connect-wizard .trustreviews-wiz-arr:after{content:"↙";position:absolute;top:0;right:0;font-size:50px}
     1@charset "UTF-8";.trustreviews-admin #wpcontent{padding:0}.trust-reviews_page_trustreviews-builder #wpcontent,.trustreviews-admin.trust-reviews_page_trustreviews-builder #wpcontent{padding-left:300px}.toplevel_page_trustreviews .wp-menu-image img{width:18px}.trustreviews-admin.edit-php #wpbody{color:#5d6f80;padding-right:20px;position:relative}.trustreviews-admin.edit-php #wpbody .wp-header-end,.trustreviews-admin.post-new-php #wpbody .wp-header-end,.trustreviews-admin.post-php #wpbody .wp-header-end{margin-top:6px}.trustreviews-admin .update-nag{margin:20px 20px 0 0}.trustreviews-admin.edit-php .update-nag{margin:20px 0 0 20px}.trustreviews-admin.edit-php .update-nag~.update-nag{margin-right:0}.trustreviews-admin #wpbody #screen-meta-links{display:none}.trustreviews-admin #screen-meta{background-color:#ecf0f1;border:0;margin:0}.trustreviews-admin #screen-meta-links{position:absolute;top:0;left:0;z-index:1}.trustreviews-admin .notice p{font-size:14px}.trustreviews-admin .notice.notice-error p{color:#d63638}.trustreviews-tophead{-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-box-sizing:border-box;align-items:center;background-color:#fff;border-bottom:1px solid #cfd9db;padding:15px 20px;box-sizing:border-box;position:relative;top:46px;width:100%}@media (min-width:601px){.trustreviews-tophead{-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0}}.trustreviews-tophead img{width:32px;margin:0 0 0 4px;vertical-align:middle}.trustreviews-tophead-title{padding:0;font-size:18px;font-weight:600;line-height:1.4em}.trustreviews-page-title{font-size:23px;font-weight:400;margin:0;padding:20px 20px 0 0;line-height:29px}.trustreviews-version{position:absolute;top:0;left:16px;text-align:center}.trustreviews-version-free{display:inline-block;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:12px 0 3px;padding:4px 10px;font-size:12px;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.trustreviews-version-upgrade span{color:#4ea2e7;font-size:11px;font-weight:600;padding:6px 4px;cursor:default;transition:color .3s;text-transform:uppercase}.trustreviews-version-upgrade span:hover{color:#157cd1}.trustreviews-version-upgrade .trustreviews-upgrade-head{margin:0 0 5px;font-weight:600}#trustreviews-upgrade-tips{position:absolute;left:0;border:2px solid #ccc;border-radius:5px;padding:10px 12px;margin:2px 0 0;z-index:5;background:#fff;width:256px;text-align:right;font-size:16px;line-height:24px;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease}#trustreviews-upgrade-tips:hover,.trustreviews-version-upgrade span:hover+#trustreviews-upgrade-tips{opacity:1;visibility:visible}#trustreviews-upgrade-tips>a{display:inline-block;width:100%;font-size:14px;font-weight:700;text-align:center;margin:10px 0 0;padding:5px 0 0;border-top:1px solid #ccc;text-transform:uppercase}.trustreviews-toolbar{padding:15px 20px;background-color:#fff;border-bottom:1px solid #cfd9db}@media (min-width:783px){.trustreviews-toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.trustreviews-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-bottom:0;margin-left:20px;min-width:0}.trustreviews-toolbar-title-input{background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:100%}.trustreviews-toolbar-title-input{font-size:18px;font-weight:400;line-height:1.4em;margin:0;padding:0}.trustreviews-toolbar-control{display:-webkit-box;display:-ms-flexbox;display:flex}.trustreviews-toolbar-control button{margin-right:20px!important}.trustreviews-toolbar-control input[type=text]{width:200px;height:34px;font-size:14px}.trustreviews-toolbar-options label{display:block;padding:0 4px 0 0}.trustreviews-admin .type-trustreviews_collection .title.column-title{font-size:0}.trustreviews-admin .type-trustreviews_collection .title.column-title .row-actions,.trustreviews-admin .type-trustreviews_collection .title.column-title strong{line-height:1.5em}.trustreviews-builder-workspace{display:block;position:relative;width:100%;overflow-y:hidden;box-sizing:border-box}.trustreviews-builder-preview{font-size:14px;grid-area:preview;min-height:0;min-width:0;padding:20px;line-height:1.75}.trustreviews-builder-options{box-sizing:border-box;position:fixed;top:32px;bottom:0;left:0;width:300px;overflow:hidden;transition:all .3s;z-index:1;overflow-y:auto;background:#fafafa}.trustreviews-builder-options.trustreviews-block-options{position:relative;width:100%}.trustreviews .wp-review-hidden{opacity:.5!important}.trustreviews .wp-review-hide{position:absolute;left:8px;bottom:8px;color:#fff!important;font-size:9px!important;font-weight:600!important;line-height:12px!important;text-decoration:none!important;text-transform:uppercase!important;padding:4px!important;opacity:.85;border-radius:3px!important;border-color:#0062cc!important;background-color:#427fbf!important}.trustreviews .wp-review-hide:hover{background-color:#1d62ab!important}#trustreviews-rate_us-wrap{display:block;position:fixed;right:0;top:100%;width:auto;font-size:16px;z-index:99999}#trustreviews-rate_us{padding:18px;opacity:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease}#trustreviews-rate_us.trustreviews-flash-visible{opacity:1;-webkit-transform:translate(0,-100%);-ms-transform:translate(0,-100%);transform:translate(0,-100%);text-align:right}#trustreviews-rate_us.trustreviews-flash-visible.trustreviews-flash-gout{opacity:.5;-webkit-transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease}.trustreviews-rate_us-content{padding:15px;background:#fff;border-radius:5px;box-shadow:0 1px 2px RGB(60 64 67/30%),0 2px 6px 2px RGB(60 64 67/15%)}.trustreviews-rate_us-head{font-size:22px;font-weight:600;margin:0 0 20px 0}.trustreviews-rate_us-body{display:flex;align-items:center;font-size:18px}#trustreviews-rate_us-feedback svg,.trustreviews-rate_us-body svg{display:inline-block;padding:2px 4px;width:24px;height:24px;cursor:pointer;vertical-align:middle}.trustreviews-rate_us-body svg use{fill:#fa8e08}.trustreviews-rate_us-body svg:hover~svg use{fill:#ccc}#trustreviews-rate_us-feedback{font-size:18px;line-height:30px;text-align:center}#trustreviews-rate_us-feedback input{width:100%}#trustreviews-rate_us-feedback textarea{width:100%;height:128px}#trustreviews-rate_us-feedback button{margin:0 10px;padding:5px 15px;cursor:pointer}.trustreviews-overview-workspace{position:relative;font-size:14px;margin:20px}.trustreviews-overview-places{position:absolute;top:-50px;left:0}#trustreviews-overview-rating{font-size:15px}#trustreviews-overview-rating .trustreviews-rating{color:#fb8e28!important;font-weight:700!important}#trustreviews-overview-rating .trustreviews-stars{line-height:12px}#trustreviews-overview-rating .wp-star svg{vertical-align:middle}.trustreviews-overview-h{margin:0 0 6px;color:#000;font-size:15px;font-weight:600}#trustreviews-overview-stats>div{line-height:32px}.trustreviews-stat-val{float:left;color:#29af4c;font-size:18px;font-weight:600}.trustreviews-stat-val.trustreviews-stat-up{color:#29af4c}.trustreviews-stat-val.trustreviews-stat-down{color:#e94135}.trustreviews-stat-val:after{position:absolute;left:6px;font-size:16px}.trustreviews-stat-val.trustreviews-stat-up:after{content:"⇧"}.trustreviews-stat-val.trustreviews-stat-down:after{content:"⇩"}.trustreviews-card{margin:0;padding:0;color:#36476c;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;position:relative;background:#fff;border-radius:0}.trustreviews-card-bordered{border:0;border-radius:10px}.trustreviews-card-body{padding:20px}.trustreviews-card-fh{max-height:500px;overflow-y:auto}.trustreviews-card-header{font-size:15px;font-weight:600;padding:10px 20px;background-color:#f6f7fa}.trustreviews-shadow{border-radius:10px;box-shadow:0 4px 4px RGB(54 71 108/15%)}.trustreviews-feedback span:first-child{display:inline-flex;align-items:center;vertical-align:sub!important}.nav-tab.nav-tab-active{box-shadow:none;background:#fff;border-bottom-color:#fff}.trustreviews-settings-workspace{font-size:14px;margin:20px;padding:20px;background:#fff}.trustreviews-settings-workspace p{font-size:14px}.trustreviews-settings-workspace .trustreviews-alert{max-width:500px;word-wrap:break-word}.trustreviews-warn{padding:10px;margin:20px 0 10px;font-size:15px;line-height:26px;font-weight:600;color:#000;border:1px solid #ccc;border-radius:3px;background-color:#ffeb3b}.trustreviews-support-question{padding-bottom:10px}.trustreviews-support-workspace{font-size:15px;line-height:22px;margin:20px;padding:20px;background:#fff}.trustreviews-support-workspace p{font-size:15px}.trustreviews-support-workspace #fig p{line-height:24px}.trustreviews-support-workspace img{width:100%}.trustreviews-support-workspace .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}.trustreviews-support-workspace .trustreviews-flex-col3>b:first-child,.trustreviews-support-workspace .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-left:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.box-img{padding:15px;margin:0 0 10px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}#fig hr{border-top:1px solid #bbb;border-bottom:2px solid #eee}#fig .trustreviews-flex-row{align-items:center!important;text-align:right;margin-bottom:40px}#fig .trustreviews-flex-col,#fig .trustreviews-flex-col3{padding:0 20px;line-height:24px}#fig .trustreviews-flex-col3:first-child,#fig .trustreviews-flex-col:first-child{padding-left:10px}#fig img{width:100%}#fig .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}#fig .trustreviews-flex-col3>b:first-child,#fig .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-left:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.trustreviews-field,.trustreviews-field *{box-sizing:border-box}.trustreviews-field{padding:0 0 15px 0;margin-top:1em;margin-bottom:1em;border-bottom:1px dashed #ddd}@media (min-width:600px){.trustreviews-field{display:flex;flex-wrap:wrap}.trustreviews-field-label{flex:0 0 28%;padding-left:2%}.trustreviews-field-option{flex:0 0 75%}}.trustreviews-field input[type=text]{margin:0;padding:5px 8px;border-radius:2px}.trustreviews-field select{width:15em;margin-right:0}.trustreviews-flex-row{display:flex;flex-flow:row wrap;width:100%}.trustreviews-flex-col,.trustreviews-flex-col2,.trustreviews-flex-col3,.trustreviews-flex-col4,.trustreviews-flex-col6,.trustreviews-flex-col7{width:100%;box-sizing:border-box}.trustreviews-flex-col3+.trustreviews-flex-col3,.trustreviews-flex-col3:first-child,.trustreviews-flex-col6:first-child,.trustreviews-flex-col:first-child{padding-left:10px}@media (min-width:800px){.trustreviews-flex-col{width:50%}.trustreviews-flex-col2{width:25%}.trustreviews-flex-col3{width:30%}.trustreviews-flex-col4{width:40%}.trustreviews-flex-col6{width:60%}.trustreviews-flex-col7{width:70%}}.trustreviews-alert{font-size:14px;line-height:1.846;border:none;color:#fff;padding:15px;border:1px solid transparent;border-radius:3px}.trustreviews-alert-dismissable,.trustreviews-alert-dismissible{padding-left:35px}.trustreviews-alert-success{color:#fff;border-color:#d6e9c6;background-color:#4caf50}.trustreviews-alert-warning{background-color:#a22525}.trustreviews-alert .alert-link,.trustreviews-alert a:not(.close){color:#fff;font-weight:700}.trustreviews-builder-platforms{position:relative;box-sizing:border-box}.trustreviews-connect-text{font-size:14px;font-weight:600;margin:0 0 10px 0;color:#ffaf02;text-transform:uppercase;text-decoration:underline}.trustreviews-builder-top{padding:10px;color:#23282d;font-size:13px;font-weight:600;line-height:1.4em;cursor:pointer;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fafafa url("../img/button-down-black.svg") no-repeat left}.trustreviews-builder-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.trustreviews-builder-inside{border-top:none;padding:10px 10px 0;line-height:16px;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.trustreviews-builder-inside .trustreviews-builder-option{margin:10px 0 0;position:relative}.trustreviews-builder-inside .trustreviews-builder-option:first-child{margin-top:0}.trustreviews-builder-inside .trustreviews-builder-option:last-child{margin-bottom:10px}.trustreviews-builder-inside button,.trustreviews-builder-inside input[type=text],.trustreviews-builder-inside select,.trustreviews-builder-inside textarea{width:100%;clear:both;border-spacing:0}.trustreviews-builder-inside pre{margin:0;color:#b73434;font-size:10px;line-height:16px;padding:4px;background:#fff;overflow:auto}.trustreviews-builder-connect{display:inline-block;margin:0 0 5px 10px;padding:6px;font-weight:600;font-size:12px;color:#fff;border:none;cursor:pointer;text-align:center;background:#eee;border-radius:3px;text-transform:uppercase}.trustreviews-builder-connect:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-builder-connect:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-btn{color:#fff;border:0;outline:0;cursor:pointer;font-weight:600;font-size:12px;padding:5px 10px;text-transform:uppercase;background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 2px 4px RGB(0 0 0/24%);text-decoration:none;user-select:none}.trustreviews-connect-btn:hover{background:#ef8d14;box-shadow:0 0 2px RGB(0 0 0/12%),0 3px 5px RGB(0 0 0/24%)}.trustreviews-connect-btn:active{background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 0 1px RGB(0 0 0/24%)}.trustreviews-connect-google-inside{padding:0 1px}.trustreviews-connections{padding-bottom:10px}.trustreviews-connection{cursor:move}.trustreviews-connect-business{display:block;color:#333;text-align:right;margin:10px 0 0;border:1px solid #ccc;background:#fafafa url(../img/button-down-black.svg) no-repeat left}.trustreviews-connect-business:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-connect-business:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-business+div{padding:4px;border:1px solid #ccc;border-top:0}.trustreviews-connect-select{display:none!important}.trustreviews-platform-multiple .trustreviews-connect-select{display:inline-block!important}img.trustreviews-connect-photo{width:24px;height:24px;margin-left:10px;border-radius:50%;border:1px solid #ccc;vertical-align:middle}.trustreviews-connect-photo-change{margin-left:10px}.trustreviews-connect-error{color:#e60909;font-size:13px}.trustreviews-connection-checkbox{display:none;margin:10px 6px 0 0}.trustreviews-platform-multiple .trustreviews-connection-checkbox{display:block}.trustreviews-quest{position:absolute;top:6px;left:3px;width:16px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;border:1px solid #ccc;border-radius:50px;background:#eee}.trustreviews-quest.trustreviews-quest-top{top:0}.trustreviews-quest.trustreviews-quest-top22{top:22px}.trustreviews-quest:hover{border:1px solid #999}.trustreviews-quest-help{display:none;margin:0 0 10px 0;padding:4px;font-size:13px;line-height:18px;background:#eee}.trustreviews-well{padding:10px;margin:10px 0;border-radius:3px;border:1px solid #d9d9d9;background:#f1f1f1}#rating_temp{height:260px;font-size:12px;word-break:break-all}#trustreviews-connect-wizard[data-platform] [data-platform]{display:none}#trustreviews-connect-wizard[data-platform=google] [data-platform=google]{display:block}#trustreviews-connect-wizard[data-platform=yelp] [data-platform=yelp]{display:block}#trustreviews-connect-wizard p{color:#ef4e4e;font-size:15px;font-weight:600}#trustreviews-connect-wizard p span{display:inline-block;color:#fff;padding:1px;width:18px;height:18px;font-size:12px;text-align:center;line-height:18px;border-radius:50%;text-shadow:-1px 1px 0 #777;background:#4cc310}#trustreviews-connect-wizard input,#trustreviews-connect-wizard select{width:45%;min-height:30px;vertical-align:bottom;border-radius:4px;border:1px solid #8c8f94}#trustreviews-connect-wizard button{display:block;width:45%;height:30px;margin:0 auto}#trustreviews-connect-wizard .trustreviews-wiz-arr{position:relative}#trustreviews-connect-wizard .trustreviews-wiz-arr:after{content:"↙";position:absolute;top:0;right:0;font-size:50px}
  • fb-reviews-widget/trunk/assets/css/admin-main.css

    r3406362 r3439940  
    1 @charset "UTF-8";.trustreviews-admin #wpcontent{padding:0}.trust-reviews_page_trustreviews-builder #wpcontent,.trustreviews-admin.trust-reviews_page_trustreviews-builder #wpcontent{padding-right:300px}.toplevel_page_trustreviews .wp-menu-image img{width:18px}.trustreviews-admin.edit-php #wpbody{color:#5d6f80;padding-left:20px;position:relative}.trustreviews-admin.edit-php #wpbody .wp-header-end,.trustreviews-admin.post-new-php #wpbody .wp-header-end,.trustreviews-admin.post-php #wpbody .wp-header-end{margin-top:6px}.trustreviews-admin .update-nag{margin:20px 0 0 20px}.trustreviews-admin.edit-php .update-nag{margin:20px 20px 0 0}.trustreviews-admin.edit-php .update-nag~.update-nag{margin-left:0}.trustreviews-admin #wpbody #screen-meta-links{display:none}.trustreviews-admin #screen-meta{background-color:#ecf0f1;border:0;margin:0}.trustreviews-admin #screen-meta-links{position:absolute;top:0;right:0;z-index:1}.trustreviews-admin .notice p{font-size:14px}.trustreviews-admin .notice.notice-error p{color:#d63638}.trustreviews-tophead{-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-box-sizing:border-box;align-items:center;background-color:#fff;border-bottom:1px solid #cfd9db;padding:15px 20px;box-sizing:border-box;position:relative;top:46px;width:100%}@media (min-width:601px){.trustreviews-tophead{-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0}}.trustreviews-tophead img{width:32px;margin:0 4px 0 0;vertical-align:middle}.trustreviews-tophead-title{padding:0;font-size:18px;font-weight:600;line-height:1.4em}.trustreviews-page-title{font-size:23px;font-weight:400;margin:0;padding:20px 0 0 20px;line-height:29px}.trustreviews-version{position:absolute;top:0;right:16px;text-align:center}.trustreviews-version-free{display:inline-block;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:12px 0 3px;padding:4px 10px;font-size:12px;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.trustreviews-version-upgrade span{color:#4ea2e7;font-size:11px;font-weight:600;padding:6px 4px;cursor:default;transition:color .3s;text-transform:uppercase}.trustreviews-version-upgrade span:hover{color:#157cd1}.trustreviews-version-upgrade .trustreviews-upgrade-head{margin:0 0 5px;font-weight:600}#trustreviews-upgrade-tips{position:absolute;right:0;border:2px solid #ccc;border-radius:5px;padding:10px 12px;margin:2px 0 0;z-index:5;background:#fff;width:256px;text-align:left;font-size:16px;line-height:24px;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease}#trustreviews-upgrade-tips:hover,.trustreviews-version-upgrade span:hover+#trustreviews-upgrade-tips{opacity:1;visibility:visible}#trustreviews-upgrade-tips>a{display:inline-block;width:100%;font-size:14px;font-weight:700;text-align:center;margin:10px 0 0;padding:5px 0 0;border-top:1px solid #ccc;text-transform:uppercase}.trustreviews-toolbar{padding:15px 20px;background-color:#fff;border-bottom:1px solid #cfd9db}@media (min-width:783px){.trustreviews-toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.trustreviews-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-bottom:0;margin-right:20px;min-width:0}.trustreviews-toolbar-title-input{background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:100%}.trustreviews-toolbar-title-input{font-size:18px;font-weight:400;line-height:1.4em;margin:0;padding:0}.trustreviews-toolbar-control{display:-webkit-box;display:-ms-flexbox;display:flex}.trustreviews-toolbar-control button{margin-left:20px!important}.trustreviews-toolbar-control input[type=text]{width:200px;height:34px;font-size:14px}.trustreviews-toolbar-options label{display:block;padding:0 0 0 4px}.trustreviews-admin .type-trustreviews_collection .title.column-title{font-size:0}.trustreviews-admin .type-trustreviews_collection .title.column-title .row-actions,.trustreviews-admin .type-trustreviews_collection .title.column-title strong{line-height:1.5em}.trustreviews-builder-workspace{display:block;position:relative;width:100%;overflow-y:hidden;box-sizing:border-box}.trustreviews-builder-preview{font-size:14px;grid-area:preview;min-height:0;min-width:0;padding:20px;line-height:1.75}.trustreviews-builder-options{box-sizing:border-box;position:fixed;top:32px;bottom:0;right:0;width:300px;overflow:hidden;transition:all .3s;z-index:1;overflow-y:auto;background:#fafafa}.trustreviews-builder-options.trustreviews-block-options{position:relative;width:100%}.trustreviews .wp-review-hidden{opacity:.5!important}.trustreviews .wp-review-hide{color:#fff!important;font-size:12px!important;font-weight:600!important;line-height:26px!important;text-decoration:none!important;text-transform:uppercase!important;padding:2px 8px!important;border-radius:3px!important;border-color:#0062cc!important;background-color:#427fbf!important}.trustreviews .wp-review-hide:hover{background-color:#1d62ab!important}#trustreviews-rate_us-wrap{display:block;position:fixed;left:0;top:100%;width:auto;font-size:16px;z-index:99999}#trustreviews-rate_us{padding:18px;opacity:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease}#trustreviews-rate_us.trustreviews-flash-visible{opacity:1;-webkit-transform:translate(0,-100%);-ms-transform:translate(0,-100%);transform:translate(0,-100%);text-align:left}#trustreviews-rate_us.trustreviews-flash-visible.trustreviews-flash-gout{opacity:.5;-webkit-transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease}.trustreviews-rate_us-content{padding:15px;background:#fff;border-radius:5px;box-shadow:0 1px 2px RGB(60 64 67/30%),0 2px 6px 2px RGB(60 64 67/15%)}.trustreviews-rate_us-head{font-size:22px;font-weight:600;margin:0 0 20px 0}.trustreviews-rate_us-body{font-size:18px}#trustreviews-rate_us-feedback svg,.trustreviews-rate_us-body svg{display:inline-block;padding:2px 4px;width:24px;height:24px;cursor:pointer;vertical-align:middle}.trustreviews-rate_us-body svg use{fill:#fa8e08}.trustreviews-rate_us-body svg:hover~svg use{fill:#ccc}#trustreviews-rate_us-feedback{font-size:18px;line-height:30px;text-align:center}#trustreviews-rate_us-feedback input{width:100%}#trustreviews-rate_us-feedback textarea{width:100%;height:128px}#trustreviews-rate_us-feedback button{margin:0 10px;padding:5px 15px;cursor:pointer}.trustreviews-overview-workspace{position:relative;font-size:14px;margin:20px}.trustreviews-overview-places{position:absolute;top:-50px;right:0}#trustreviews-overview-rating{font-size:15px}#trustreviews-overview-rating .trustreviews-rating{color:#fb8e28!important;font-weight:700!important}#trustreviews-overview-rating .wp-star svg{vertical-align:middle}.trustreviews-overview-h{margin:0 0 6px;color:#000;font-size:15px;font-weight:600}#trustreviews-overview-stats>div{line-height:32px}.trustreviews-stat-val{float:right;color:#29af4c;font-size:18px;font-weight:600}.trustreviews-stat-val.trustreviews-stat-up{color:#29af4c}.trustreviews-stat-val.trustreviews-stat-down{color:#e94135}.trustreviews-stat-val:after{position:absolute;right:6px;font-size:16px}.trustreviews-stat-val.trustreviews-stat-up:after{content:"⇧"}.trustreviews-stat-val.trustreviews-stat-down:after{content:"⇩"}.trustreviews-card{margin:0;padding:0;color:#36476c;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;position:relative;background:#fff;border-radius:0}.trustreviews-card-bordered{border:0;border-radius:10px}.trustreviews-card-body{padding:20px}.trustreviews-card-fh{max-height:500px;overflow-y:auto}.trustreviews-card-header{font-size:15px;font-weight:600;padding:10px 20px;background-color:#f6f7fa}.trustreviews-shadow{border-radius:10px;box-shadow:0 4px 4px RGB(54 71 108/15%)}.trustreviews-feedback span:first-child{display:inline-flex;align-items:center;vertical-align:sub!important}.nav-tab.nav-tab-active{box-shadow:none;background:#fff;border-bottom-color:#fff}.trustreviews-settings-workspace{font-size:14px;margin:20px;padding:20px;background:#fff}.trustreviews-settings-workspace p{font-size:14px}.trustreviews-settings-workspace .trustreviews-alert{max-width:500px;word-wrap:break-word}.trustreviews-warn{padding:10px;margin:20px 0 10px;font-size:15px;line-height:26px;font-weight:600;color:#000;border:1px solid #ccc;border-radius:3px;background-color:#ffeb3b}.trustreviews-support-question{padding-bottom:10px}.trustreviews-support-workspace{font-size:15px;line-height:22px;margin:20px;padding:20px;background:#fff}.trustreviews-support-workspace p{font-size:15px}.trustreviews-support-workspace #fig p{line-height:24px}.trustreviews-support-workspace img{width:100%}.trustreviews-support-workspace .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}.trustreviews-support-workspace .trustreviews-flex-col3>b:first-child,.trustreviews-support-workspace .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-right:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.box-img{padding:15px;margin:0 0 10px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}#fig hr{border-top:1px solid #bbb;border-bottom:2px solid #eee}#fig .trustreviews-flex-row{align-items:center!important;text-align:left;margin-bottom:40px}#fig .trustreviews-flex-col,#fig .trustreviews-flex-col3{padding:0 20px;line-height:24px}#fig .trustreviews-flex-col3:first-child,#fig .trustreviews-flex-col:first-child{padding-right:10px}#fig img{width:100%}#fig .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}#fig .trustreviews-flex-col3>b:first-child,#fig .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-right:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.trustreviews-field,.trustreviews-field *{box-sizing:border-box}.trustreviews-field{padding:0 0 15px 0;margin-top:1em;margin-bottom:1em;border-bottom:1px dashed #ddd}@media (min-width:600px){.trustreviews-field{display:flex;flex-wrap:wrap}.trustreviews-field-label{flex:0 0 28%;padding-right:2%}.trustreviews-field-option{flex:0 0 75%}}.trustreviews-field input[type=text]{margin:0;padding:5px 8px;border-radius:2px}.trustreviews-field select{width:15em;margin-left:0}.trustreviews-flex-row{display:flex;flex-flow:row wrap;width:100%}.trustreviews-flex-col,.trustreviews-flex-col2,.trustreviews-flex-col3,.trustreviews-flex-col4,.trustreviews-flex-col6,.trustreviews-flex-col7{width:100%;box-sizing:border-box}.trustreviews-flex-col3+.trustreviews-flex-col3,.trustreviews-flex-col3:first-child,.trustreviews-flex-col6:first-child,.trustreviews-flex-col:first-child{padding-right:10px}@media (min-width:800px){.trustreviews-flex-col{width:50%}.trustreviews-flex-col2{width:25%}.trustreviews-flex-col3{width:30%}.trustreviews-flex-col4{width:40%}.trustreviews-flex-col6{width:60%}.trustreviews-flex-col7{width:70%}}.trustreviews-alert{font-size:14px;line-height:1.846;border:none;color:#fff;padding:15px;border:1px solid transparent;border-radius:3px}.trustreviews-alert-dismissable,.trustreviews-alert-dismissible{padding-right:35px}.trustreviews-alert-success{color:#fff;border-color:#d6e9c6;background-color:#4caf50}.trustreviews-alert-warning{background-color:#a22525}.trustreviews-alert .alert-link,.trustreviews-alert a:not(.close){color:#fff;font-weight:700}.trustreviews-builder-platforms{position:relative;box-sizing:border-box}.trustreviews-connect-text{font-size:14px;font-weight:600;margin:0 0 10px 0;color:#ffaf02;text-transform:uppercase;text-decoration:underline}.trustreviews-builder-top{padding:10px;color:#23282d;font-size:13px;font-weight:600;line-height:1.4em;cursor:pointer;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fafafa url("../img/button-down-black.svg") no-repeat right}.trustreviews-builder-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.trustreviews-builder-inside{border-top:none;padding:10px 10px 0;line-height:16px;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.trustreviews-builder-inside .trustreviews-builder-option{margin:10px 0 0;position:relative}.trustreviews-builder-inside .trustreviews-builder-option:first-child{margin-top:0}.trustreviews-builder-inside .trustreviews-builder-option:last-child{margin-bottom:10px}.trustreviews-builder-inside button,.trustreviews-builder-inside input[type=text],.trustreviews-builder-inside select,.trustreviews-builder-inside textarea{width:100%;clear:both;border-spacing:0}.trustreviews-builder-inside pre{margin:0;color:#b73434;font-size:10px;line-height:16px;padding:4px;background:#fff;overflow:auto}.trustreviews-builder-connect{display:inline-block;margin:0 10px 5px 0;padding:6px;font-weight:600;font-size:12px;color:#fff;border:none;cursor:pointer;text-align:center;background:#eee;text-transform:uppercase}.trustreviews-builder-connect:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-builder-connect:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-btn{color:#fff;border:0;outline:0;cursor:pointer;font-weight:600;font-size:12px;padding:5px 10px;text-transform:uppercase;background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 2px 4px RGB(0 0 0/24%);text-decoration:none;user-select:none}.trustreviews-connect-btn:hover{background:#ef8d14;box-shadow:0 0 2px RGB(0 0 0/12%),0 3px 5px RGB(0 0 0/24%)}.trustreviews-connect-btn:active{background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 0 1px RGB(0 0 0/24%)}.trustreviews-connect-google-inside{padding:0 1px}.trustreviews-connections{padding-bottom:10px}.trustreviews-connection{cursor:move}.trustreviews-connect-business{display:block;color:#333;text-align:left;margin:10px 0 0;border:1px solid #ccc;background:#fafafa url(../img/button-down-black.svg) no-repeat right}.trustreviews-connect-business:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-connect-business:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-business+div{padding:4px;border:1px solid #ccc;border-top:0}.trustreviews-connect-select{display:none!important}.trustreviews-platform-multiple .trustreviews-connect-select{display:inline-block!important}img.trustreviews-connect-photo{width:24px;height:24px;margin-right:10px;border-radius:50%;border:1px solid #ccc;vertical-align:middle}.trustreviews-connect-photo-change{margin-right:10px}.trustreviews-connect-error{color:#e60909;font-size:13px}.trustreviews-connection-checkbox{display:none;margin:10px 0 0 6px}.trustreviews-platform-multiple .trustreviews-connection-checkbox{display:block}.trustreviews-quest{position:absolute;top:6px;right:3px;width:16px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;border:1px solid #ccc;border-radius:50px;background:#eee}.trustreviews-quest.trustreviews-quest-top{top:0}.trustreviews-quest.trustreviews-quest-top22{top:22px}.trustreviews-quest:hover{border:1px solid #999}.trustreviews-quest-help{display:none;margin:0 0 10px 0;padding:4px;font-size:13px;line-height:18px;background:#eee}.trustreviews-well{padding:10px;margin:10px 0;border-radius:3px;border:1px solid #d9d9d9;background:#f1f1f1}#rating_temp{height:260px;font-size:12px;word-break:break-all}#trustreviews-connect-wizard[data-platform] [data-platform]{display:none}#trustreviews-connect-wizard[data-platform=google] [data-platform=google]{display:block}#trustreviews-connect-wizard[data-platform=yelp] [data-platform=yelp]{display:block}#trustreviews-connect-wizard p{color:#ef4e4e;font-size:15px;font-weight:600}#trustreviews-connect-wizard p span{display:inline-block;color:#fff;padding:1px;width:18px;height:18px;font-size:12px;text-align:center;line-height:18px;border-radius:50%;text-shadow:1px 1px 0 #777;background:#4cc310}#trustreviews-connect-wizard input,#trustreviews-connect-wizard select{width:45%;min-height:30px;vertical-align:bottom;border-radius:4px;border:1px solid #8c8f94}#trustreviews-connect-wizard button{display:block;width:45%;height:30px;margin:0 auto}#trustreviews-connect-wizard .trustreviews-wiz-arr{position:relative}#trustreviews-connect-wizard .trustreviews-wiz-arr:after{content:"↙";position:absolute;top:0;left:0;font-size:50px}
     1@charset "UTF-8";.trustreviews-admin #wpcontent{padding:0}.trust-reviews_page_trustreviews-builder #wpcontent,.trustreviews-admin.trust-reviews_page_trustreviews-builder #wpcontent{padding-right:300px}.toplevel_page_trustreviews .wp-menu-image img{width:18px}.trustreviews-admin.edit-php #wpbody{color:#5d6f80;padding-left:20px;position:relative}.trustreviews-admin.edit-php #wpbody .wp-header-end,.trustreviews-admin.post-new-php #wpbody .wp-header-end,.trustreviews-admin.post-php #wpbody .wp-header-end{margin-top:6px}.trustreviews-admin .update-nag{margin:20px 0 0 20px}.trustreviews-admin.edit-php .update-nag{margin:20px 20px 0 0}.trustreviews-admin.edit-php .update-nag~.update-nag{margin-left:0}.trustreviews-admin #wpbody #screen-meta-links{display:none}.trustreviews-admin #screen-meta{background-color:#ecf0f1;border:0;margin:0}.trustreviews-admin #screen-meta-links{position:absolute;top:0;right:0;z-index:1}.trustreviews-admin .notice p{font-size:14px}.trustreviews-admin .notice.notice-error p{color:#d63638}.trustreviews-tophead{-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-box-sizing:border-box;align-items:center;background-color:#fff;border-bottom:1px solid #cfd9db;padding:15px 20px;box-sizing:border-box;position:relative;top:46px;width:100%}@media (min-width:601px){.trustreviews-tophead{-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0}}.trustreviews-tophead img{width:32px;margin:0 4px 0 0;vertical-align:middle}.trustreviews-tophead-title{padding:0;font-size:18px;font-weight:600;line-height:1.4em}.trustreviews-page-title{font-size:23px;font-weight:400;margin:0;padding:20px 0 0 20px;line-height:29px}.trustreviews-version{position:absolute;top:0;right:16px;text-align:center}.trustreviews-version-free{display:inline-block;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:12px 0 3px;padding:4px 10px;font-size:12px;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.trustreviews-version-upgrade span{color:#4ea2e7;font-size:11px;font-weight:600;padding:6px 4px;cursor:default;transition:color .3s;text-transform:uppercase}.trustreviews-version-upgrade span:hover{color:#157cd1}.trustreviews-version-upgrade .trustreviews-upgrade-head{margin:0 0 5px;font-weight:600}#trustreviews-upgrade-tips{position:absolute;right:0;border:2px solid #ccc;border-radius:5px;padding:10px 12px;margin:2px 0 0;z-index:5;background:#fff;width:256px;text-align:left;font-size:16px;line-height:24px;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease}#trustreviews-upgrade-tips:hover,.trustreviews-version-upgrade span:hover+#trustreviews-upgrade-tips{opacity:1;visibility:visible}#trustreviews-upgrade-tips>a{display:inline-block;width:100%;font-size:14px;font-weight:700;text-align:center;margin:10px 0 0;padding:5px 0 0;border-top:1px solid #ccc;text-transform:uppercase}.trustreviews-toolbar{padding:15px 20px;background-color:#fff;border-bottom:1px solid #cfd9db}@media (min-width:783px){.trustreviews-toolbar{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.trustreviews-toolbar-title{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-bottom:0;margin-right:20px;min-width:0}.trustreviews-toolbar-title-input{background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;width:100%}.trustreviews-toolbar-title-input{font-size:18px;font-weight:400;line-height:1.4em;margin:0;padding:0}.trustreviews-toolbar-control{display:-webkit-box;display:-ms-flexbox;display:flex}.trustreviews-toolbar-control button{margin-left:20px!important}.trustreviews-toolbar-control input[type=text]{width:200px;height:34px;font-size:14px}.trustreviews-toolbar-options label{display:block;padding:0 0 0 4px}.trustreviews-admin .type-trustreviews_collection .title.column-title{font-size:0}.trustreviews-admin .type-trustreviews_collection .title.column-title .row-actions,.trustreviews-admin .type-trustreviews_collection .title.column-title strong{line-height:1.5em}.trustreviews-builder-workspace{display:block;position:relative;width:100%;overflow-y:hidden;box-sizing:border-box}.trustreviews-builder-preview{font-size:14px;grid-area:preview;min-height:0;min-width:0;padding:20px;line-height:1.75}.trustreviews-builder-options{box-sizing:border-box;position:fixed;top:32px;bottom:0;right:0;width:300px;overflow:hidden;transition:all .3s;z-index:1;overflow-y:auto;background:#fafafa}.trustreviews-builder-options.trustreviews-block-options{position:relative;width:100%}.trustreviews .wp-review-hidden{opacity:.5!important}.trustreviews .wp-review-hide{position:absolute;right:8px;bottom:8px;color:#fff!important;font-size:9px!important;font-weight:600!important;line-height:12px!important;text-decoration:none!important;text-transform:uppercase!important;padding:4px!important;opacity:.85;border-radius:3px!important;border-color:#0062cc!important;background-color:#427fbf!important}.trustreviews .wp-review-hide:hover{background-color:#1d62ab!important}#trustreviews-rate_us-wrap{display:block;position:fixed;left:0;top:100%;width:auto;font-size:16px;z-index:99999}#trustreviews-rate_us{padding:18px;opacity:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease}#trustreviews-rate_us.trustreviews-flash-visible{opacity:1;-webkit-transform:translate(0,-100%);-ms-transform:translate(0,-100%);transform:translate(0,-100%);text-align:left}#trustreviews-rate_us.trustreviews-flash-visible.trustreviews-flash-gout{opacity:.5;-webkit-transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease;transition:opacity 150ms ease}.trustreviews-rate_us-content{padding:15px;background:#fff;border-radius:5px;box-shadow:0 1px 2px RGB(60 64 67/30%),0 2px 6px 2px RGB(60 64 67/15%)}.trustreviews-rate_us-head{font-size:22px;font-weight:600;margin:0 0 20px 0}.trustreviews-rate_us-body{display:flex;align-items:center;font-size:18px}#trustreviews-rate_us-feedback svg,.trustreviews-rate_us-body svg{display:inline-block;padding:2px 4px;width:24px;height:24px;cursor:pointer;vertical-align:middle}.trustreviews-rate_us-body svg use{fill:#fa8e08}.trustreviews-rate_us-body svg:hover~svg use{fill:#ccc}#trustreviews-rate_us-feedback{font-size:18px;line-height:30px;text-align:center}#trustreviews-rate_us-feedback input{width:100%}#trustreviews-rate_us-feedback textarea{width:100%;height:128px}#trustreviews-rate_us-feedback button{margin:0 10px;padding:5px 15px;cursor:pointer}.trustreviews-overview-workspace{position:relative;font-size:14px;margin:20px}.trustreviews-overview-places{position:absolute;top:-50px;right:0}#trustreviews-overview-rating{font-size:15px}#trustreviews-overview-rating .trustreviews-rating{color:#fb8e28!important;font-weight:700!important}#trustreviews-overview-rating .trustreviews-stars{line-height:12px}#trustreviews-overview-rating .wp-star svg{vertical-align:middle}.trustreviews-overview-h{margin:0 0 6px;color:#000;font-size:15px;font-weight:600}#trustreviews-overview-stats>div{line-height:32px}.trustreviews-stat-val{float:right;color:#29af4c;font-size:18px;font-weight:600}.trustreviews-stat-val.trustreviews-stat-up{color:#29af4c}.trustreviews-stat-val.trustreviews-stat-down{color:#e94135}.trustreviews-stat-val:after{position:absolute;right:6px;font-size:16px}.trustreviews-stat-val.trustreviews-stat-up:after{content:"⇧"}.trustreviews-stat-val.trustreviews-stat-down:after{content:"⇩"}.trustreviews-card{margin:0;padding:0;color:#36476c;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;position:relative;background:#fff;border-radius:0}.trustreviews-card-bordered{border:0;border-radius:10px}.trustreviews-card-body{padding:20px}.trustreviews-card-fh{max-height:500px;overflow-y:auto}.trustreviews-card-header{font-size:15px;font-weight:600;padding:10px 20px;background-color:#f6f7fa}.trustreviews-shadow{border-radius:10px;box-shadow:0 4px 4px RGB(54 71 108/15%)}.trustreviews-feedback span:first-child{display:inline-flex;align-items:center;vertical-align:sub!important}.nav-tab.nav-tab-active{box-shadow:none;background:#fff;border-bottom-color:#fff}.trustreviews-settings-workspace{font-size:14px;margin:20px;padding:20px;background:#fff}.trustreviews-settings-workspace p{font-size:14px}.trustreviews-settings-workspace .trustreviews-alert{max-width:500px;word-wrap:break-word}.trustreviews-warn{padding:10px;margin:20px 0 10px;font-size:15px;line-height:26px;font-weight:600;color:#000;border:1px solid #ccc;border-radius:3px;background-color:#ffeb3b}.trustreviews-support-question{padding-bottom:10px}.trustreviews-support-workspace{font-size:15px;line-height:22px;margin:20px;padding:20px;background:#fff}.trustreviews-support-workspace p{font-size:15px}.trustreviews-support-workspace #fig p{line-height:24px}.trustreviews-support-workspace img{width:100%}.trustreviews-support-workspace .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}.trustreviews-support-workspace .trustreviews-flex-col3>b:first-child,.trustreviews-support-workspace .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-right:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.box-img{padding:15px;margin:0 0 10px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}#fig hr{border-top:1px solid #bbb;border-bottom:2px solid #eee}#fig .trustreviews-flex-row{align-items:center!important;text-align:left;margin-bottom:40px}#fig .trustreviews-flex-col,#fig .trustreviews-flex-col3{padding:0 20px;line-height:24px}#fig .trustreviews-flex-col3:first-child,#fig .trustreviews-flex-col:first-child{padding-right:10px}#fig img{width:100%}#fig .subheader{color:#4b76b7;margin:40px 0 20px;text-decoration:underline}#fig .trustreviews-flex-col3>b:first-child,#fig .trustreviews-flex-col>b:first-child{padding:2px 8px;margin-right:4px;border-radius:50%;color:#fff;background:#36ad55;box-shadow:0 2px 5px 0 RGB(0 0 0/26%)}.trustreviews-field,.trustreviews-field *{box-sizing:border-box}.trustreviews-field{padding:0 0 15px 0;margin-top:1em;margin-bottom:1em;border-bottom:1px dashed #ddd}@media (min-width:600px){.trustreviews-field{display:flex;flex-wrap:wrap}.trustreviews-field-label{flex:0 0 28%;padding-right:2%}.trustreviews-field-option{flex:0 0 75%}}.trustreviews-field input[type=text]{margin:0;padding:5px 8px;border-radius:2px}.trustreviews-field select{width:15em;margin-left:0}.trustreviews-flex-row{display:flex;flex-flow:row wrap;width:100%}.trustreviews-flex-col,.trustreviews-flex-col2,.trustreviews-flex-col3,.trustreviews-flex-col4,.trustreviews-flex-col6,.trustreviews-flex-col7{width:100%;box-sizing:border-box}.trustreviews-flex-col3+.trustreviews-flex-col3,.trustreviews-flex-col3:first-child,.trustreviews-flex-col6:first-child,.trustreviews-flex-col:first-child{padding-right:10px}@media (min-width:800px){.trustreviews-flex-col{width:50%}.trustreviews-flex-col2{width:25%}.trustreviews-flex-col3{width:30%}.trustreviews-flex-col4{width:40%}.trustreviews-flex-col6{width:60%}.trustreviews-flex-col7{width:70%}}.trustreviews-alert{font-size:14px;line-height:1.846;border:none;color:#fff;padding:15px;border:1px solid transparent;border-radius:3px}.trustreviews-alert-dismissable,.trustreviews-alert-dismissible{padding-right:35px}.trustreviews-alert-success{color:#fff;border-color:#d6e9c6;background-color:#4caf50}.trustreviews-alert-warning{background-color:#a22525}.trustreviews-alert .alert-link,.trustreviews-alert a:not(.close){color:#fff;font-weight:700}.trustreviews-builder-platforms{position:relative;box-sizing:border-box}.trustreviews-connect-text{font-size:14px;font-weight:600;margin:0 0 10px 0;color:#ffaf02;text-transform:uppercase;text-decoration:underline}.trustreviews-builder-top{padding:10px;color:#23282d;font-size:13px;font-weight:600;line-height:1.4em;cursor:pointer;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fafafa url("../img/button-down-black.svg") no-repeat right}.trustreviews-builder-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.trustreviews-builder-inside{border-top:none;padding:10px 10px 0;line-height:16px;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.trustreviews-builder-inside .trustreviews-builder-option{margin:10px 0 0;position:relative}.trustreviews-builder-inside .trustreviews-builder-option:first-child{margin-top:0}.trustreviews-builder-inside .trustreviews-builder-option:last-child{margin-bottom:10px}.trustreviews-builder-inside button,.trustreviews-builder-inside input[type=text],.trustreviews-builder-inside select,.trustreviews-builder-inside textarea{width:100%;clear:both;border-spacing:0}.trustreviews-builder-inside pre{margin:0;color:#b73434;font-size:10px;line-height:16px;padding:4px;background:#fff;overflow:auto}.trustreviews-builder-connect{display:inline-block;margin:0 10px 5px 0;padding:6px;font-weight:600;font-size:12px;color:#fff;border:none;cursor:pointer;text-align:center;background:#eee;border-radius:3px;text-transform:uppercase}.trustreviews-builder-connect:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-builder-connect:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-btn{color:#fff;border:0;outline:0;cursor:pointer;font-weight:600;font-size:12px;padding:5px 10px;text-transform:uppercase;background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 2px 4px RGB(0 0 0/24%);text-decoration:none;user-select:none}.trustreviews-connect-btn:hover{background:#ef8d14;box-shadow:0 0 2px RGB(0 0 0/12%),0 3px 5px RGB(0 0 0/24%)}.trustreviews-connect-btn:active{background:#fa8e08;box-shadow:0 0 2px RGB(0 0 0/12%),0 0 1px RGB(0 0 0/24%)}.trustreviews-connect-google-inside{padding:0 1px}.trustreviews-connections{padding-bottom:10px}.trustreviews-connection{cursor:move}.trustreviews-connect-business{display:block;color:#333;text-align:left;margin:10px 0 0;border:1px solid #ccc;background:#fafafa url(../img/button-down-black.svg) no-repeat right}.trustreviews-connect-business:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)}.trustreviews-connect-business:active{box-shadow:0 0 2px rgba(0,0,0,.12),0 0 1px rgba(0,0,0,.24)}.trustreviews-connect-business+div{padding:4px;border:1px solid #ccc;border-top:0}.trustreviews-connect-select{display:none!important}.trustreviews-platform-multiple .trustreviews-connect-select{display:inline-block!important}img.trustreviews-connect-photo{width:24px;height:24px;margin-right:10px;border-radius:50%;border:1px solid #ccc;vertical-align:middle}.trustreviews-connect-photo-change{margin-right:10px}.trustreviews-connect-error{color:#e60909;font-size:13px}.trustreviews-connection-checkbox{display:none;margin:10px 0 0 6px}.trustreviews-platform-multiple .trustreviews-connection-checkbox{display:block}.trustreviews-quest{position:absolute;top:6px;right:3px;width:16px;cursor:pointer;font-size:12px;font-weight:700;text-align:center;border:1px solid #ccc;border-radius:50px;background:#eee}.trustreviews-quest.trustreviews-quest-top{top:0}.trustreviews-quest.trustreviews-quest-top22{top:22px}.trustreviews-quest:hover{border:1px solid #999}.trustreviews-quest-help{display:none;margin:0 0 10px 0;padding:4px;font-size:13px;line-height:18px;background:#eee}.trustreviews-well{padding:10px;margin:10px 0;border-radius:3px;border:1px solid #d9d9d9;background:#f1f1f1}#rating_temp{height:260px;font-size:12px;word-break:break-all}#trustreviews-connect-wizard[data-platform] [data-platform]{display:none}#trustreviews-connect-wizard[data-platform=google] [data-platform=google]{display:block}#trustreviews-connect-wizard[data-platform=yelp] [data-platform=yelp]{display:block}#trustreviews-connect-wizard p{color:#ef4e4e;font-size:15px;font-weight:600}#trustreviews-connect-wizard p span{display:inline-block;color:#fff;padding:1px;width:18px;height:18px;font-size:12px;text-align:center;line-height:18px;border-radius:50%;text-shadow:1px 1px 0 #777;background:#4cc310}#trustreviews-connect-wizard input,#trustreviews-connect-wizard select{width:45%;min-height:30px;vertical-align:bottom;border-radius:4px;border:1px solid #8c8f94}#trustreviews-connect-wizard button{display:block;width:45%;height:30px;margin:0 auto}#trustreviews-connect-wizard .trustreviews-wiz-arr{position:relative}#trustreviews-connect-wizard .trustreviews-wiz-arr:after{content:"↙";position:absolute;top:0;left:0;font-size:50px}
  • fb-reviews-widget/trunk/assets/css/public-main-rtl.css

    r3406362 r3439940  
    1 .wpac,.wpac a,.wpac abbr,.wpac acronym,.wpac address,.wpac applet,.wpac b,.wpac big,.wpac blockquote,.wpac caption,.wpac cite,.wpac code,.wpac dd,.wpac del,.wpac dfn,.wpac div,.wpac dl,.wpac dt,.wpac em,.wpac fieldset,.wpac font,.wpac form,.wpac h1,.wpac h2,.wpac h3,.wpac h4,.wpac h5,.wpac h6,.wpac hr,.wpac i,.wpac img,.wpac input,.wpac ins,.wpac kbd,.wpac label,.wpac legend,.wpac li,.wpac object,.wpac ol,.wpac option,.wpac p,.wpac pre,.wpac q,.wpac s,.wpac samp,.wpac select,.wpac small,.wpac span,.wpac strike,.wpac strong,.wpac sub,.wpac sup,.wpac table,.wpac tbody,.wpac td,.wpac textarea,.wpac tfoot,.wpac th,.wpac thead,.wpac tr,.wpac tt,.wpac ul,.wpac var{background-attachment:scroll!important;background-color:transparent!important;background-image:none!important;background-position:100% 0!important;background-repeat:repeat!important;border-color:#000!important;border-color:currentColor!important;border-radius:0!important;border-style:none!important;border-width:medium!important;bottom:auto!important;clear:none!important;clip:auto!important;color:inherit!important;counter-increment:none!important;counter-reset:none!important;cursor:auto!important;direction:inherit!important;display:inline;float:none!important;font-family:inherit!important;font-size:inherit!important;font-style:inherit!important;font-variant:normal!important;font-weight:inherit!important;height:auto;right:auto!important;letter-spacing:normal!important;line-height:inherit!important;list-style-type:inherit!important;list-style-position:outside!important;list-style-image:none!important;margin:0!important;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:1;outline:invert none medium!important;padding:0!important;position:static!important;quotes:"" ""!important;left:auto!important;table-layout:auto!important;text-align:inherit!important;text-decoration:inherit!important;text-indent:0!important;text-transform:none!important;top:auto!important;unicode-bidi:normal!important;vertical-align:baseline!important;visibility:inherit!important;white-space:normal!important;width:auto!important;word-spacing:normal!important;z-index:auto!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;-moz-box-sizing:border-box!important;-webkit-box-sizing:border-box!important;box-sizing:border-box!important;text-shadow:none!important;-webkit-transition:none!important;transition:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.wpac,.wpac address,.wpac blockquote,.wpac caption,.wpac dd,.wpac div,.wpac dl,.wpac dt,.wpac fieldset,.wpac form,.wpac h1,.wpac h2,.wpac h3,.wpac h4,.wpac h5,.wpac h6,.wpac hr,.wpac ol,.wpac option,.wpac p,.wpac pre,.wpac select,.wpac textarea,.wpac ul{display:block}.wpac table{display:table}.wpac tbody{display:table-row-group}.wpac tr{display:table-row}.wpac td{display:table-cell}.wpac ul{list-style-type:none!important}.wpac li{display:list-item;min-height:auto!important;min-width:auto!important}.wpac a,.wpac a *,.wpac input[type=checkbox],.wpac input[type=radio],.wpac input[type=submit],.wpac select{cursor:pointer!important}.wpac a:hover{text-decoration:none!important}.wpac button,.wpac input[type=submit]{height:auto!important;text-align:center!important}.wpac input[type=hidden]{display:none}.wpac select{-webkit-appearance:menulist!important;-moz-appearance:menulist!important;appearance:menulist!important}.wpac input[type=checkbox]{-webkit-appearance:checkbox!important;-moz-appearance:checkbox!important;appearance:checkbox!important}.wpac input[type=checkbox]:after,.wpac input[type=checkbox]:before{content:none!important;border:0!important}.wpac input[type=radio]{-webkit-appearance:radio!important;-moz-appearance:radio!important;appearance:radio!important}.wpac input[type=radio]:after,.wpac input[type=radio]:before{content:none!important;border:0!important}.wpac li:after,.wpac li:before{content:""!important}.wpac input,.wpac select{vertical-align:middle!important}.wpac input,.wpac select,.wpac textarea{border:1px solid #ccc!important}.wpac table{border-collapse:collapse!important;border-spacing:0!important}.wpac [dir=rtl]{direction:ltr!important}.wpac img{border:0!important}.wpac svg{vertical-align:middle!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important;box-sizing:content-box!important}.wpac{font-size:14px!important;line-height:20px!important;direction:inherit!important;text-align:inherit!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;color:#333!important;font-style:normal!important;font-weight:400!important;text-decoration:none!important;list-style-type:disc!important}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:600!important;margin:0 0 0 6px!important;vertical-align:middle!important}.trustreviews .trustreviews-stars svg{display:inline-block!important;width:22px!important;height:22px!important;padding:0 0 0 4px!important;line-height:22px!important;vertical-align:middle!important}.trustreviews .trustreviews-stars svg use{fill:#0866ff;color:#0866ff}.trustreviews [data-rev=google] .trustreviews-stars svg use{fill:#fb8e28;color:#fb8e28}.trustreviews [data-rev=yelp] .trustreviews-stars svg use{fill:#d80027;color:#d80027}.trustreviews .trustreviews-powered{color:#555!important;margin:6px 0 0!important}.trustreviews .trustreviews-powered[data-platform=google] img{max-width:144px!important}.trustreviews .trustreviews-powered[data-platform=yelp] img{max-height:25px!important;vertical-align:sub!important}.trustreviews .trustreviews-powered[data-platform=facebook] span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews .trustreviews-list-review{margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-left:10px!important}[dir=rtl] .trustreviews-left{padding-right:10px!important}.trustreviews .trustreviews-left img{border:none!important;float:right!important;height:50px!important;width:50px!important;margin-left:10px!important;overflow:hidden!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left img{float:none!important}.trustreviews .trustreviews-place .trustreviews-stars svg{width:20px!important;height:20px!important;vertical-align:middle!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;margin:0 0 2px!important;padding-left:6px!important;text-decoration:none!important}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-left:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews.wpac .trustreviews-name{font-size:100%!important}.trustreviews.wpac .trustreviews-hide{display:none}.trustreviews.wpac .trustreviews-name a{color:#333!important;font-size:100%!important;text-decoration:none!important}.trustreviews.wpac .trustreviews-left img{width:50px!important;height:50px!important;border-radius:50%!important}.trustreviews.wpac a.trustreviews-name{color:#154fc1!important;text-decoration:none!important;white-space:normal!important;text-overflow:ellipsis!important}.trustreviews.wpac .trustreviews-list-review .trustreviews-stars{display:inline-block;margin-left:4px!important}.trustreviews.wpac.wp-dark .trustreviews-name a{color:#eee!important}.trustreviews-fb{padding:1px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:right!important;direction:rtl!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{position:relative!important;margin:0 10px!important;padding:15px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:4px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;left:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;right:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:hidden!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{margin:15px auto 8px!important}.trustreviews .trustreviews-wr a{color:#fff!important;padding:6px 15px 10px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:-1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 4px 0 0;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}
     1:root{--rpi-star-size:22px;--rpi-star-color:#fb8e28;--rpi-star-empty:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z' fill='none' stroke='%23cccccc' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");--rpi-star-mask:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.7881 3.21068C11.2364 2.13274 12.7635 2.13273 13.2118 3.21068L15.2938 8.2164L20.6979 8.64964C21.8616 8.74293 22.3335 10.1952 21.4469 10.9547L17.3295 14.4817L18.5874 19.7551C18.8583 20.8908 17.6229 21.7883 16.6266 21.1798L11.9999 18.3538L7.37329 21.1798C6.37697 21.7883 5.14158 20.8908 5.41246 19.7551L6.67038 14.4817L2.55303 10.9547C1.66639 10.1952 2.13826 8.74293 3.302 8.64964L8.70609 8.2164L10.7881 3.21068Z'/%3E%3C/svg%3E")}.rpi-star,.rpi-stars-tripadvisor,.rpi-stars-yelp{display:flex;align-items:center;gap:4px}.rpi-star[data-rating]::before{content:attr(data-rating);color:var(--rpi-star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-star[data-rating]::after{content:'';width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-position:center!important;-webkit-mask-size:contain!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-position:center!important;mask-size:contain!important}.rpi-stars{--stars:5;--stars-max:5;position:relative!important;display:inline-block!important;width:calc(var(--stars) * var(--rpi-star-size))!important;height:var(--rpi-star-size)!important;background-color:transparent!important;background-image:var(--rpi-star-empty)!important;background-repeat:repeat-x!important;background-position:right center!important;background-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-star+.rpi-stars{--stars-offset:1;--stars:calc(var(--stars-max) - var(--stars-offset))}.rpi-stars::before{content:''!important;position:absolute!important;inset:0!important;width:clamp(0%,calc(((var(--rating) - var(--stars-offset,0))/ (var(--stars-max) - var(--stars-offset,0))) * 100%),100%)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:repeat-x!important;-webkit-mask-position:left center!important;-webkit-mask-size:var(--rpi-star-size) var(--rpi-star-size)!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:repeat-x!important;mask-position:left center!important;mask-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-stars-yelp{--empty-color:#cccccc;--five-color:#fb433c;--four-color:#ff643d;--three-color:#ff8742;--two-color:#ffad48;--one-color:#ffcc4b;--rpi-star-size:20px;--rating:0;--gap:3px;--radius:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-yelp i{position:relative!important;display:inline-block!important;font-style:normal!important;flex:0 0 auto!important;width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;border-radius:var(--radius)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(-90deg,var(--star-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important;box-sizing:border-box!important}.rpi-stars-yelp i::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:70% 70%!important;mask-position:center!important}.rpi-stars-yelp[data-rating]::before{content:attr(data-rating);color:var(--star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-yelp i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-yelp i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-yelp i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-yelp i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-yelp i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-yelp[data-stars^="1"]{--rating:1.5;--star-color:var(--one-color)}.rpi-stars-yelp[data-stars="1"]{--rating:1}.rpi-stars-yelp[data-stars^="2"]{--rating:2.5;--star-color:var(--two-color)}.rpi-stars-yelp[data-stars="2"]{--rating:2}.rpi-stars-yelp[data-stars^="3"]{--rating:3.5;--star-color:var(--three-color)}.rpi-stars-yelp[data-stars="3"]{--rating:3}.rpi-stars-yelp[data-stars^="4"]{--rating:4.5;--star-color:var(--four-color)}.rpi-stars-yelp[data-stars="4"]{--rating:4}.rpi-stars-yelp[data-stars^="5"]{--rating:5;--star-color:var(--five-color)}.rpi-stars-tripadvisor{--empty-color:#ffffff;--border-color:#5ba672;--fill-color:#5ba672;--rpi-dot-size:18px;--rating:0;--gap:4px;--border:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-tripadvisor i{width:var(--rpi-dot-size)!important;height:var(--rpi-dot-size)!important;display:inline-block!important;position:relative!important;flex:0 0 auto!important;box-sizing:border-box!important;border-radius:999px!important;border:var(--border) solid var(--border-color)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(-90deg,var(--fill-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important}.rpi-stars-tripadvisor[data-rating]::before{content:attr(data-rating);color:var(--fill-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-tripadvisor i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-tripadvisor[data-stars^="1"]{--rating:1.5}.rpi-stars-tripadvisor[data-stars="1"]{--rating:1}.rpi-stars-tripadvisor[data-stars^="2"]{--rating:2.5}.rpi-stars-tripadvisor[data-stars="2"]{--rating:2}.rpi-stars-tripadvisor[data-stars^="3"]{--rating:3.5}.rpi-stars-tripadvisor[data-stars="3"]{--rating:3}.rpi-stars-tripadvisor[data-stars^="4"]{--rating:4.5}.rpi-stars-tripadvisor[data-stars="4"]{--rating:4}.rpi-stars-tripadvisor[data-stars^="5"]{--rating:5}.rpi-star-fb{--size:18px;--color:#fa3e3e;--radius:2px;--tail:6px;position:relative!important;display:flex!important;align-items:center!important;width:var(--size);height:var(--size);background-color:var(--color)!important;border-radius:var(--radius);white-space:nowrap!important;font-size:calc(var(--size) - 2px)!important;line-height:1!important;vertical-align:middle!important;text-indent:calc(var(--size) + 6px)!important}.rpi-star-fb[data-rating="1"]{--color:#cccccc}.rpi-star-fb::before{content:'';position:absolute;right:4px;bottom:-4px;width:0;height:0;border-top:5px solid var(--color);border-left:6px solid transparent}.rpi-star-fb::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:60% 60%!important;mask-position:center!important}.trustreviews,.trustreviews *,.trustreviews ::after,.trustreviews ::before{box-sizing:border-box}.trustreviews{display:block;direction:rtl;font-size:var(--font-size, 16px);font-family:var(--font-family);font-style:normal;font-weight:400;text-align:start;line-height:normal;overflow:visible;text-decoration:none;list-style-type:disc;box-sizing:border-box;visibility:visible!important}.trustreviews div,.trustreviews span{margin:0;padding:0;color:inherit;font:inherit;line-height:normal;letter-spacing:normal;text-transform:none;text-decoration:none;border:0;background:100% 0}.trustreviews a{color:inherit;text-decoration:none;background:100% 0;cursor:pointer;outline:0}.trustreviews a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.trustreviews img{display:block;max-width:100%;height:auto;border:0;vertical-align:middle}.trustreviews i{font-style:normal;font-weight:inherit;line-height:0;vertical-align:middle}.trustreviews svg{display:inline-block;width:auto;height:auto;vertical-align:middle;overflow:visible}.trustreviews svg use{opacity:1;visibility:visible}.trustreviews .trustreviews-flex{display:inline-flex;align-items:center;gap:var(--gap,2px);flex-direction:var(--dir,column);align-items:var(--align,star);flex-wrap:var(--wrap,nowrap);overflow:var(--overflow,visible)}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:700!important;vertical-align:middle!important;line-height:normal!important}.trustreviews .trustreviews-powered{color:#555!important}.trustreviews [data-platform=google] .trustreviews-powered img{max-width:144px!important}.trustreviews [data-platform=yelp] .trustreviews-powered img{max-height:25px!important;vertical-align:sub!important}.trustreviews [data-platform=facebook] .trustreviews-powered span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=tripadvisor] .trustreviews-powered span{color:#5ba672!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=facebook],.trustreviews [data-rev=facebook]{--rpi-star-color:#4569f5}.trustreviews .trustreviews-list-review{position:relative;margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-left:10px!important}[dir=rtl] .trustreviews-left{padding-right:10px!important}.trustreviews .trustreviews-img{min-width:50px!important;max-width:none!important;height:50px!important;overflow:hidden!important;border:none!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews [data-rev=google] .trustreviews-img{overflow:visible!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;padding-left:6px!important;text-decoration:none!important}.trustreviews .trustreviews-review .trustreviews-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-header .trustreviews-name{font-size:120%!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-left:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews-fb{padding:2px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews-ta{padding:3px;width:16px!important;height:16px!important;border-radius:50%;background:#00eb5b!important}.trustreviews-feedback span:first-child{margin-left:8px}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:right!important;direction:rtl!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{display:flex;flex-direction:column;gap:12px;position:relative!important;margin:0 10px!important;padding:16px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:12px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;left:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;right:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:visible!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{display:flex}.trustreviews .trustreviews-wr a{color:#fff!important;padding:4px 12px 8px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:-1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 4px 0 0;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}
  • fb-reviews-widget/trunk/assets/css/public-main.css

    r3406362 r3439940  
    1 .wpac,.wpac a,.wpac abbr,.wpac acronym,.wpac address,.wpac applet,.wpac b,.wpac big,.wpac blockquote,.wpac caption,.wpac cite,.wpac code,.wpac dd,.wpac del,.wpac dfn,.wpac div,.wpac dl,.wpac dt,.wpac em,.wpac fieldset,.wpac font,.wpac form,.wpac h1,.wpac h2,.wpac h3,.wpac h4,.wpac h5,.wpac h6,.wpac hr,.wpac i,.wpac img,.wpac input,.wpac ins,.wpac kbd,.wpac label,.wpac legend,.wpac li,.wpac object,.wpac ol,.wpac option,.wpac p,.wpac pre,.wpac q,.wpac s,.wpac samp,.wpac select,.wpac small,.wpac span,.wpac strike,.wpac strong,.wpac sub,.wpac sup,.wpac table,.wpac tbody,.wpac td,.wpac textarea,.wpac tfoot,.wpac th,.wpac thead,.wpac tr,.wpac tt,.wpac ul,.wpac var{background-attachment:scroll!important;background-color:transparent!important;background-image:none!important;background-position:0 0!important;background-repeat:repeat!important;border-color:#000!important;border-color:currentColor!important;border-radius:0!important;border-style:none!important;border-width:medium!important;bottom:auto!important;clear:none!important;clip:auto!important;color:inherit!important;counter-increment:none!important;counter-reset:none!important;cursor:auto!important;direction:inherit!important;display:inline;float:none!important;font-family:inherit!important;font-size:inherit!important;font-style:inherit!important;font-variant:normal!important;font-weight:inherit!important;height:auto;left:auto!important;letter-spacing:normal!important;line-height:inherit!important;list-style-type:inherit!important;list-style-position:outside!important;list-style-image:none!important;margin:0!important;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:1;outline:invert none medium!important;padding:0!important;position:static!important;quotes:"" ""!important;right:auto!important;table-layout:auto!important;text-align:inherit!important;text-decoration:inherit!important;text-indent:0!important;text-transform:none!important;top:auto!important;unicode-bidi:normal!important;vertical-align:baseline!important;visibility:inherit!important;white-space:normal!important;width:auto!important;word-spacing:normal!important;z-index:auto!important;-moz-border-radius:0!important;-webkit-border-radius:0!important;-moz-box-sizing:border-box!important;-webkit-box-sizing:border-box!important;box-sizing:border-box!important;text-shadow:none!important;-webkit-transition:none!important;transition:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.wpac,.wpac address,.wpac blockquote,.wpac caption,.wpac dd,.wpac div,.wpac dl,.wpac dt,.wpac fieldset,.wpac form,.wpac h1,.wpac h2,.wpac h3,.wpac h4,.wpac h5,.wpac h6,.wpac hr,.wpac ol,.wpac option,.wpac p,.wpac pre,.wpac select,.wpac textarea,.wpac ul{display:block}.wpac table{display:table}.wpac tbody{display:table-row-group}.wpac tr{display:table-row}.wpac td{display:table-cell}.wpac ul{list-style-type:none!important}.wpac li{display:list-item;min-height:auto!important;min-width:auto!important}.wpac a,.wpac a *,.wpac input[type=checkbox],.wpac input[type=radio],.wpac input[type=submit],.wpac select{cursor:pointer!important}.wpac a:hover{text-decoration:none!important}.wpac button,.wpac input[type=submit]{height:auto!important;text-align:center!important}.wpac input[type=hidden]{display:none}.wpac select{-webkit-appearance:menulist!important;-moz-appearance:menulist!important;appearance:menulist!important}.wpac input[type=checkbox]{-webkit-appearance:checkbox!important;-moz-appearance:checkbox!important;appearance:checkbox!important}.wpac input[type=checkbox]:after,.wpac input[type=checkbox]:before{content:none!important;border:0!important}.wpac input[type=radio]{-webkit-appearance:radio!important;-moz-appearance:radio!important;appearance:radio!important}.wpac input[type=radio]:after,.wpac input[type=radio]:before{content:none!important;border:0!important}.wpac li:after,.wpac li:before{content:""!important}.wpac input,.wpac select{vertical-align:middle!important}.wpac input,.wpac select,.wpac textarea{border:1px solid #ccc!important}.wpac table{border-collapse:collapse!important;border-spacing:0!important}.wpac [dir=rtl]{direction:rtl!important}.wpac img{border:0!important}.wpac svg{vertical-align:middle!important;-moz-box-sizing:content-box!important;-webkit-box-sizing:content-box!important;box-sizing:content-box!important}.wpac{font-size:14px!important;line-height:20px!important;direction:inherit!important;text-align:inherit!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;color:#333!important;font-style:normal!important;font-weight:400!important;text-decoration:none!important;list-style-type:disc!important}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:600!important;margin:0 6px 0 0!important;vertical-align:middle!important}.trustreviews .trustreviews-stars svg{display:inline-block!important;width:22px!important;height:22px!important;padding:0 4px 0 0!important;line-height:22px!important;vertical-align:middle!important}.trustreviews .trustreviews-stars svg use{fill:#0866ff;color:#0866ff}.trustreviews [data-rev=google] .trustreviews-stars svg use{fill:#fb8e28;color:#fb8e28}.trustreviews [data-rev=yelp] .trustreviews-stars svg use{fill:#d80027;color:#d80027}.trustreviews .trustreviews-powered{color:#555!important;margin:6px 0 0!important}.trustreviews .trustreviews-powered[data-platform=google] img{max-width:144px!important}.trustreviews .trustreviews-powered[data-platform=yelp] img{max-height:25px!important;vertical-align:sub!important}.trustreviews .trustreviews-powered[data-platform=facebook] span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews .trustreviews-list-review{margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-right:10px!important}[dir=rtl] .trustreviews-left{padding-left:10px!important}.trustreviews .trustreviews-left img{border:none!important;float:left!important;height:50px!important;width:50px!important;margin-right:10px!important;overflow:hidden!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left img{float:none!important}.trustreviews .trustreviews-place .trustreviews-stars svg{width:20px!important;height:20px!important;vertical-align:middle!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;margin:0 0 2px!important;padding-right:6px!important;text-decoration:none!important}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-right:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews.wpac .trustreviews-name{font-size:100%!important}.trustreviews.wpac .trustreviews-hide{display:none}.trustreviews.wpac .trustreviews-name a{color:#333!important;font-size:100%!important;text-decoration:none!important}.trustreviews.wpac .trustreviews-left img{width:50px!important;height:50px!important;border-radius:50%!important}.trustreviews.wpac a.trustreviews-name{color:#154fc1!important;text-decoration:none!important;white-space:normal!important;text-overflow:ellipsis!important}.trustreviews.wpac .trustreviews-list-review .trustreviews-stars{display:inline-block;margin-right:4px!important}.trustreviews.wpac.wp-dark .trustreviews-name a{color:#eee!important}.trustreviews-fb{padding:1px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:left!important;direction:ltr!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{position:relative!important;margin:0 10px!important;padding:15px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:4px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;right:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;left:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(-50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:hidden!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{margin:15px auto 8px!important}.trustreviews .trustreviews-wr a{color:#fff!important;padding:6px 15px 10px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 0 0 4px;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}
     1:root{--rpi-star-size:22px;--rpi-star-color:#fb8e28;--rpi-star-empty:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z' fill='none' stroke='%23cccccc' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");--rpi-star-mask:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.7881 3.21068C11.2364 2.13274 12.7635 2.13273 13.2118 3.21068L15.2938 8.2164L20.6979 8.64964C21.8616 8.74293 22.3335 10.1952 21.4469 10.9547L17.3295 14.4817L18.5874 19.7551C18.8583 20.8908 17.6229 21.7883 16.6266 21.1798L11.9999 18.3538L7.37329 21.1798C6.37697 21.7883 5.14158 20.8908 5.41246 19.7551L6.67038 14.4817L2.55303 10.9547C1.66639 10.1952 2.13826 8.74293 3.302 8.64964L8.70609 8.2164L10.7881 3.21068Z'/%3E%3C/svg%3E")}.rpi-star,.rpi-stars-tripadvisor,.rpi-stars-yelp{display:flex;align-items:center;gap:4px}.rpi-star[data-rating]::before{content:attr(data-rating);color:var(--rpi-star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-star[data-rating]::after{content:'';width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-position:center!important;-webkit-mask-size:contain!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-position:center!important;mask-size:contain!important}.rpi-stars{--stars:5;--stars-max:5;position:relative!important;display:inline-block!important;width:calc(var(--stars) * var(--rpi-star-size))!important;height:var(--rpi-star-size)!important;background-color:transparent!important;background-image:var(--rpi-star-empty)!important;background-repeat:repeat-x!important;background-position:left center!important;background-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-star+.rpi-stars{--stars-offset:1;--stars:calc(var(--stars-max) - var(--stars-offset))}.rpi-stars::before{content:''!important;position:absolute!important;inset:0!important;width:clamp(0%,calc(((var(--rating) - var(--stars-offset,0))/ (var(--stars-max) - var(--stars-offset,0))) * 100%),100%)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:repeat-x!important;-webkit-mask-position:left center!important;-webkit-mask-size:var(--rpi-star-size) var(--rpi-star-size)!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:repeat-x!important;mask-position:left center!important;mask-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-stars-yelp{--empty-color:#cccccc;--five-color:#fb433c;--four-color:#ff643d;--three-color:#ff8742;--two-color:#ffad48;--one-color:#ffcc4b;--rpi-star-size:20px;--rating:0;--gap:3px;--radius:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-yelp i{position:relative!important;display:inline-block!important;font-style:normal!important;flex:0 0 auto!important;width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;border-radius:var(--radius)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(90deg,var(--star-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important;box-sizing:border-box!important}.rpi-stars-yelp i::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:70% 70%!important;mask-position:center!important}.rpi-stars-yelp[data-rating]::before{content:attr(data-rating);color:var(--star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-yelp i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-yelp i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-yelp i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-yelp i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-yelp i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-yelp[data-stars^="1"]{--rating:1.5;--star-color:var(--one-color)}.rpi-stars-yelp[data-stars="1"]{--rating:1}.rpi-stars-yelp[data-stars^="2"]{--rating:2.5;--star-color:var(--two-color)}.rpi-stars-yelp[data-stars="2"]{--rating:2}.rpi-stars-yelp[data-stars^="3"]{--rating:3.5;--star-color:var(--three-color)}.rpi-stars-yelp[data-stars="3"]{--rating:3}.rpi-stars-yelp[data-stars^="4"]{--rating:4.5;--star-color:var(--four-color)}.rpi-stars-yelp[data-stars="4"]{--rating:4}.rpi-stars-yelp[data-stars^="5"]{--rating:5;--star-color:var(--five-color)}.rpi-stars-tripadvisor{--empty-color:#ffffff;--border-color:#5ba672;--fill-color:#5ba672;--rpi-dot-size:18px;--rating:0;--gap:4px;--border:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-tripadvisor i{width:var(--rpi-dot-size)!important;height:var(--rpi-dot-size)!important;display:inline-block!important;position:relative!important;flex:0 0 auto!important;box-sizing:border-box!important;border-radius:999px!important;border:var(--border) solid var(--border-color)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(90deg,var(--fill-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important}.rpi-stars-tripadvisor[data-rating]::before{content:attr(data-rating);color:var(--fill-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-tripadvisor i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-tripadvisor[data-stars^="1"]{--rating:1.5}.rpi-stars-tripadvisor[data-stars="1"]{--rating:1}.rpi-stars-tripadvisor[data-stars^="2"]{--rating:2.5}.rpi-stars-tripadvisor[data-stars="2"]{--rating:2}.rpi-stars-tripadvisor[data-stars^="3"]{--rating:3.5}.rpi-stars-tripadvisor[data-stars="3"]{--rating:3}.rpi-stars-tripadvisor[data-stars^="4"]{--rating:4.5}.rpi-stars-tripadvisor[data-stars="4"]{--rating:4}.rpi-stars-tripadvisor[data-stars^="5"]{--rating:5}.rpi-star-fb{--size:18px;--color:#fa3e3e;--radius:2px;--tail:6px;position:relative!important;display:flex!important;align-items:center!important;width:var(--size);height:var(--size);background-color:var(--color)!important;border-radius:var(--radius);white-space:nowrap!important;font-size:calc(var(--size) - 2px)!important;line-height:1!important;vertical-align:middle!important;text-indent:calc(var(--size) + 6px)!important}.rpi-star-fb[data-rating="1"]{--color:#cccccc}.rpi-star-fb::before{content:'';position:absolute;left:4px;bottom:-4px;width:0;height:0;border-top:5px solid var(--color);border-right:6px solid transparent}.rpi-star-fb::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:60% 60%!important;mask-position:center!important}.trustreviews,.trustreviews *,.trustreviews ::after,.trustreviews ::before{box-sizing:border-box}.trustreviews{display:block;direction:ltr;font-size:var(--font-size, 16px);font-family:var(--font-family);font-style:normal;font-weight:400;text-align:start;line-height:normal;overflow:visible;text-decoration:none;list-style-type:disc;box-sizing:border-box;visibility:visible!important}.trustreviews div,.trustreviews span{margin:0;padding:0;color:inherit;font:inherit;line-height:normal;letter-spacing:normal;text-transform:none;text-decoration:none;border:0;background:0 0}.trustreviews a{color:inherit;text-decoration:none;background:0 0;cursor:pointer;outline:0}.trustreviews a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.trustreviews img{display:block;max-width:100%;height:auto;border:0;vertical-align:middle}.trustreviews i{font-style:normal;font-weight:inherit;line-height:0;vertical-align:middle}.trustreviews svg{display:inline-block;width:auto;height:auto;vertical-align:middle;overflow:visible}.trustreviews svg use{opacity:1;visibility:visible}.trustreviews .trustreviews-flex{display:inline-flex;align-items:center;gap:var(--gap,2px);flex-direction:var(--dir,column);align-items:var(--align,star);flex-wrap:var(--wrap,nowrap);overflow:var(--overflow,visible)}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:700!important;vertical-align:middle!important;line-height:normal!important}.trustreviews .trustreviews-powered{color:#555!important}.trustreviews [data-platform=google] .trustreviews-powered img{max-width:144px!important}.trustreviews [data-platform=yelp] .trustreviews-powered img{max-height:25px!important;vertical-align:sub!important}.trustreviews [data-platform=facebook] .trustreviews-powered span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=tripadvisor] .trustreviews-powered span{color:#5ba672!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=facebook],.trustreviews [data-rev=facebook]{--rpi-star-color:#4569f5}.trustreviews .trustreviews-list-review{position:relative;margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-right:10px!important}[dir=rtl] .trustreviews-left{padding-left:10px!important}.trustreviews .trustreviews-img{min-width:50px!important;max-width:none!important;height:50px!important;overflow:hidden!important;border:none!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews [data-rev=google] .trustreviews-img{overflow:visible!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;padding-right:6px!important;text-decoration:none!important}.trustreviews .trustreviews-review .trustreviews-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-header .trustreviews-name{font-size:120%!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-right:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews-fb{padding:2px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews-ta{padding:3px;width:16px!important;height:16px!important;border-radius:50%;background:#00eb5b!important}.trustreviews-feedback span:first-child{margin-right:8px}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:left!important;direction:ltr!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{display:flex;flex-direction:column;gap:12px;position:relative!important;margin:0 10px!important;padding:16px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:12px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;right:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;left:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(-50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:visible!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{display:flex}.trustreviews .trustreviews-wr a{color:#fff!important;padding:4px 12px 8px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 0 0 4px;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}
  • fb-reviews-widget/trunk/assets/js/admin-main.js

    r3406362 r3439940  
    1 var TrustReviews=TrustReviews||{};
    2 TrustReviews.Admin={stars:function(c,d,k){for(var t="",n=1;6>n;n++){var y=c-n;t=0<=y?t+this.star("",d,k):-1<y&&0>y?-.75>y?t+this.star("-o","#ccc",k):-.25<y?t+this.star("",d,k):t+this.star("-half",d,k):t+this.star("-o","#ccc",k)}return t},star:function(c,d,k){switch(c){case "-half":c='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star-o" style="stroke:'+d+';stroke-width:1.5"/><use href="#'+TRUSTREVIEWS_VARS.slg+'-star-half" style="fill:'+d+'" clip-path="url(#'+TRUSTREVIEWS_VARS.slg+'-clip-half)"/>';break;
    3 case "-o":c='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star-o" style="stroke:#ccc;stroke-width:1.5"/>';break;default:c='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star" style="fill:'+d+'"/>'}return'<svg viewBox="0 0 24 24" width="'+k+'" height="'+k+'">'+c+"</svg>"},review:function(c){var d=TRUSTREVIEWS_VARS.slg;const k=document.createElement("div");k.className=d+"-list-review"+(""===c.hide?"":" wp-review-hidden");k.dataset.rev=String(c.provider||"");const t=document.createElement("div");t.className=d+"-right";
    4 k.appendChild(t);var n=document.createElement("a");n.className=d+"-name";n.target="_blank";n.rel="nofollow noopener";n.href=this.safeUrl(c.author_url);n.textContent=c.author_name||"";t.appendChild(n);n=document.createElement("div");n.className=d+"-time";n.dataset.time=String(c.time||"");t.appendChild(n);n=document.createElement("div");n.className=d+"-feedback";t.appendChild(n);var y=this.stars(Number(c.rating)||0,"#fb8e28",16);if("string"===typeof y){const F=document.createElement("span");F.innerHTML=
    5 y;n.appendChild(F)}else y instanceof Node&&n.appendChild(y);y=document.createElement("span");y.className=d+"-text";this.trimtext(y,c.text||"",50);n.appendChild(y);d=document.createElement("a");d.href="#";d.className="wp-review-hide";d.dataset.id=String(c.id||"");d.textContent=(""===c.hide?"Hide":"Show")+" review";t.appendChild(d);return k},trimtext:function(c,d,k){if(d)if(d=String(d),k&&d.length>k){var t=d.substring(0,k).indexOf(" ")+1;if(1>t||k-t>k/2)t=k;k="";if(0<t){var n=d.substring(0,t-1);k=d.substring(t-
    6 1)}else n=d;c.appendChild(document.createTextNode(n));k&&(d=document.createElement("span"),d.textContent="... ",c.appendChild(d),d=document.createElement("span"),d.className="wp-more",d.textContent=k,c.appendChild(d),k=document.createElement("span"),k.className="wp-more-toggle",k.textContent="read more",c.appendChild(k))}else c.textContent=d},safeUrl:function(c){if(!c)return"#";c=String(c).trim();return/^https?:\/\//i.test(c)?c:"#"},s2dmy:function(c){c=(c/86400).toFixed(0);return 30<c?365<c?Math.round(c/
    7 365)+" years":Math.round(c/30)+" months":c+" days"},review_hide:function(c){let d=TRUSTREVIEWS_VARS.slg;jQuery.post(ajaxurl,{id:c.attr("data-id"),feed_id:jQuery('input[name="'+d+'_feed[post_id]"]').val(),action:d+"_hide_review",_wpnonce:jQuery("#_wpnonce").val()},function(k){var t=c.parent().parent();k.hide?(c.text("show review"),t.addClass("wp-review-hidden")):(c.text("hide review"),t.removeClass("wp-review-hidden"))},"json")}};
    8 jQuery(document).ready(function(c){function d(D,v){return c(D.replace(/(\.|#)/g,"$1"+k+"-").replace(/\-_/g,"_"),v)}let k=TRUSTREVIEWS_VARS.slg;c("."+k+"-admin-page a.nav-tab").on("click",function(D){var v=c(this),G=v.attr("href");c(G).show().siblings(".tab-content").hide();v.addClass("nav-tab-active").siblings().removeClass("nav-tab-active");D.preventDefault()});var t=d("#rate_us");if(t.length){var n=d("#rate_us-feedback"),y=d("#rate_us-feedback-stars");-1<window.location.href.indexOf("_feed_id=")&&
    9 !window[k+"_rateus"]&&t.addClass(k+"-flash-visible");c("svg",t).click(function(){var v=c(this).index()+1;3<v?(c.post({url:ajaxurl,type:"POST",dataType:"json",data:{rate:v,action:k+"_rateus_ajax",_wpnonce:c("#_wpnonce").val()},success:function(G){console.log(G)}}),v=0<(1*Math.random()).toFixed(0)?"https://g.page/r/CZIR4rrOZJnLEBM/review":"https://wordpress.org/support/plugin/"+TRUSTREVIEWS_VARS.pluginName+"/reviews/?rate="+v+"#new-post",window.open(v,"_blank"),D()):(y.attr("data-rate",v),y.html(TrustReviews.Admin.stars(v,
    10 "#fb8e28",24)),n.dialog({modal:!0,width:"50%",maxWidth:"600px"}),c(".ui-widget-overlay").bind("click",function(){n.dialog("close")}))});d(".rate_us-cancel").click(function(){n.dialog("close")});d(".rate_us-send").click(function(){c.post({url:ajaxurl,type:"POST",dataType:"json",data:{action:k+"_rateus_ajax_feedback",rate:y.attr("data-rate"),email:c("input",n).val(),msg:c("textarea",n).val(),_wpnonce:c("#_wpnonce").val()},success:function(v){n.dialog({title:"Feedback sent"});n.html('<b style="color:#4cc74b">Thank you for your feedback!<br>We received it and will investigate your suggestions.</b>');
    11 D();setTimeout(function(){n.fadeOut(500,function(){n.dialog("close")})},1500)}})});function D(){setTimeout(function(){t.addClass(k+"-flash-gout");t.removeClass(k+"-flash-visible");t.removeClass(k+"-flash-gout");window[k+"_rateus"]=1},1E3)}}if(d("#overview-rating").length){var F=6,I=d("#overview-places"),L=d("#overview-months"),C=d("#overview-rating"),K=d("#overview-reviews"),J=null;I.change(function(){D(this.value)});L.change(function(){F=this.value;D(I.val())});D(0,function(v){c.each(v.places,function(G,
    12 H){I.append(c("<option>",{value:H.id,text:H.name}))})});function D(v,G){var H={action:k+"_overview_ajax",_wpnonce:jQuery("#_wpnonce").val()};v&&(H.pid=v);jQuery.post({url:ajaxurl,type:"POST",dataType:"json",data:H,success:function(r){if(r){var h=1<r.places.length?r.places.find(B=>B.id==v):r.places[0],x=null;if(r.stats_minmax.length){var q={},w=0,z=((new Date).getTime()/1E3).toFixed(0);for(var a=0;a<r.stats_minmax.length;a++){var e=r.stats_minmax[a],b=e.biz_id;w=!w||e.time<w?e.time:w;q[b]?(q[b]={time:parseInt(z-
    13 q[b].time),rating:parseFloat((e.rating-q[b].rating).toFixed(1)),review_count:parseInt(e.review_count-q[b].review_count)},x=x?{time:q[b].time,rating:x.rating+q[b].rating,review_count:x.review_count+q[b].review_count}:q[b],delete q[b]):q[b]={time:w,rating:e.rating,review_count:e.review_count}}}q=d("#overview-stats");q.html("Not calculated yet");x&&(w=x.rating,z=x.review_count,q.html(('<div class="{slg}-overview-h">While using the plugin</div><div>Usage time: <span class="{slg}-stat-val {slg}-stat-up">'+
    14 TrustReviews.Admin.s2dmy(x.time)+'</span></div><div>Rating up: <span class="{slg}-stat-val {slg}-stat-'+(0>w?"down":0<w?"up":"")+'">'+w+'</span></div><div>Reviews up: <span class="{slg}-stat-val {slg}-stat-'+(0>z?"down":0<z?"up":"")+'">'+z+"</span></div>").replace(/{slg}/g,k)));C.html(('<div class="{slg}"><div class="{slg}-overview-h">'+h.name+'</div><div><span class="{slg}-rating">'+r.rating+'</span><span class="{slg}-stars">'+TrustReviews.Admin.stars(r.rating,"#fb8e28",20)+'</span></div><div class="{slg}-powered">Based on '+
    15 r.review_count+" reviews</div>"+(h.updated?'<div class="{slg}-powered">Last updated: <span class="{slg}-time">'+WPacTime.getTime(parseInt(h.updated),TrustReviews.Plugin.lang(),"ago")+"</span></div>":"")+"</div>").replace(/{slg}/g,k));var l=document.createElement("div");l.className=k+" wpac";c.each(r.reviews,function(B,E){l.appendChild(TrustReviews.Admin.review(E))});K.html("");K[0].appendChild(l);TrustReviews.Plugin.timeago();TrustReviews.Plugin.read_more();c(".wp-review-hide",K).unbind("click").click(function(){TrustReviews.Admin.review_hide(c(this));
    16 return!1});x={};for(h=0;h<r.stats.length;h++)q=r.stats[h],w=q.biz_id,x[w]=x[w]||[],x[w].push({time:parseInt(q.time),rating:parseFloat(q.rating),review_count:parseInt(q.review_count)});h=parseInt((r.stats[0].time-r.stats[r.stats.length-1].time)/2592E3);w=4<h?F:h||1;h={};z=new Date;for(a=0;a<w;a++)for(g in q=new Date(z.getFullYear(),z.getMonth()-a,1),e=(new Date(z.getFullYear(),z.getMonth()+1-a,0)).getTime(),b=q.toLocaleString("default",{month:"short"})+" "+q.getFullYear().toString().slice(-2),h[b]=
    17 h[b]||{},x){var f=0,u=x[g];do{q=u[f++];var A=1E3*q.time;h[b][g]=h[b][g]||{};h[b][g].count=parseInt(q.review_count)}while(A>e&&f<u.length)}x=[];q=[];w=[];z={};for(m in h){a=0;for(p in h[m])a+=h[m][p].count,e=r.places.find(B=>B.id==p),z[e.name]=z[e.name]||{},z[e.name].data=z[e.name].data||[],z[e.name].data.unshift(h[m][p].count);x.unshift(m);q.unshift(a)}for(tt in z)w.push({name:tt,data:z[tt].data});h={series:[{name:"Reviews",data:q}],chart:{height:350,type:"bar"},plotOptions:{bar:{dataLabels:{position:"top"}}},
    18 dataLabels:{enabled:!0,offsetY:-20,style:{fontSize:"12px",colors:["#304758"]}},tooltip:{enabled:!0,intersect:!1,custom:function(){return""}},xaxis:{categories:x,axisBorder:{show:!1},axisTicks:{show:!1},tooltip:{enabled:!0}},yaxis:{axisBorder:{show:!1},axisTicks:{show:!1}},title:{text:"Monthly reviews count",align:"center",style:{color:"#444"}}};J?J.updateOptions({series:[{name:"Reviews",data:q}],xaxis:{categories:x}}):(J=new ApexCharts(document.querySelector("#chart"),h),J.render());G&&G(r)}else window.location.href=
    19 TRUSTREVIEWS_VARS.builderUrl}})}}});TrustReviews=TrustReviews||{};
    20 TrustReviews.Builder=function(c,d){function k(){if(!r("title").value)return r("title").focus(),!1;r("save").innerText="Auto save, wait";r("save").disabled=!0;c.post(ajaxurl,{post_id:r("post_id").value,title:r("title").value,content:x().value,action:d.slg+"_feed_save_ajax",_wpnonce:c("#_wpnonce").val()},function(a){for(var e=document.querySelectorAll("."+d.slg),b=0;b<e.length;b++)e[b].parentNode.removeChild(e[b]);r("collection_preview").innerHTML=a;c(".wp-review-hide").unbind("click").click(function(){TrustReviews.Admin.review_hide(c(this));
    21 return!1});r("post_id").value?(a=h("#rate_us"),!a.length||a.hasClass(d.slg+"-flash-visible")||window[d.slg+"_rateus"]||a.addClass(d.slg+"-flash-visible")):(a=document.querySelector("."+d.slg).getAttribute("data-id"),r("post_id").value=a,window.location.href=window.location.href+"&"+d.slg+"_feed_id="+a+"&"+d.slg+"_feed_new=1");r("save").innerText="Save & Update";r("save").disabled=!1;q=null})}function t(a){var e=h(".connect-btn");e.click(function(){var b=h(".connect-id"),l=e.parent().attr("data-platform");
    22 if(!b.val())return b.focus(),!1;b="yelp"==l?/.+\/biz\/(.*?)(\?|\/|$)/.exec(b.val())[1]:b.val();var f=h(".connect-lang").val();e[0].innerHTML="Please wait...";e[0].disabled=!0;n({id:b,lang:f,platform:l,local_img:!0},a,1);return!1})}function n(a,e,b){var l=a.platform;h(".connect-btn");r("save").innerText="Auto save, wait";r("save").disabled=!0;c.post(ajaxurl,{id:decodeURIComponent(a.id),lang:a.lang,local_img:a.local_img||!1,token:a.token,feed_id:c('input[name="'+d.slg+'_feed[post_id]"]').val(),action:d.slg+
    23 "_connect_"+l,v:(new Date).getTime(),_wpnonce:c("#_wpnonce").val()},function(f){console.log("connect_debug:",f);var u=h(".connect-error");if("success"==f.status){try{h("#connect-wizard").dialog("close")}catch(A){}F({id:f.result.id,lang:a.lang,name:f.result.name,photo:f.result.photo,refresh:!0,local_img:a.local_img,platform:l,props:{default_photo:f.result.photo}},e);C()}else switch(f.result.error_message){case "usage_limit":c("#dialog").dialog({width:"50%",maxWidth:"600px"});break;case "bot_check":if(1<
    24 b)break;v(d.gAppUrl+"/botcheck?authcode="+e,640,480,function(){n(a,e,b+1)});break;default:0<=f.result.error_message.indexOf("The provided Place ID is no longer valid")?u[0].innerHTML='It seems Google place which you are trying to connect does not have a physical address (it\'s virtual or service area), unfortunately, Google Places API does not support such locations, it\'s a limitation of Google, not the plugin.<br><br>However, you can try to connect your Google reviews in our new cloud service <a href="https://trust.reviews" target="_blank">Trust.Reviews</a> and show it on your WordPress site through universal <b>HTML/JavaScript</b> code.':
    25 u[0].innerHTML="<b>Error</b>: "+f.result.error_message}},"json")}function y(a){h(".connect-facebook").click(function(){var e=G(16);v(d.fbAuthUrl+"?state="+d.authcode+":"+e,670,520,function(){c.ajax({url:d.fbAppUrl+"/accounts?temp_code="+e,dataType:"jsonp",success:function(b){b&&b.length&&(c.each(b,function(l,f){F({id:f.id,name:f.name,photo:"https://graph.facebook.com/"+f.id+"/picture",platform:"facebook",rating_count:"",props:{default_photo:"https://graph.facebook.com/"+f.id+"/picture"}},a)}),C())}})});
    26 return!1})}function F(a,e,b){var l=I(a),f=c("#"+l);f.length||(f=c('<div class="'+d.slg+'-connection"></div>')[0],f.id=l,void 0!=a.lang&&f.setAttribute("data-lang",a.lang),f.setAttribute("data-platform",a.platform),f.innerHTML=L(a,b),h(".connections")[0].appendChild(f),h(".toggle",f).unbind("click").click(function(){c(this).toggleClass("toggled");c(this).next().slideToggle()}),h(".connect-photo-change",f).on("click",function(u){u.preventDefault();J(f,void 0,function(){C()});return!1}),h(".connect-photo-default",
    27 f).on("click",function(u){D(f,a.props.default_photo);C();return!1}),c('input[type="text"]',f).keyup(function(){clearTimeout(q);q=setTimeout(C,1500)}),c('input[type="checkbox"]',f).click(function(){C()}),c("select."+d.slg+"-connect-lang",f).change(function(){a.lang=this.value;f.id=I(a);f.setAttribute("data-lang",this.value);n(a,e,1);return!1}),c('input[name="local_img"]',f).unbind("click").click(function(){a.local_img=this.checked;n(a,e,1)}),h(".connect-reconnect",f).click(function(){n(a,e,1);return!1}),
    28 h(".connect-delete",f).click(function(){confirm("Are you sure to delete this business?")&&(c(f).remove(),C());return!1}))}function I(a){var e=d.slg+"-"+a.platform+"-"+a.id.replace(/\//g,"");null!=a.lang&&(e+=a.lang);return e}function L(a,e){var b=a.name;a.lang&&(b+=" ("+a.lang+")");a.photo=a.photo||"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";var l=document.createElement("option");l.value="google"==a.platform&&a.props&&a.props.pid?a.props.pid:a.id;var f=a.platform;
    29 f=f.charAt(0).toUpperCase()+f.slice(1);l.text=f+": "+a.name;e='<div class="{slg}-toggle {slg}-builder-connect {slg}-connect-business"><input type="checkbox" class="{slg}-connect-select" onclick="event.stopPropagation();" '+(e?"checked":"")+" /> "+b+(a.address?" ("+a.address+")":"")+'</div><div style="display:none">';b=a.props;l="";for(prop in b)"platform"!=prop&&Object.prototype.hasOwnProperty.call(b,prop)&&(l+='<input type="hidden" name="'+prop+'" value="'+b[prop]+'" class="{slg}-connect-prop" readonly />');
    30 return(e+l+'<input type="hidden" name="id" value="'+a.id+'" readonly />'+(a.address?'<input type="hidden" name="address" value="'+a.address+'" readonly />':"")+(a.access_token?'<input type="hidden" name="access_token" value="'+a.access_token+'" readonly />':"")+'<div class="{slg}-builder-option"><img src="'+a.photo+'" alt="'+a.name+'" class="{slg}-connect-photo"><a href="#" class="{slg}-connect-photo-change">Change</a><a href="#" class="{slg}-connect-photo-default">Default</a><input type="hidden" name="photo" class="{slg}-connect-photo-hidden" value="'+
    31 a.photo+'" tabindex="2"/></div><div class="{slg}-builder-option"><input type="text" name="name" value="'+a.name+'" /></div>'+(void 0!=a.website?'<div class="{slg}-builder-option"><input type="text" name="website" value="'+a.website+'" /></div>':"")+(void 0!=a.lang?'<div class="{slg}-builder-option">'+H("Show all connected languages",a.lang)+"</div>":"")+(void 0!=a.review_count?'<div class="{slg}-builder-option"><input type="text" name="review_count" value="'+a.review_count+'" placeholder="Total number of reviews" /><span class="{slg}-quest {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help">Google return only 5 most helpful reviews and does not return information about total number of reviews and you can type here it manually.</div></div>':
    32 "")+("facebook"==a.platform?'<div class="{slg}-builder-option"><input type="text" name="rating_count" value="'+(a.rating_count||"")+'" placeholder="Reviews count adder" /><span class="{slg}-quest {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help">Facebook returns incorrect number of reviews for some pages. We reported a <a href="https://developers.facebook.com/support/bugs/570160061284085/" target="_blank">bug</a>, which, unfortunately, has not been fixed.<br>If you have this situation and your FB reviews count is incorrect, just <b>enter the difference between the current and the correct reviews count</b> in this option and the plugin will show the correct count.</div></div>':
    33 "")+(void 0!=a.refresh?'<div class="{slg}-builder-option"><label><input type="checkbox" name="refresh" '+(a.refresh?"checked":"")+'>Update reviews daily</label><span class="{slg}-quest {slg}-quest-top {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help">'+("google"==a.platform?"The plugin uses the Google Places API to get your reviews. <b>The API only returns the 5 most helpful reviews (it's a limitation of Google, not the plugin)</b>. This option calls the Places API once in 24 hours (to keep the plugin's free and avoid a Google Billing) to check for a new reviews and if there are, adds to the plugin. Thus slowly building up a database of reviews.<br><br>Also if you see the new reviews on Google map, but after some time it's not added to the plugin, it means that Google does not include these reviews to the API and the plugin can't get this.<br><br>If you need to show <b>all reviews</b>, please use <a href=\"https://trust.reviews\" target=\"_blank\">Business plugin</a> which uses a Google My Business API without API key and billing.":
    34 "")+("yelp"==a.platform?"The plugin uses the Yelp API to get your reviews. <b>The API only returns the 3 most helpful reviews without sorting possibility.</b> When Yelp changes the 3 most helpful the plugin will automatically add the new one to your database. Thus slowly building up a database of reviews.":"")+"</div></div>":"")+'<div class="{slg}-builder-option"><label><input type="checkbox" name="local_img" '+(a.local_img?"checked":"")+">Save images locally (GDPR)</label></div>"+("facebook"!=a.platform?
    35 '<div class="{slg}-builder-option"><button class="{slg}-connect-reconnect">Reconnect</button></div>':"")+'<div class="{slg}-builder-option"><button class="{slg}-connect-delete">Delete connection</button></div></div>').replace(/{slg}/g,d.slg)}function C(){var a=[],e=document.querySelectorAll("."+d.slg+"-connection");for(E in e)if(Object.prototype.hasOwnProperty.call(e,E)){var b=e[E].querySelector("."+d.slg+"-connect-select");if(!b||null===b.offsetParent||b.checked){var l={};b=e[E].getAttribute("data-lang");
    36 var f=e[E].getAttribute("data-platform"),u=e[E].querySelectorAll("input");void 0!=b&&(l.lang=b);for(var A in u)if(Object.prototype.hasOwnProperty.call(u,A)){b=u[A];var B=b.getAttribute("name");B&&(b.className==d.slg+"-connect-prop"?(l.props=l.props||{},l.props[B]=b.value):l[B]="checkbox"==b.type?b.checked:b.value)}l.platform=f;a.push(l)}}e={};var E=document.querySelector("."+d.slg+"-connect-options").querySelectorAll("input[name],select,textarea");for(var M in E)Object.prototype.hasOwnProperty.call(E,
    37 M)&&(b=E[M],B=b.getAttribute("name"),"checkbox"==b.type?e[B]=b.checked:void 0!=b.value&&(e[B]="textarea"==b.type||"word_filter"==B||"word_exclude"==B?encodeURIComponent(b.value):b.value));x().value=JSON.stringify({connections:a,options:e});a.length&&(a=a[0],r("title").value||(r("title").value=a.name),k())}function K(a,e){var b=e.conns,l=b.options;if(Array.isArray(b.connections))b=b.connections;else{var f=[];if(Array.isArray(b.google)){for(var u=0;u<b.google.length;u++)b.google[u].platform="google";
    38 f=f.concat(b.google)}if(Array.isArray(b.facebook)){for(u=0;u<b.facebook.length;u++)b.facebook[u].platform="facebook";f=f.concat(b.facebook)}if(Array.isArray(b.yelp)){for(u=0;u<b.yelp.length;u++)b.yelp[u].platform="yelp";f=f.concat(b.yelp)}b=f}for(f=0;f<b.length;f++)F(b[f],e.authcode,!0);for(var A in l)Object.prototype.hasOwnProperty.call(l,A)&&(e=a.querySelector('input[name="'+A+'"],select[name="'+A+'"],textarea[name="'+A+'"]'))&&(b=e.getAttribute("name"),"boolean"===typeof l[A]?e.checked=l[A]:(e.value=
    39 "textarea"==e.type||"word_filter"==b||"word_exclude"==b?decodeURIComponent(l[A]):l[A],-1<A.indexOf("_photo")&&e.value&&(e.parentNode.querySelector("img").src=e.value)))}function J(a,e,b){e||(e=wp.media.frames.file_frame=wp.media({title:c(this).data("uploader_title"),button:{text:c(this).data("uploader_button_text")},multiple:!1}),e.on("select",function(){var l=e.state().get("selection").first().toJSON();D(a,l.url);b&&b(l.url)}));e.open()}function D(a,e){var b=h(".connect-photo-hidden",a);a=h(".connect-photo",
    40 a);b.val(e);a.attr("src",e);a.show();C()}function v(a,e,b,l){function f(){B&&0==B.closed?setTimeout(f,100):l()}var u=u||screen.height/2-b/2,A=A||screen.width/2-e/2,B=window.open(a,"","location=1,status=1,resizable=yes,width="+e+",height="+b+",top="+u+",left="+A);setTimeout(f,100)}function G(a){for(var e="",b=0;b<a;b++)e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return e}function H(a,e){for(var b="",l=0;l<w.length;l++)b+='<option value="'+
    41 w[l][0]+'"'+(e==w[l][0]?' selected="selected"':"")+">"+w[l][1]+"</option>";return'<select class="{slg}-connect-lang" name="lang"><option value=""'+(e?"":' selected="selected"')+">"+a+"</option>"+b+"</select>"}function r(a){return window[d.slg+"_"+a]}function h(a,e){return c(a.replace(/(\.|#)/g,"$1"+d.slg+"-").replace(/\-_/g,"_"),e)}function x(){return document.getElementById(d.slg+"-builder-connection")}var q=null;const w=[["ar","Arabic"],["bg","Bulgarian"],["bn","Bengali"],["ca","Catalan"],["cs",
    42 "Czech"],["da","Danish"],["de","German"],["el","Greek"],["en","English"],["es","Spanish"],["eu","Basque"],["eu","Basque"],["fa","Farsi"],["fi","Finnish"],["fil","Filipino"],["fr","French"],["gl","Galician"],["gu","Gujarati"],["hi","Hindi"],["hr","Croatian"],["hu","Hungarian"],["id","Indonesian"],["it","Italian"],["iw","Hebrew"],["ja","Japanese"],["kn","Kannada"],["ko","Korean"],["lt","Lithuanian"],["lv","Latvian"],["ml","Malayalam"],["mr","Marathi"],["nl","Dutch"],["no","Norwegian"],["pl","Polish"],
    43 ["pt","Portuguese"],["pt-BR","Portuguese (Brazil)"],["pt-PT","Portuguese (Portugal)"],["ro","Romanian"],["ru","Russian"],["sk","Slovak"],["sl","Slovenian"],["sr","Serbian"],["sv","Swedish"],["ta","Tamil"],["te","Telugu"],["th","Thai"],["tl","Tagalog"],["tr","Turkish"],["uk","Ukrainian"],["vi","Vietnamese"],["zh","Chinese (Simplified)"],["zh-Hant","Chinese (Traditional)"]];var z='<div class="{slg}-builder-platforms {slg}-builder-inside"><div class="{slg}-connect-text">Connect Reviews</div><div class="{slg}-builder-connect {slg}-connect-facebook"><svg viewBox="0 0 100 100" width="24" height="24" style="border-radius:50%;background:#0866FF;padding:1px;box-sizing:border-box;"><use xlink:href="#{slg}-logo-f"></use></svg></div><div class="{slg}-builder-connect" data-platform="google"><svg viewBox="0 0 512 512" width="24" height="24"><use xlink:href="#{slg}-logo-g"></use></svg></div><div class="{slg}-builder-connect" data-platform="yelp"><svg viewBox="0 0 533.33 533.33" width="24" height="24"><use xlink:href="#{slg}-logo-y"></use></svg></div><div class="{slg}-connections"></div></div><div class="{slg}-connect-options"><div class="{slg}-builder-inside"><div class="{slg}-builder-option">Layout<select id="view_mode" name="view_mode"><option value="slider" selected="selected">Slider</option><option value="grid">Grid</option><option value="list">List</option></select></div></div><div class="{slg}-builder-top {slg}-toggle">Common Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option">Pagination<input type="text" name="pagination" value=""></div><div class="{slg}-builder-option">Maximum characters before \'read more\' link<input type="text" name="text_size" value=""></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_center" value="">Show rating by center</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_photo" value="">Hide business photo</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_name" value="">Hide business name</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_based_on" value="">Hide \'Based on ... reviews\'</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_writereview" value="">Hide \'review us on G\' button</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_social" value="">Hide rating header, leave only reviews</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_reviews" value="">Hide reviews, leave only rating header</label></div></div><div class="{slg}-builder-top {slg}-toggle">Slider Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option">Speed in second<input type="text" name="slider_speed" value="" placeholder="Default: 5"></div><div class="{slg}-builder-option">Text height<input type="text" name="slider_text_height" value="" placeholder="Default: 100px"></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_autoplay" value="" checked>Auto-play</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_hide_prevnext" value="">Hide prev & next buttons</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_hide_dots" value="">Hide dots</label></div></div><div class="{slg}-builder-top {slg}-toggle">Style Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option"><label><input type="checkbox" name="dark_theme">Dark background</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_backgnd" value="">Hide reviews background</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="show_round" value="">Round reviews borders</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="show_shadow" value="">Show reviews shadow</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="centered" value="">Place by center (only if max-width is set)</label></div><div class="{slg}-builder-option">Container max-width<input type="text" name="max_width" value="" placeholder="for instance: 300px"><small>Be careful: this will make reviews unresponsive</small></div><div class="{slg}-builder-option">Container max-height<input type="text" name="max_height" value="" placeholder="for instance: 500px"></div></div><div class="{slg}-builder-top {slg}-toggle">Advance Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option"><label><input type="checkbox" name="lazy_load_img" checked>Lazy load images</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="google_def_rev_link">Use default Google reviews link</label><span class="{slg}-quest {slg}-quest-top {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help" style="display:none;">If the direct link to all reviews <b>https://search.google.com/local/reviews?placeid=&lt;PLACE_ID&gt;</b> does not work with your Google place (leads to 404), please use this option to use the default reviews link to Google map.</div></div><div class="{slg}-builder-option"><label><input type="checkbox" name="open_link" checked>Open links in new Window</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="nofollow_link" checked>Use no follow links</label></div><div class="{slg}-builder-option">Reviewer avatar size<select name="reviewer_avatar_size"><option value="56" selected="selected">Small: 56px</option><option value="128">Medium: 128px</option><option value="256">Large: 256px</option></select></div><div class="{slg}-builder-option">Cache data<select name="cache"><option value="1">1 Hour</option><option value="3">3 Hours</option><option value="6">6 Hours</option><option value="12" selected="selected">12 Hours</option><option value="24">1 Day</option><option value="48">2 Days</option><option value="168">1 Week</option><option value="">Disable (NOT recommended)</option></select></div><div class="{slg}-builder-option">Reviews limit<input type="text" name="reviews_limit" value=""></div></div></div><div id="{slg}-connect-wizard" title="Easy steps to connect reviews" style="display:none;"><div data-platform="google"><iframe id="grc" src="https://app.trustembed.com/grc?authcode={{authcode}}" style="width:100%;height:400px"></iframe><small class="grw-connect-error"></small></div><div data-platform="yelp"><p><span>1</span> Find your Yelp business on yelp.com</p><p><span>2</span> Copy & paste Yelp business URL to the field below</p><p><input type="text" class="{slg}-connect-id" value="" placeholder="Yelp business link" />'+
    44 H("Choose language if needed")+'</p><p><span>3</span> Click CONNECT REVIEWS button</p><button class="{slg}-connect-btn">Connect Reviews</button></div><small class="{slg}-connect-error"></small></div>';return THIS={init:function(){var a=document.querySelector(d.opt_el);if(a){a.innerHTML=z.replace(/{slg}/g,d.slg).replace("{{authcode}}",d.authcode);d.conns&&d.conns.connections&&d.conns.connections.length&&K(a,d);var e=h("#connect-wizard");h(".builder-connect[data-platform]").click(function(){let b=this.getAttribute("data-platform");
    45 e.attr("data-platform",b);e.dialog({modal:!0,width:"50%",maxWidth:"600px"})});window.onmessage=function(b){if("https://app.trustembed.com"===b.origin&&b.data)switch(b=b.data,b.action){case "connect":n(b,b.authcode,1)}};t(d.authcode);y(d.authcode);h('.connect-options input[type="text"],.connect-options textarea').keyup(function(){clearTimeout(q);q=setTimeout(C,1500)});h('.connect-options input[type="checkbox"],.connect-options select').change(function(){C()});h(".toggle",a).unbind("click").click(function(){c(this).toggleClass("toggled");
    46 c(this).next().slideToggle()});h(".connections").sortable&&(h(".connections").sortable({stop:function(b,l){C()}}),h(".connections").disableSelection());c(".wp-review-hide").click(function(){TrustReviews.Admin.review_hide(c(this));return!1});h("#_save").click(function(){C();return!1});window.addEventListener("beforeunload",function(b){if(q)return(b||window.event).returnValue="It looks like you have been editing something. If you leave before saving, your changes will be lost."})}}}};
     1var rpi=rpi||{};
     2rpi.Toast=function(d){function c(k){h||(h=document.createElement("div"),h.className="rpi-toast",h.innerHTML="<style>.rpi-toast{position:fixed;bottom:20px;right:20px;z-index:999999;display:flex;flex-direction:column;gap:8px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;}.rpi-toast-msg{min-width:220px;max-width:320px;padding:10px 14px;border-radius:8px;background:#ffffff;color:#000000;box-shadow:0 10px 30px rgba(0,0,0,.15);display:flex;align-items:center;gap:8px;font-size:13px;opacity:0;transform:translateY(60px);transition:transform .45s ease,opacity .45s ease;}.rpi-toast--success{background:#16a34a;color:#ffffff;}.rpi-toast--error{background:#dc2626;color:#ffffff;}.rpi-toast__close{background:none;border:0;font-size:18px;line-height:1;cursor:pointer;color:inherit;}</style>",document.body.appendChild(h));
     3"left"===k?(h.style.left="20px",h.style.right=""):(h.style.right="20px",h.style.left="");return h}d=d||{};let h=document.querySelector(".rpi-toast");return{show:function(k){function q(){C.parentNode.removeChild(C)}function A(){C.style.opacity="0";C.style.transform="translateY(60px)";setTimeout(q,300)}k=k||{};if(k.msg){var H=(null!=k.timeout?k.timeout:d.timeout)||30,G=k.type||"default",L=c(k.position||d.position||"right"),C=document.createElement("div");C.className="rpi-toast-msg";"success"===G?C.className+=
     4" rpi-toast--success":"error"===G&&(C.className+=" rpi-toast--error");C.innerHTML='<span style="flex:1;">'+k.msg+'</span><button type="button" class="rpi-toast__close">&times;</button>';L.appendChild(C);requestAnimationFrame(function(){C.style.opacity="1";C.style.transform="translateY(0)"});(k=C.querySelector(".rpi-toast__close"))&&k.addEventListener("click",function(D){D.stopPropagation();q()});0<H&&setTimeout(A,1E3*H);return C}}}};var TrustReviews=TrustReviews||{};
     5TrustReviews.Admin={stars:function(d,c,h){for(var k="",q=1;6>q;q++){var A=d-q;k=0<=A?k+this.star("",c,h):-1<A&&0>A?-.75>A?k+this.star("-o","#ccc",h):-.25<A?k+this.star("",c,h):k+this.star("-half",c,h):k+this.star("-o","#ccc",h)}return k},star:function(d,c,h){switch(d){case "-half":d='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star-o" style="stroke:'+c+';stroke-width:1.5"/><use href="#'+TRUSTREVIEWS_VARS.slg+'-star-half" style="fill:'+c+'" clip-path="url(#'+TRUSTREVIEWS_VARS.slg+'-clip-half)"/>';break;
     6case "-o":d='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star-o" style="stroke:#ccc;stroke-width:1.5"/>';break;default:d='<use href="#'+TRUSTREVIEWS_VARS.slg+'-star" style="fill:'+c+'"/>'}return'<svg viewBox="0 0 24 24" width="'+h+'" height="'+h+'">'+d+"</svg>"},review:function(d){var c=TRUSTREVIEWS_VARS.slg;const h=document.createElement("div");h.className=c+"-list-review"+(""===d.hide?"":" wp-review-hidden");h.dataset.rev=String(d.provider||"");const k=document.createElement("div");k.className=c+"-flex";
     7h.appendChild(k);var q=document.createElement("a");q.className=c+"-name";q.target="_blank";q.rel="nofollow noopener";q.href=this.safeUrl(d.author_url);q.textContent=d.author_name||"";k.appendChild(q);q=document.createElement("div");q.className=c+"-time";q.dataset.time=String(d.time||"");k.appendChild(q);q=document.createElement("div");q.className=c+"-feedback";k.appendChild(q);var A=document.createElement("span");A.className="rpi-stars";A.setAttribute("style","--rpi-fill-percent:"+20*d.rating+"%;--rpi-star-size:16px;vertical-align:middle!important");
     8q.appendChild(A);A=document.createElement("span");A.className=c+"-text";this.trimtext(A,d.text||"",50);q.appendChild(A);c=document.createElement("a");c.href="#";c.className="wp-review-hide";c.dataset.id=String(d.id||"");c.textContent=(""===d.hide?"Hide":"Show")+" review";k.appendChild(c);return h},trimtext:function(d,c,h){if(c)if(c=String(c),h&&c.length>h){var k=c.substring(0,h).indexOf(" ")+1;if(1>k||h-k>h/2)k=h;h="";if(0<k){var q=c.substring(0,k-1);h=c.substring(k-1)}else q=c;d.appendChild(document.createTextNode(q));
     9h&&(c=document.createElement("span"),c.textContent="... ",d.appendChild(c),c=document.createElement("span"),c.className="wp-more",c.textContent=h,d.appendChild(c),h=document.createElement("span"),h.className="wp-more-toggle",h.textContent="read more",d.appendChild(h))}else d.textContent=c},safeUrl:function(d){if(!d)return"#";d=String(d).trim();return/^https?:\/\//i.test(d)?d:"#"},s2dmy:function(d){d=(d/86400).toFixed(0);return 30<d?365<d?Math.round(d/365)+" years":Math.round(d/30)+" months":d+" days"},
     10review_hide:function(d){let c=TRUSTREVIEWS_VARS.slg;jQuery.post(ajaxurl,{id:d.attr("data-id"),feed_id:jQuery('input[name="'+c+'_feed[post_id]"]').val(),action:c+"_hide_review",_wpnonce:jQuery("#_wpnonce").val()},function(h){var k=d.parent().parent();h.hide?(d.text("show review"),k.addClass("wp-review-hidden")):(d.text("hide review"),k.removeClass("wp-review-hidden"))},"json")}};
     11jQuery(document).ready(function(d){function c(F,z){return d(F.replace(/(\.|#)/g,"$1"+h+"-").replace(/\-_/g,"_"),z)}let h=TRUSTREVIEWS_VARS.slg;d("."+h+"-admin-page a.nav-tab").on("click",function(F){var z=d(this),I=z.attr("href");d(I).show().siblings(".tab-content").hide();z.addClass("nav-tab-active").siblings().removeClass("nav-tab-active");F.preventDefault()});var k=c("#rate_us");if(k.length){var q=c("#rate_us-feedback"),A=c("#rate_us-feedback-stars");-1<window.location.href.indexOf("_feed_id=")&&
     12!window[h+"_rateus"]&&k.addClass(h+"-flash-visible");d("svg",k).click(function(){var z=d(this).index()+1;3<z?(d.post({url:ajaxurl,type:"POST",dataType:"json",data:{rate:z,action:h+"_rateus_ajax",_wpnonce:d("#_wpnonce").val()},success:function(I){console.log(I)}}),z=0<(1*Math.random()).toFixed(0)?"https://g.page/r/CZIR4rrOZJnLEBM/review":"https://wordpress.org/support/plugin/"+TRUSTREVIEWS_VARS.pluginName+"/reviews/?rate="+z+"#new-post",window.open(z,"_blank"),F()):(A.attr("data-rate",z),A.html(TrustReviews.Admin.stars(z,
     13"#fb8e28",24)),q.dialog({modal:!0,width:"50%",maxWidth:"600px"}),d(".ui-widget-overlay").bind("click",function(){q.dialog("close")}))});c(".rate_us-cancel").click(function(){q.dialog("close")});c(".rate_us-send").click(function(){d.post({url:ajaxurl,type:"POST",dataType:"json",data:{action:h+"_rateus_ajax_feedback",rate:A.attr("data-rate"),email:d("input",q).val(),msg:d("textarea",q).val(),_wpnonce:d("#_wpnonce").val()},success:function(z){q.dialog({title:"Feedback sent"});q.html('<b style="color:#4cc74b">Thank you for your feedback!<br>We received it and will investigate your suggestions.</b>');
     14F();setTimeout(function(){q.fadeOut(500,function(){q.dialog("close")})},1500)}})});function F(){setTimeout(function(){k.addClass(h+"-flash-gout");k.removeClass(h+"-flash-visible");k.removeClass(h+"-flash-gout");window[h+"_rateus"]=1},1E3)}}if(c("#overview-rating").length){var H=6,G=c("#overview-places"),L=c("#overview-months"),C=c("#overview-rating"),D=c("#overview-reviews"),M=null;G.change(function(){F(this.value)});L.change(function(){H=this.value;F(G.val())});F(0,function(z){d.each(z.places,function(I,
     15J){G.append(d("<option>",{value:J.id,text:J.name}))})});function F(z,I){var J={action:h+"_overview_ajax",_wpnonce:jQuery("#_wpnonce").val()};z&&(J.pid=z);jQuery.post({url:ajaxurl,type:"POST",dataType:"json",data:J,success:function(t){if(t){var l=1<t.places.length?t.places.find(x=>x.id==z):t.places[0],B=null;if(t.stats_minmax.length){var u={},w=0,y=((new Date).getTime()/1E3).toFixed(0);for(var b=0;b<t.stats_minmax.length;b++){var e=t.stats_minmax[b],a=e.biz_id;w=!w||e.time<w?e.time:w;u[a]?(u[a]={time:parseInt(y-
     16u[a].time),rating:parseFloat((e.rating-u[a].rating).toFixed(1)),review_count:parseInt(e.review_count-u[a].review_count)},B=B?{time:u[a].time,rating:B.rating+u[a].rating,review_count:B.review_count+u[a].review_count}:u[a],delete u[a]):u[a]={time:w,rating:e.rating,review_count:e.review_count}}}u=c("#overview-stats");u.html("Not calculated yet");B&&(w=B.rating,y=B.review_count,u.html(('<div class="{slg}-overview-h">While using the plugin</div><div>Usage time: <span class="{slg}-stat-val {slg}-stat-up">'+
     17TrustReviews.Admin.s2dmy(B.time)+'</span></div><div>Rating up: <span class="{slg}-stat-val {slg}-stat-'+(0>w?"down":0<w?"up":"")+'">'+w+'</span></div><div>Reviews up: <span class="{slg}-stat-val {slg}-stat-'+(0>y?"down":0<y?"up":"")+'">'+y+"</span></div>").replace(/{slg}/g,h)));C.html(('<div class="{slg}"><div class="{slg}-flex" style="--dir:column;--gap:8px;--align:center"><div class="{slg}-overview-h">'+l.name+'</div><div class="{slg}-flex" style="--dir:row;--align:center"><span class="{slg}-rating">'+
     18t.rating+'</span><span class="rpi-stars" style="--rpi-fill-percent:'+20*t.rating+'%"></span></div><div class="{slg}-powered">Based on '+t.review_count+" reviews</div>"+(l.updated?'<div class="{slg}-powered">Last updated: <span class="{slg}-time">'+WPacTime.getTime(parseInt(l.updated),TrustReviews.Plugin.lang(),"ago")+"</span></div>":"")+"</div></div>").replace(/{slg}/g,h));var n=document.createElement("div");n.className=h+" wpac";d.each(t.reviews,function(x,E){n.appendChild(TrustReviews.Admin.review(E))});
     19D.html("");D[0].appendChild(n);TrustReviews.Plugin.timeago();TrustReviews.Plugin.read_more();d(".wp-review-hide",D).unbind("click").click(function(){TrustReviews.Admin.review_hide(d(this));return!1});B={};for(l=0;l<t.stats.length;l++)u=t.stats[l],w=u.biz_id,B[w]=B[w]||[],B[w].push({time:parseInt(u.time),rating:parseFloat(u.rating),review_count:parseInt(u.review_count)});l=parseInt((t.stats[0].time-t.stats[t.stats.length-1].time)/2592E3);w=4<l?H:l||1;l={};y=new Date;for(b=0;b<w;b++)for(g in u=new Date(y.getFullYear(),
     20y.getMonth()-b,1),e=(new Date(y.getFullYear(),y.getMonth()+1-b,0)).getTime(),a=u.toLocaleString("default",{month:"short"})+" "+u.getFullYear().toString().slice(-2),l[a]=l[a]||{},B){var f=0,v=B[g];do{u=v[f++];var r=1E3*u.time;l[a][g]=l[a][g]||{};l[a][g].count=parseInt(u.review_count)}while(r>e&&f<v.length)}B=[];u=[];w=[];y={};for(m in l){b=0;for(p in l[m])b+=l[m][p].count,e=t.places.find(x=>x.id==p),y[e.name]=y[e.name]||{},y[e.name].data=y[e.name].data||[],y[e.name].data.unshift(l[m][p].count);B.unshift(m);
     21u.unshift(b)}for(tt in y)w.push({name:tt,data:y[tt].data});l={series:[{name:"Reviews",data:u}],chart:{height:350,type:"bar"},plotOptions:{bar:{dataLabels:{position:"top"}}},dataLabels:{enabled:!0,offsetY:-20,style:{fontSize:"12px",colors:["#304758"]}},tooltip:{enabled:!0,intersect:!1,custom:function(){return""}},xaxis:{categories:B,axisBorder:{show:!1},axisTicks:{show:!1},tooltip:{enabled:!0}},yaxis:{axisBorder:{show:!1},axisTicks:{show:!1}},title:{text:"Monthly reviews count",align:"center",style:{color:"#444"}}};
     22M?M.updateOptions({series:[{name:"Reviews",data:u}],xaxis:{categories:B}}):(M=new ApexCharts(document.querySelector("#chart"),l),M.render());I&&I(t)}else window.location.href=TRUSTREVIEWS_VARS.builderUrl}})}}});TrustReviews=TrustReviews||{};
     23TrustReviews.Builder=function(d,c){function h(){if(!t("title").value)return t("title").focus(),!1;t("save").innerText="Auto save, wait";t("save").disabled=!0;d.post(ajaxurl,{post_id:t("post_id").value,title:t("title").value,content:B().value,action:c.slg+"_feed_save_ajax",_wpnonce:d("#_wpnonce").val()},function(b){for(var e=document.querySelectorAll("."+c.slg),a=0;a<e.length;a++)e[a].parentNode.removeChild(e[a]);t("collection_preview").innerHTML=b;d(".wp-review-hide").unbind("click").click(function(){TrustReviews.Admin.review_hide(d(this));
     24return!1});t("post_id").value||(b=document.querySelector("."+c.slg).getAttribute("data-id"),e=document.querySelector("."+c.slg+"-toolbar-control"),a=document.createElement("label"),a.innerHTML='<span id="'+c.slg+'_sc_msg">Copy Shortcode </span><input id="'+c.slg+'_sc" type="text" value="['+c.slg+" id="+b+']" data-shortcode="['+c.slg+" id="+b+"]\" onclick=\"this.select(); document.execCommand('copy'); window."+c.slg+'_sc_msg.innerHTML = \'Shortcode Copied! Paste on page. \';" readonly="">',e.insertBefore(a,
     25window[c.slg+"_save"]),t("post_id").value=b);b=l("#rate_us");!b.length||b.hasClass(c.slg+"-flash-visible")||window[c.slg+"_rateus"]||b.addClass(c.slg+"-flash-visible");t("save").innerText="Save & Update";t("save").disabled=!1;w=null})}function k(b){var e=l(".connect-btn");e.click(function(){var a=l(".connect-id"),n=e.parent().attr("data-platform");if(!a.val())return a.focus(),!1;a="yelp"==n?/.+\/biz\/(.*?)(\?|\/|$)/.exec(a.val())[1]:a.val();var f=l(".connect-lang").val();e[0].innerHTML="Please wait...";
     26e[0].disabled=!0;q({id:a,lang:f,platform:n,local_img:!0},b,1);return!1})}function q(b,e,a,n){const f=b.map_url||b.props.map_url,v=b.platform;l(".connect-btn");t("save").innerText="Auto save, wait...";t("save").disabled=!0;d.post(ajaxurl,{map_url:f,id:b.id,lang:b.lang,local_img:b.local_img||!0,token:b.token,feed_id:d('input[name="'+c.slg+'_feed[post_id]"]').val(),action:c.slg+"_connect_"+v,v:(new Date).getTime(),_wpnonce:d("#_wpnonce").val()},function(r){const x=[];let E="success";r.error?.message&&
     27(E="error",x.push("<b>Error:</b> "+r.error.message));0<r.quota?.remaining&&x.push(`<b>${r.quota.remaining} attempts remaining (without your API key).</b>`);if("success"===r.status&&r.result)window.connector.style.display="none",H({id:r.result.id,lang:b.lang,name:r.result.name,photo:r.result.photo,refresh:!0,local_img:b.local_img||!0,platform:v,props:{map_url:f,default_photo:r.result.photo2}},e),D(),x.push(`${"refresh"===b.event?"Reviews updated":"Widget saved"} successfully.`);else if(1>r.quota?.remaining){var O=
     28x.push;var K=r.quota.reset_in_seconds;if(0>=K)r="0 minutes";else{r=Math.floor(K/86400);var N=Math.floor(K%86400/3600);K=Math.ceil(K%3600/60);r=r?r+" day"+(1<r?"s":"")+(N?" "+N+" hour"+(1<N?"s":""):""):N?N+" hour"+(1<N?"s":""):K+" minute"+(1<K?"s":"")}O.call(x,`Request limit reached. Please try after ${r}.`)}u.show({msg:x.join("<br>"),type:E});n&&n()},"json")}function A(b){l(".connect-facebook").click(function(){var e=J(16);I(c.fbAuthUrl+"?state="+c.authcode+":"+e,670,520,function(){d.ajax({url:c.fbAppUrl+
     29"/accounts?temp_code="+e,dataType:"jsonp",success:function(a){a&&a.length&&(d.each(a,function(n,f){H({id:f.id,name:f.name,photo:"https://graph.facebook.com/"+f.id+"/picture",platform:"facebook",rating_count:"",props:{default_photo:"https://graph.facebook.com/"+f.id+"/picture"}},b)}),D())}})});return!1})}function H(b,e,a){const n=L(b);let f=d("#"+n);f.length?f=f[0]:(f=d('<div class="'+c.slg+'-connection"></div>')[0],f.id=n,f.setAttribute("data-platform",b.platform),l(".connections")[0].appendChild(f));
     30void 0!=b.lang&&f.setAttribute("data-lang",b.lang);f.innerHTML=C(b,a);l(".toggle",f).unbind("click").click(function(){d(this).toggleClass("toggled");d(this).next().slideToggle()});l(".connect-photo-change",f).on("click",function(v){v.preventDefault();F(f,void 0,function(){D()});return!1});l(".connect-photo-default",f).on("click",function(v){z(f,b.props.default_photo);D();return!1});d('input[type="text"]',f).keyup(function(){clearTimeout(w);w=setTimeout(D,1500)});d('input[type="checkbox"]',f).click(function(){D()});
     31d("select."+c.slg+"-connect-lang",f).change(function(){b.lang=this.value;f.id=L(b);f.setAttribute("data-lang",this.value);G(b,e,1);return!1});d('input[name="local_img"]',f).unbind("click").click(function(){b.local_img=this.checked;G(b,e,1)});l(".connect-reconnect",f).click(function(){G(b,e,1);return!1});l(".connect-delete",f).click(function(){confirm("Are you sure to delete this business?")&&(d(f).remove(),D());return!1})}function G(b,e){b.event="refresh";q(b,e,1)}function L(b){var e=c.slg+"-"+b.platform+
     32"-"+b.id.replace(/\//g,"");null!=b.lang&&(e+=b.lang);return e}function C(b,e){var a=b.name;b.lang&&(a+=" ("+b.lang+")");b.photo=b.photo||"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";var n=document.createElement("option");n.value="google"==b.platform&&b.props&&b.props.pid?b.props.pid:b.id;var f=b.platform;f=f.charAt(0).toUpperCase()+f.slice(1);n.text=f+": "+b.name;e='<div class="{slg}-toggle {slg}-builder-connect {slg}-connect-business"><input type="checkbox" class="{slg}-connect-select" onclick="event.stopPropagation();" '+
     33(e?"checked":"")+" /> "+a+(b.address?" ("+b.address+")":"")+'</div><div style="display:none">';a=b.props;n="";for(prop in a)"platform"!=prop&&Object.prototype.hasOwnProperty.call(a,prop)&&(n+='<input type="hidden" name="'+prop+'" value="'+a[prop]+'" class="{slg}-connect-prop" readonly />');e=e+n+'<input type="hidden" name="id" value="'+b.id+'" readonly />'+(b.address?'<input type="hidden" name="address" value="'+b.address+'" readonly />':"")+(b.access_token?'<input type="hidden" name="access_token" value="'+
     34b.access_token+'" readonly />':"")+'<div class="{slg}-builder-option"><img src="'+b.photo+'" alt="'+b.name+'" class="{slg}-connect-photo"><a href="#" class="{slg}-connect-photo-change">Change</a><a href="#" class="{slg}-connect-photo-default">Default</a><input type="hidden" name="photo" class="{slg}-connect-photo-hidden" value="'+b.photo+'" tabindex="2"/></div><div class="{slg}-builder-option"><input type="text" name="name" value="'+b.name+'" /></div>'+(void 0!=b.website?'<div class="{slg}-builder-option"><input type="text" name="website" value="'+
     35b.website+'" /></div>':"");if(void 0!=b.lang){a=b.lang;n="";for(f=0;f<y.length;f++)n+='<option value="'+y[f][0]+'"'+(a==y[f][0]?' selected="selected"':"")+">"+y[f][1]+"</option>";a='<div class="{slg}-builder-option"><select class="{slg}-connect-lang" name="lang"><option value=""'+((a?"":' selected="selected"')+">Show all connected languages</option>"+n+"</select></div>")}else a="";return(e+a+(void 0!=b.review_count?'<div class="{slg}-builder-option"><input type="text" name="review_count" value="'+
     36b.review_count+'" placeholder="Total number of reviews" /><span class="{slg}-quest {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help">Google return only 5 most helpful reviews and does not return information about total number of reviews and you can type here it manually.</div></div>':"")+("facebook"==b.platform?'<div class="{slg}-builder-option"><input type="text" name="rating_count" value="'+(b.rating_count||"")+'" placeholder="Reviews count adder" /><span class="{slg}-quest {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help">Facebook returns incorrect number of reviews for some pages. We reported a <a href="https://developers.facebook.com/support/bugs/570160061284085/" target="_blank">bug</a>, which, unfortunately, has not been fixed.<br>If you have this situation and your FB reviews count is incorrect, just <b>enter the difference between the current and the correct reviews count</b> in this option and the plugin will show the correct count.</div></div>':
     37"")+'<div class="{slg}-builder-option"><label><input type="checkbox" name="local_img" checked>Save images locally (GDPR)</label></div>'+("facebook"!=b.platform?'<div class="{slg}-builder-option"><button class="{slg}-connect-reconnect">Reconnect</button></div>':"")+'<div class="{slg}-builder-option"><button class="{slg}-connect-delete">Delete connection</button></div></div>').replace(/{slg}/g,c.slg)}function D(){var b=[],e=document.querySelectorAll("."+c.slg+"-connection");for(E in e)if(Object.prototype.hasOwnProperty.call(e,
     38E)){var a=e[E].querySelector("."+c.slg+"-connect-select");if(!a||null===a.offsetParent||a.checked){var n={};a=e[E].getAttribute("data-lang");var f=e[E].getAttribute("data-platform"),v=e[E].querySelectorAll("input");void 0!=a&&(n.lang=a);for(var r in v)if(Object.prototype.hasOwnProperty.call(v,r)){a=v[r];var x=a.getAttribute("name");x&&(a.className==c.slg+"-connect-prop"?(n.props=n.props||{},n.props[x]=a.value):n[x]="checkbox"==a.type?a.checked:a.value)}n.platform=f;b.push(n)}}e={};var E=document.querySelector("."+
     39c.slg+"-connect-options").querySelectorAll("input[name],select,textarea");for(var O in E)Object.prototype.hasOwnProperty.call(E,O)&&(a=E[O],x=a.getAttribute("name"),"checkbox"==a.type?e[x]=a.checked:void 0!=a.value&&(e[x]="textarea"==a.type||"word_filter"==x||"word_exclude"==x?encodeURIComponent(a.value):a.value));B().value=JSON.stringify({connections:b,options:e});b.length&&(b=b[0],t("title").value||(t("title").value=b.name),h())}function M(b,e){var a=e.conns,n=a.options;if(Array.isArray(a.connections))a=
     40a.connections;else{var f=[];if(Array.isArray(a.google)){for(var v=0;v<a.google.length;v++)a.google[v].platform="google";f=f.concat(a.google)}if(Array.isArray(a.facebook)){for(v=0;v<a.facebook.length;v++)a.facebook[v].platform="facebook";f=f.concat(a.facebook)}if(Array.isArray(a.yelp)){for(v=0;v<a.yelp.length;v++)a.yelp[v].platform="yelp";f=f.concat(a.yelp)}a=f}for(f=0;f<a.length;f++)H(a[f],e.authcode,!0);for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e=b.querySelector('input[name="'+r+
     41'"],select[name="'+r+'"],textarea[name="'+r+'"]'))&&(a=e.getAttribute("name"),"boolean"===typeof n[r]?e.checked=n[r]:(e.value="textarea"==e.type||"word_filter"==a||"word_exclude"==a?decodeURIComponent(n[r]):n[r],-1<r.indexOf("_photo")&&e.value&&(e.parentNode.querySelector("img").src=e.value)))}function F(b,e,a){e||(e=wp.media.frames.file_frame=wp.media({title:d(this).data("uploader_title"),button:{text:d(this).data("uploader_button_text")},multiple:!1}),e.on("select",function(){var n=e.state().get("selection").first().toJSON();
     42z(b,n.url);a&&a(n.url)}));e.open()}function z(b,e){var a=l(".connect-photo-hidden",b);b=l(".connect-photo",b);a.val(e);b.attr("src",e);b.show();D()}function I(b,e,a,n){function f(){x&&0==x.closed?setTimeout(f,100):n()}var v=v||screen.height/2-a/2,r=r||screen.width/2-e/2,x=window.open(b,"","location=1,status=1,resizable=yes,width="+e+",height="+a+",top="+v+",left="+r);setTimeout(f,100)}function J(b){for(var e="",a=0;a<b;a++)e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*
     43Math.random()));return e}function t(b){return window[c.slg+"_"+b]}function l(b,e){return d(b.replace(/(\.|#)/g,"$1"+c.slg+"-").replace(/\-_/g,"_"),e)}function B(){return document.getElementById(c.slg+"-builder-connection")}const u=rpi.Toast({timeout:25});var w=null;const y=[["ar","Arabic"],["bg","Bulgarian"],["bn","Bengali"],["ca","Catalan"],["cs","Czech"],["da","Danish"],["de","German"],["el","Greek"],["en","English"],["es","Spanish"],["eu","Basque"],["eu","Basque"],["fa","Farsi"],["fi","Finnish"],
     44["fil","Filipino"],["fr","French"],["gl","Galician"],["gu","Gujarati"],["hi","Hindi"],["hr","Croatian"],["hu","Hungarian"],["id","Indonesian"],["it","Italian"],["iw","Hebrew"],["ja","Japanese"],["kn","Kannada"],["ko","Korean"],["lt","Lithuanian"],["lv","Latvian"],["ml","Malayalam"],["mr","Marathi"],["nl","Dutch"],["no","Norwegian"],["pl","Polish"],["pt","Portuguese"],["pt-BR","Portuguese (Brazil)"],["pt-PT","Portuguese (Portugal)"],["ro","Romanian"],["ru","Russian"],["sk","Slovak"],["sl","Slovenian"],
     45["sr","Serbian"],["sv","Swedish"],["ta","Tamil"],["te","Telugu"],["th","Thai"],["tl","Tagalog"],["tr","Turkish"],["uk","Ukrainian"],["vi","Vietnamese"],["zh","Chinese (Simplified)"],["zh-Hant","Chinese (Traditional)"]];return THIS={init:function(){var b=document.querySelector(c.opt_el);if(b){b.innerHTML='<div class="{slg}-builder-platforms {slg}-builder-inside"><div class="{slg}-connect-text">Connect Reviews</div><div class="{slg}-builder-connect {slg}-connect-facebook"><svg viewBox="0 0 100 100" width="24" height="24" style="border-radius:50%;background:#0866ff;padding:2px;box-sizing:border-box;"><use xlink:href="#{slg}-logo-f"></use></svg></div><div class="{slg}-builder-connect" data-platform="google"><svg viewBox="0 0 512 512" width="24" height="24"><use xlink:href="#{slg}-logo-g"></use></svg></div><div class="{slg}-builder-connect" data-platform="yelp"><svg viewBox="0 0 533.33 533.33" width="24" height="24"><use xlink:href="#{slg}-logo-y"></use></svg></div><div class="{slg}-builder-connect" data-platform="tripadvisor"><svg viewBox="0 0 132 86" width="24" height="24" style="border-radius:50%;background:#00eb5b;padding:3px;box-sizing:border-box;"><use xlink:href="#{slg}-logo-ta"></use></svg></div><div class="{slg}-connections"></div></div><div class="{slg}-connect-options"><div class="{slg}-builder-inside"><div class="{slg}-builder-option">Layout<select id="view_mode" name="view_mode"><option value="slider" selected="selected">Slider</option><option value="grid">Grid</option><option value="list">List</option></select></div></div><div class="{slg}-builder-top {slg}-toggle">Common Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option">Pagination<input type="text" name="pagination" value=""></div><div class="{slg}-builder-option">Maximum characters before \'read more\' link<input type="text" name="text_size" value=""></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_center" value="">Show rating by center</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_photo" value="">Hide business photo</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_name" value="">Hide business name</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_based_on" value="">Hide \'Based on ... reviews\'</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_writereview" value="">Hide \'review us on G\' button</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="header_hide_social" value="">Hide rating header, leave only reviews</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_reviews" value="">Hide reviews, leave only rating header</label></div></div><div class="{slg}-builder-top {slg}-toggle">Slider Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option">Speed in second<input type="text" name="slider_speed" value="" placeholder="Default: 5"></div><div class="{slg}-builder-option">Text height<input type="text" name="slider_text_height" value="" placeholder="Default: 100px"></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_autoplay" value="" checked>Auto-play</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_hide_prevnext" value="">Hide prev & next buttons</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="slider_hide_dots" value="">Hide dots</label></div></div><div class="{slg}-builder-top {slg}-toggle">Style Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option"><label><input type="checkbox" name="dark_theme">Dark background</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="hide_backgnd" value="">Hide reviews background</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="show_round" value="" checked>Round reviews borders</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="show_shadow" value="">Show reviews shadow</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="centered" value="">Place by center (only if max-width is set)</label></div><div class="{slg}-builder-option">Container max-width<input type="text" name="max_width" value="" placeholder="for instance: 300px"><small>Be careful: this will make reviews unresponsive</small></div><div class="{slg}-builder-option">Container max-height<input type="text" name="max_height" value="" placeholder="for instance: 500px"></div></div><div class="{slg}-builder-top {slg}-toggle">Advance Options</div><div class="{slg}-builder-inside" style="display:none"><div class="{slg}-builder-option"><label><input type="checkbox" name="lazy_load_img" checked>Lazy load images</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="google_def_rev_link">Use default Google reviews link</label><span class="{slg}-quest {slg}-quest-top {slg}-toggle" title="Click to help">?</span><div class="{slg}-quest-help" style="display:none;">If the direct link to all reviews <b>https://search.google.com/local/reviews?placeid=&lt;PLACE_ID&gt;</b> does not work with your Google place (leads to 404), please use this option to use the default reviews link to Google map.</div></div><div class="{slg}-builder-option"><label><input type="checkbox" name="open_link" checked>Open links in new Window</label></div><div class="{slg}-builder-option"><label><input type="checkbox" name="nofollow_link" checked>Use no follow links</label></div><div class="{slg}-builder-option">Reviewer avatar size<select name="reviewer_avatar_size"><option value="56" selected="selected">Small: 56px</option><option value="128">Medium: 128px</option><option value="256">Large: 256px</option></select></div><div class="{slg}-builder-option">Cache data<select name="cache"><option value="1">1 Hour</option><option value="3">3 Hours</option><option value="6">6 Hours</option><option value="12" selected="selected">12 Hours</option><option value="24">1 Day</option><option value="48">2 Days</option><option value="168">1 Week</option><option value="">Disable (NOT recommended)</option></select></div><div class="{slg}-builder-option">Reviews limit<input type="text" name="reviews_limit" value=""></div></div></div><iframe id="connector" src="https://app.trustembed.com/connect?authcode={{authcode}}&lang={{lang}}" style="display:none;position:absolute;top:0;width:100%;height:100%;"></iframe>'.replace(/{slg}/g,
     46c.slg).replace("{{authcode}}",c.authcode).replace("{{lang}}",c.lang);c.conns&&c.conns.connections&&c.conns.connections.length&&M(b,c);l(".builder-connect[data-platform]").click(function(){document.body.appendChild(window.connector);const a=new URL(window.connector.src);a.searchParams.set("platform",this.getAttribute("data-platform"));window.connector.src=a.toString();window.connector.style.display="block";window.connector.contentWindow.postMessage({action:"focus"},"*")});window.onmessage=function(a){if("https://app.trustembed.com"===
     47a.origin&&a.data)switch(a=a.data,a.action){case "connect":q(a,a.authcode,1,function(){window.connector.contentWindow.postMessage({action:"connect_done"},"*")});break;case "close":window.connector.style.display="none"}};k(c.authcode);A(c.authcode);l('.connect-options input[type="text"],.connect-options textarea').keyup(function(){clearTimeout(w);w=setTimeout(D,1500)});l('.connect-options input[type="checkbox"],.connect-options select').change(function(){D()});l(".toggle",b).unbind("click").click(function(){d(this).toggleClass("toggled");
     48d(this).next().slideToggle()});l(".connections").sortable&&(l(".connections").sortable({stop:function(a,n){D()}}),l(".connections").disableSelection());d(".wp-review-hide").click(function(){TrustReviews.Admin.review_hide(d(this));return!1});l("#_save").click(function(){return(new URL(window.location.href)).searchParams.has(c.slg+"_feed_id")?(D(),!1):!0});var e=!1;document.querySelector("."+c.slg+"-builder form").addEventListener("submit",function(){e=!0});window.addEventListener("beforeunload",function(a){const n=
     49new URL(window.location.href);!t("post_id").value||e||n.searchParams.has(c.slg+"_feed_id")&&!w||(a.preventDefault(),a.returnValue="")})}}}};
  • fb-reviews-widget/trunk/assets/src/css/admin-main.css

    r3406362 r3439940  
    308308
    309309.trustreviews .wp-review-hide {
     310  position: absolute;
     311  right: 8px;
     312  bottom: 8px;
    310313  color: #fff !important;
    311   font-size: 12px !important;
     314  font-size: 9px !important;
    312315  font-weight: 600 !important;
    313   line-height: 26px !important;
     316  line-height: 12px !important;
    314317  text-decoration: none !important;
    315318  text-transform: uppercase !important;
    316   padding: 2px 8px !important;
     319  padding: 4px !important;
     320  opacity: 0.85;
    317321  border-radius: 3px !important;
    318322  border-color: #0062cc !important;
     
    376380
    377381.trustreviews-rate_us-body {
     382  display: flex;
     383  align-items: center;
    378384  font-size: 18px;
    379385}
     
    438444  color: #fb8e28 !important;
    439445  font-weight: 700 !important;
     446}
     447
     448#trustreviews-overview-rating .trustreviews-stars {
     449  line-height: 12px;
    440450}
    441451
     
    862872  text-align: center;
    863873  background: #eee;
     874  border-radius: 3px;
    864875  text-transform: uppercase;
    865876}
  • fb-reviews-widget/trunk/assets/src/css/public-main.css

    r3406362 r3439940  
     1/*-------------------------------- Reset CSS --------------------------------*/
     2.trustreviews,
     3.trustreviews *,
     4.trustreviews *::before,
     5.trustreviews *::after {
     6  box-sizing: border-box;
     7}
     8
     9.trustreviews {
     10  display: block;
     11  direction: ltr;
     12  font-size: var(--font-size, 16px);
     13  font-family: var(--font-family);
     14  font-style: normal;
     15  font-weight: normal;
     16  text-align: start;
     17  line-height: normal;
     18  overflow: visible;
     19  text-decoration: none;
     20  list-style-type: disc;
     21  box-sizing: border-box;
     22  visibility: visible !important;
     23}
     24
     25.trustreviews div,
     26.trustreviews span {
     27  margin: 0;
     28  padding: 0;
     29  color: inherit;
     30  font: inherit;
     31  line-height: normal;
     32  letter-spacing: normal;
     33  text-transform: none;
     34  text-decoration: none;
     35  border: 0;
     36  background: transparent;
     37}
     38
     39.trustreviews a {
     40  color: inherit;
     41  text-decoration: none;
     42  background: transparent;
     43  cursor: pointer;
     44  outline: none;
     45}
     46
     47.trustreviews a:focus-visible {
     48  outline: 2px solid currentColor;
     49  outline-offset: 2px;
     50}
     51
     52.trustreviews img {
     53  display: block;
     54  max-width: 100%;
     55  height: auto;
     56  border: 0;
     57  vertical-align: middle;
     58}
     59
     60.trustreviews i {
     61  font-style: normal;
     62  font-weight: inherit;
     63  line-height: 0;
     64  vertical-align: middle;
     65}
     66
     67.trustreviews svg {
     68  display: inline-block;
     69  width: auto;
     70  height: auto;
     71  vertical-align: middle;
     72  overflow: visible;
     73}
     74
     75.trustreviews svg use {
     76  opacity: 1;
     77  visibility: visible;
     78}
     79
     80/*-------------------------------- Main CSS --------------------------------*/
     81.trustreviews .trustreviews-flex {
     82  display: inline-flex;
     83  align-items: center;
     84  gap: var(--gap, 2px);
     85  flex-direction: var(--dir, column);
     86  align-items: var(--align, star);
     87  flex-wrap: var(--wrap, nowrap);
     88  overflow: var(--overflow, visible);
     89}
     90
    191.trustreviews .trustreviews-rating {
    292  color: #0866ff !important;
    393  font-size: 21px !important;
    4   font-weight: 600 !important;
    5   margin: 0 6px 0 0 !important;
     94  font-weight: 700 !important;
    695  vertical-align: middle !important;
    7 }
    8 
    9 .trustreviews .trustreviews-stars svg {
    10   display: inline-block !important;
    11   width: 22px !important;
    12   height: 22px !important;
    13   padding: 0 4px 0 0 !important;
    14   line-height: 22px !important;
    15   vertical-align: middle !important;
    16 }
    17 
    18 .trustreviews .trustreviews-stars svg use {
    19   fill: #0866ff;
    20   color: #0866ff;
    21 }
    22 
    23 .trustreviews [data-rev=google] .trustreviews-stars svg use {
    24   fill: #fb8e28;
    25   color: #fb8e28;
    26 }
    27 
    28 .trustreviews [data-rev=yelp] .trustreviews-stars svg use {
    29   fill: #d80027;
    30   color: #d80027;
     96  line-height: normal !important;
    3197}
    3298
    3399.trustreviews .trustreviews-powered {
    34100  color: #555 !important;
    35   margin: 6px 0 0 !important;
    36 }
    37 
    38 .trustreviews .trustreviews-powered[data-platform=google] img {
     101}
     102
     103.trustreviews [data-platform=google] .trustreviews-powered img {
    39104  max-width: 144px !important;
    40105}
    41106
    42 .trustreviews .trustreviews-powered[data-platform=yelp] img {
     107.trustreviews [data-platform=yelp] .trustreviews-powered img {
    43108  max-height: 25px !important;
    44109  vertical-align: sub !important;
    45110}
    46111
    47 .trustreviews .trustreviews-powered[data-platform=facebook] span {
    48   color: #0866FF !important;
     112.trustreviews [data-platform=facebook] .trustreviews-powered span {
     113  color: #0866ff !important;
    49114  font-weight: 600 !important;
    50115  opacity: 0.8 !important;
    51116}
    52117
     118.trustreviews [data-platform=tripadvisor] .trustreviews-powered span {
     119  color: #5ba672 !important;
     120  font-weight: 600 !important;
     121  opacity: 0.8 !important;
     122}
     123
     124.trustreviews [data-rev=facebook],
     125.trustreviews [data-platform=facebook] {
     126  --rpi-star-color: #4569f5;
     127}
     128
    53129.trustreviews .trustreviews-list-review {
     130  position: relative;
    54131  margin-top: 15px !important;
    55132}
     
    68145}
    69146
    70 .trustreviews .trustreviews-left img {
     147.trustreviews .trustreviews-img {
     148  min-width: 50px !important;
     149  max-width: none !important;
     150  height: 50px !important;
     151  overflow: hidden !important;
    71152  border: none !important;
    72   float: left !important;
    73   height: 50px !important;
    74   width: 50px !important;
    75   margin-right: 10px !important;
    76   overflow: hidden !important;
    77153  border-radius: 50% !important;
    78154  box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24) !important;
     155}
     156
     157.trustreviews [data-rev=google] .trustreviews-img {
     158  overflow: visible !important;
    79159}
    80160
     
    93173}
    94174
    95 .trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left img {
    96   float: none !important;
    97 }
    98 
    99 .trustreviews .trustreviews-place .trustreviews-stars svg {
    100   width: 20px !important;
    101   height: 20px !important;
    102   vertical-align: middle !important;
    103 }
    104 
    105175.trustreviews .trustreviews-name {
    106176  color: black !important;
    107177  font-size: 100% !important;
    108178  font-weight: bold !important;
    109   margin: 0 0 2px !important;
    110179  padding-right: 6px !important;
    111180  text-decoration: none !important;
     181}
     182
     183.trustreviews .trustreviews-review .trustreviews-name {
     184  white-space: nowrap;
     185  text-overflow: ellipsis;
     186  overflow: hidden;
    112187}
    113188
     
    115190  color: #427fed !important;
    116191  text-decoration: none !important;
     192}
     193
     194.trustreviews .trustreviews-header .trustreviews-name {
     195  font-size: 120% !important;
    117196}
    118197
     
    165244}
    166245
    167 .trustreviews.wpac .trustreviews-name {
    168   font-size: 100% !important;
    169 }
    170 
    171 .trustreviews.wpac .trustreviews-hide {
    172   display: none;
    173 }
    174 
    175 .trustreviews.wpac .trustreviews-name a {
    176   color: #333 !important;
    177   font-size: 100% !important;
    178   text-decoration: none !important;
    179 }
    180 
    181 .trustreviews.wpac .trustreviews-left img {
    182   width: 50px !important;
    183   height: 50px !important;
    184   border-radius: 50% !important;
    185 }
    186 
    187 .trustreviews.wpac a.trustreviews-name {
    188   color: #154fc1 !important;
    189   text-decoration: none !important;
    190   white-space: normal !important;
    191   text-overflow: ellipsis !important;
    192 }
    193 
    194 .trustreviews.wpac .trustreviews-list-review .trustreviews-stars {
    195   display: inline-block;
    196   margin-right: 4px !important;
    197 }
    198 
    199 .trustreviews.wpac.wp-dark .trustreviews-name a {
    200   color: #eee !important;
    201 }
    202 
    203246.trustreviews-fb {
    204   padding: 1px;
     247  padding: 2px;
    205248  width: 16px !important;
    206249  height: 16px !important;
     
    209252}
    210253
    211 /*-------------------------------- row --------------------------------*/
     254.trustreviews-ta {
     255  padding: 3px;
     256  width: 16px !important;
     257  height: 16px !important;
     258  border-radius: 50%;
     259  background: #00eb5b !important;
     260}
     261
     262.trustreviews-feedback span:first-child {
     263  margin-right: 8px;
     264}
     265
     266/*-------------------------------- Row --------------------------------*/
    212267.trustreviews {
    213268  display: block !important;
     
    317372.trustreviews .trustreviews-header-inner,
    318373.trustreviews .trustreviews-review-inner {
     374  display: flex;
     375  flex-direction: column;
     376  gap: 12px;
    319377  position: relative !important;
    320378  margin: 0 10px !important;
    321   padding: 15px !important;
     379  padding: 16px !important;
    322380  width: 100% !important;
    323381}
     
    328386
    329387.trustreviews .trustreviews-review-inner.trustreviews-round {
    330   border-radius: 4px !important;
     388  border-radius: 12px !important;
    331389}
    332390
     
    431489}
    432490
    433 /*-------------------------------- slider overrides --------------------------------*/
     491/*-------------------------------- Slider overrides --------------------------------*/
    434492.trustreviews .trustreviews-review .trustreviews-left {
    435493  display: block !important;
    436   overflow: hidden !important;
     494  overflow: visible !important;
    437495  white-space: nowrap !important;
    438496  text-overflow: ellipsis !important;
     
    447505  height: 100px !important;
    448506  overflow-y: auto !important;
    449   /*padding-right: 10px!important;*/
    450507}
    451508
     
    471528}
    472529
    473 /*-------------------------------- writereview button --------------------------------*/
     530/*-------------------------------- Writereview button --------------------------------*/
    474531.trustreviews .trustreviews-wr {
    475   margin: 15px auto 8px !important;
     532  display: flex;
    476533}
    477534
    478535.trustreviews .trustreviews-wr a {
    479536  color: #fff !important;
    480   padding: 6px 15px 10px !important;
     537  padding: 4px 12px 8px !important;
    481538  outline: none !important;
    482539  border-radius: 27px !important;
     
    509566}
    510567
    511 /*-------------------------------- slider --------------------------------*/
     568/*-------------------------------- Slider --------------------------------*/
    512569.trustreviews[data-layout=slider] .trustreviews-reviews {
    513570  margin: 0 20px !important;
     
    528585}
    529586
    530 /*-------------------------------- grid --------------------------------*/
     587/*-------------------------------- Grid --------------------------------*/
    531588.trustreviews[data-layout=grid] .trustreviews-reviews {
    532589  margin: 10px !important;
  • fb-reviews-widget/trunk/assets/src/js/admin-builder.js

    r3393291 r3439940  
    66TrustReviews.Builder = function($, data) {
    77
     8    const TOAST = rpi.Toast({timeout: 25});
    89    const AUTOSAVE_KEYUP_TIMEOUT = 1500;
    910    var AUTOSAVE_TIMEOUT = null;
     
    7172
    7273            '<div class="{slg}-builder-connect {slg}-connect-facebook">' +
    73                 '<svg viewBox="0 0 100 100" width="24" height="24" style="border-radius:50%;background:#0866FF;padding:1px;box-sizing:border-box;">' +
     74                '<svg viewBox="0 0 100 100" width="24" height="24" style="border-radius:50%;background:#0866ff;padding:2px;box-sizing:border-box;">' +
    7475                    '<use xlink:href="#{slg}-logo-f"></use>' +
    7576                '</svg>' +
     
    8283            '<div class="{slg}-builder-connect" data-platform="yelp">' +
    8384                '<svg viewBox="0 0 533.33 533.33" width="24" height="24"><use xlink:href="#{slg}-logo-y"></use></svg>' +
     85            '</div>' +
     86
     87            '<div class="{slg}-builder-connect" data-platform="tripadvisor">' +
     88                '<svg viewBox="0 0 132 86" width="24" height="24" style="border-radius:50%;background:#00eb5b;padding:3px;box-sizing:border-box;">' +
     89                    '<use xlink:href="#{slg}-logo-ta"></use>' +
     90                '</svg>' +
    8491            '</div>' +
    8592
     
    205212                '<div class="{slg}-builder-option">' +
    206213                    '<label>' +
    207                         '<input type="checkbox" name="show_round" value="">' +
     214                        '<input type="checkbox" name="show_round" value="" checked>' +
    208215                        'Round reviews borders' +
    209216                    '</label>' +
     
    290297        '</div>' +
    291298
    292         '<div id="{slg}-connect-wizard" title="Easy steps to connect reviews" style="display:none;">' +
    293             '<div data-platform="google">' +
    294                 /*'<p>' +
    295                     '<span>1</span> ' +
    296                     'Find your Google place on the map below (<u class="{slg}-wiz-arr">Enter a location</u>) and copy found <u><b>Place ID</b></u>' +
    297                 '</p>' +
    298                 '<iframe src="https://geo-devrel-javascript-samples.web.app/samples/places-placeid-finder/app/dist" loading="lazy" style="width:100%;height:250px"></iframe>' +
    299                 '<small style="font-size:13px;color:#555">If you can\'t find your place on this map, please read <a href="' + data.supportUrl + '&{slg}_tab=fig#pid" target="_blank">this manual how to find any Google Place ID</a>.</small>' +
    300                 '<p>' +
    301                     '<span>2</span> ' +
    302                     'Paste copied <u><b>Place ID</b></u> in this field and select language if needed' +
    303                 '</p>' +*/
    304                 '<iframe id="grc" src="https://app.trustembed.com/grc?authcode={{authcode}}" style="width:100%;height:400px"></iframe>' +
    305                 '<small class="grw-connect-error"></small>' +
    306             '</div>' +
    307             '<div data-platform="yelp">' +
    308                 '<p>' +
    309                     '<span>1</span> ' +
    310                     'Find your Yelp business on yelp.com' +
    311                 '</p>' +
    312                 '<p>' +
    313                     '<span>2</span> ' +
    314                     'Copy & paste Yelp business URL to the field below' +
    315                 '</p>' +
    316                 '<p>' +
    317                     '<input type="text" class="{slg}-connect-id" value="" placeholder="Yelp business link" />' + lang('Choose language if needed') +
    318                 '</p>' +
    319                 '<p>' +
    320                     '<span>3</span> Click CONNECT REVIEWS button' +
    321                 '</p>' +
    322                 '<button class="{slg}-connect-btn">Connect Reviews</button>' +
    323             '</div>' +
    324             '<small class="{slg}-connect-error"></small>' +
    325         '</div>';
     299        '<iframe id="connector" src="https://app.trustembed.com/connect?authcode={{authcode}}&lang={{lang}}" style="display:none;position:absolute;top:0;width:100%;height:100%;"></iframe>';
    326300
    327301    function feed_save_ajax() {
     
    355329
    356330            if (!el('post_id').value) {
    357                 var post_id = document.querySelector('.' + data.slg).getAttribute('data-id');
     331                const post_id = document.querySelector('.' + data.slg).getAttribute('data-id');
     332                const toolbar_el = document.querySelector('.' + data.slg + '-toolbar-control');
     333                const label = document.createElement('label');
     334                label.innerHTML = '<span id="' + data.slg + '_sc_msg">Copy Shortcode </span><input id="' + data.slg + '_sc" type="text" value="[' + data.slg + ' id=' + post_id + ']" data-shortcode="[' + data.slg + ' id=' + post_id + ']" onclick="this.select(); document.execCommand(\'copy\'); window.' + data.slg + '_sc_msg.innerHTML = \'Shortcode Copied! Paste on page. \';" readonly="">';
     335                toolbar_el.insertBefore(label, window[data.slg + '_save']);
    358336                el('post_id').value = post_id;
    359                 window.location.href = window.location.href + '&' + data.slg + '_feed_id=' + post_id + '&' + data.slg + '_feed_new=1';
    360             } else {
    361                 var $rateus = jq('#rate_us');
    362                 if ($rateus.length && !$rateus.hasClass(data.slg + '-flash-visible') && !window[data.slg + '_rateus']) {
    363                     $rateus.addClass(data.slg + '-flash-visible');
    364                 }
     337                //window.location.href = window.location.href + '&' + data.slg + '_feed_id=' + post_id + '&' + data.slg + '_feed_new=1';
     338            }
     339
     340            var $rateus = jq('#rate_us');
     341            if ($rateus.length && !$rateus.hasClass(data.slg + '-flash-visible') && !window[data.slg + '_rateus']) {
     342                $rateus.addClass(data.slg + '-flash-visible');
    365343            }
    366344
     
    415393    }
    416394
    417     function connect_ajax(params, authcode, attempt) {
    418 
    419         var platform = params.platform,
    420             connect_btn = jq('.connect-btn');
    421 
    422         el('save').innerText = 'Auto save, wait';
     395    function connect_ajax(params, authcode, attempt, cb) {
     396
     397        const map_url = params.map_url || params.props.map_url;
     398        const platform = params.platform;
     399        const connect_btn = jq('.connect-btn');
     400
     401        el('save').innerText = 'Auto save, wait...';
    423402        el('save').disabled = true;
    424403
    425404        $.post(ajaxurl, {
    426             id        : decodeURIComponent(params.id),
     405            map_url   : map_url,
     406            id        : params.id,
    427407            lang      : params.lang,
    428             local_img : params.local_img || false,
     408            local_img : params.local_img || true,
    429409            token     : params.token,
    430410            feed_id   : $('input[name="' + data.slg + '_feed[post_id]"]').val(),
     
    434414        }, function(res) {
    435415
    436             console.log('connect_debug:', res);
    437 
    438             //connect_btn[0].innerHTML = 'Connect ' + (platform.charAt(0).toUpperCase() + platform.slice(1));
    439             //connect_btn[0].disabled = false;
    440 
    441             var error_el = jq('.connect-error');
    442 
    443             if (res.status == 'success') {
    444 
    445                 //error_el[0].innerHTML = '';
    446 
    447                 try { jq('#connect-wizard').dialog('close'); } catch (e) {}
    448 
    449                 var connection_params = {
     416            const msg = [];
     417            let msgType = 'success';
     418
     419            if (res.error?.message) {
     420                msgType = 'error';
     421                msg.push('<b>Error:</b> ' + res.error.message);
     422            }
     423
     424            if (res.quota?.remaining > 0) {
     425                msg.push(`<b>${res.quota.remaining} attempts remaining (without your API key).</b>`);
     426            }
     427
     428            if (res.status === 'success' && res.result) {
     429                window.connector.style.display = 'none';
     430                connection_add({
    450431                    id        : res.result.id,
    451432                    lang      : params.lang,
     
    453434                    photo     : res.result.photo,
    454435                    refresh   : true,
    455                     local_img : params.local_img,
     436                    local_img : params.local_img || true,
    456437                    platform  : platform,
    457438                    props     : {
    458                         default_photo : res.result.photo
     439                        map_url       : map_url,
     440                        default_photo : res.result.photo2
    459441                    }
    460                 };
    461 
    462                 connection_add(connection_params, authcode);
     442                }, authcode);
    463443                serialize_connections();
    464 
    465             } else {
    466 
    467                 switch (res.result.error_message) {
    468 
    469                     case 'usage_limit':
    470                         $('#dialog').dialog({width: '50%', maxWidth: '600px'});
    471                         break;
    472 
    473                     case 'bot_check':
    474                         if (attempt > 1) {
    475                             return;
    476                         }
    477                         popup(data.gAppUrl + '/botcheck?authcode=' + authcode, 640, 480, function() {
    478                             connect_ajax(params, authcode, attempt + 1);
    479                         });
    480                         break;
    481 
    482                     default:
    483                         if (res.result.error_message.indexOf('The provided Place ID is no longer valid') >= 0) {
    484                             error_el[0].innerHTML = 'It seems Google place which you are trying to connect ' +
    485                                 'does not have a physical address (it\'s virtual or service area), ' +
    486                                 'unfortunately, Google Places API does not support such locations, it\'s a limitation of Google, not the plugin.<br><br>' +
    487                                 'However, you can try to connect your Google reviews in our new cloud service ' +
    488                                 '<a href="https://trust.reviews" target="_blank">Trust.Reviews</a> ' +
    489                                 'and show it on your WordPress site through universal <b>HTML/JavaScript</b> code.';
    490                         } else {
    491                             error_el[0].innerHTML = '<b>Error</b>: ' + res.result.error_message;
    492                         }
    493                 }
    494             }
     444                msg.push(`${params.event === 'refresh' ? 'Reviews updated' : 'Widget saved'} successfully.`);
     445            } else if (res.quota?.remaining < 1) {
     446                msg.push(`Request limit reached. Please try after ${formatResetTime(res.quota.reset_in_seconds)}.`);
     447            }
     448
     449
     450            TOAST.show({msg: msg.join('<br>'), type: msgType});
     451
     452            cb && cb();
    495453
    496454        }, 'json');
     455    }
     456
     457    function formatResetTime(seconds) {
     458        if (seconds <= 0) return '0 minutes';
     459
     460        const d = Math.floor(seconds / 86400);
     461        const h = Math.floor((seconds % 86400) / 3600);
     462        const m = Math.ceil((seconds % 3600) / 60);
     463
     464        if (d) return d + ' day' + (d > 1 ? 's' : '') + (h ? ' ' + h + ' hour' + (h > 1 ? 's' : '') : '');
     465        if (h) return h + ' hour' + (h > 1 ? 's' : '');
     466        return m + ' minute' + (m > 1 ? 's' : '');
    497467    }
    498468
     
    545515    function connection_add(conn, authcode, checked) {
    546516
    547         var connected_id = connection_id(conn),
    548             connected_el = $('#' + connected_id);
    549 
    550         if (!connected_el.length) {
     517        const connected_id = connection_id(conn);
     518        let connected_el = $('#' + connected_id);
     519
     520        if (connected_el.length) {
     521            connected_el = connected_el[0];
     522        } else {
    551523            connected_el = $('<div class="' + data.slg + '-connection"></div>')[0];
    552524            connected_el.id = connected_id;
    553             if (conn.lang != undefined) {
    554                 connected_el.setAttribute('data-lang', conn.lang);
    555             }
    556525            connected_el.setAttribute('data-platform', conn.platform);
    557             connected_el.innerHTML = connection_render(conn, checked);
    558526
    559527            var connections_el = jq('.connections')[0];
    560528            connections_el.appendChild(connected_el);
    561 
    562             jq('.toggle', connected_el).unbind('click').click(function () {
    563                 $(this).toggleClass('toggled');
    564                 $(this).next().slideToggle();
    565             });
    566 
    567             var file_frame;
    568             jq('.connect-photo-change', connected_el).on('click', function(e) {
    569                 e.preventDefault();
    570                 upload_photo(connected_el, file_frame, function() {
    571                     serialize_connections();
    572                 });
    573                 return false;
    574             });
    575 
    576             jq('.connect-photo-default', connected_el).on('click', function(e) {
    577                 change_photo(connected_el, conn.props.default_photo);
    578                 serialize_connections();
    579                 return false;
    580             });
    581 
    582             $('input[type="text"]', connected_el).keyup(function() {
    583                 clearTimeout(AUTOSAVE_TIMEOUT);
    584                 AUTOSAVE_TIMEOUT = setTimeout(serialize_connections, AUTOSAVE_KEYUP_TIMEOUT);
    585             });
    586 
    587             $('input[type="checkbox"]', connected_el).click(function() {
     529        }
     530
     531        if (conn.lang != undefined) {
     532            connected_el.setAttribute('data-lang', conn.lang);
     533        }
     534        connected_el.innerHTML = connection_render(conn, checked);
     535
     536        jq('.toggle', connected_el).unbind('click').click(function () {
     537            $(this).toggleClass('toggled');
     538            $(this).next().slideToggle();
     539        });
     540
     541        var file_frame;
     542        jq('.connect-photo-change', connected_el).on('click', function(e) {
     543            e.preventDefault();
     544            upload_photo(connected_el, file_frame, function() {
    588545                serialize_connections();
    589546            });
    590 
    591             $('select.' + data.slg + '-connect-lang', connected_el).change(function() {
    592                 conn.lang = this.value;
    593                 connected_el.id = connection_id(conn);
    594                 connected_el.setAttribute('data-lang', this.value);
    595                 connect_ajax(conn, authcode, 1);
    596                 return false;
    597             });
    598 
    599             $('input[name="local_img"]', connected_el).unbind('click').click(function() {
    600                 conn.local_img = this.checked;
    601                 connect_ajax(conn, authcode, 1);
    602             });
    603 
    604             jq('.connect-reconnect', connected_el).click(function() {
    605                 connect_ajax(conn, authcode, 1);
    606                 return false;
    607             });
    608 
    609             jq('.connect-delete', connected_el).click(function() {
    610                 if (confirm('Are you sure to delete this business?')) {
    611                     $(connected_el).remove();
    612                     serialize_connections();
    613                 }
    614                 return false;
    615             });
    616         }
     547            return false;
     548        });
     549
     550        jq('.connect-photo-default', connected_el).on('click', function(e) {
     551            change_photo(connected_el, conn.props.default_photo);
     552            serialize_connections();
     553            return false;
     554        });
     555
     556        $('input[type="text"]', connected_el).keyup(function() {
     557            clearTimeout(AUTOSAVE_TIMEOUT);
     558            AUTOSAVE_TIMEOUT = setTimeout(serialize_connections, AUTOSAVE_KEYUP_TIMEOUT);
     559        });
     560
     561        $('input[type="checkbox"]', connected_el).click(function() {
     562            serialize_connections();
     563        });
     564
     565        $('select.' + data.slg + '-connect-lang', connected_el).change(function() {
     566            conn.lang = this.value;
     567            connected_el.id = connection_id(conn);
     568            connected_el.setAttribute('data-lang', this.value);
     569            reconnect(conn, authcode, 1);
     570            return false;
     571        });
     572
     573        $('input[name="local_img"]', connected_el).unbind('click').click(function() {
     574            conn.local_img = this.checked;
     575            reconnect(conn, authcode, 1);
     576        });
     577
     578        jq('.connect-reconnect', connected_el).click(function() {
     579            reconnect(conn, authcode, 1);
     580            return false;
     581        });
     582
     583        jq('.connect-delete', connected_el).click(function() {
     584            if (confirm('Are you sure to delete this business?')) {
     585                $(connected_el).remove();
     586                serialize_connections();
     587            }
     588            return false;
     589        });
     590    }
     591
     592    function reconnect(conn, authcode) {
     593        conn.event = 'refresh';
     594        connect_ajax(conn, authcode, 1);
    617595    }
    618596
     
    696674                '</div>' : '' ) +
    697675
    698                 (conn.refresh != undefined ?
    699                 '<div class="{slg}-builder-option">' +
    700                     '<label>' +
    701                         '<input type="checkbox" name="refresh" ' + (conn.refresh ? 'checked' : '') + '>' +
    702                         'Update reviews daily' +
    703                     '</label>' +
    704                     '<span class="{slg}-quest {slg}-quest-top {slg}-toggle" title="Click to help">?</span>' +
    705                     '<div class="{slg}-quest-help">' +
    706                         (conn.platform == 'google' ? 'The plugin uses the Google Places API to get your reviews. <b>The API only returns the 5 most helpful reviews (it\'s a limitation of Google, not the plugin)</b>. This option calls the Places API once in 24 hours (to keep the plugin\'s free and avoid a Google Billing) to check for a new reviews and if there are, adds to the plugin. Thus slowly building up a database of reviews.<br><br>Also if you see the new reviews on Google map, but after some time it\'s not added to the plugin, it means that Google does not include these reviews to the API and the plugin can\'t get this.<br><br>If you need to show <b>all reviews</b>, please use <a href="https://trust.reviews" target="_blank">Business plugin</a> which uses a Google My Business API without API key and billing.' : '') +
    707                         (conn.platform == 'yelp' ? 'The plugin uses the Yelp API to get your reviews. <b>The API only returns the 3 most helpful reviews without sorting possibility.</b> When Yelp changes the 3 most helpful the plugin will automatically add the new one to your database. Thus slowly building up a database of reviews.' : '') +
    708                     '</div>' +
    709                 '</div>' : '' ) +
    710 
    711                 '<div class="{slg}-builder-option">' +
    712                     '<label>' +
    713                         '<input type="checkbox" name="local_img" ' + (conn.local_img ? 'checked' : '') + '>' +
     676                '<div class="{slg}-builder-option">' +
     677                    '<label>' +
     678                        '<input type="checkbox" name="local_img" checked>' +
    714679                        'Save images locally (GDPR)' +
    715680                    '</label>' +
     
    955920            if (!OPTS_EL) return;
    956921
    957             OPTS_EL.innerHTML = HTML_CONTENT.replace(/{slg}/g, data.slg).replace('{{authcode}}', data.authcode);
     922            OPTS_EL.innerHTML = HTML_CONTENT.replace(/{slg}/g, data.slg).replace('{{authcode}}', data.authcode).replace('{{lang}}', data.lang);
    958923
    959924            if (data.conns && data.conns.connections && data.conns.connections.length) {
     
    961926            }
    962927
    963             var $connect_wizard_el = jq('#connect-wizard');
     928            //var $connect_wizard_el = jq('#connect-wizard');
    964929
    965930            jq('.builder-connect[data-platform]').click(function () {
    966                 let platform = this.getAttribute('data-platform');
    967                 $connect_wizard_el.attr('data-platform', platform);
    968                 $connect_wizard_el.dialog({modal: true, width: '50%', maxWidth: '600px'});
     931                document.body.appendChild(window.connector);
     932
     933                const url = new URL(window.connector.src);
     934                url.searchParams.set('platform', this.getAttribute('data-platform'));
     935                window.connector.src = url.toString();
     936
     937                window.connector.style.display = 'block';
     938                window.connector.contentWindow.postMessage({action: 'focus'}, '*');
     939
     940                //let platform = this.getAttribute('data-platform');
     941                //$connect_wizard_el.attr('data-platform', platform);
     942                //$connect_wizard_el.dialog({modal: true, width: '50%', maxWidth: '600px'});
    969943            });
    970944
     
    976950                    switch (data.action) {
    977951                        case 'connect':
    978                             connect_ajax(data, data.authcode, 1);
     952                            connect_ajax(data, data.authcode, 1, function() {
     953                                window.connector.contentWindow.postMessage({action: 'connect_done'}, '*');
     954                            });
     955                            break;
     956                        case 'close':
     957                            window.connector.style.display = 'none';
    979958                            break;
    980959                    }
     
    1016995
    1017996            jq('#_save').click(function() {
    1018                 serialize_connections();
    1019                 return false;
     997                const url = new URL(window.location.href);
     998                if (url.searchParams.has(data.slg + '_feed_id')) {
     999                    serialize_connections();
     1000                    return false;
     1001                } else {
     1002                    return true;
     1003                }
    10201004            });
    10211005
     1006            let _isSubmit = false;
     1007            const form = document.querySelector('.' + data.slg + '-builder form');
     1008            form.addEventListener('submit', function () {
     1009                _isSubmit = true;
     1010            });
     1011
     1012            // Confirmation alert before close the page if unautosave
    10221013            window.addEventListener('beforeunload', function(e) {
    1023                 if (!AUTOSAVE_TIMEOUT) return undefined;
    1024 
    1025                 var msg = 'It looks like you have been editing something. If you leave before saving, your changes will be lost.';
    1026                 (e || window.event).returnValue = msg;
    1027                 return msg;
     1014                const url = new URL(window.location.href);
     1015                if (el('post_id').value && !_isSubmit && (!url.searchParams.has(data.slg + '_feed_id') || AUTOSAVE_TIMEOUT)) {
     1016                    e.preventDefault();
     1017                    e.returnValue = '';
     1018                }
    10281019            });
    10291020        }
  • fb-reviews-widget/trunk/assets/src/js/admin-main.js

    r3406362 r3439940  
    5151
    5252        const right = document.createElement('div');
    53         right.className = slg + '-right';
     53        right.className = slg + '-flex';
    5454        root.appendChild(right);
    5555
     
    7171        right.appendChild(feedback);
    7272
    73         const stars = this.stars(Number(review.rating) || 0, '#fb8e28', 16);
    74         if (typeof stars === 'string') {
    75             const swrap = document.createElement('span');
    76             swrap.innerHTML = stars;
    77             feedback.appendChild(swrap);
    78         } else if (stars instanceof Node) {
    79             feedback.appendChild(stars);
    80         }
     73        const stars = document.createElement('span');
     74        stars.className = 'rpi-stars';
     75        stars.setAttribute('style', '--rpi-fill-percent:' + (review.rating * 20) + '%;--rpi-star-size:16px;vertical-align:middle!important');
     76        feedback.appendChild(stars);
    8177
    8278        const text = document.createElement('span');
     
    406402                    $rating.html(
    407403                        ('<div class="{slg}">' +
    408                             '<div class="{slg}-overview-h">' + place.name + '</div>' +
    409                             '<div>' +
    410                                 '<span class="{slg}-rating">' + res.rating + '</span>' +
    411                                 '<span class="{slg}-stars">' + TrustReviews.Admin.stars(res.rating, '#fb8e28', 20) + '</span>' +
     404                            '<div class="{slg}-flex" style="--dir:column;--gap:8px;--align:center">' +
     405                                '<div class="{slg}-overview-h">' + place.name + '</div>' +
     406                                '<div class="{slg}-flex" style="--dir:row;--align:center">' +
     407                                    '<span class="{slg}-rating">' + res.rating + '</span>' +
     408                                    '<span class="rpi-stars" style="--rpi-fill-percent:' + (res.rating * 20) + '%"></span>' +
     409                                '</div>' +
     410                                '<div class="{slg}-powered">Based on ' + res.review_count + ' reviews</div>' +
     411
     412                                (place.updated ?
     413                                '<div class="{slg}-powered">Last updated: ' +
     414                                    '<span class="{slg}-time">' +
     415                                        WPacTime.getTime(parseInt(place.updated), TrustReviews.Plugin.lang(), 'ago') +
     416                                    '</span>' +
     417                                '</div>' : '') +
    412418                            '</div>' +
    413                             '<div class="{slg}-powered">Based on ' + res.review_count + ' reviews</div>' +
    414 
    415                             (place.updated ?
    416                             '<div class="{slg}-powered">Last updated: ' +
    417                                 '<span class="{slg}-time">' +
    418                                     WPacTime.getTime(parseInt(place.updated), TrustReviews.Plugin.lang(), 'ago') +
    419                                 '</span>' +
    420                             '</div>' : '') +
    421419                        '</div>').replace(/{slg}/g, slg)
    422420                    );
  • fb-reviews-widget/trunk/assets/src/sass/admin-main.scss

    r3406362 r3439940  
    310310
    311311.#{$slg} .wp-review-hide {
     312  position: absolute;
     313  right: 8px;
     314  bottom: 8px;
    312315  color: #fff !important;
    313   font-size: 12px !important;
     316  font-size: 9px !important;
    314317  font-weight: 600 !important;
    315   line-height: 26px !important;
     318  line-height: 12px !important;
    316319  text-decoration: none !important;
    317320  text-transform: uppercase !important;
    318   padding: 2px 8px !important;
     321  padding: 4px !important;
     322  opacity: .85;
    319323  border-radius: 3px !important;
    320324  border-color: #0062cc !important;
     
    378382
    379383.#{$slg}-rate_us-body {
     384  display: flex;
     385  align-items: center;
    380386  font-size: 18px;
    381387}
     
    440446  color: #fb8e28 !important;
    441447  font-weight: 700 !important;
     448}
     449
     450##{$slg}-overview-rating .#{$slg}-stars {
     451  line-height: 12px;
    442452}
    443453
     
    867877  text-align: center;
    868878  background: #eee;
     879  border-radius: 3px;
    869880  text-transform: uppercase;
    870881}
  • fb-reviews-widget/trunk/assets/src/sass/public-main.scss

    r3406362 r3439940  
    11$slg: trustreviews;
    22
     3/*-------------------------------- Reset CSS --------------------------------*/
     4.#{$slg},
     5.#{$slg} *,
     6.#{$slg} *::before,
     7.#{$slg} *::after {
     8    box-sizing: border-box;
     9}
     10
     11.#{$slg} {
     12    display: block;
     13    direction: ltr;
     14    font-size: var(--font-size, 16px);
     15    font-family: var(--font-family);
     16    font-style: normal;
     17    font-weight: normal;
     18    text-align: start;
     19    line-height: normal;
     20    overflow: visible;
     21    text-decoration: none;
     22    list-style-type: disc;
     23    box-sizing: border-box;
     24    visibility: visible!important;
     25}
     26
     27.#{$slg} div,
     28.#{$slg} span {
     29    margin: 0;
     30    padding: 0;
     31    color: inherit;
     32    font: inherit;
     33    line-height: normal;
     34    letter-spacing: normal;
     35    text-transform: none;
     36    text-decoration: none;
     37    border: 0;
     38    background: transparent;
     39}
     40
     41.#{$slg} a {
     42    color: inherit;
     43    text-decoration: none;
     44    background: transparent;
     45    cursor: pointer;
     46    outline: none;
     47}
     48
     49.#{$slg} a:focus-visible {
     50    outline: 2px solid currentColor;
     51    outline-offset: 2px;
     52}
     53
     54.#{$slg} img {
     55    display: block;
     56    max-width: 100%;
     57    height: auto;
     58    border: 0;
     59    vertical-align: middle;
     60}
     61
     62.#{$slg} i {
     63    font-style: normal;
     64    font-weight: inherit;
     65    line-height: 0;
     66    vertical-align: middle;
     67}
     68
     69.#{$slg} svg {
     70    display: inline-block;
     71    width: auto;
     72    height: auto;
     73    vertical-align: middle;
     74    overflow: visible;
     75}
     76
     77.#{$slg} svg use {
     78    opacity: 1;
     79    visibility: visible;
     80}
     81
     82/*-------------------------------- Main CSS --------------------------------*/
     83.#{$slg} .#{$slg}-flex {
     84    display: inline-flex;
     85    align-items: center;
     86    gap: var(--gap, 2px);
     87    flex-direction: var(--dir, column);
     88    align-items: var(--align, star);
     89    flex-wrap: var(--wrap, nowrap);
     90    overflow: var(--overflow, visible);
     91}
     92
    393.#{$slg} .#{$slg}-rating {
    4     color: #0866ff!important;
    5     font-size: 21px!important;
    6     font-weight: 600!important;
    7     margin: 0 6px 0 0!important;
    8     vertical-align: middle!important
    9 }
    10 
    11 .#{$slg} .#{$slg}-stars svg {
    12     display: inline-block!important;
    13     width: 22px!important;
    14     height: 22px!important;
    15     padding: 0 4px 0 0!important;
    16     line-height: 22px!important;
    17     vertical-align: middle!important
    18 }
    19 
    20 .#{$slg} .#{$slg}-stars svg use {
    21   fill: #0866ff;
    22   color: #0866ff;
    23 }
    24 
    25 .#{$slg} [data-rev="google"] .#{$slg}-stars svg use {
    26   fill: #fb8e28;
    27   color: #fb8e28;
    28 }
    29 
    30 .#{$slg} [data-rev="yelp"] .#{$slg}-stars svg use {
    31   fill: #d80027;
    32   color: #d80027;
     94    color: #0866ff !important;
     95    font-size: 21px !important;
     96    font-weight: 700 !important;
     97    vertical-align: middle !important;
     98    line-height: normal !important;
    3399}
    34100
    35101.#{$slg} .#{$slg}-powered {
    36     color: #555!important;
    37     margin: 6px 0 0!important
    38 }
    39 
    40 .#{$slg} .#{$slg}-powered[data-platform="google"] img {
    41   max-width: 144px !important;
    42 }
    43 
    44 .#{$slg} .#{$slg}-powered[data-platform="yelp"] img {
    45   max-height: 25px !important;
    46   vertical-align: sub !important;
    47 }
    48 
    49 .#{$slg} .#{$slg}-powered[data-platform="facebook"] span {
    50   color: #0866FF !important;
    51   font-weight: 600 !important;
    52   opacity: 0.8 !important;
     102    color: #555 !important;
     103}
     104
     105.#{$slg} [data-platform=google] .#{$slg}-powered img {
     106    max-width: 144px !important;
     107}
     108
     109.#{$slg} [data-platform=yelp] .#{$slg}-powered img {
     110    max-height: 25px !important;
     111    vertical-align: sub !important;
     112}
     113
     114.#{$slg} [data-platform=facebook] .#{$slg}-powered span {
     115    color: #0866ff !important;
     116    font-weight: 600 !important;
     117    opacity: 0.8 !important;
     118}
     119
     120.#{$slg} [data-platform=tripadvisor] .#{$slg}-powered span {
     121    color: #5ba672 !important;
     122    font-weight: 600 !important;
     123    opacity: 0.8 !important;
     124}
     125
     126.#{$slg} [data-rev="facebook"],
     127.#{$slg} [data-platform="facebook"] {
     128    --rpi-star-color: #4569f5;
    53129}
    54130
    55131.#{$slg} .#{$slg}-list-review {
    56     margin-top: 15px!important
     132    position: relative;
     133    margin-top: 15px !important;
    57134}
    58135
    59136.#{$slg} .#{$slg}-left {
    60     display: table-cell!important;
    61     vertical-align: top!important
    62 }
    63 
    64 [dir="ltr"] .#{$slg}-left {
    65     padding-right: 10px!important
    66 }
    67 
    68 [dir="rtl"] .#{$slg}-left {
    69     padding-left: 10px!important
    70 }
    71 
    72 .#{$slg} .#{$slg}-left img {
    73     border: none!important;
    74     float: left!important;
    75     height: 50px!important;
    76     width: 50px!important;
    77     margin-right: 10px!important;
    78     overflow: hidden!important;
    79     border-radius: 50%!important;
    80     box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)!important
     137    display: table-cell !important;
     138    vertical-align: top !important;
     139}
     140
     141[dir=ltr] .#{$slg}-left {
     142    padding-right: 10px !important;
     143}
     144
     145[dir=rtl] .#{$slg}-left {
     146    padding-left: 10px !important;
     147}
     148
     149.#{$slg} .#{$slg}-img {
     150    min-width: 50px !important;
     151    max-width: none !important;
     152    height: 50px !important;
     153    overflow: hidden !important;
     154    border: none !important;
     155    border-radius: 50% !important;
     156    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24) !important;
     157}
     158
     159.#{$slg} [data-rev="google"] .#{$slg}-img {
     160    overflow: visible!important;
    81161}
    82162
    83163.#{$slg} .#{$slg}-right {
    84     display: table-cell!important;
    85     vertical-align: top!important;
    86     width: 10000px!important
     164    display: table-cell !important;
     165    vertical-align: top !important;
     166    width: 10000px !important;
    87167}
    88168
     
    95175}
    96176
    97 .#{$slg} .#{$slg}-place.#{$slg}-place-center .#{$slg}-left img {
    98     float: none !important;
    99 }
    100 
    101 .#{$slg} .#{$slg}-place .#{$slg}-stars svg {
    102     width: 20px!important;
    103     height: 20px!important;
    104     vertical-align: middle!important
    105 }
    106 
    107177.#{$slg} .#{$slg}-name {
    108     color: black!important;
    109     font-size: 100%!important;
    110     font-weight: bold!important;
    111     margin: 0 0 2px!important;
    112     padding-right: 6px!important;
    113     text-decoration: none!important
     178    color: black !important;
     179    font-size: 100% !important;
     180    font-weight: bold !important;
     181    padding-right: 6px !important;
     182    text-decoration: none !important;
     183}
     184
     185.#{$slg} .#{$slg}-review .#{$slg}-name {
     186    white-space: nowrap;
     187    text-overflow: ellipsis;
     188    overflow: hidden;
    114189}
    115190
    116191.#{$slg} a.#{$slg}-name {
    117     color: #427fed!important;
    118     text-decoration: none!important
     192    color: #427fed !important;
     193    text-decoration: none !important;
     194}
     195
     196.#{$slg} .#{$slg}-header .#{$slg}-name {
     197    font-size: 120% !important;
    119198}
    120199
    121200.#{$slg} .#{$slg}-time {
    122     color: #555!important;
    123     font-size: 13px!important
     201    color: #555 !important;
     202    font-size: 13px !important;
    124203}
    125204
    126205.#{$slg} .#{$slg}-text {
    127     color: #222!important;
    128     font-size: 15px!important;
    129     line-height: 24px!important;
    130     max-width: 100%!important;
    131     overflow: hidden!important;
    132     white-space: pre-wrap!important;
    133     word-break: break-word!important
     206    color: #222 !important;
     207    font-size: 15px !important;
     208    line-height: 24px !important;
     209    max-width: 100% !important;
     210    overflow: hidden !important;
     211    white-space: pre-wrap !important;
     212    word-break: break-word !important;
    134213}
    135214
    136215.#{$slg} .#{$slg}-text .#{$slg}-stars {
    137     padding-right: 7px!important
     216    padding-right: 7px !important;
    138217}
    139218
    140219.#{$slg} .wp-more {
    141     display: none
     220    display: none;
    142221}
    143222
    144223.#{$slg} .wp-more-toggle {
    145     color: #136aaf!important;
    146     cursor: pointer!important;
    147     text-decoration: none!important
     224    color: #136aaf !important;
     225    cursor: pointer !important;
     226    text-decoration: none !important;
    148227}
    149228
    150229.#{$slg} .#{$slg}-url {
    151230    display: block;
    152     margin: 10px 0!important;
    153     color: #136aaf!important;
    154     text-align: center!important
     231    margin: 10px 0 !important;
     232    color: #136aaf !important;
     233    text-align: center !important;
    155234}
    156235
    157236.#{$slg}.wp-dark .#{$slg}-name {
    158     color: #eee!important
     237    color: #eee !important;
    159238}
    160239
    161240.#{$slg}.wp-dark .#{$slg}-time {
    162     color: #bbb!important
     241    color: #bbb !important;
    163242}
    164243
    165244.#{$slg}.wp-dark .#{$slg}-text {
    166     color: #ececec!important
    167 }
    168 
    169 .#{$slg}.wpac .#{$slg}-name {
    170     font-size: 100%!important
    171 }
    172 
    173 .#{$slg}.wpac .#{$slg}-hide {
    174     display: none
    175 }
    176 
    177 .#{$slg}.wpac .#{$slg}-name a {
    178     color: #333!important;
    179     font-size: 100%!important;
    180     text-decoration: none!important
    181 }
    182 
    183 .#{$slg}.wpac .#{$slg}-left img {
    184     width: 50px!important;
    185     height: 50px!important;
    186     border-radius: 50%!important
    187 }
    188 
    189 .#{$slg}.wpac a.#{$slg}-name {
    190     color: #154fc1!important;
    191     text-decoration: none!important;
    192     white-space: normal!important;
    193     text-overflow: ellipsis!important;
    194 }
    195 
    196 .#{$slg}.wpac .#{$slg}-list-review .#{$slg}-stars {
    197     display: inline-block;
    198     margin-right: 4px!important
    199 }
    200 
    201 .#{$slg}.wpac.wp-dark .#{$slg}-name a {
    202     color: #eee!important
     245    color: #ececec !important;
    203246}
    204247
    205248.#{$slg}-fb {
    206   padding: 1px;
    207   width: 16px!important;
    208   height: 16px!important;
    209   border-radius: 50%;
    210   background: #0866ff!important;
    211 }
    212 
    213 /*-------------------------------- row --------------------------------*/
     249    padding: 2px;
     250    width: 16px !important;
     251    height: 16px !important;
     252    border-radius: 50%;
     253    background: #0866ff !important;
     254}
     255
     256.#{$slg}-ta {
     257    padding: 3px;
     258    width: 16px !important;
     259    height: 16px !important;
     260    border-radius: 50%;
     261    background: #00eb5b !important;
     262}
     263
     264.#{$slg}-feedback span:first-child {
     265    margin-right: 8px;
     266}
     267
     268/*-------------------------------- Row --------------------------------*/
    214269.#{$slg} {
    215     display: block!important;
    216     width: 100%!important;
    217     padding-bottom: 20px!important;
    218     text-align: left!important;
    219     direction: ltr!important;
    220     box-sizing: border-box!important;
     270    display: block !important;
     271    width: 100% !important;
     272    padding-bottom: 20px !important;
     273    text-align: left !important;
     274    direction: ltr !important;
     275    box-sizing: border-box !important;
    221276}
    222277
    223278.#{$slg} .#{$slg}-row {
    224     display: -ms-flexbox!important;
    225     display: flex!important;
    226     flex-wrap: nowrap!important;
    227     align-items: center!important;
    228     -ms-flex-wrap: nowrap!important;
    229     -ms-flex-align: center!important;
     279    display: -ms-flexbox !important;
     280    display: flex !important;
     281    flex-wrap: nowrap !important;
     282    align-items: center !important;
     283    -ms-flex-wrap: nowrap !important;
     284    -ms-flex-align: center !important;
    230285}
    231286
    232287/*-------------------------------- Row cols --------------------------------*/
    233288.#{$slg} .#{$slg}-row-xs {
    234     -ms-flex-wrap: wrap!important;
    235     flex-wrap: wrap!important;
     289    -ms-flex-wrap: wrap !important;
     290    flex-wrap: wrap !important;
    236291}
    237292
     
    309364/*-------------------------------- Reviews --------------------------------*/
    310365.#{$slg} .#{$slg}-content {
    311     position: relative!important;
    312     min-width: 0!important;
     366    position: relative !important;
     367    min-width: 0 !important;
    313368}
    314369
    315370.#{$slg} .#{$slg}-content-inner {
    316     position: relative!important;
     371    position: relative !important;
    317372}
    318373
    319374.#{$slg} .#{$slg}-header-inner,
    320375.#{$slg} .#{$slg}-review-inner {
    321     position: relative!important;
    322     margin: 0 10px!important;
    323     padding: 15px!important;
    324     width: 100%!important;
     376    display: flex;
     377    flex-direction: column;
     378    gap: 12px;
     379    position: relative !important;
     380    margin: 0 10px !important;
     381    padding: 16px !important;
     382    width: 100% !important;
    325383}
    326384
    327385.#{$slg}:not(.wp-dark) .#{$slg}-review-inner.#{$slg}-backgnd {
    328     background: #fafafa!important;
     386    background: #fafafa !important;
    329387}
    330388
    331389.#{$slg} .#{$slg}-review-inner.#{$slg}-round {
    332     border-radius: 4px!important
     390    border-radius: 12px !important;
    333391}
    334392
    335393.#{$slg} .#{$slg}-review-inner.#{$slg}-shadow {
    336     box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)!important
     394    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24) !important;
    337395}
    338396
    339397.#{$slg} .#{$slg}-review-inner > svg {
    340     position: absolute!important;
    341     top: 10px!important;
    342     right: 10px!important;
    343     width: 18px!important;
    344     height: 18px!important;
     398    position: absolute !important;
     399    top: 10px !important;
     400    right: 10px !important;
     401    width: 18px !important;
     402    height: 18px !important;
    345403}
    346404
    347405.#{$slg} .#{$slg}-reviews {
    348     display: flex!important;
    349     display: -ms-flexbox!important;
    350     overflow: hidden!important;
     406    display: flex !important;
     407    display: -ms-flexbox !important;
     408    overflow: hidden !important;
    351409    scrollbar-width: none;
    352410}
    353411
    354412.#{$slg} .#{$slg}-reviews::-webkit-scrollbar {
    355     display: none!important;
     413    display: none !important;
    356414}
    357415
    358416.#{$slg} .#{$slg}-review {
    359417    display: flex;
    360     position: relative!important;
    361     justify-content: center!important;
    362     align-items: center!important;
    363     flex-shrink: 0!important;
     418    position: relative !important;
     419    justify-content: center !important;
     420    align-items: center !important;
     421    flex-shrink: 0 !important;
    364422}
    365423
    366424/*-------------------------------- Slider buttons --------------------------------*/
    367425.#{$slg} .#{$slg}-controls {
    368     position: absolute!important;
    369     top: 50%!important;
    370     width: 100%!important;
     426    position: absolute !important;
     427    top: 50% !important;
     428    width: 100% !important;
    371429}
    372430
    373431.#{$slg} .#{$slg}-btns {
    374     position: absolute!important;
    375     height: 33px!important;
    376     width: 33px!important;
    377     text-align: center!important;
    378     cursor: pointer!important;
    379     border-radius: 50%!important;
    380     user-select: none!important;
    381     transition: all .2s ease-in-out!important;
    382 }
     432    position: absolute !important;
     433    height: 33px !important;
     434    width: 33px !important;
     435    text-align: center !important;
     436    cursor: pointer !important;
     437    border-radius: 50% !important;
     438    user-select: none !important;
     439    transition: all 0.2s ease-in-out !important;
     440}
     441
    383442.#{$slg} .#{$slg}-btns svg path {
    384443    fill: #aaa;
    385444}
     445
    386446.#{$slg} .#{$slg}-btns:hover svg path {
    387     fill: #555!important;
    388 }
     447    fill: #555 !important;
     448}
     449
    389450.#{$slg} .#{$slg}-btns.#{$slg}-prev {
    390     left: 0px!important;
    391     margin-left: -5px!important;
    392 }
     451    left: 0px !important;
     452    margin-left: -5px !important;
     453}
     454
    393455.#{$slg} .#{$slg}-btns.#{$slg}-next {
    394     right: 0px!important;
    395     margin-right: -5px!important;
     456    right: 0px !important;
     457    margin-right: -5px !important;
    396458}
    397459
    398460/*-------------------------------- Slider dots --------------------------------*/
    399461.#{$slg} .#{$slg}-dots {
    400     position: absolute!important;
    401     left: 50%!important;
     462    position: absolute !important;
     463    left: 50% !important;
    402464    display: flex !important;
    403465    gap: 12px !important;
    404466    align-items: center !important;
    405     transform: translate(-50%, 0)!important;
    406     text-align: center!important;
     467    transform: translate(-50%, 0) !important;
     468    text-align: center !important;
    407469}
    408470
    409471.#{$slg} .#{$slg}-dot {
    410     display: inline-block!important;
     472    display: inline-block !important;
    411473    width: 6px !important;
    412474    height: 6px !important;
    413     background: #cccccc!important;
    414     border-radius: 20px!important;
    415     cursor: pointer!important;
    416     opacity: 0.4!important;
    417     transition: all .2s ease-in-out!important;
     475    background: #cccccc !important;
     476    border-radius: 20px !important;
     477    cursor: pointer !important;
     478    opacity: 0.4 !important;
     479    transition: all 0.2s ease-in-out !important;
    418480}
    419481
    420482.#{$slg} .#{$slg}-dot:hover {
    421     opacity: 1!important;
     483    opacity: 1 !important;
    422484}
    423485
     
    425487    width: 8px !important;
    426488    height: 8px !important;
    427     opacity: 1!important;
     489    opacity: 1 !important;
    428490    background: #427fed !important;
    429491}
    430492
    431 /*-------------------------------- slider overrides --------------------------------*/
     493/*-------------------------------- Slider overrides --------------------------------*/
    432494.#{$slg} .#{$slg}-review .#{$slg}-left {
    433     display: block!important;
    434     overflow: hidden!important;
    435     white-space: nowrap!important;
    436     text-overflow: ellipsis!important;
     495    display: block !important;
     496    overflow: visible !important;
     497    white-space: nowrap !important;
     498    text-overflow: ellipsis !important;
    437499    line-height: 24px !important;
    438500}
    439501
    440502.#{$slg} .#{$slg}-review .#{$slg}-stars {
    441     margin: 15px 0 7px!important;
     503    margin: 15px 0 7px !important;
    442504}
    443505
    444506.#{$slg} .#{$slg}-review .#{$slg}-feedback {
    445     height: 100px!important;
    446     overflow-y: auto!important;
    447     /*padding-right: 10px!important;*/
     507    height: 100px !important;
     508    overflow-y: auto !important;
    448509}
    449510
    450511.#{$slg} .#{$slg}-review .#{$slg}-feedback::-webkit-scrollbar {
    451     width: 4px!important;
     512    width: 4px !important;
    452513}
    453514
    454515.#{$slg} .#{$slg}-review .#{$slg}-feedback::-webkit-scrollbar-track {
    455     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3)!important;
    456     -webkit-border-radius: 4px!important;
    457     border-radius: 4px!important;
     516    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3) !important;
     517    -webkit-border-radius: 4px !important;
     518    border-radius: 4px !important;
    458519}
    459520
    460521.#{$slg} .#{$slg}-review .#{$slg}-feedback::-webkit-scrollbar-thumb {
    461     -webkit-border-radius: 10px!important;
    462     border-radius: 10px!important;
    463     background: #ccc!important;
    464     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5)!important;
     522    -webkit-border-radius: 10px !important;
     523    border-radius: 10px !important;
     524    background: #ccc !important;
     525    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5) !important;
    465526}
    466527
    467528.#{$slg} .#{$slg}-review .#{$slg}-feedback::-webkit-scrollbar-thumb:window-inactive {
    468     background: #ccc!important;
    469 }
    470 
    471 /*-------------------------------- writereview button --------------------------------*/
     529    background: #ccc !important;
     530}
     531
     532/*-------------------------------- Writereview button --------------------------------*/
    472533.#{$slg} .#{$slg}-wr {
    473     margin: 15px auto 8px !important;
     534    display: flex;
    474535}
    475536
    476537.#{$slg} .#{$slg}-wr a {
    477     color: #fff!important;
    478     padding: 6px 15px 10px!important;
     538    color: #fff !important;
     539    padding: 4px 12px 8px !important;
    479540    outline: none !important;
    480     border-radius: 27px!important;
    481     background: #0a6cff!important;
    482     white-space: nowrap!important;
    483     text-shadow: 1px 1px 0 #888!important;
    484     box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)!important;
    485     user-select: none!important;
    486     transition: all .2s ease-in-out!important;
     541    border-radius: 27px !important;
     542    background: #0a6cff !important;
     543    white-space: nowrap !important;
     544    text-shadow: 1px 1px 0 #888 !important;
     545    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24) !important;
     546    user-select: none !important;
     547    transition: all 0.2s ease-in-out !important;
    487548}
    488549
    489550.#{$slg} .#{$slg}-wr a:hover {
    490     background: #1f67e7!important;
    491     box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 3px 5px rgba(0, 0, 0, .24)!important;
     551    background: #1f67e7 !important;
     552    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 3px 5px rgba(0, 0, 0, 0.24) !important;
    492553}
    493554
    494555.#{$slg} .#{$slg}-wr a:active {
    495     background: #0a6cff!important;
    496     box-shadow: none!important;
     556    background: #0a6cff !important;
     557    box-shadow: none !important;
    497558}
    498559
     
    507568}
    508569
    509 /*-------------------------------- slider --------------------------------*/
    510 .#{$slg}[data-layout="slider"] .#{$slg}-reviews {
    511     margin: 0 20px!important;
    512     padding: 10px 0 15px!important;
    513     overflow-x: scroll!important;
    514     flex-wrap: nowrap!important;
    515     -ms-flex-wrap: nowrap!important;
    516     scroll-snap-type: x mandatory!important;
    517     scroll-behavior: smooth!important;
    518     -webkit-overflow-scrolling: touch!important;
    519 }
    520 
    521 .#{$slg}[data-layout="slider"] .#{$slg}-review {
    522     scroll-snap-align: start!important;
    523     transform-origin: center center!important;
    524     transform: scale(1)!important;
    525     transition: transform 0.5s!important;
    526 }
    527 
    528 /*-------------------------------- grid --------------------------------*/
    529 .#{$slg}[data-layout="grid"] .#{$slg}-reviews {
    530     margin: 10px!important;
    531     padding: 0!important;
     570/*-------------------------------- Slider --------------------------------*/
     571.#{$slg}[data-layout=slider] .#{$slg}-reviews {
     572    margin: 0 20px !important;
     573    padding: 10px 0 15px !important;
     574    overflow-x: scroll !important;
     575    flex-wrap: nowrap !important;
     576    -ms-flex-wrap: nowrap !important;
     577    scroll-snap-type: x mandatory !important;
     578    scroll-behavior: smooth !important;
     579    -webkit-overflow-scrolling: touch !important;
     580}
     581
     582.#{$slg}[data-layout=slider] .#{$slg}-review {
     583    scroll-snap-align: start !important;
     584    transform-origin: center center !important;
     585    transform: scale(1) !important;
     586    transition: transform 0.5s !important;
     587}
     588
     589/*-------------------------------- Grid --------------------------------*/
     590.#{$slg}[data-layout=grid] .#{$slg}-reviews {
     591    margin: 10px !important;
     592    padding: 0 !important;
    532593    flex-wrap: wrap !important;
    533     -ms-flex-wrap: wrap!important;
    534 }
    535 
    536 .#{$slg}[data-layout="grid"] .#{$slg}-review-inner {
    537     margin: 10px!important;
    538 }
    539 
    540 .#{$slg}[data-layout="grid"] .#{$slg}-header-inner {
    541     margin: 0 10px!important;
    542     padding: 0!important;
    543 }
     594    -ms-flex-wrap: wrap !important;
     595}
     596
     597.#{$slg}[data-layout=grid] .#{$slg}-review-inner {
     598    margin: 10px !important;
     599}
     600
     601.#{$slg}[data-layout=grid] .#{$slg}-header-inner {
     602    margin: 0 10px !important;
     603    padding: 0 !important;
     604}
  • fb-reviews-widget/trunk/fbrev.php

    r3406362 r3439940  
    44Plugin URI: https://wordpress.org/plugins/fb-reviews-widget
    55Description: Combine Google reviews, Yelp reviews and Facebook Recommendations in a single widget, block or shortcode. Build a trusted website!
    6 Version: 2.6
     6Version: 2.7
    77Author: Trust.Reviews <[email protected]>
    88Author URI: https://trust.reviews
  • fb-reviews-widget/trunk/includes/class-activator.php

    r3038815 r3439940  
    3434
    3535    public function register() {
    36         add_action('init', array($this, 'check_version'));
    37         add_filter('https_ssl_verify', '__return_false');
    38         add_filter('block_local_requests', '__return_false');
     36        add_action('init', array($this, 'init'));
     37    }
     38
     39    public function init() {
     40        if (is_admin()) {
     41            $this->check_version();
     42        }
    3943    }
    4044
     
    7983            update_option(Plugin::SLG . '_revupd_cron', '1');
    8084        } elseif ($last_active_version !== $current_version) {
    81             $this->exist_install($current_version, $last_active_version);
    82             update_option(Plugin::SLG . '_version', $current_version);
    83             update_option(Plugin::SLG . '_revupd_cron', '1');
     85            $this->exist_install($last_active_version);
     86            if (get_option(Plugin::SLG . '_debug_mode') !== '1') {
     87                update_option(Plugin::SLG . '_version', $current_version);
     88                update_option(Plugin::SLG . '_revupd_cron', '1');
     89            }
    8490        }
    8591    }
     
    9298    }
    9399
    94     private function exist_install($current_version, $last_active_version) {
     100    private function exist_install($last_active_version) {
    95101        $this->update_db($last_active_version);
    96102    }
     
    99105        global $wpdb;
    100106
    101         switch($last_active_version) {
    102             case version_compare($last_active_version, '2.0', '<'):
    103                 $this->first_install();
    104         }
     107        if (version_compare($last_active_version, '2.0', '<')) {
     108            $this->first_install();
     109        }
     110
     111        if (version_compare($last_active_version, '2.7', '<')) {
     112
     113            $rev = $wpdb->prefix . Database::REVIEW_TABLE;
     114            $biz = $wpdb->prefix . Database::BUSINESS_TABLE;
     115
     116            // add column map_url
     117            $columns = $wpdb->get_col("SHOW COLUMNS FROM {$biz}", 0);
     118            if (!in_array('map_url', $columns, true)) {
     119                $wpdb->query("ALTER TABLE {$biz} ADD map_url VARCHAR(512)");
     120            }
     121
     122            // add columns images, reply, reply_time
     123            $columns = array_flip(
     124                $wpdb->get_col("SHOW COLUMNS FROM {$rev}", 0)
     125            );
     126            foreach ([
     127                'review_id'  => 'VARCHAR(64)',
     128                'images'     => 'TEXT',
     129                'reply'      => 'TEXT',
     130                'reply_time' => 'INTEGER'
     131            ] as $col => $type) {
     132                if (!isset($columns[$col])) {
     133                    $wpdb->query("ALTER TABLE {$rev} ADD {$col} {$type}");
     134                }
     135            }
     136
     137            // set default platform google
     138            $wpdb->query("UPDATE {$rev} SET platform = 'google' WHERE platform IS NULL OR platform = ''");
     139
     140            // set review_id
     141            $wpdb->query(
     142                "UPDATE {$rev} r
     143                 JOIN {$biz} b ON b.id = r.biz_id
     144                 SET r.review_id = MD5(CONCAT(
     145                     r.platform, ':', b.pid, ':',
     146                     COALESCE(
     147                         NULLIF(r.author_url, ''),
     148                         CONCAT(COALESCE(NULLIF(r.author_name, ''), ''), ':', r.time)
     149                     )
     150                 ))
     151                 WHERE r.review_id IS NULL OR r.review_id = ''"
     152            );
     153
     154            $this->database->create_text_table();
     155            $this->database->migrate_review_texts();
     156        }
     157
     158        /*if (version_compare($last_active_version, '2.8', '<')) {
     159
     160            $rev = $wpdb->prefix . Database::REVIEW_TABLE;
     161
     162            // remove duplicates
     163            $wpdb->query("DELETE r1 FROM {$rev} r1 INNER JOIN {$rev} r2 ON r1.platform = r2.platform AND r1.review_id = r2.review_id AND r1.id < r2.id");
     164
     165            // add index platform and review_id
     166            $idx = Plugin::PFX . 'platform_review_idx';
     167            $exists = $wpdb->get_var("SHOW INDEX FROM {$rev} WHERE Key_name = '{$idx}'");
     168            if (!$exists) {
     169                $wpdb->query("ALTER TABLE {$rev} ADD UNIQUE INDEX {$idx} (platform, review_id)");
     170            }
     171        }*/
    105172    }
    106173
     
    164231     * Delete all options of the plugin on a multisite
    165232     */
    166     public function delete_all_options($multisite = false) {
     233    public function delete_all_options($multisite = false, $except = array()) {
    167234        $network_wide = get_option(Plugin::SLG . '_is_multisite');
    168235        if ($multisite && $network_wide) {
    169             $this->delete_all_options_multisite();
    170         } else {
    171             $this->delete_all_options_single_site();
    172         }
    173     }
    174 
    175     private function delete_all_options_multisite() {
    176         global $wpdb;
    177 
    178         $site_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
    179 
    180         foreach($site_ids as $site_id) {
    181             switch_to_blog($site_id);
    182             $this->delete_all_options_single_site();
    183             restore_current_blog();
    184         }
    185     }
    186 
    187     private function delete_all_options_single_site() {
     236            $this->delete_all_options_multisite($except);
     237        } else {
     238            $this->delete_all_options_single_site($except);
     239        }
     240    }
     241
     242    private function delete_all_options_multisite($except = array()) {
     243        global $wpdb;
     244
     245        $site_ids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
     246
     247        foreach($site_ids as $site_id) {
     248            switch_to_blog($site_id);
     249            $this->delete_all_options_single_site($except);
     250            restore_current_blog();
     251        }
     252    }
     253
     254    private function delete_all_options_single_site($except = array()) {
    188255        foreach ($this->options() as $opt) {
    189             delete_option($opt);
     256            if (!in_array($opt, $except)) {
     257                delete_option($opt);
     258            }
    190259        }
    191260    }
  • fb-reviews-widget/trunk/includes/class-assets.php

    r3041780 r3439940  
    1010
    1111    private static $css_assets = array(
     12        //'rpi-star-yelp-css'                  => 'https://cdn.reviewsplugin.com/assets/css/star-yelp.css',
     13        'rpi-star-yelp-css'                  => 'https://cdn.reviewsplugin.com/assets/css/stars.css',
    1214        Plugin::SLG . '-admin-main-css'      => 'css/admin-main',
    13         Plugin::SLG . '-public-clean-css'    => 'css/public-clean',
     15        //Plugin::SLG . '-public-clean-css'    => 'css/public-clean',
    1416        Plugin::SLG . '-public-main-css'     => 'css/public-main',
    1517    );
    1618
    1719    private static $js_assets = array(
     20        'rpi-toast-js'                       => 'https://cdn.reviewsplugin.com/assets/js/toast.js',
    1821        Plugin::SLG . '-admin-main-js'       => 'js/admin-main',
    1922        Plugin::SLG . '-admin-builder-js'    => 'js/admin-builder',
    2023        Plugin::SLG . '-admin-apexcharts-js' => 'js/admin-apexcharts',
    2124        Plugin::SLG . '-public-time-js'      => 'js/public-time',
    22         Plugin::SLG . '-public-main-js'      => 'js/public-main',
     25        Plugin::SLG . '-public-main-js'      => 'js/public-main'
    2326    );
    2427
     
    7275    public function register_styles() {
    7376        $styles = array(
     77            'rpi-star-yelp-css',
    7478            Plugin::SLG . '-admin-main-css',
    7579            Plugin::SLG . '-public-main-css'
    7680        );
    77         if ($this->debug) {
     81        /*if ($this->debug) {
    7882            array_push($styles, Plugin::SLG . '-public-clean-css');
    79         }
     83        }*/
    8084        $this->register_styles_loop($styles);
    8185    }
     
    8387    public function register_scripts() {
    8488        $scripts = array(
     89            'rpi-toast-js',
    8590            Plugin::SLG . '-admin-main-js',
    8691            Plugin::SLG . '-public-main-js',
     
    116121
    117122        if ($this->debug) {
     123            wp_enqueue_script('rpi-toast-js');
    118124            wp_enqueue_script(Plugin::SLG . '-admin-builder-js');
    119125        }
     
    126132    public function enqueue_public_styles() {
    127133        if ($this->debug) {
    128             wp_enqueue_style(Plugin::SLG . '-public-clean-css');
    129             wp_style_add_data(Plugin::SLG . '-public-clean-css', 'rtl', 'replace');
     134            wp_enqueue_style('rpi-star-yelp-css');
     135            //wp_enqueue_style(Plugin::SLG . '-public-clean-css');
     136            //wp_style_add_data(Plugin::SLG . '-public-clean-css', 'rtl', 'replace');
    130137        }
    131138        wp_enqueue_style(Plugin::SLG . '-public-main-css');
     
    153160
    154161    public function get_css_asset($asset) {
    155         return $this->url . ($this->debug ? 'src/' : '') . self::$css_assets[$asset] . '.css';
     162        $css = self::$css_assets[$asset];
     163        return strpos($css, 'https:') === 0 ? $css : $this->url . ($this->debug ? 'src/' : '') . $css . '.css';
    156164    }
    157165
    158166    public function get_js_asset($asset) {
    159         $src = $this->debug && !strrpos($asset, 'apexcharts') ? 'src/' : '';
    160         return $this->url . $src . self::$js_assets[$asset] . '.js';
     167        $js = self::$js_assets[$asset];
     168        return strpos($js, 'https:') === 0 ? $js : $this->url . ($this->debug ? 'src/' : '') . $js . '.js';
    161169    }
    162170
  • fb-reviews-widget/trunk/includes/class-builder-page.php

    r3251386 r3439940  
    165165                        slg        : '<?php echo Plugin::SLG; ?>',
    166166                        opt_el     : '#{slg}-builder-option',
     167                        lang       : '<?php echo get_locale(); ?>',
    167168                        authcode   : '<?php echo get_option(Plugin::SLG . '_auth_code'); ?>',
    168169                        fbAppUrl   : '<?php echo Plugin::FB_APP_URL; ?>',
  • fb-reviews-widget/trunk/includes/class-plugin-settings.php

    r3125572 r3439940  
    3131        $activation_time = get_option(Plugin::SLG . '_activation_time');
    3232        $debug_mode      = get_option(Plugin::SLG . '_debug_mode') == '1';
     33        $debug_display   = $debug_mode ? 'flex' : 'none';
    3334
    3435        $revupd_cron     = get_option(Plugin::SLG . '_revupd_cron') == '1';
     
    173174                            </div>
    174175                        </div>
    175                         <div class="{slg}-field" style="display:none">
    176                             <div class="{slg}-field-label">
    177                                 <label>Debug mode is currently <b><?php echo $debug_mode ? 'enabled' : 'disabled' ?></b></label>
    178                             </div>
    179                             <div class="wp-review-field-option">
    180                                 <?php wp_nonce_field(Plugin::SLG . '-wpnonce_debug_mode', Plugin::SLG . '-form_nonce_debug_mode'); ?>
    181                                 <input type="submit" name="debug_mode" class="button" value="<?php echo $debug_mode ? 'Disable' : 'Enable'; ?>" />
    182                             </div>
    183                         </div>
    184                         <div class="{slg}-field" style="display:none">
     176                        <div class="{slg}-field" style="display:<?php echo $debug_display; ?>">
    185177                            <div class="{slg}-field-label">
    186178                                <label>Execute db update manually</label>
     
    192184                            </div>
    193185                        </div>
     186                        <div class="{slg}-field" style="display:<?php echo $debug_display; ?>">
     187                            <div class="{slg}-field-label">
     188                                <label>Debug mode is currently <b><?php echo $debug_mode ? 'enabled' : 'disabled' ?></b></label>
     189                            </div>
     190                            <div class="wp-review-field-option">
     191                                <?php wp_nonce_field(Plugin::SLG . '-wpnonce_debug_mode', Plugin::SLG . '-form_nonce_debug_mode'); ?>
     192                                <input type="submit" name="debug_mode" class="button" value="<?php echo $debug_mode ? 'Disable' : 'Enable'; ?>" />
     193                            </div>
     194                        </div>
    194195                    </form>
    195196                </div>
  • fb-reviews-widget/trunk/includes/class-plugin.php

    r3406362 r3439940  
    1010use WP_TrustReviews\Includes\Admin\Admin_Rateus_Ajax;
    1111
     12use WP_TrustReviews\Includes\Core\Google_Dao;
     13use WP_TrustReviews\Includes\Core\Connect_Helper;
    1214use WP_TrustReviews\Includes\Core\Core;
    1315use WP_TrustReviews\Includes\Core\Connect_Google;
     
    1618final class Plugin {
    1719
    18     const VER = '2.6';
     20    const VER = '2.7';
    1921    const SLG = 'trustreviews';
    20     const PFX = 'trustreviews_';
     22    const PFX = self::SLG . '_';
    2123    const NAME = 'fb-reviews-widget';
    2224
     
    127129        $feed_block->register();
    128130
    129         $connect_google = new Connect_Google($helper);
     131        $connect_helper = new Connect_Helper();
     132        $google_dao = new Google_Dao($connect_helper);
     133        $connect_google = new Connect_Google($helper, $google_dao, $connect_helper);
    130134
    131135        $reviews_cron = new Reviews_Cron($connect_google, $feed_deserializer);
     
    187191
    188192    public function deactivate() {
    189         $this->deactivator->deactivate();
     193        $hook = Plugin::SLG . '_revupd_schedule';
     194        $next_scheduled = wp_next_scheduled($hook);
     195
     196        if ($next_scheduled) {
     197            wp_unschedule_event($next_scheduled, $hook);
     198            update_option(Plugin::SLG . '_revupd_cron_timeout', '');
     199        }
    190200    }
    191201}
  • fb-reviews-widget/trunk/includes/class-reviews-cron.php

    r3021668 r3439940  
    8181
    8282                        // Clear feed cache
    83                         delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $id . '_reviews', false);
     83                        delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $id . '_reviews');
    8484
    8585                        // Check execution time
  • fb-reviews-widget/trunk/includes/class-settings-save.php

    r3125572 r3439940  
    7777
    7878        if (isset($_POST['reset_all'])) {
    79             $reset_all_multisite = sanitize_text_field(wp_unslash($_POST['reset_all_multisite']));
     79            $reset_all_multisite = isset($_POST['reset_all_multisite']) ? sanitize_text_field(wp_unslash($_POST['reset_all_multisite'])) : null;
    8080            $this->activator->drop_db($reset_all_multisite);
    81             $this->activator->delete_all_options($reset_all_multisite);
     81            $this->activator->delete_all_options($reset_all_multisite, array(Plugin::SLG . '_debug_mode'));
    8282            $this->activator->delete_all_feeds($reset_all_multisite);
    8383            $this->reviews_cron->deactivate();
  • fb-reviews-widget/trunk/includes/class-view-svg.php

    r3406362 r3439940  
    2727                    <path d="M317.119,340.347c-9.001,9.076-1.39,25.586-1.39,25.586l67.757,113.135c0,0,11.124,14.915,20.762,14.915   c9.683,0,19.246-7.952,19.246-7.952l53.567-76.567c0,0,5.395-9.658,5.52-18.12c0.193-12.034-17.947-15.33-17.947-15.33   l-126.816-40.726C337.815,335.292,325.39,331.994,317.119,340.347z M310.69,283.325c6.489,11.004,24.389,7.798,24.389,7.798   l126.532-36.982c0,0,17.242-7.014,19.704-16.363c2.415-9.352-2.845-20.637-2.845-20.637l-60.468-71.225   c0,0-5.24-9.006-16.113-9.912c-11.989-1.021-19.366,13.489-19.366,13.489l-71.494,112.505   C311.029,261.999,304.709,273.203,310.69,283.325z M250.91,239.461c14.9-3.668,17.265-25.314,17.265-25.314l-1.013-180.14   c0,0-2.247-22.222-12.232-28.246c-15.661-9.501-20.303-4.541-24.79-3.876l-105.05,39.033c0,0-10.288,3.404-15.646,11.988   c-7.651,12.163,7.775,29.972,7.775,29.972l109.189,148.831C226.407,231.708,237.184,242.852,250.91,239.461z M224.967,312.363   c0.376-13.894-16.682-22.239-16.682-22.239L95.37,233.079c0,0-16.732-6.899-24.855-2.091c-6.224,3.677-11.738,10.333-12.277,16.216   l-7.354,90.528c0,0-1.103,15.685,2.963,22.821c5.758,10.128,24.703,3.074,24.703,3.074L210.37,334.49   C215.491,331.048,224.471,330.739,224.967,312.363z M257.746,361.219c-11.315-5.811-24.856,6.224-24.856,6.224l-88.265,97.17   c0,0-11.012,14.858-8.212,23.982c2.639,8.552,7.007,12.802,13.187,15.797l88.642,27.982c0,0,10.747,2.231,18.884-0.127   c11.552-3.349,9.424-21.433,9.424-21.433l2.003-131.563C268.552,379.253,268.101,366.579,257.746,361.219z" fill="#D80027"/>
    2828                </g>
     29                <g id="{slg}-logo-ta" height="44" width="44" fill="none" fill-rule="evenodd">
     30                    <path fill="#002B11" d="M44.508 49.657c0 6.436-5.218 11.654-11.653 11.654s-11.653-5.218-11.653-11.654c0-6.435 5.218-11.654 11.653-11.654s11.653 5.218 11.653 11.654m54.028-11.654c-6.435 0-11.653 5.218-11.653 11.654S92.1 61.311 98.536 61.311s11.653-5.218 11.653-11.654c-.002-6.432-5.215-11.647-11.647-11.65zm32.855 11.654c0 18.136-14.715 32.84-32.855 32.84a32.7 32.7 0 0 1-22.31-8.74L65.71 85.196 55.19 73.744a32.7 32.7 0 0 1-22.317 8.754C14.746 82.497.036 67.792.036 49.656a32.75 32.75 0 0 1 10.71-24.27L0 13.693h23.876c25.263-17.195 58.467-17.195 83.73 0h23.814l-10.745 11.692a32.75 32.75 0 0 1 10.716 24.271m-76.305 0c0-12.274-9.95-22.225-22.223-22.225S10.64 37.383 10.64 49.657s9.95 22.225 22.223 22.225 22.222-9.948 22.223-22.222zm35.284-33.18a64.13 64.13 0 0 0-49.326 0c14.03 5.37 24.667 17.915 24.667 32.54 0-14.624 10.635-27.17 24.66-32.538zm30.395 33.18c0-12.274-9.95-22.225-22.223-22.225s-22.223 9.95-22.223 22.224S86.268 71.88 98.54 71.88s22.223-9.95 22.223-22.225"/>
     31                </g>
    2932                <g id="{slg}-dots" fill="none" fill-rule="evenodd" width="12" height="12">
    3033                    <circle cx="6" cy="3" r="1" fill="#000"/>
  • fb-reviews-widget/trunk/includes/class-view.php

    r3406362 r3439940  
    3535
    3636        ?>
    37         <div class="{slg} wpac<?php if ($options->dark_theme) { ?> wp-dark<?php } ?>"<?php if ($style) { ?> style="<?php echo $style;?>"<?php } ?> data-id="<?php echo $feed_id; ?>" data-layout="<?php echo $options->view_mode; ?>" data-exec="false">
     37        <div class="{slg}<?php if ($options->dark_theme) { ?> wp-dark<?php } ?>"<?php if ($style) { ?> style="<?php echo $style;?>"<?php } ?> data-id="<?php echo $feed_id; ?>" data-layout="<?php echo $options->view_mode; ?>" data-exec="false">
    3838            <?php
    3939            switch ($options->view_mode) {
     
    4949            $this->view_svg->render();
    5050            ?>
     51            <span class="{slg}-hide" style="display:none"><style><?php if (is_rtl()) { ?>:root{--rpi-star-size:22px;--rpi-star-color:#fb8e28;--rpi-star-empty:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z' fill='none' stroke='%23cccccc' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");--rpi-star-mask:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.7881 3.21068C11.2364 2.13274 12.7635 2.13273 13.2118 3.21068L15.2938 8.2164L20.6979 8.64964C21.8616 8.74293 22.3335 10.1952 21.4469 10.9547L17.3295 14.4817L18.5874 19.7551C18.8583 20.8908 17.6229 21.7883 16.6266 21.1798L11.9999 18.3538L7.37329 21.1798C6.37697 21.7883 5.14158 20.8908 5.41246 19.7551L6.67038 14.4817L2.55303 10.9547C1.66639 10.1952 2.13826 8.74293 3.302 8.64964L8.70609 8.2164L10.7881 3.21068Z'/%3E%3C/svg%3E")}.rpi-star,.rpi-stars-tripadvisor,.rpi-stars-yelp{display:flex;align-items:center;gap:4px}.rpi-star[data-rating]::before{content:attr(data-rating);color:var(--rpi-star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-star[data-rating]::after{content:'';width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-position:center!important;-webkit-mask-size:contain!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-position:center!important;mask-size:contain!important}.rpi-stars{--stars:5;--stars-max:5;position:relative!important;display:inline-block!important;width:calc(var(--stars) * var(--rpi-star-size))!important;height:var(--rpi-star-size)!important;background-color:transparent!important;background-image:var(--rpi-star-empty)!important;background-repeat:repeat-x!important;background-position:right center!important;background-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-star+.rpi-stars{--stars-offset:1;--stars:calc(var(--stars-max) - var(--stars-offset))}.rpi-stars::before{content:''!important;position:absolute!important;inset:0!important;width:clamp(0%,calc(((var(--rating) - var(--stars-offset,0))/ (var(--stars-max) - var(--stars-offset,0))) * 100%),100%)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:repeat-x!important;-webkit-mask-position:left center!important;-webkit-mask-size:var(--rpi-star-size) var(--rpi-star-size)!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:repeat-x!important;mask-position:left center!important;mask-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-stars-yelp{--empty-color:#cccccc;--five-color:#fb433c;--four-color:#ff643d;--three-color:#ff8742;--two-color:#ffad48;--one-color:#ffcc4b;--rpi-star-size:20px;--rating:0;--gap:3px;--radius:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-yelp i{position:relative!important;display:inline-block!important;font-style:normal!important;flex:0 0 auto!important;width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;border-radius:var(--radius)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(-90deg,var(--star-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important;box-sizing:border-box!important}.rpi-stars-yelp i::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:70% 70%!important;mask-position:center!important}.rpi-stars-yelp[data-rating]::before{content:attr(data-rating);color:var(--star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-yelp i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-yelp i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-yelp i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-yelp i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-yelp i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-yelp[data-stars^="1"]{--rating:1.5;--star-color:var(--one-color)}.rpi-stars-yelp[data-stars="1"]{--rating:1}.rpi-stars-yelp[data-stars^="2"]{--rating:2.5;--star-color:var(--two-color)}.rpi-stars-yelp[data-stars="2"]{--rating:2}.rpi-stars-yelp[data-stars^="3"]{--rating:3.5;--star-color:var(--three-color)}.rpi-stars-yelp[data-stars="3"]{--rating:3}.rpi-stars-yelp[data-stars^="4"]{--rating:4.5;--star-color:var(--four-color)}.rpi-stars-yelp[data-stars="4"]{--rating:4}.rpi-stars-yelp[data-stars^="5"]{--rating:5;--star-color:var(--five-color)}.rpi-stars-tripadvisor{--empty-color:#ffffff;--border-color:#5ba672;--fill-color:#5ba672;--rpi-dot-size:18px;--rating:0;--gap:4px;--border:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-tripadvisor i{width:var(--rpi-dot-size)!important;height:var(--rpi-dot-size)!important;display:inline-block!important;position:relative!important;flex:0 0 auto!important;box-sizing:border-box!important;border-radius:999px!important;border:var(--border) solid var(--border-color)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(-90deg,var(--fill-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important}.rpi-stars-tripadvisor[data-rating]::before{content:attr(data-rating);color:var(--fill-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-tripadvisor i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-tripadvisor[data-stars^="1"]{--rating:1.5}.rpi-stars-tripadvisor[data-stars="1"]{--rating:1}.rpi-stars-tripadvisor[data-stars^="2"]{--rating:2.5}.rpi-stars-tripadvisor[data-stars="2"]{--rating:2}.rpi-stars-tripadvisor[data-stars^="3"]{--rating:3.5}.rpi-stars-tripadvisor[data-stars="3"]{--rating:3}.rpi-stars-tripadvisor[data-stars^="4"]{--rating:4.5}.rpi-stars-tripadvisor[data-stars="4"]{--rating:4}.rpi-stars-tripadvisor[data-stars^="5"]{--rating:5}.rpi-star-fb{--size:18px;--color:#fa3e3e;--radius:2px;--tail:6px;position:relative!important;display:flex!important;align-items:center!important;width:var(--size);height:var(--size);background-color:var(--color)!important;border-radius:var(--radius);white-space:nowrap!important;font-size:calc(var(--size) - 2px)!important;line-height:1!important;vertical-align:middle!important;text-indent:calc(var(--size) + 6px)!important}.rpi-star-fb[data-rating="1"]{--color:#cccccc}.rpi-star-fb::before{content:'';position:absolute;right:4px;bottom:-4px;width:0;height:0;border-top:5px solid var(--color);border-left:6px solid transparent}.rpi-star-fb::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:60% 60%!important;mask-position:center!important}.trustreviews,.trustreviews *,.trustreviews ::after,.trustreviews ::before{box-sizing:border-box}.trustreviews{display:block;direction:rtl;font-size:var(--font-size, 16px);font-family:var(--font-family);font-style:normal;font-weight:400;text-align:start;line-height:normal;overflow:visible;text-decoration:none;list-style-type:disc;box-sizing:border-box;visibility:visible!important}.trustreviews div,.trustreviews span{margin:0;padding:0;color:inherit;font:inherit;line-height:normal;letter-spacing:normal;text-transform:none;text-decoration:none;border:0;background:100% 0}.trustreviews a{color:inherit;text-decoration:none;background:100% 0;cursor:pointer;outline:0}.trustreviews a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.trustreviews img{display:block;max-width:100%;height:auto;border:0;vertical-align:middle}.trustreviews i{font-style:normal;font-weight:inherit;line-height:0;vertical-align:middle}.trustreviews svg{display:inline-block;width:auto;height:auto;vertical-align:middle;overflow:visible}.trustreviews svg use{opacity:1;visibility:visible}.trustreviews .trustreviews-flex{display:inline-flex;align-items:center;gap:var(--gap,2px);flex-direction:var(--dir,column);align-items:var(--align,star);flex-wrap:var(--wrap,nowrap);overflow:var(--overflow,visible)}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:700!important;vertical-align:middle!important;line-height:normal!important}.trustreviews .trustreviews-powered{color:#555!important}.trustreviews [data-platform=google] .trustreviews-powered img{max-width:144px!important}.trustreviews [data-platform=yelp] .trustreviews-powered img{max-height:25px!important;vertical-align:sub!important}.trustreviews [data-platform=facebook] .trustreviews-powered span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=tripadvisor] .trustreviews-powered span{color:#5ba672!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=facebook],.trustreviews [data-rev=facebook]{--rpi-star-color:#4569f5}.trustreviews .trustreviews-list-review{position:relative;margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-left:10px!important}[dir=rtl] .trustreviews-left{padding-right:10px!important}.trustreviews .trustreviews-img{min-width:50px!important;max-width:none!important;height:50px!important;overflow:hidden!important;border:none!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews [data-rev=google] .trustreviews-img{overflow:visible!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;padding-left:6px!important;text-decoration:none!important}.trustreviews .trustreviews-review .trustreviews-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-header .trustreviews-name{font-size:120%!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-left:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews-fb{padding:2px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews-ta{padding:3px;width:16px!important;height:16px!important;border-radius:50%;background:#00eb5b!important}.trustreviews-feedback span:first-child{margin-left:8px}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:right!important;direction:rtl!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{display:flex;flex-direction:column;gap:12px;position:relative!important;margin:0 10px!important;padding:16px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:12px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;left:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;right:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:visible!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{display:flex}.trustreviews .trustreviews-wr a{color:#fff!important;padding:4px 12px 8px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:-1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 4px 0 0;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}<?php } else { ?>:root{--rpi-star-size:22px;--rpi-star-color:#fb8e28;--rpi-star-empty:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z' fill='none' stroke='%23cccccc' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E");--rpi-star-mask:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.7881 3.21068C11.2364 2.13274 12.7635 2.13273 13.2118 3.21068L15.2938 8.2164L20.6979 8.64964C21.8616 8.74293 22.3335 10.1952 21.4469 10.9547L17.3295 14.4817L18.5874 19.7551C18.8583 20.8908 17.6229 21.7883 16.6266 21.1798L11.9999 18.3538L7.37329 21.1798C6.37697 21.7883 5.14158 20.8908 5.41246 19.7551L6.67038 14.4817L2.55303 10.9547C1.66639 10.1952 2.13826 8.74293 3.302 8.64964L8.70609 8.2164L10.7881 3.21068Z'/%3E%3C/svg%3E")}.rpi-star,.rpi-stars-tripadvisor,.rpi-stars-yelp{display:flex;align-items:center;gap:4px}.rpi-star[data-rating]::before{content:attr(data-rating);color:var(--rpi-star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-star[data-rating]::after{content:'';width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-position:center!important;-webkit-mask-size:contain!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-position:center!important;mask-size:contain!important}.rpi-stars{--stars:5;--stars-max:5;position:relative!important;display:inline-block!important;width:calc(var(--stars) * var(--rpi-star-size))!important;height:var(--rpi-star-size)!important;background-color:transparent!important;background-image:var(--rpi-star-empty)!important;background-repeat:repeat-x!important;background-position:left center!important;background-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-star+.rpi-stars{--stars-offset:1;--stars:calc(var(--stars-max) - var(--stars-offset))}.rpi-stars::before{content:''!important;position:absolute!important;inset:0!important;width:clamp(0%,calc(((var(--rating) - var(--stars-offset,0))/ (var(--stars-max) - var(--stars-offset,0))) * 100%),100%)!important;background-color:var(--rpi-star-color)!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:repeat-x!important;-webkit-mask-position:left center!important;-webkit-mask-size:var(--rpi-star-size) var(--rpi-star-size)!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:repeat-x!important;mask-position:left center!important;mask-size:var(--rpi-star-size) var(--rpi-star-size)!important}.rpi-stars-yelp{--empty-color:#cccccc;--five-color:#fb433c;--four-color:#ff643d;--three-color:#ff8742;--two-color:#ffad48;--one-color:#ffcc4b;--rpi-star-size:20px;--rating:0;--gap:3px;--radius:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-yelp i{position:relative!important;display:inline-block!important;font-style:normal!important;flex:0 0 auto!important;width:var(--rpi-star-size)!important;height:var(--rpi-star-size)!important;border-radius:var(--radius)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(90deg,var(--star-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important;box-sizing:border-box!important}.rpi-stars-yelp i::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:70% 70%!important;mask-position:center!important}.rpi-stars-yelp[data-rating]::before{content:attr(data-rating);color:var(--star-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-yelp i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-yelp i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-yelp i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-yelp i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-yelp i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-yelp[data-stars^="1"]{--rating:1.5;--star-color:var(--one-color)}.rpi-stars-yelp[data-stars="1"]{--rating:1}.rpi-stars-yelp[data-stars^="2"]{--rating:2.5;--star-color:var(--two-color)}.rpi-stars-yelp[data-stars="2"]{--rating:2}.rpi-stars-yelp[data-stars^="3"]{--rating:3.5;--star-color:var(--three-color)}.rpi-stars-yelp[data-stars="3"]{--rating:3}.rpi-stars-yelp[data-stars^="4"]{--rating:4.5;--star-color:var(--four-color)}.rpi-stars-yelp[data-stars="4"]{--rating:4}.rpi-stars-yelp[data-stars^="5"]{--rating:5;--star-color:var(--five-color)}.rpi-stars-tripadvisor{--empty-color:#ffffff;--border-color:#5ba672;--fill-color:#5ba672;--rpi-dot-size:18px;--rating:0;--gap:4px;--border:3px;display:inline-flex!important;gap:var(--gap)!important;line-height:0!important;vertical-align:top!important}.rpi-stars-tripadvisor i{width:var(--rpi-dot-size)!important;height:var(--rpi-dot-size)!important;display:inline-block!important;position:relative!important;flex:0 0 auto!important;box-sizing:border-box!important;border-radius:999px!important;border:var(--border) solid var(--border-color)!important;background-color:var(--empty-color)!important;background-image:linear-gradient(90deg,var(--fill-color) 0 calc(var(--fill,0) * 1%),transparent calc(var(--fill,0) * 1%))!important;background-repeat:no-repeat!important;background-size:100% 100%!important}.rpi-stars-tripadvisor[data-rating]::before{content:attr(data-rating);color:var(--fill-color);font-size:var(--head-grade-fs, 18px);font-weight:var(--head-grade-weight,900)}.rpi-stars-tripadvisor i:first-child{--fill:clamp(0, (var(--rating) - 0) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(2){--fill:clamp(0, (var(--rating) - 1) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(3){--fill:clamp(0, (var(--rating) - 2) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(4){--fill:clamp(0, (var(--rating) - 3) * 100, 100)}.rpi-stars-tripadvisor i:nth-child(5){--fill:clamp(0, (var(--rating) - 4) * 100, 100)}.rpi-stars-tripadvisor[data-stars^="1"]{--rating:1.5}.rpi-stars-tripadvisor[data-stars="1"]{--rating:1}.rpi-stars-tripadvisor[data-stars^="2"]{--rating:2.5}.rpi-stars-tripadvisor[data-stars="2"]{--rating:2}.rpi-stars-tripadvisor[data-stars^="3"]{--rating:3.5}.rpi-stars-tripadvisor[data-stars="3"]{--rating:3}.rpi-stars-tripadvisor[data-stars^="4"]{--rating:4.5}.rpi-stars-tripadvisor[data-stars="4"]{--rating:4}.rpi-stars-tripadvisor[data-stars^="5"]{--rating:5}.rpi-star-fb{--size:18px;--color:#fa3e3e;--radius:2px;--tail:6px;position:relative!important;display:flex!important;align-items:center!important;width:var(--size);height:var(--size);background-color:var(--color)!important;border-radius:var(--radius);white-space:nowrap!important;font-size:calc(var(--size) - 2px)!important;line-height:1!important;vertical-align:middle!important;text-indent:calc(var(--size) + 6px)!important}.rpi-star-fb[data-rating="1"]{--color:#cccccc}.rpi-star-fb::before{content:'';position:absolute;left:4px;bottom:-4px;width:0;height:0;border-top:5px solid var(--color);border-right:6px solid transparent}.rpi-star-fb::after{content:''!important;position:absolute!important;inset:0!important;background-color:#fff!important;-webkit-mask-image:var(--rpi-star-mask)!important;-webkit-mask-repeat:no-repeat!important;-webkit-mask-size:70% 70%!important;-webkit-mask-position:center!important;mask-image:var(--rpi-star-mask)!important;mask-repeat:no-repeat!important;mask-size:60% 60%!important;mask-position:center!important}.trustreviews,.trustreviews *,.trustreviews ::after,.trustreviews ::before{box-sizing:border-box}.trustreviews{display:block;direction:ltr;font-size:var(--font-size, 16px);font-family:var(--font-family);font-style:normal;font-weight:400;text-align:start;line-height:normal;overflow:visible;text-decoration:none;list-style-type:disc;box-sizing:border-box;visibility:visible!important}.trustreviews div,.trustreviews span{margin:0;padding:0;color:inherit;font:inherit;line-height:normal;letter-spacing:normal;text-transform:none;text-decoration:none;border:0;background:0 0}.trustreviews a{color:inherit;text-decoration:none;background:0 0;cursor:pointer;outline:0}.trustreviews a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.trustreviews img{display:block;max-width:100%;height:auto;border:0;vertical-align:middle}.trustreviews i{font-style:normal;font-weight:inherit;line-height:0;vertical-align:middle}.trustreviews svg{display:inline-block;width:auto;height:auto;vertical-align:middle;overflow:visible}.trustreviews svg use{opacity:1;visibility:visible}.trustreviews .trustreviews-flex{display:inline-flex;align-items:center;gap:var(--gap,2px);flex-direction:var(--dir,column);align-items:var(--align,star);flex-wrap:var(--wrap,nowrap);overflow:var(--overflow,visible)}.trustreviews .trustreviews-rating{color:#0866ff!important;font-size:21px!important;font-weight:700!important;vertical-align:middle!important;line-height:normal!important}.trustreviews .trustreviews-powered{color:#555!important}.trustreviews [data-platform=google] .trustreviews-powered img{max-width:144px!important}.trustreviews [data-platform=yelp] .trustreviews-powered img{max-height:25px!important;vertical-align:sub!important}.trustreviews [data-platform=facebook] .trustreviews-powered span{color:#0866ff!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=tripadvisor] .trustreviews-powered span{color:#5ba672!important;font-weight:600!important;opacity:.8!important}.trustreviews [data-platform=facebook],.trustreviews [data-rev=facebook]{--rpi-star-color:#4569f5}.trustreviews .trustreviews-list-review{position:relative;margin-top:15px!important}.trustreviews .trustreviews-left{display:table-cell!important;vertical-align:top!important}[dir=ltr] .trustreviews-left{padding-right:10px!important}[dir=rtl] .trustreviews-left{padding-left:10px!important}.trustreviews .trustreviews-img{min-width:50px!important;max-width:none!important;height:50px!important;overflow:hidden!important;border:none!important;border-radius:50%!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews [data-rev=google] .trustreviews-img{overflow:visible!important}.trustreviews .trustreviews-right{display:table-cell!important;vertical-align:top!important;width:10000px!important}.trustreviews .trustreviews-place.trustreviews-place-center{text-align:center!important}.trustreviews .trustreviews-place.trustreviews-place-center .trustreviews-left{display:block!important}.trustreviews .trustreviews-name{color:#000!important;font-size:100%!important;font-weight:700!important;padding-right:6px!important;text-decoration:none!important}.trustreviews .trustreviews-review .trustreviews-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.trustreviews a.trustreviews-name{color:#427fed!important;text-decoration:none!important}.trustreviews .trustreviews-header .trustreviews-name{font-size:120%!important}.trustreviews .trustreviews-time{color:#555!important;font-size:13px!important}.trustreviews .trustreviews-text{color:#222!important;font-size:15px!important;line-height:24px!important;max-width:100%!important;overflow:hidden!important;white-space:pre-wrap!important;word-break:break-word!important}.trustreviews .trustreviews-text .trustreviews-stars{padding-right:7px!important}.trustreviews .wp-more{display:none}.trustreviews .wp-more-toggle{color:#136aaf!important;cursor:pointer!important;text-decoration:none!important}.trustreviews .trustreviews-url{display:block;margin:10px 0!important;color:#136aaf!important;text-align:center!important}.trustreviews.wp-dark .trustreviews-name{color:#eee!important}.trustreviews.wp-dark .trustreviews-time{color:#bbb!important}.trustreviews.wp-dark .trustreviews-text{color:#ececec!important}.trustreviews-fb{padding:2px;width:16px!important;height:16px!important;border-radius:50%;background:#0866ff!important}.trustreviews-ta{padding:3px;width:16px!important;height:16px!important;border-radius:50%;background:#00eb5b!important}.trustreviews-feedback span:first-child{margin-right:8px}.trustreviews{display:block!important;width:100%!important;padding-bottom:20px!important;text-align:left!important;direction:ltr!important;box-sizing:border-box!important}.trustreviews .trustreviews-row{display:-ms-flexbox!important;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;-ms-flex-wrap:nowrap!important;-ms-flex-align:center!important}.trustreviews .trustreviews-row-xs{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-xs .trustreviews-content,.trustreviews .trustreviews-row-xs .trustreviews-header,.trustreviews .trustreviews-row-xs .trustreviews-review{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.trustreviews .trustreviews-row-xl .trustreviews-header+.trustreviews-content{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.trustreviews .trustreviews-row-l .trustreviews-header+.trustreviews-content{-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content{-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.trustreviews .trustreviews-row-s .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-x .trustreviews-header,.trustreviews .trustreviews-row-x .trustreviews-header+.trustreviews-content,.trustreviews .trustreviews-row-x .trustreviews-review{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.trustreviews .trustreviews-row-m .trustreviews-header+.trustreviews-content .trustreviews-review,.trustreviews .trustreviews-row-s .trustreviews-header,.trustreviews .trustreviews-row-s .trustreviews-review{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.trustreviews .trustreviews-row-l .trustreviews-review,.trustreviews .trustreviews-row-m .trustreviews-header,.trustreviews .trustreviews-row-m .trustreviews-review{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.trustreviews .trustreviews-row-l .trustreviews-header,.trustreviews .trustreviews-row-xl .trustreviews-review{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.trustreviews .trustreviews-row-xl .trustreviews-header{-ms-flex:0 0 16.666666%;flex:0 0 16.666666%;max-width:16.666666%}.trustreviews .trustreviews-content{position:relative!important;min-width:0!important}.trustreviews .trustreviews-content-inner{position:relative!important}.trustreviews .trustreviews-header-inner,.trustreviews .trustreviews-review-inner{display:flex;flex-direction:column;gap:12px;position:relative!important;margin:0 10px!important;padding:16px!important;width:100%!important}.trustreviews:not(.wp-dark) .trustreviews-review-inner.trustreviews-backgnd{background:#fafafa!important}.trustreviews .trustreviews-review-inner.trustreviews-round{border-radius:12px!important}.trustreviews .trustreviews-review-inner.trustreviews-shadow{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-review-inner>svg{position:absolute!important;top:10px!important;right:10px!important;width:18px!important;height:18px!important}.trustreviews .trustreviews-reviews{display:flex!important;display:-ms-flexbox!important;overflow:hidden!important;scrollbar-width:none}.trustreviews .trustreviews-reviews::-webkit-scrollbar{display:none!important}.trustreviews .trustreviews-review{display:flex;position:relative!important;justify-content:center!important;align-items:center!important;flex-shrink:0!important}.trustreviews .trustreviews-controls{position:absolute!important;top:50%!important;width:100%!important}.trustreviews .trustreviews-btns{position:absolute!important;height:33px!important;width:33px!important;text-align:center!important;cursor:pointer!important;border-radius:50%!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-btns svg path{fill:#aaa}.trustreviews .trustreviews-btns:hover svg path{fill:#555!important}.trustreviews .trustreviews-btns.trustreviews-prev{left:0!important;margin-left:-5px!important}.trustreviews .trustreviews-btns.trustreviews-next{right:0!important;margin-right:-5px!important}.trustreviews .trustreviews-dots{position:absolute!important;left:50%!important;display:flex!important;gap:12px!important;align-items:center!important;transform:translate(-50%,0)!important;text-align:center!important}.trustreviews .trustreviews-dot{display:inline-block!important;width:6px!important;height:6px!important;background:#ccc!important;border-radius:20px!important;cursor:pointer!important;opacity:.4!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-dot:hover{opacity:1!important}.trustreviews .trustreviews-dot.active{width:8px!important;height:8px!important;opacity:1!important;background:#427fed!important}.trustreviews .trustreviews-review .trustreviews-left{display:block!important;overflow:visible!important;white-space:nowrap!important;text-overflow:ellipsis!important;line-height:24px!important}.trustreviews .trustreviews-review .trustreviews-stars{margin:15px 0 7px!important}.trustreviews .trustreviews-review .trustreviews-feedback{height:100px!important;overflow-y:auto!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar{width:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3)!important;-webkit-border-radius:4px!important;border-radius:4px!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:#ccc!important;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.5)!important}.trustreviews .trustreviews-review .trustreviews-feedback::-webkit-scrollbar-thumb:window-inactive{background:#ccc!important}.trustreviews .trustreviews-wr{display:flex}.trustreviews .trustreviews-wr a{color:#fff!important;padding:4px 12px 8px!important;outline:0!important;border-radius:27px!important;background:#0a6cff!important;white-space:nowrap!important;text-shadow:1px 1px 0 #888!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)!important;user-select:none!important;transition:all .2s ease-in-out!important}.trustreviews .trustreviews-wr a:hover{background:#1f67e7!important;box-shadow:0 0 2px rgba(0,0,0,.12),0 3px 5px rgba(0,0,0,.24)!important}.trustreviews .trustreviews-wr a:active{background:#0a6cff!important;box-shadow:none!important}.trustreviews .trustreviews-wr a svg{display:inline-block;width:16px;height:16px;padding:1px;margin:0 0 0 4px;background:#fff;border-radius:50%}.trustreviews[data-layout=slider] .trustreviews-reviews{margin:0 20px!important;padding:10px 0 15px!important;overflow-x:scroll!important;flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;scroll-snap-type:x mandatory!important;scroll-behavior:smooth!important;-webkit-overflow-scrolling:touch!important}.trustreviews[data-layout=slider] .trustreviews-review{scroll-snap-align:start!important;transform-origin:center center!important;transform:scale(1)!important;transition:transform .5s!important}.trustreviews[data-layout=grid] .trustreviews-reviews{margin:10px!important;padding:0!important;flex-wrap:wrap!important;-ms-flex-wrap:wrap!important}.trustreviews[data-layout=grid] .trustreviews-review-inner{margin:10px!important}.trustreviews[data-layout=grid] .trustreviews-header-inner{margin:0 10px!important;padding:0!important}<?php } ?>.{slg}-hide{display:none!important}</style></span>
    5152        </div>
    5253        <?php
     
    7071            <div class="{slg}-header">
    7172                <div class="{slg}-header-inner">
    72                     <div class="{slg}-place<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?>">
     73                    <div class="{slg}-flex<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?>" style="--gap:12px;--dir:row;">
    7374                    <?php $this->place(
    7475                        $businesses[0]->rating,
     
    112113        <div class="{slg}-header">
    113114            <div class="{slg}-header-inner">
    114                 <div class="{slg}-place<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?>">
     115                <div class="{slg}-flex<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?>" style="--gap:12px;--dir:row;">
    115116                <?php $this->place(
    116117                    $businesses[0]->rating,
     
    165166        ?>
    166167        <div class="{slg}-list">
    167             <?php foreach ($businesses as $business) { ?>
    168             <div class="{slg}-place<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?>">
    169             <?php $this->place(
    170                 $business->rating,
    171                 $business,
    172                 $business->photo,
    173                 $reviews,
    174                 $options
    175             ); ?>
    176             </div>
    177             <?php }
    178             if (!$options->hide_reviews) { ?>
     168            <div class="{slg}-flex" style="--dir:row;--align:center;--gap:12px;--wrap:wrap">
     169                <?php foreach ($businesses as $business) { ?>
     170                <div class="{slg}-place<?php if ($options->header_center) { ?> {slg}-place-center<?php } ?> {slg}-flex" style="--dir:row;--align:star;--gap:12px">
     171                <?php $this->place(
     172                    $business->rating,
     173                    $business,
     174                    $business->photo,
     175                    $reviews,
     176                    $options
     177                ); ?>
     178                </div>
     179                <?php } ?>
     180            </div>
     181            <?php if (!$options->hide_reviews) { ?>
    179182            <div class="{slg}-content-inner">
    180183                <?php $this->place_reviews($reviews, $options, $is_admin); ?>
     
    188191        ?>
    189192        <?php if (!$options->header_hide_photo) { ?>
    190         <div class="{slg}-left">
    191             <img src="<?php echo esc_url($place_img); ?>" alt="<?php echo esc_attr($place->name); ?>" width="50" height="50" title="<?php echo esc_attr($place->name); ?>">
    192         </div>
     193        <img src="<?php echo esc_url($place_img); ?>" class="{slg}-img" alt="<?php echo esc_attr($place->name); ?>" width="50" height="50" title="<?php echo esc_attr($place->name); ?>">
    193194        <?php } ?>
    194         <div class="{slg}-right">
     195        <div class="{slg}-flex" data-platform="<?php echo $place->provider; ?>" style="--dir:column;--gap:8px">
    195196            <?php if (!$options->header_hide_name) { ?>
    196197            <div class="{slg}-name">
     
    200201            <?php } ?>
    201202
    202             <?php $this->place_rating($rating, $place->review_count, $options->hide_based_on); ?>
     203            <?php $this->place_rating($rating, $place->review_count, $place->provider, $options->hide_based_on); ?>
    203204
    204205            <?php if ($show_powered) { $this->powered($place, $options); } ?>
     
    215216    }
    216217
    217     function place_rating($rating, $review_count, $hide_based_on) {
    218         ?>
    219         <div>
    220             <span class="{slg}-rating"><?php echo $rating; ?></span>
    221             <span class="{slg}-stars"><?php $this->stars($rating); ?></span>
     218    function place_rating($rating, $review_count, $provider, $hide_based_on) {
     219        ?>
     220        <div class="{slg}-flex" style="--gap:0;--dir:row;--align:center">
     221            <?php $this->stars($rating, $provider, true) ?>
    222222        </div>
    223223        <?php if (!$hide_based_on && isset($review_count)) { ?>
     
    259259        <div class="{slg}-list-review<?php echo $addcls; ?><?php if ($hr) { echo ' {slg}-hide'; } ?>" data-rev="<?php echo $review->provider; ?>">
    260260            <?php if (!$options->hide_avatar) { ?>
    261             <div class="{slg}-left">
     261            <div class="{slg}-flex" style="--dir:row;--align:star;--gap:12px">
    262262                <?php
    263263                $default_avatar = Plugin::ASSETS_URL() . 'img/guest.png';
     
    271271                    $default_avatar = str_replace('s128', 's' . $options->reviewer_avatar_size, $default_avatar);
    272272                }
    273                 $this->image($author_img, $review->author_name, $options->lazy_load_img, $default_avatar);
     273                $this->image($author_img, '{slg}-img', $review->author_name, $options->lazy_load_img, $default_avatar);
    274274                ?>
    275             </div>
    276             <?php } ?>
    277             <div class="{slg}-right">
    278                 <?php
    279                 if (strlen($review->author_url) > 0) {
    280                     $this->anchor($review->author_url, '{slg}-name', $review->author_name, $options->open_link, $options->nofollow_link);
    281                 } else {
    282                     if (strlen($review->author_name) > 0) {
    283                         $author_name = $review->author_name;
     275                <div class="{slg}-flex" style="--dir:column;--align:star;--gap:4px">
     276                    <?php
     277                    if (strlen($review->author_url) > 0) {
     278                        $this->anchor($review->author_url, '{slg}-name', $review->author_name, $options->open_link, $options->nofollow_link);
    284279                    } else {
    285                         $author_name = __('Google User', Plugin::NAME);
     280                        if (strlen($review->author_name) > 0) {
     281                            $author_name = $review->author_name;
     282                        } else {
     283                            $author_name = __('Google User', Plugin::NAME);
     284                        }
     285                        ?><div class="{slg}-name"><?php echo $author_name; ?></div><?php
    286286                    }
    287                     ?><div class="{slg}-name"><?php echo $author_name; ?></div><?php
    288                 }
    289                 ?>
    290                 <div class="{slg}-time" data-time="<?php echo $review->time; ?>"><?php echo esc_html(gmdate("H:i d M y", (int)$review->time)); ?></div>
    291                 <div class="{slg}-feedback">
    292                     <span class="{slg}-stars"><?php echo $this->stars($review->rating); ?></span>
    293                     <span class="{slg}-text"><?php echo $this->trim_text($review->text, $options->text_size); ?></span>
    294                 </div>
    295                 <?php if ($is_admin) {
    296                     echo '<a href="#" class="wp-review-hide" data-id=' . $review->id . '>' . ($review->hide == '' ? 'Hide' : 'Show') . ' review</a>';
    297                 } ?>
    298             </div>
     287                    ?>
     288                    <div class="{slg}-time" data-time="<?php echo $review->time; ?>"><?php echo esc_html(gmdate("H:i d M y", (int)$review->time)); ?></div>
     289                    <div class="{slg}-feedback">
     290                        <?php echo $this->stars($review->rating, $review->provider); ?>
     291                        <span class="{slg}-text"><?php echo $this->trim_text($review->text, $options->text_size); ?></span>
     292                    </div>
     293                    <?php if ($is_admin && !empty($review->id)) {
     294                        echo '<a href="#" class="wp-review-hide" data-id=' . $review->id . '>' . ($review->hide == '' ? 'Hide' : 'Show') . ' review</a>';
     295                    } ?>
     296                </div>
     297            </div>
     298            <?php } ?>
    299299        </div>
    300300        <?php
     
    309309        <div class="{slg}-review<?php if ($hr) { echo ' {slg}-hide'; } ?>" data-rev="<?php echo $review->provider; ?>">
    310310            <div class="{slg}-review-inner<?php echo $addcls; ?>">
    311                 <div class="{slg}-left">
     311                <div class="{slg}-flex" style="--gap:12px;--dir:row;--align:center">
    312312                    <?php
    313313                    // Google reviewer avatar
     
    322322                        $default_avatar = str_replace('s128', 's' . $options->reviewer_avatar_size, $default_avatar);
    323323                    }
    324                     $this->image($author_img, $review->author_name, $options->lazy_load_img, $default_avatar);
    325 
    326                     // Google reviewer name
    327                     if (strlen($review->author_url) > 0) {
    328                         $this->anchor($review->author_url, '{slg}-name', $review->author_name, $options->open_link, $options->nofollow_link);
    329                     } else {
    330                         if (strlen($review->author_name) > 0) {
    331                             $author_name = $review->author_name;
     324                    $this->image($author_img, '{slg}-img', $review->author_name, $options->lazy_load_img, $default_avatar);
     325                    ?><div class="{slg}-flex" style="--gap:6px;--dir:column;--align:star;--overflow:hidden"><?php
     326                        // Google reviewer name
     327                        if (strlen($review->author_url) > 0) {
     328                            $this->anchor($review->author_url, '{slg}-name', $review->author_name, $options->open_link, $options->nofollow_link);
    332329                        } else {
    333                             $author_name = __('Google User', Plugin::NAME);
     330                            if (strlen($review->author_name) > 0) {
     331                                $author_name = $review->author_name;
     332                            } else {
     333                                $author_name = __('Google User', Plugin::NAME);
     334                            }
     335                            ?><div class="{slg}-name"><?php echo $author_name; ?></div><?php
    334336                        }
    335                         ?><div class="{slg}-name"><?php echo $author_name; ?></div><?php
    336                     }
    337                     ?>
    338                     <div class="{slg}-time" data-time="<?php echo $review->time; ?>"><?php echo esc_html(gmdate("H:i d M y", (int)$review->time)); ?></div>
    339                 </div>
    340                 <div class="{slg}-stars"><?php echo $this->stars($review->rating); ?></div>
     337                        ?>
     338                        <div class="{slg}-time" data-time="<?php echo $review->time; ?>"><?php echo esc_html(gmdate("H:i d M y", (int)$review->time)); ?></div>
     339                    </div>
     340                </div>
     341                <?php echo $this->stars($review->rating, $review->provider); ?>
    341342                <div>
    342343                    <div class="{slg}-feedback" <?php if (strlen($options->slider_text_height) > 0) {?> style="height:<?php echo $options->slider_text_height; ?>!important"<?php } ?>>
     
    345346                        <?php } ?>
    346347                    </div>
    347                     <?php if ($is_admin && isset($review->id)) {
    348                         echo '<a href="#" class="wp-review-hide" data-id=' . $review->id . '>' . ($review->hide == '' ? 'Hide' : 'Show') . ' review</a>';
    349                     } ?>
    350                 </div>
    351                 <?php $this->social_logo($review->provider); ?>
     348                </div>
     349                <?php $this->social_logo($review->provider);
     350                if ($is_admin && isset($review->id)) {
     351                    echo '<a href="#" class="wp-review-hide" data-id=' . $review->id . '>' . ($review->hide == '' ? 'Hide' : 'Show') . ' review</a>';
     352                } ?>
    352353            </div>
    353354        </div>
     
    355356    }
    356357
    357     function stars($rating) {
    358         foreach (array(1,2,3,4,5) as $val) {
    359             $score = $rating - $val;
    360             if ($score >= 0) {
    361                 ?><svg width="22" height="22" viewBox="0 0 24 24"><use xlink:href="#{slg}-star"/></svg><?php
    362             } else if ($score > -1 && $score < 0) {
    363                 ?><svg width="22" height="22" viewBox="0 0 24 24"><use xlink:href="#{slg}-star-o" style="stroke:currentColor;stroke-width:1.5"/><use href="#{slg}-star-half" clip-path="url(#{slg}-clip-half)"/></svg><?php
    364             } else {
    365                 ?><svg width="22" height="22" viewBox="0 0 24 24"><use xlink:href="#{slg}-star-o" style="stroke:#ccc;stroke-width:1.5"/></svg><?php
    366             }
     358    function stars($rating, $provider = '', $rat_star = false) {
     359        switch ($provider) {
     360            case 'facebook':
     361                if ($rat_star) {
     362                    if ($rat_star) {
     363                        ?><span class="rpi-star" data-rating="<?php echo $rating; ?>"></span><?php
     364                    }
     365                    ?><span class="rpi-stars" style="--rating:<?php echo $rating; ?>"></span><?php
     366                } else {
     367                    $text = ($rating < 2 ? "doesn't" : "") . ' recommends';
     368                    ?><span class="rpi-star-fb" data-rating="<?php echo $rating; ?>"><?php echo $text; ?></span><?php
     369                }
     370                break;
     371            case 'yelp':
     372            case 'tripadvisor':
     373                $data_atts = ' data-stars="' . floor($rating * 2) / 2 . '"';
     374                $data_atts .= $rat_star ? ' data-rating="' . $rating . '"' : '';
     375                ?><span class="rpi-stars-<?php echo $provider; ?>"<?php echo $data_atts; ?>><i></i><i></i><i></i><i></i><i></i></span><?php
     376                break;
     377            default:
     378                if ($rat_star) {
     379                    ?><span class="rpi-star" data-rating="<?php echo $rating; ?>"></span><?php
     380                }
     381                ?><span class="rpi-stars" style="--rating:<?php echo $rating; ?>"></span><?php
    367382        }
    368383    }
     
    381396    private function social_logo($prov) {
    382397        switch ($prov) {
    383             case 'google':
    384                 $this->google_logo();
    385                 break;
    386             case 'facebook':
    387                 $this->facebook_logo();
    388                 break;
    389             case 'yelp':
    390                 $this->yelp_logo();
    391                 break;
     398            case 'google'      : $this->google_logo();      break;
     399            case 'facebook'    : $this->facebook_logo();    break;
     400            case 'yelp'        : $this->yelp_logo();        break;
     401            case 'tripadvisor' : $this->tripadvisor_logo(); break;
    392402        }
    393403    }
     
    405415    }
    406416
     417    private function tripadvisor_logo() {
     418        ?><svg viewBox="0 0 132 86" width="44" height="44" class="{slg}-ta"><use xlink:href="#{slg}-logo-ta"/></svg><?php
     419    }
     420
    407421    private function powered($biz, $opt) {
    408         ?><div class="{slg}-powered" data-platform="<?php echo $biz->provider; ?>"><?php
     422        ?><div class="{slg}-powered {slg}-flex" data-platform="<?php echo $biz->provider; ?>" style="--gap: 2px;--dir:row;--align:center"><?php
    409423        switch ($biz->provider) {
    410424            case 'google':
     
    416430            case 'yelp':
    417431                ?>powered by <?php echo $this->anchor($biz->url, '', '<img src="' . Plugin::ASSETS_URL() . 'img/yelp-logo.png" alt="Yelp logo" width="60" height="31" title="Yelp logo">', $opt->open_link, $opt->nofollow_link); ?><?php
     432                break;
     433            case 'tripadvisor':
     434                ?>powered by <span>TripAdvisor</span><?php
    418435                break;
    419436        }
     
    429446    }
    430447
    431     function image($src, $alt, $lazy, $def_ava = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', $atts = '') {
    432         $src = esc_url($src);
    433         $alt = esc_attr($alt);
    434         $def_ava = esc_url($def_ava);
    435         ?><img src="<?php echo $src; ?>" <?php if ($lazy) { ?>loading="lazy"<?php } ?> alt="<?php echo $alt; ?>" onerror="this.onerror=null;this.src='<?php echo $def_ava; ?>';" <?php echo $atts; ?>><?php
     448    function image($src, $cls = '', $alt, $lazy, $def_ava = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', $atts = '') {
     449        ?><img src="<?php echo esc_url($src); ?>" <?php if ($lazy) { ?>loading="lazy"<?php } ?> class="<?php echo esc_attr($cls); ?>" alt="<?php echo esc_attr($alt); ?>" onerror="this.onerror=null;this.src='<?php echo esc_url($def_ava); ?>';" <?php echo $atts; ?>><?php
    436450    }
    437451
  • fb-reviews-widget/trunk/includes/core/class-connect-google.php

    r3251386 r3439940  
    1313
    1414    private $helper;
    15 
    16     public function __construct(Helper $helper) {
     15    private $google_dao;
     16    private $connect_helper;
     17
     18    public function __construct(Helper $helper, Google_Dao $google_dao, Connect_Helper $connect_helper) {
    1719        $this->helper = $helper;
     20        $this->google_dao = $google_dao;
     21        $this->connect_helper = $connect_helper;
    1822
    1923        add_action('wp_ajax_' . Plugin::SLG . '_hide_review', array($this, 'hide_review'));
     
    4448                // Cache clear
    4549                if ($_POST['feed_id']) {
    46                     delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $_POST['feed_id'] . '_reviews', false);
     50                    delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $_POST['feed_id'] . '_reviews');
    4751                } else {
    4852                    $feed_ids = get_option(Plugin::SLG . '_feed_ids');
     
    5054                        $ids = explode(",", $feed_ids);
    5155                        foreach ($ids as $id) {
    52                             delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $id . '_reviews', false);
     56                            delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $id . '_reviews');
    5357                        }
    5458                    }
     
    6468
    6569    public function connect_google() {
    66         if (current_user_can('manage_options')) {
    67             if (isset($_POST['_wpnonce']) === false) {
    68                 $error = __('Unable to call request. Make sure you are accessing this page from the Wordpress dashboard.', Plugin::NAME);
    69                 $response = compact('error');
    70             } else {
    71                 check_admin_referer(Plugin::SLG . '_wpnonce');
    72 
    73                 if (isset($_POST['key'])) {
    74                     $key = sanitize_text_field(wp_unslash($_POST['key']));
    75                     if (strlen($key) > 0) {
    76                         update_option(Plugin::SLG . '_google_api_key', $key);
    77                     }
    78                 }
    79                 $google_api_key = get_option(Plugin::SLG . '_google_api_key');
    80 
    81                 $id = sanitize_text_field(wp_unslash($_POST['id']));
    82                 $lang = sanitize_text_field(wp_unslash($_POST['lang']));
    83                 $local_img = sanitize_text_field(wp_unslash($_POST['local_img']));
    84                 $token = sanitize_text_field(wp_unslash($_POST['token']));
    85 
    86                 if ($google_api_key && strlen($google_api_key) > 0) {
    87                     $url = $this->api_url($id, $google_api_key, $lang);
    88                 } else {
    89                     $url = 'https://app.trustembed.com/grc/details/json?pid=' . $id . '&token=' . $token .
    90                            '&siteurl=' . get_option('siteurl') . '&authcode=' . get_option(Plugin::SLG . '_auth_code');
    91 
    92                     /*$url = Plugin::G_APP_URL . '/get/json' .
    93                            '?siteurl=' . get_option('siteurl') .
    94                            '&authcode=' . get_option(Plugin::SLG . '_auth_code') .
    95                            '&pid=' . $id;*/
    96                     if ($lang && strlen($lang) > 0) {
    97                         $url = $url . '&lang=' . $lang;
    98                     }
    99                 }
    100 
    101                 $res = wp_remote_get($url);
    102                 $body = wp_remote_retrieve_body($res);
    103                 $body_json = json_decode($body);
    104 
    105                 if ($body_json && isset($body_json->result)) {
    106 
    107                     if ($google_api_key && strlen($google_api_key) > 0) {
    108                         $photo = $this->business_avatar($body_json->result, $google_api_key);
    109                         $body_json->result->business_photo = $photo;
    110                     }
    111 
    112                     $this->save_google_reviews($body_json->result, $local_img);
    113 
    114                     $result = array(
    115                         'id'      => $body_json->result->place_id,
    116                         'name'    => $body_json->result->name,
    117                         'photo'   => isset($body_json->result->business_photo) && strlen($body_json->result->business_photo)
    118                                          ? $body_json->result->business_photo : Plugin::G_BIZ_LOGO(),
    119                         'reviews' => $body_json->result->reviews
    120                     );
    121                     $status = 'success';
    122 
    123                     if ($_POST['feed_id']) {
    124                         delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $_POST['feed_id'] . '_reviews', false);
    125                     }
    126                 } else {
    127                     $result = $body_json;
    128                     $status = 'failed';
    129                 }
    130                 $response = compact('status', 'result');
    131             }
    132             header('Content-type: text/javascript');
    133             echo json_encode($response);
    134             die();
    135         }
     70        if (!current_user_can('manage_options')) {
     71            return;
     72        }
     73
     74        $response = array(
     75            'status' => 'failed',
     76            'result' => null,
     77            'error'  => null,
     78            'quota'  => null,
     79        );
     80
     81        if (!isset($_POST['_wpnonce'])) {
     82            $response['error'] = __('Unable to call request. Make sure you are accessing this page from the Wordpress dashboard.', Plugin::NAME);
     83            wp_send_json($response);
     84        }
     85
     86        check_admin_referer(Plugin::SLG . '_wpnonce');
     87
     88        if (isset($_POST['key'])) {
     89            $key = sanitize_text_field(wp_unslash($_POST['key']));
     90            if (strlen($key) > 0) {
     91                update_option(Plugin::SLG . '_google_api_key', $key);
     92            }
     93        }
     94
     95        $google_api_key = get_option(Plugin::SLG . '_google_api_key');
     96        $lang = sanitize_text_field(wp_unslash($_POST['lang']));
     97        $local_img = sanitize_text_field(wp_unslash($_POST['local_img']));
     98
     99        if ($google_api_key && strlen($google_api_key) > 0) {
     100            $id = sanitize_text_field(wp_unslash($_POST['id']));
     101            $url = $this->api_url($id, $google_api_key, $lang);
     102            $res = wp_remote_get($url);
     103        } else {
     104            $params = array(
     105                'url' => isset($_POST['map_url']) ? wp_unslash($_POST['map_url']) : '',
     106            );
     107
     108            if (!empty($lang)) {
     109                $params['lang'] = $lang;
     110            }
     111
     112            $res = wp_remote_post('https://app.trustembed.com/connect/reviews', array(
     113                'body' => $params
     114            ));
     115        }
     116
     117        if (is_wp_error($res)) {
     118            $response['error'] = $res->get_error_message();
     119            wp_send_json($response);
     120        }
     121
     122        $body = wp_remote_retrieve_body($res);
     123        $body_json = json_decode($body);
     124
     125        if (!$body_json) {
     126            $response['error'] = 'Invalid JSON response';
     127            wp_send_json($response);
     128        }
     129
     130        $response['error'] = isset($body_json->error) ? $body_json->error : null;
     131        $response['quota'] = isset($body_json->quota) ? $body_json->quota : null;
     132
     133        if (isset($body_json->result)) {
     134            if ($google_api_key && strlen($google_api_key) > 0) {
     135                $photo = $this->business_avatar($body_json->result, $google_api_key);
     136                $body_json->result->business_photo = $photo;
     137            }
     138
     139            $this->save_google_reviews($body_json->result, $local_img);
     140
     141            $response['result'] = array(
     142                'id'      => $body_json->result->place_id,
     143                'name'    => $body_json->result->name,
     144                'photo'   => empty($body_json->result->photo) ? Plugin::G_BIZ_LOGO() : $body_json->result->photo,
     145                'photo2'  => empty($body_json->result->business_photo) ? Plugin::G_BIZ_LOGO() : $body_json->result->business_photo,
     146                'reviews' => isset($body_json->result->reviews) ? $body_json->result->reviews : array(),
     147            );
     148
     149            $response['status'] = 'success';
     150
     151            if (!empty($_POST['feed_id'])) {
     152                delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . sanitize_text_field(wp_unslash($_POST['feed_id'])) . '_reviews');
     153            }
     154        }
     155
     156        wp_send_json($response);
    136157    }
    137158
     
    150171            $url = $this->api_url($pid, $google_api_key, $reviews_lang, 'newest');
    151172
    152         } else {
     173        } /*else {
    153174
    154175            $url = 'https://app.trustembed.com/grc/details/json?pid=' . $id . '&token=' . $token .
    155176                   '&siteurl=' . get_option('siteurl') . '&authcode=' . get_option(Plugin::SLG . '_auth_code') . '&time=' . time();
    156177
    157             /*$url = Plugin::G_APP_URL . '/update/json' .
    158                    '?siteurl=' . get_option('siteurl') .
    159                    '&authcode=' . get_option(Plugin::SLG . '_auth_code') .
    160                    '&pid=' . $pid .
    161                    '&time=' . time();*/
    162178            if ($reviews_lang && strlen($reviews_lang) > 0) {
    163179                $url = $url . '&lang=' . $reviews_lang;
    164180            }
    165         }
     181        }*/
    166182
    167183        if (strlen($url) > 0) {
     
    240256
    241257                    if ($_POST['feed_id']) {
    242                         delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $_POST['feed_id'] . '_reviews', false);
     258                        delete_transient(Plugin::SLG . '_feed_' . Plugin::VER . '_' . $_POST['feed_id'] . '_reviews');
    243259                    }
    244260                } else {
     
    256272    function save_google_reviews($place, $local_img) {
    257273        $place->pid = $place->place_id;
    258         $place->photo = isset($place->business_photo) ? $place->business_photo : Plugin::G_BIZ_LOGO();
    259274        $place->review_count = $place->user_ratings_total;
     275        $place->photo = $this->google_dao->get_place_photo($place, $local_img);
    260276        $place->address = isset($place->formatted_address) ? $place->formatted_address : '';
    261277        foreach ($place->reviews as $review) {
    262278            $review->author_img = $review->profile_photo_url;
    263279        }
    264         $this->save_reviews($place, $local_img, 'google');
     280        $this->google_dao->save($place, $local_img);
    265281    }
    266282
    267283    function save_yelp_reviews($place, $local_img) {
     284        $platform = 'yelp';
    268285        $place->pid = $place->id;
     286        $place->platform = $platform;
    269287        foreach ($place->reviews as $review) {
    270288            $review->time = strtotime($review->time_created);
     
    272290            $review->author_img = $review->user->image_url;
    273291            $review->author_url = $review->user->profile_url;
    274         }
    275         $this->save_reviews($place, $local_img, 'yelp');
    276     }
    277 
    278     function save_reviews($place, $local_img, $platform) {
     292            $review->platform = $platform;
     293        }
     294        $this->google_dao->save($place, $local_img);
     295    }
     296
     297    /*function save_reviews($place, $local_img, $platform) {
    279298        global $wpdb;
    280299
     
    286305        );
    287306
     307        if (empty($place->business_photo)) {
     308            $place_img = Plugin::G_BIZ_LOGO();
     309        } else {
     310            if ($local_img === true || $local_img == 'true') {
     311                $img_name = $place->pid . '_' . md5($place->name);
     312                $place_img = $this->upload_image($place->business_photo, $img_name);
     313            } else {
     314                $place_img = $place->business_photo;
     315            }
     316        }
     317
    288318        // Insert or update Google place
    289319        if ($biz_id) {
     
    301331                $update_params['review_count'] = $review_count;
    302332            }
    303             if (isset($place->photo) && strlen($place->photo) > 0) {
    304                 $update_params['photo'] = $place->photo;
     333            if (!empty($place_img)) {
     334                $update_params['photo'] = $place_img;
    305335            }
    306336            $wpdb->update($wpdb->prefix . Database::BUSINESS_TABLE, $update_params, array('ID' => $biz_id));
     
    340370                'pid'          => $place->pid,
    341371                'name'         => $place->name,
    342                 'photo'        => $place->photo,
     372                'photo'        => $place_img,
    343373                'address'      => $place->address,
    344374                'rating'       => $place_rating,
     
    434464            }
    435465        }
    436     }
     466    }*/
    437467
    438468    function api_url($placeid, $google_api_key, $reviews_lang = '', $reviews_sort = '') {
     
    458488                'https://maps.googleapis.com/maps/api/place/photo'
    459489            );
    460             return $this->upload_image($url, $response_result_json->place_id);
     490            return $this->connect_helper->upload_image($url, $response_result_json->place_id);
    461491        }
    462492        return null;
    463493    }
    464494
    465     function upload_image($url, $name) {
     495    /*function upload_image($url, $name) {
    466496        $res = wp_remote_get($url, array('timeout' => 8));
    467497
     
    482512        $upload = wp_upload_bits($filename, null, $bits);
    483513        return $upload['url'];
    484     }
     514    }*/
    485515
    486516}
  • fb-reviews-widget/trunk/includes/core/class-core.php

    r3406362 r3439940  
    152152
    153153            // Get reviews
    154             $reviews_where = $is_admin ? '' : ' AND hide = \'\'';
    155 
    156             $reviews_lang = strlen($biz->lang) > 0 ? $biz->lang : 'en';
    157             $reviews_where = $reviews_where . ' AND (language = \'' . $reviews_lang . '\' OR language = \'\' OR language IS NULL)';
    158 
    159             $revs = $wpdb->get_results(
    160                 $wpdb->prepare(
    161                     "SELECT * FROM " . $wpdb->prefix . Database::REVIEW_TABLE .
    162                     " WHERE biz_id = %d" . $reviews_where . " ORDER BY time DESC", $place->id
    163                 )
    164             );
     154            $hidden_ids  = array();
     155            $where_plain = $is_admin ? '' : " AND r2.hide = ''";
     156            $where_r     = $is_admin ? '' : " AND r.hide = ''";
     157
     158            if (isset($options->hidden) && !$is_admin) {
     159                $hidden_ids = $this->parse_hidden_ids($options->hidden);
     160                if (!empty($hidden_ids)) {
     161                    $hidden_phs   = implode(',', array_fill(0, count($hidden_ids), '%d'));
     162                    $where_plain .= ' AND r2.id NOT IN (' . $hidden_phs . ')';
     163                    $where_r     .= ' AND r.id NOT IN (' . $hidden_phs . ')';
     164                }
     165            }
     166
     167            if (empty($biz->lang)) {
     168
     169                $sql = "SELECT r.*
     170                        FROM {$wpdb->prefix}" . Database::REVIEW_TABLE . " r
     171                        WHERE r.biz_id = %d{$where_r}
     172                            AND r.author_url IS NOT NULL
     173                            AND NOT EXISTS (
     174                                SELECT 1
     175                                FROM {$wpdb->prefix}" . Database::REVIEW_TABLE . " r2
     176                                WHERE r2.biz_id = r.biz_id
     177                                    AND r2.author_url = r.author_url{$where_plain}
     178                                    AND (
     179                                        r2.time > r.time
     180                                        OR (r2.time = r.time AND r2.id > r.id)
     181                                    )
     182                            )
     183                        ORDER BY r.time DESC, r.id DESC";
     184
     185                $params = array_merge([$place->id], $hidden_ids, $hidden_ids);
     186
     187            } else {
     188
     189                $sql = "SELECT r2.*
     190                        FROM {$wpdb->prefix}" . Database::REVIEW_TABLE . " r2
     191                        WHERE r2.biz_id = %d{$where_plain} AND (r2.language = %s OR r2.language IS NULL)
     192                        ORDER BY r2.time DESC";
     193
     194                $params = array_merge([$place->id], $hidden_ids);
     195                $params[] = $biz->lang;
     196            }
     197
     198            $revs = $wpdb->get_results($wpdb->prepare($sql, $params));
    165199
    166200            // Setup photo
    167             $place->photo = strlen($biz->photo) > 0 ? $biz->photo : (strlen($place->photo) > 0 ? $place->photo : Plugin::G_BIZ_LOGO());
     201            $place->photo = empty($biz->photo) ? (empty($place->photo) ? Plugin::G_BIZ_LOGO() : $place->photo) : $biz->photo;
    168202
    169203            // Calculate reviews count
  • fb-reviews-widget/trunk/includes/core/class-database.php

    r3021668 r3439940  
    99    const BUSINESS_TABLE = Plugin::PFX . 'biz';
    1010
    11     const REVIEW_TABLE   = Plugin::PFX . 'review';
     11    const REVIEW_TABLE = Plugin::PFX . 'review';
    1212
    13     const STATS_TABLE    = Plugin::PFX . 'stats';
     13    const TEXT_TABLE = self::REVIEW_TABLE . '_text';
     14
     15    const STATS_TABLE = Plugin::PFX . 'stats';
    1416
    1517    public function create() {
     
    3032               "rating DOUBLE PRECISION,".
    3133               "url VARCHAR(255),".
     34               "map_url VARCHAR(512),".
    3235               "website VARCHAR(255),".
    3336               "review_count INTEGER,".
     
    3841               ") " . $charset_collate . ";";
    3942
    40         dbDelta($sql);
     43        $this->execsql($sql);
    4144
    4245        $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::REVIEW_TABLE . " (".
    4346               "id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,".
    4447               "biz_id BIGINT(20) UNSIGNED NOT NULL,".
     48               "review_id VARCHAR(64) NOT NULL,".
    4549               "rating INTEGER NOT NULL,".
    46                "text VARCHAR(10000),".
     50               "text TEXT,".
    4751               "time INTEGER NOT NULL,".
    4852               "url VARCHAR(255),".
     
    5155               "author_url VARCHAR(255),".
    5256               "author_img VARCHAR(255),".
     57               "images TEXT,".
     58               "reply TEXT,".
     59               "reply_time INTEGER,".
    5360               "platform VARCHAR(127),".
    5461               "hide VARCHAR(1) DEFAULT '' NOT NULL,".
     
    5764               ") " . $charset_collate . ";";
    5865
    59         dbDelta($sql);
     66        $this->execsql($sql);
     67
     68        $this->create_text_table();
    6069
    6170        $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::STATS_TABLE . " (".
     
    6978               ") " . $charset_collate . ";";
    7079
     80        $this->execsql($sql);
     81    }
     82
     83    public function create_text_table() {
     84        global $wpdb;
     85
     86        $charset_collate = $wpdb->get_charset_collate();
     87
     88        $sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix . self::TEXT_TABLE . " (".
     89               "id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,".
     90               "review_id VARCHAR(64) NOT NULL,".
     91               "lang VARCHAR(10) NOT NULL,".
     92               "text TEXT,".
     93               "PRIMARY KEY (`id`),".
     94               "UNIQUE INDEX " . Plugin::PFX . "review_lang_idx (`review_id`, `lang`),".
     95               "INDEX idx_review_id (`review_id`)".
     96               ") " . $charset_collate . ";";
     97
     98        $this->execsql($sql);
     99    }
     100
     101    public function migrate_review_texts() {
     102        global $wpdb;
     103
     104        $text_table = $wpdb->prefix . self::TEXT_TABLE;
     105        $rev_table  = $wpdb->prefix . self::REVIEW_TABLE;
     106
     107        $wpdb->query(
     108            "INSERT INTO {$text_table} (review_id, lang, text)
     109             SELECT
     110                 r.review_id,
     111                 r.language AS lang,
     112                 r.text
     113             FROM {$rev_table} r
     114             WHERE r.text IS NOT NULL AND r.text <> ''
     115               AND r.review_id IS NOT NULL AND r.review_id <> ''
     116               AND r.language IS NOT NULL AND r.language <> ''
     117               AND (r.hide IS NULL OR r.hide <> '1')
     118             ON DUPLICATE KEY UPDATE text = VALUES(text)"
     119        );
     120
     121        $this->log_error($wpdb->last_error);
     122    }
     123
     124    private function execsql($sql) {
     125        global $wpdb;
     126
     127        if (!function_exists('dbDelta')) {
     128            require_once ABSPATH . 'wp-admin/includes/upgrade.php';
     129        }
     130
    71131        dbDelta($sql);
     132
     133        $this->log_error($wpdb->last_error);
    72134    }
    73135
    74136    public function drop() {
    75137        global $wpdb;
    76 
    77         $wpdb->query("DROP TABLE " . $wpdb->prefix . self::BUSINESS_TABLE . ";");
    78         $wpdb->query("DROP TABLE " . $wpdb->prefix . self::REVIEW_TABLE . ";");
    79         $wpdb->query("DROP TABLE " . $wpdb->prefix . self::STATS_TABLE . ";");
     138        $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . self::BUSINESS_TABLE . ";");
     139        $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . self::REVIEW_TABLE . ";");
     140        $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . self::TEXT_TABLE . ";");
     141        $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . self::STATS_TABLE . ";");
    80142    }
    81143
     144    private function log_error($last_error) {
     145        if (isset($last_error) && strlen($last_error) > 0) {
     146            $now = (int) floor(microtime(true) * 1000);
     147            update_option(Plugin::SLG . '_last_error', $now . ': ' . $last_error);
     148        }
     149    }
    82150}
  • fb-reviews-widget/trunk/readme.txt

    r3406362 r3439940  
    11=== Reviews Widget for Google, Yelp & Recommendations ===
    22Contributors: widgetpack
    3 Tags: reviews, google reviews, yelp reviews, facebook recommendations, widget
    4 Requires at least: 3.0.1
     3Tags: reviews, google reviews, facebook, tripadvisor, yelp reviews
     4Requires PHP: 5.2
     5Requires at least: 4.7
    56Tested up to: 6.9
    6 Stable tag: 2.6
    7 Requires PHP: 5.2
     7Stable tag: 2.7
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 Combine Google reviews, Yelp reviews and Facebook Recommendations in a single widget, block or shortcode. Build a trusted website!
     11Combine Facebook Recommendations, Google, Yelp and TripAdvisor reviews in a single widget, block or shortcode. Build a trusted website!
    1212
    1313== Description ==
    1414
    15 ⭐ **Reviews Widget for Google, Yelp & Facebook** is a simple and powerful WordPress plugin that displays real customer reviews from three major platforms into combined feed.
    16 
    17 ---
    18 
    19 ## ⭐ Unified feed — Google + Yelp + Facebook together
    20 
    21 📌 This plugin brings together reviews from **Google**, **Yelp**, and **Facebook Recommendations** into a single combined feed.
     15⭐ **Reviews Widget for Facebook, Google, Yelp & TripAdvisor** is a simple and powerful WordPress plugin that displays real customer reviews from major platforms into combined feed.
     16
     17---
     18
     19## ⭐ Unified feed — Google + Facebook + Yelp + TripAdvisor together!
     20
     21📌 This plugin brings together reviews from **Facebook Recommendations**, **Google**, **Yelp**, and **TripAdvisor** into a single combined feed.
    2222📌 You no longer need separate plugins for each platform — everything is managed in one place using one widget, one shortcode and one settings panel.
    2323📌 This reduces setup time, avoids plugin conflicts and keeps your site lighter and easier to manage.
     
    190190== Changelog ==
    191191
     192= 2.7 =
     193* Major rewrite of the plugin architecture
     194* New Google reviews connection wizard
     195* Added support for Facebook recommendations with platform icons
     196* Improved and stabilized Yelp reviews integration
     197* Added support for TripAdvisor reviews
     198* Ability to combine reviews from multiple platforms into a single feed or separately
     199* Fully redesigned reviews data structure with multilingual text support
     200* Complete refactor of frontend styles
     201* Performance improvements
     202* Major bug fixes
     203
    192204= 2.6 =
    193205* Updated star icons for better clarity and consistency
Note: See TracChangeset for help on using the changeset viewer.