WP Recipe Maker - Version 1.27.0

Version Description

  • Feature: Create and update recipes via REST API
  • Improvement: Only show automatically added snippets on singular pages
  • Improvement: Only show warning when changes have actually been made
  • Improvement: Introduction video on the welcome page
  • Fix: Status of recipes in scheduled posts
  • Fix: Show correct plural or singular form for hours
  • Fix: Prevent PHP notice caused by metadata
Download this release

Release Info

Developer BrechtVds
Plugin Icon 128x128 WP Recipe Maker
Version 1.27.0
Comparing to
See all releases

Code changes from version 1.26.0 to 1.27.0

assets/css/admin/modal.min.css CHANGED
@@ -1 +1 @@
1
- .wprm-frame-title .dashicons,.wprm-frame.hide-router .wprm-frame-router,.wprm-modal-container{display:none}.wprm-giveaway-notice{border:1px solid #006400;background-color:rgba(0,255,0,.15);padding:10px;margin-bottom:10px}.wprm-easyrecipe-warning{display:none;border:1px solid #8b0000;background-color:rgba(255,0,0,.15);padding:10px 10px 0;margin-bottom:10px}.mce-floatpanel{z-index:100100!important}.select2_wprm-container{z-index:100075}.select2_wprm-container.select2_wprm-container--focus .select2_wprm-selection{border-color:#5b9dd9}.select2_wprm-container li{margin:0}.select2_wprm-container .select2_wprm-selection{border-color:#ddd}.medium-editor-anchor-preview,.medium-editor-toolbar{z-index:100080}.medium-editor-anchor-preview{font-size:12px}.medium-editor-element{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);min-height:68px;padding:3px 5px}.medium-editor-element:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.medium-editor-element:after{font-style:normal;color:#999;opacity:.5;font-size:14px;line-height:28px}.medium-editor-element p:first-child{margin-top:0}.medium-editor-element p:last-child{margin-bottom:0}.wprm-modal-hint{max-width:400px;margin-bottom:20px}.wprm-modal-hint .wprm-modal-hint-header{font-weight:700;font-variant:small-caps}.wprm-modal-hint .wprm-modal-hint-text{font-style:italic}.wprm-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:100000}.wprm-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:100050}.wprm-modal *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wprm-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wprm-modal-close .wprm-modal-icon:before{content:"\f158";font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.wprm-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wprm-modal-content ::-webkit-input-placeholder{color:#999;opacity:.5}.wprm-modal-content :-moz-placeholder{color:#999;opacity:.5}.wprm-modal-content ::-moz-placeholder{color:#999;opacity:.5}.wprm-modal-content :-ms-input-placeholder{color:#999;opacity:.5}.wprm-frame{overflow:hidden;right:0}.wprm-frame,.wprm-frame-menu{position:absolute;left:0;bottom:0;top:0}.wprm-frame-menu{width:200px;z-index:150}.wprm-frame-title{top:0;height:50px}.wprm-frame-router,.wprm-frame-title{z-index:200;left:200px;position:absolute;right:0}.wprm-menu-item{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.wprm-menu{position:absolute;left:0;margin:0;padding:10px 0;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;user-select:none}.wprm-menu-hidden{padding:5px 5px 0 10px;font-style:italic}.wprm-menu,.wprm-sidebar{top:0;bottom:0;background:#f3f3f3;right:0}.wprm-menu .active,.wprm-menu .active:hover{color:#23282d;font-weight:700}.wprm-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.wprm-button-action-save,.wprm-frame .hidden,.wprm-frame-content-tab:not(.active),.wprm-router:not(.active){display:none}.wprm-menu>a,.wprm-router>a{line-height:18px;font-size:14px;text-decoration:none}.wprm-frame a{border-bottom:none;color:#0073aa}.wprm-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.wprm-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.wprm-frame-router{top:50px;height:36px}.wprm-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.wprm-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px}.wprm-router a{-webkit-transition:none;transition:none}.wprm-router>a:last-child{border-right:0}.wprm-router .active,.wprm-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.wprm-router .active,.wprm-router .active:hover{color:#32373c}.wprm-frame-content{position:absolute;top:84px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.wprm-frame-toolbar,.wprm-toolbar{position:absolute;right:0;z-index:100;height:60px}.wprm-frame-content-tab{margin:20px}.wprm-frame-toolbar{left:200px;bottom:0}.wprm-toolbar{top:0;left:0;padding:0 16px;border:0 solid #ddd;overflow:hidden}.wprm-modal-content .wprm-toolbar-primary.search-form{width:33%}.wprm-toolbar-primary{float:right;height:100%}.wprm-modal-content .wprm-toolbar-primary .wprm-button{float:right}.wprm-toolbar-primary>.wprm-button,.wprm-toolbar-primary>.wprm-button-group{margin-left:10px;float:left;margin-top:15px}@media only screen and (max-width:900px){.wprm-frame:not(.hide-menu) .wprm-frame-title .dashicons{display:inline-block;line-height:50px}.wprm-frame:not(.hide-menu) .wprm-frame-menu{position:static;width:0}.wprm-frame:not(.hide-menu) .wprm-frame-content,.wprm-frame:not(.hide-menu) .wprm-frame-router,.wprm-frame:not(.hide-menu) .wprm-frame-title,.wprm-frame:not(.hide-menu) .wprm-frame-toolbar,.wprm-frame:not(.hide-menu) .wprm-menu.visible{left:0}.wprm-frame:not(.hide-menu) .wprm-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;left:-300px;right:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.wprm-frame:not(.hide-menu) .wprm-menu>a.active{display:none}.wprm-frame:not(.hide-menu) .wprm-menu>a{padding:12px 16px;font-size:16px}.wprm-frame:not(.hide-menu) .wprm-menu .separator{margin:5px 10px}.wprm-frame:not(.hide-menu) .wprm-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:left;cursor:pointer}}@media only screen and (max-width:640px),screen and (max-height:400px){.wprm-modal{position:fixed;top:0;left:0;right:0;bottom:0}.wprm-modal .wprm-frame-title{height:40px}}@media only screen and (max-width:480px){.wprm-frame:not(.hide-menu) .wprm-frame-title .dashicons{line-height:40px}.wprm-frame-router,.wprm-frame:not(.hide-menu) .wprm-menu{top:40px}.wprm-frame:not(.hide-menu) .wprm-frame-title h1,.wprm-modal .wprm-frame-title h1{font-size:18px;line-height:40px}.wprm-frame-content{top:74px}}.wprm-recipe-form{max-width:600px}.wprm-recipe-form .wprm-recipe-form-container{margin-bottom:15px;vertical-align:top}.wprm-recipe-form .wprm-recipe-form-container-halfs{display:inline-block;width:50%}.wprm-recipe-form .wprm-recipe-form-container-thirds{display:inline-block;width:33.3%}.wprm-recipe-form label{display:block;font-weight:700;margin-bottom:5px}.wprm-recipe-form input[type=text],.wprm-recipe-form input[type=number]{margin:0;width:100%;max-width:120px;height:34px;line-height:34px}.wprm-recipe-form input[type=text][type=number],.wprm-recipe-form input[type=number][type=number]{max-width:50px}.wprm-recipe-form input[type=text].select2_wprm-search__field,.wprm-recipe-form input[type=number].select2_wprm-search__field{height:18px;line-height:18px}.wprm-recipe-form select{width:100%}.wprm-recipe-form textarea{width:100%;resize:vertical}@media only screen and (max-width:480px){.wprm-recipe-form .wprm-recipe-form-container-halfs,.wprm-recipe-form .wprm-recipe-form-container-thirds{display:block;width:100%}}.wprm-recipe-import-text-form .import-text-buttons{margin-bottom:10px}.wprm-recipe-import-text-form .import-text-step{display:none}.wprm-recipe-import-text-form .import-text-step#import-text-step-input{display:block}.wprm-recipe-import-text-form #import-text-highlight-sandbox,.wprm-recipe-import-text-form .import-text-input{margin-top:10px}.wprm-recipe-import-text-form #import-text-ingredient-groups label,.wprm-recipe-import-text-form #import-text-instruction-groups label{display:inline;font-weight:400}.wprm-recipe-import-text-form .import-text-group-warning{margin-top:10px;display:none}.wprm-recipe-import-text-form #import-text-highlight-sandbox{display:none;max-height:400px;overflow:scroll;padding:10px;border:1px dashed #999}.wprm-loader,.wprm-loader:after,.wprm-loader:before{border-radius:50%;width:1.5em;height:1.5em;-webkit-animation:load7 1.8s infinite ease-in-out;animation:load7 1.8s infinite ease-in-out}.wprm-loader{display:none;color:#444;font-size:10px;margin:20px auto;position:relative;text-indent:-9999em;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.wprm-loader:after,.wprm-loader:before{content:'';position:absolute;top:0}.wprm-loader:before{left:-2.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.wprm-loader:after{left:2.5em}@-webkit-keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.wprm-recipe-details-form input#wprm-recipe-name{max-width:450px}.wprm-recipe-details-form input#wprm-recipe-author-link,.wprm-recipe-details-form input#wprm-recipe-author-name{max-width:none}.wprm-recipe-details-form input#wprm-recipe-calories{max-width:70px}.wprm-recipe-details-form .wprm-recipe-image-preview{float:right;max-width:100px}.wprm-recipe-details-form .wprm-recipe-image-preview img{max-width:100%;height:auto}.wprm-recipe-details-form .wprm-recipe-summary-container{clear:both}@media only screen and (max-width:480px){.wprm-recipe-details-form .wprm-recipe-image-preview{float:none;margin:10px auto}}.wprm-recipe-ingredients-form,.wprm-recipe-instructions-form{max-width:750px;margin-bottom:15px}.wprm-recipe-ingredients-form input,.wprm-recipe-instructions-form input{margin:0;width:100%;height:34px;line-height:34px}.wprm-recipe-ingredients-form textarea,.wprm-recipe-instructions-form textarea{width:100%;resize:vertical}.wprm-recipe-ingredients-form ::-webkit-input-placeholder,.wprm-recipe-instructions-form ::-webkit-input-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form :-moz-placeholder,.wprm-recipe-instructions-form :-moz-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form ::-moz-placeholder,.wprm-recipe-instructions-form ::-moz-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form :-ms-input-placeholder,.wprm-recipe-instructions-form :-ms-input-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form table,.wprm-recipe-instructions-form table{width:100%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th,.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th{text-align:left}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(1),.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(6),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(1),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(6){width:5%;text-align:center}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(2),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(2){width:10%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(3),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(3){width:15%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(4),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(4){width:40%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(5),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(5){width:25%}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th,.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th{text-align:left}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(1),.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(4),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(1),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(4){width:5%;text-align:center}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(2),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(2){width:65%}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(3),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(3){width:25%}.wprm-recipe-ingredients-form table .wprm-recipe-ingredients-placeholder,.wprm-recipe-ingredients-form table .wprm-recipe-instructions-placeholder,.wprm-recipe-instructions-form table .wprm-recipe-ingredients-placeholder,.wprm-recipe-instructions-form table .wprm-recipe-instructions-placeholder{display:none}.wprm-recipe-ingredients-form table td,.wprm-recipe-instructions-form table td{text-align:left;vertical-align:top}.wprm-recipe-ingredients-form table td:first-child,.wprm-recipe-ingredients-form table td:last-child,.wprm-recipe-instructions-form table td:first-child,.wprm-recipe-instructions-form table td:last-child{text-align:center;vertical-align:middle}.wprm-recipe-ingredients-form .ui-sortable-helper,.wprm-recipe-instructions-form .ui-sortable-helper{display:table}.wprm-recipe-ingredients-form .ui-sortable-helper .wprm-recipe-instruction-text,.wprm-recipe-instructions-form .ui-sortable-helper .wprm-recipe-instruction-text{min-width:200px}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort{cursor:move}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete{cursor:pointer}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort{color:#999;opacity:.5}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete:hover,.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort:hover,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete:hover,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort:hover{color:#444;opacity:1}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-actions,.wprm-recipe-ingredients-form .wprm-recipe-instructions-actions,.wprm-recipe-instructions-form .wprm-recipe-ingredients-actions,.wprm-recipe-instructions-form .wprm-recipe-instructions-actions{margin:10px}.wprm-recipe-ingredients-form .wprm-recipe-image-preview,.wprm-recipe-instructions-form .wprm-recipe-image-preview{max-width:75px}.wprm-recipe-ingredients-form .wprm-recipe-image-preview img,.wprm-recipe-instructions-form .wprm-recipe-image-preview img{max-width:100%;height:auto}.wprm-shortcode-builder .wprm-shortcode-builder-container{margin-bottom:15px;vertical-align:top}.wprm-shortcode-builder .wprm-shortcode-builder-container-halfs{display:inline-block;width:50%}.wprm-shortcode-builder .wprm-shortcode-builder-container-thirds{display:inline-block;width:33.3%}.wprm-shortcode-builder label{display:block;font-weight:700;margin-bottom:5px}.wprm-shortcode-builder .wprm-shortcode-builder-helper{margin-left:5px;font-size:.8em;font-style:italic}.wprm-shortcode-builder input{margin:0;width:100%;max-width:250px;height:34px;line-height:34px}.wprm-shortcode-builder input.select2_wprm-search__field{height:18px;line-height:18px}.wprm-shortcode-builder select{width:250px}
1
+ .wprm-frame-title .dashicons,.wprm-frame.hide-router .wprm-frame-router,.wprm-modal-container{display:none}.wprm-giveaway-notice{border:1px solid #006400;background-color:rgba(0,255,0,.15);padding:10px;margin-bottom:10px}.wprm-feedback-notice{border:1px solid #0085ba;background-color:rgba(0,133,186,.15);padding:10px;margin-bottom:10px}.wprm-feedback-notice button{margin:5px 5px 0 0!important}.wprm-easyrecipe-warning{display:none;border:1px solid #8b0000;background-color:rgba(255,0,0,.15);padding:10px 10px 0;margin-bottom:10px}.mce-floatpanel{z-index:100101!important}.select2_wprm-container{z-index:100075}.select2_wprm-container.select2_wprm-container--focus .select2_wprm-selection{border-color:#5b9dd9}.select2_wprm-container li{margin:0}.select2_wprm-container .select2_wprm-selection{border-color:#ddd}.medium-editor-anchor-preview,.medium-editor-toolbar{z-index:100080}.medium-editor-anchor-preview{font-size:12px}.medium-editor-element{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);min-height:68px;padding:3px 5px}.medium-editor-element:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.medium-editor-element:after{font-style:normal;color:#999;opacity:.5;font-size:14px;line-height:28px}.medium-editor-element p:first-child{margin-top:0}.medium-editor-element p:last-child{margin-bottom:0}.wprm-modal-hint{max-width:400px;margin-bottom:20px}.wprm-modal-hint .wprm-modal-hint-header{font-weight:700;font-variant:small-caps}.wprm-modal-hint .wprm-modal-hint-text{font-style:italic}.wprm-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:100000}.wprm-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:100050}.wprm-modal *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wprm-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;padding:0;z-index:1000;text-decoration:none!important;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wprm-modal-close .wprm-modal-icon:before{content:"\f158";font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.wprm-modal-close:hover .wprm-modal-icon:before{color:#00a0d2}.wprm-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wprm-modal-content ::-webkit-input-placeholder{color:#999;opacity:.5}.wprm-modal-content :-moz-placeholder{color:#999;opacity:.5}.wprm-modal-content ::-moz-placeholder{color:#999;opacity:.5}.wprm-modal-content :-ms-input-placeholder{color:#999;opacity:.5}.wprm-frame{overflow:hidden;right:0}.wprm-frame,.wprm-frame-menu{position:absolute;left:0;bottom:0;top:0}.wprm-frame-menu{width:200px;z-index:150}.wprm-frame-title{top:0;height:50px}.wprm-frame-router,.wprm-frame-title{z-index:200;left:200px;position:absolute;right:0}.wprm-menu-item{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.wprm-menu{position:absolute;left:0;margin:0;padding:10px 0;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;user-select:none}.wprm-menu-hidden{padding:5px 5px 0 10px;font-style:italic}.wprm-menu,.wprm-sidebar{top:0;bottom:0;background:#f3f3f3;right:0}.wprm-menu .active,.wprm-menu .active:hover{color:#23282d;font-weight:700}.wprm-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.wprm-button-action-save,.wprm-frame .hidden,.wprm-frame-content-tab:not(.active),.wprm-router:not(.active){display:none}.wprm-menu>a,.wprm-router>a{line-height:18px;font-size:14px;text-decoration:none}.wprm-frame a{border-bottom:none;color:#0073aa}.wprm-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.wprm-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.wprm-frame-router{top:50px;height:36px}.wprm-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.wprm-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px}.wprm-router a{-webkit-transition:none;transition:none}.wprm-router>a:last-child{border-right:0}.wprm-router .active,.wprm-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.wprm-router .active,.wprm-router .active:hover{color:#32373c}.wprm-frame-content{position:absolute;top:84px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.wprm-frame-toolbar,.wprm-toolbar{position:absolute;right:0;z-index:100;height:60px}.wprm-frame-content-tab{margin:20px}.wprm-frame-toolbar{left:200px;bottom:0}.wprm-toolbar{top:0;left:0;padding:0 16px;border:0 solid #ddd;overflow:hidden}.wprm-modal-content .wprm-toolbar-primary.search-form{width:33%}.wprm-toolbar-primary{float:right;height:100%}.wprm-modal-content .wprm-toolbar-primary .wprm-button{float:right}.wprm-toolbar-primary>.wprm-button,.wprm-toolbar-primary>.wprm-button-group{margin-left:10px;float:left;margin-top:15px}@media only screen and (max-width:900px){.wprm-frame:not(.hide-menu) .wprm-frame-title .dashicons{display:inline-block;line-height:50px}.wprm-frame:not(.hide-menu) .wprm-frame-menu{position:static;width:0}.wprm-frame:not(.hide-menu) .wprm-frame-content,.wprm-frame:not(.hide-menu) .wprm-frame-router,.wprm-frame:not(.hide-menu) .wprm-frame-title,.wprm-frame:not(.hide-menu) .wprm-frame-toolbar,.wprm-frame:not(.hide-menu) .wprm-menu.visible{left:0}.wprm-frame:not(.hide-menu) .wprm-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;left:-300px;right:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.wprm-frame:not(.hide-menu) .wprm-menu>a.active{display:none}.wprm-frame:not(.hide-menu) .wprm-menu>a{padding:12px 16px;font-size:16px}.wprm-frame:not(.hide-menu) .wprm-menu .separator{margin:5px 10px}.wprm-frame:not(.hide-menu) .wprm-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:left;cursor:pointer}}@media only screen and (max-width:640px),screen and (max-height:400px){.wprm-modal{position:fixed;top:0;left:0;right:0;bottom:0}.wprm-modal .wprm-frame-title{height:40px}}@media only screen and (max-width:480px){.wprm-frame:not(.hide-menu) .wprm-frame-title .dashicons{line-height:40px}.wprm-frame-router,.wprm-frame:not(.hide-menu) .wprm-menu{top:40px}.wprm-frame:not(.hide-menu) .wprm-frame-title h1,.wprm-modal .wprm-frame-title h1{font-size:18px;line-height:40px}.wprm-frame-content{top:74px}}.wprm-recipe-form{max-width:600px}.wprm-recipe-form .wprm-recipe-form-container{margin-bottom:15px;vertical-align:top}.wprm-recipe-form .wprm-recipe-form-container-halfs{display:inline-block;width:50%}.wprm-recipe-form .wprm-recipe-form-container-thirds{display:inline-block;width:33.3%}.wprm-recipe-form label{display:block;font-weight:700;margin-bottom:5px}.wprm-recipe-form input[type=text],.wprm-recipe-form input[type=number]{margin:0;width:100%;max-width:120px;height:34px;line-height:34px}.wprm-recipe-form input[type=text][type=number],.wprm-recipe-form input[type=number][type=number]{max-width:50px}.wprm-recipe-form input[type=text].select2_wprm-search__field,.wprm-recipe-form input[type=number].select2_wprm-search__field{height:18px;line-height:18px}.wprm-recipe-form select{width:100%}.wprm-recipe-form textarea{width:100%;resize:vertical}@media only screen and (max-width:480px){.wprm-recipe-form .wprm-recipe-form-container-halfs,.wprm-recipe-form .wprm-recipe-form-container-thirds{display:block;width:100%}}.wprm-recipe-import-text-form .import-text-buttons{margin-bottom:10px}.wprm-recipe-import-text-form .import-text-step{display:none}.wprm-recipe-import-text-form .import-text-step#import-text-step-input{display:block}.wprm-recipe-import-text-form #import-text-highlight-sandbox,.wprm-recipe-import-text-form .import-text-input{margin-top:10px}.wprm-recipe-import-text-form #import-text-ingredient-groups label,.wprm-recipe-import-text-form #import-text-instruction-groups label{display:inline;font-weight:400}.wprm-recipe-import-text-form .import-text-group-warning{margin-top:10px;display:none}.wprm-recipe-import-text-form #import-text-highlight-sandbox{display:none;max-height:400px;overflow:scroll;padding:10px;border:1px dashed #999}.wprm-loader,.wprm-loader:after,.wprm-loader:before{border-radius:50%;width:1.5em;height:1.5em;-webkit-animation:load7 1.8s infinite ease-in-out;animation:load7 1.8s infinite ease-in-out}.wprm-loader{display:none;color:#444;font-size:10px;margin:20px auto;position:relative;text-indent:-9999em;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.wprm-loader:after,.wprm-loader:before{content:'';position:absolute;top:0}.wprm-loader:before{left:-2.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.wprm-loader:after{left:2.5em}@-webkit-keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes load7{0%,100%,80%{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}.wprm-recipe-details-form input#wprm-recipe-name{max-width:450px}.wprm-recipe-details-form input#wprm-recipe-author-link,.wprm-recipe-details-form input#wprm-recipe-author-name{max-width:none}.wprm-recipe-details-form input#wprm-recipe-calories{max-width:70px}.wprm-recipe-details-form .wprm-recipe-image-preview{float:right;max-width:100px}.wprm-recipe-details-form .wprm-recipe-image-preview img{max-width:100%;height:auto}.wprm-recipe-details-form .wprm-recipe-summary-container{clear:both}@media only screen and (max-width:480px){.wprm-recipe-details-form .wprm-recipe-image-preview{float:none;margin:10px auto}}.wprm-recipe-ingredients-form,.wprm-recipe-instructions-form{max-width:750px;margin-bottom:15px}.wprm-recipe-ingredients-form input,.wprm-recipe-instructions-form input{margin:0;width:100%;height:34px;line-height:34px}.wprm-recipe-ingredients-form textarea,.wprm-recipe-instructions-form textarea{width:100%;resize:vertical}.wprm-recipe-ingredients-form ::-webkit-input-placeholder,.wprm-recipe-instructions-form ::-webkit-input-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form :-moz-placeholder,.wprm-recipe-instructions-form :-moz-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form ::-moz-placeholder,.wprm-recipe-instructions-form ::-moz-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form :-ms-input-placeholder,.wprm-recipe-instructions-form :-ms-input-placeholder{color:#999;opacity:.5}.wprm-recipe-ingredients-form table,.wprm-recipe-instructions-form table{width:100%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th,.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th{text-align:left}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(1),.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(6),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(1),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(6){width:5%;text-align:center}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(2),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(2){width:10%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(3),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(3){width:15%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(4),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(4){width:40%}.wprm-recipe-ingredients-form table.wprm-recipe-ingredients-container th:nth-child(5),.wprm-recipe-instructions-form table.wprm-recipe-ingredients-container th:nth-child(5){width:25%}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th,.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th{text-align:left}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(1),.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(4),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(1),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(4){width:5%;text-align:center}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(2),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(2){width:65%}.wprm-recipe-ingredients-form table.wprm-recipe-instructions-container th:nth-child(3),.wprm-recipe-instructions-form table.wprm-recipe-instructions-container th:nth-child(3){width:25%}.wprm-recipe-ingredients-form table .wprm-recipe-ingredients-placeholder,.wprm-recipe-ingredients-form table .wprm-recipe-instructions-placeholder,.wprm-recipe-instructions-form table .wprm-recipe-ingredients-placeholder,.wprm-recipe-instructions-form table .wprm-recipe-instructions-placeholder{display:none}.wprm-recipe-ingredients-form table td,.wprm-recipe-instructions-form table td{text-align:left;vertical-align:top}.wprm-recipe-ingredients-form table td:first-child,.wprm-recipe-ingredients-form table td:last-child,.wprm-recipe-instructions-form table td:first-child,.wprm-recipe-instructions-form table td:last-child{text-align:center;vertical-align:middle}.wprm-recipe-ingredients-form .ui-sortable-helper,.wprm-recipe-instructions-form .ui-sortable-helper{display:table}.wprm-recipe-ingredients-form .ui-sortable-helper .wprm-recipe-instruction-text,.wprm-recipe-instructions-form .ui-sortable-helper .wprm-recipe-instruction-text{min-width:200px}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort{cursor:move}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete{cursor:pointer}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort{color:#999;opacity:.5}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-delete:hover,.wprm-recipe-ingredients-form .wprm-recipe-ingredients-instructions-sort:hover,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-delete:hover,.wprm-recipe-instructions-form .wprm-recipe-ingredients-instructions-sort:hover{color:#444;opacity:1}.wprm-recipe-ingredients-form .wprm-recipe-ingredients-actions,.wprm-recipe-ingredients-form .wprm-recipe-instructions-actions,.wprm-recipe-instructions-form .wprm-recipe-ingredients-actions,.wprm-recipe-instructions-form .wprm-recipe-instructions-actions{margin:10px}.wprm-recipe-ingredients-form .wprm-recipe-image-preview,.wprm-recipe-instructions-form .wprm-recipe-image-preview{max-width:75px}.wprm-recipe-ingredients-form .wprm-recipe-image-preview img,.wprm-recipe-instructions-form .wprm-recipe-image-preview img{max-width:100%;height:auto}.wprm-shortcode-builder .wprm-shortcode-builder-container{margin-bottom:15px;vertical-align:top}.wprm-shortcode-builder .wprm-shortcode-builder-container-halfs{display:inline-block;width:50%}.wprm-shortcode-builder .wprm-shortcode-builder-container-thirds{display:inline-block;width:33.3%}.wprm-shortcode-builder label{display:block;font-weight:700;margin-bottom:5px}.wprm-shortcode-builder .wprm-shortcode-builder-helper{margin-left:5px;font-size:.8em;font-style:italic}.wprm-shortcode-builder input{margin:0;width:100%;max-width:250px;height:34px;line-height:34px}.wprm-shortcode-builder input.select2_wprm-search__field{height:18px;line-height:18px}.wprm-shortcode-builder select{width:250px}
assets/css/admin/modal/_container.scss CHANGED
@@ -7,6 +7,17 @@
7
  margin-bottom: 10px;
8
  }
9
 
 
 
 
 
 
 
 
 
 
 
 
10
  .wprm-easyrecipe-warning {
11
  display: none;
12
  border: 1px solid darkred;
@@ -17,7 +28,7 @@
17
  }
18
 
19
  .mce-floatpanel {
20
- z-index: 100100 !important;
21
  }
22
 
23
  .select2_wprm-container {
@@ -129,6 +140,7 @@
129
  height: 50px;
130
  padding: 0;
131
  z-index: 1000;
 
132
  -webkit-transition: color 0.1s ease-in-out,background 0.1s ease-in-out;
133
  transition: color 0.1s ease-in-out,background 0.1s ease-in-out;
134
 
@@ -141,6 +153,10 @@
141
  -moz-osx-font-smoothing: grayscale;
142
  color: #666;
143
  }
 
 
 
 
144
  }
145
 
146
  .wprm-modal-content {
7
  margin-bottom: 10px;
8
  }
9
 
10
+ .wprm-feedback-notice {
11
+ border: 1px solid #0085ba;
12
+ background-color: rgba(0,133,186,0.15);
13
+ padding: 10px;
14
+ margin-bottom: 10px;
15
+
16
+ button {
17
+ margin: 5px 5px 0 0 !important;
18
+ }
19
+ }
20
+
21
  .wprm-easyrecipe-warning {
22
  display: none;
23
  border: 1px solid darkred;
28
  }
29
 
30
  .mce-floatpanel {
31
+ z-index: 100101 !important;
32
  }
33
 
34
  .select2_wprm-container {
140
  height: 50px;
141
  padding: 0;
142
  z-index: 1000;
143
+ text-decoration: none !important;
144
  -webkit-transition: color 0.1s ease-in-out,background 0.1s ease-in-out;
145
  transition: color 0.1s ease-in-out,background 0.1s ease-in-out;
146
 
153
  -moz-osx-font-smoothing: grayscale;
154
  color: #666;
155
  }
156
+
157
+ &:hover .wprm-modal-icon:before {
158
+ color: #00a0d2;
159
+ }
160
  }
161
 
162
  .wprm-modal-content {
assets/js/admin/feedback.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var wprm_admin = wprm_admin || {};
2
+
3
+ wprm_admin.give_feedback = function(answer) {
4
+ var data = {
5
+ action: 'wprm_feedback',
6
+ security: wprm_modal.nonce,
7
+ answer: answer
8
+ };
9
+
10
+ jQuery.post(wprm_modal.ajax_url, data);
11
+ };
12
+
13
+ jQuery(document).ready(function($) {
14
+ var feedback_notice = jQuery('.wprm-feedback-notice');
15
+
16
+ if (feedback_notice.length > 0) {
17
+ jQuery('#wprm-feedback-stop').on('click', function() {
18
+ wprm_admin.give_feedback('stop');
19
+ feedback_notice.slideUp();
20
+ });
21
+
22
+ jQuery('#wprm-feedback-no').on('click', function() {
23
+ wprm_admin.give_feedback('no');
24
+ var message = '<strong>How could we make it better?</strong><br/>';
25
+ message += 'Please send any issues or suggestions you have to <a href="mailto:support@bootstrapped.ventures?subject=WP%20Recipe%20Maker%20feedback">support@bootstrapped.ventures</a> and we\'ll see what we can do!';
26
+ feedback_notice.html(message);
27
+ });
28
+
29
+ jQuery('#wprm-feedback-yes').on('click', function() {
30
+ wprm_admin.give_feedback('yes');
31
+ var message = '<strong>Happy to hear!</strong><br/>';
32
+ message += 'It would be really helpful if you could leave us an honest review over at <a href="https://wordpress.org/support/plugin/wp-recipe-maker/reviews/#new-post" target="_blank">wordpress.org</a><br/>';
33
+ message += 'Suggestions to make the plugin even better are also very welcome at <a href="mailto:support@bootstrapped.ventures?subject=WP%20Recipe%20Maker%20suggestions">support@bootstrapped.ventures</a>';
34
+ feedback_notice.html(message);
35
+ });
36
+ }
37
+ });
assets/js/admin/modal.js CHANGED
@@ -83,7 +83,7 @@ jQuery(document).ready(function($) {
83
 
84
  // Closing Modal
85
  jQuery('.wprm-modal-container').on('click', '.wprm-modal-close, .wprm-modal-backdrop', function() {
86
- if(confirm(wprm_modal.text.modal_close_confirm)) {
87
  wprm_admin.close_modal();
88
  }
89
  });
83
 
84
  // Closing Modal
85
  jQuery('.wprm-modal-container').on('click', '.wprm-modal-close, .wprm-modal-backdrop', function() {
86
+ if( ! wprm_admin.changes_made || confirm(wprm_modal.text.modal_close_confirm) ) {
87
  wprm_admin.close_modal();
88
  }
89
  });
assets/js/admin/recipe-form.js CHANGED
@@ -9,6 +9,8 @@ wprm_admin.editing_recipe_fields = false;
9
  wprm_admin.editing_recipe_ingredients = {};
10
  wprm_admin.editing_recipe_instructions = {};
11
 
 
 
12
  wprm_admin.set_recipe = function(args) {
13
  var recipe_id = args.recipe_id ? args.recipe_id : 0;
14
  var clone_recipe_id = args.clone_recipe_id ? args.clone_recipe_id : 0;
@@ -23,6 +25,7 @@ wprm_admin.set_recipe = function(args) {
23
  if(typeof wprmp_admin !== 'undefined') {
24
  wprmp_admin.clear_recipe_fields();
25
  }
 
26
 
27
  if ('insert' === wprm_admin.editing_recipe_type) {
28
  var button = jQuery('.wprm-button-action'),
@@ -55,6 +58,7 @@ wprm_admin.set_recipe = function(args) {
55
  if(typeof wprmp_admin !== 'undefined') {
56
  wprmp_admin.set_recipe_fields(out.data.recipe);
57
  }
 
58
  }
59
  }, 'json');
60
  }
@@ -90,6 +94,7 @@ wprm_admin.set_recipe = function(args) {
90
  if(typeof wprmp_admin !== 'undefined') {
91
  wprmp_admin.set_recipe_fields(out.data.recipe);
92
  }
 
93
  jQuery('.wprm-frame-title').find('h1').text(wprm_modal.text.edit_recipe);
94
  }
95
  }, 'json');
@@ -297,6 +302,7 @@ wprm_admin.set_media_image = function(container, image_id, image_url) {
297
 
298
  container.find('.wprm-recipe-image-add').addClass('hidden');
299
  container.find('.wprm-recipe-image-remove').removeClass('hidden');
 
300
  };
301
  wprm_admin.remove_media_image = function(container) {
302
  container.find('.wprm-recipe-image-preview').html('');
@@ -304,6 +310,7 @@ wprm_admin.remove_media_image = function(container) {
304
 
305
  container.find('.wprm-recipe-image-add').removeClass('hidden');
306
  container.find('.wprm-recipe-image-remove').addClass('hidden');
 
307
  };
308
 
309
  wprm_admin.start_loader = function(button) {
@@ -583,6 +590,11 @@ wprm_admin.get_ingredients = function() {
583
  };
584
 
585
  jQuery(document).ready(function($) {
 
 
 
 
 
586
  // Recipe and Instruction Image handler
587
  jQuery('.wprm-recipe-details-form, .wprm-recipe-instructions-form').on('click', '.wprm-recipe-image-add', function(e) {
588
  wprm_admin.select_media_image(jQuery(this).parents('.wprm-recipe-image-container'));
9
  wprm_admin.editing_recipe_ingredients = {};
10
  wprm_admin.editing_recipe_instructions = {};
11
 
12
+ wprm_admin.changes_made = false;
13
+
14
  wprm_admin.set_recipe = function(args) {
15
  var recipe_id = args.recipe_id ? args.recipe_id : 0;
16
  var clone_recipe_id = args.clone_recipe_id ? args.clone_recipe_id : 0;
25
  if(typeof wprmp_admin !== 'undefined') {
26
  wprmp_admin.clear_recipe_fields();
27
  }
28
+ wprm_admin.changes_made = false;
29
 
30
  if ('insert' === wprm_admin.editing_recipe_type) {
31
  var button = jQuery('.wprm-button-action'),
58
  if(typeof wprmp_admin !== 'undefined') {
59
  wprmp_admin.set_recipe_fields(out.data.recipe);
60
  }
61
+ wprm_admin.changes_made = false;
62
  }
63
  }, 'json');
64
  }
94
  if(typeof wprmp_admin !== 'undefined') {
95
  wprmp_admin.set_recipe_fields(out.data.recipe);
96
  }
97
+ wprm_admin.changes_made = false;
98
  jQuery('.wprm-frame-title').find('h1').text(wprm_modal.text.edit_recipe);
99
  }
100
  }, 'json');
302
 
303
  container.find('.wprm-recipe-image-add').addClass('hidden');
304
  container.find('.wprm-recipe-image-remove').removeClass('hidden');
305
+ wprm_admin.changes_made = true;
306
  };
307
  wprm_admin.remove_media_image = function(container) {
308
  container.find('.wprm-recipe-image-preview').html('');
310
 
311
  container.find('.wprm-recipe-image-add').removeClass('hidden');
312
  container.find('.wprm-recipe-image-remove').addClass('hidden');
313
+ wprm_admin.changes_made = true;
314
  };
315
 
316
  wprm_admin.start_loader = function(button) {
590
  };
591
 
592
  jQuery(document).ready(function($) {
593
+ // Check for changes made
594
+ jQuery('.wprm-modal').on('change', 'input, textarea, #wprm-recipe-author-display, .wprm-recipe-tags, #wprm-ingredient-links-type', function() {
595
+ wprm_admin.changes_made = true;
596
+ });
597
+
598
  // Recipe and Instruction Image handler
599
  jQuery('.wprm-recipe-details-form, .wprm-recipe-instructions-form').on('click', '.wprm-recipe-image-add', function(e) {
600
  wprm_admin.select_media_image(jQuery(this).parents('.wprm-recipe-image-container'));
assets/js/admin/rich-editor.js CHANGED
@@ -33,6 +33,9 @@ wprm_admin.init_rich_editor = function() {
33
  }
34
 
35
  wprm_admin.rich_editor = new MediumEditor('.wprm-rich-editor', args);
 
 
 
36
  }
37
  };
38
 
33
  }
34
 
35
  wprm_admin.rich_editor = new MediumEditor('.wprm-rich-editor', args);
36
+ wprm_admin.rich_editor.subscribe('editableInput', function() {
37
+ wprm_admin.changes_made = true;
38
+ });
39
  }
40
  };
41
 
includes/admin/class-wprm-feedback.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Asks for feedback.
4
+ *
5
+ * @link http://bootstrapped.ventures
6
+ * @since 1.27.0
7
+ *
8
+ * @package WP_Recipe_Maker
9
+ * @subpackage WP_Recipe_Maker/includes/admin
10
+ */
11
+
12
+ /**
13
+ * Asks for feedback.
14
+ *
15
+ * @since 1.27.0
16
+ * @package WP_Recipe_Maker
17
+ * @subpackage WP_Recipe_Maker/includes/admin
18
+ * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
+ */
20
+ class WPRM_Feedback {
21
+
22
+ /**
23
+ * Register actions and filters.
24
+ *
25
+ * @since 1.27.0
26
+ */
27
+ public static function init() {
28
+ add_action( 'wprm_modal_notice', array( __CLASS__, 'modal_notice' ) );
29
+
30
+ add_action( 'wp_ajax_wprm_feedback', array( __CLASS__, 'ajax_give_feedback' ) );
31
+ }
32
+
33
+ /**
34
+ * Show a notice in the modal.
35
+ *
36
+ * @since 1.27.0
37
+ */
38
+ public static function modal_notice() {
39
+ if ( current_user_can( 'manage_options' ) && '' === get_user_meta( get_current_user_id(), 'wprm_feedback', true ) ) {
40
+ $count = wp_count_posts( WPRM_POST_TYPE )->publish;
41
+
42
+ if ( 23 <= intval( $count ) ) {
43
+ echo '<div class="wprm-feedback-notice">';
44
+ echo '<strong>Wow, you\'ve published ' . esc_html( $count ) . ' recipes!</strong><br/>Are you enjoying our plugin so far?<br/>';
45
+ echo '<button id="wprm-feedback-stop" class="button button-small">Stop asking me</button> <button id="wprm-feedback-no" class="button button-primary button-small">No...</button> <button id="wprm-feedback-yes" class="button button-primary button-small">Yes!</button>';
46
+ echo '</div>';
47
+ }
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Give feedback via AJAX.
53
+ *
54
+ * @since 1.27.0
55
+ */
56
+ public static function ajax_give_feedback() {
57
+ if ( check_ajax_referer( 'wprm', 'security', false ) ) {
58
+ $answer = isset( $_POST['answer'] ) ? sanitize_text_field( wp_unslash( $_POST['answer'] ) ) : ''; // Input var okay.
59
+ update_user_meta( get_current_user_id(), 'wprm_feedback', $answer );
60
+ }
61
+
62
+ wp_die();
63
+ }
64
+ }
65
+
66
+ WPRM_Feedback::init();
includes/admin/class-wprm-migrations.php CHANGED
@@ -61,6 +61,9 @@ class WPRM_Migrations {
61
  if ( version_compare( $migrated_to_version, '1.25.0' ) < 0 ) {
62
  require_once( WPRM_DIR . 'includes/admin/migrations/wprm-1-25-0-metadata.php' );
63
  }
 
 
 
64
 
65
  if ( '0.0.0' === $migrated_to_version ) {
66
  self::$notices = array();
61
  if ( version_compare( $migrated_to_version, '1.25.0' ) < 0 ) {
62
  require_once( WPRM_DIR . 'includes/admin/migrations/wprm-1-25-0-metadata.php' );
63
  }
64
+ if ( version_compare( $migrated_to_version, '1.27.0' ) < 0 ) {
65
+ require_once( WPRM_DIR . 'includes/admin/migrations/wprm-1-27-0-facebook.php' );
66
+ }
67
 
68
  if ( '0.0.0' === $migrated_to_version ) {
69
  self::$notices = array();
includes/admin/migrations/wprm-1-27-0-facebook.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Notice about our Facebook group.
4
+ *
5
+ * @link http://bootstrapped.ventures
6
+ * @since 1.27.0
7
+ *
8
+ * @package WP_Recipe_Maker
9
+ * @subpackage WP_Recipe_Maker/includes/admin/migrations
10
+ */
11
+
12
+ $notice = 'We created a Facebook group that allows you to connect with other food bloggers using WP Recipe Maker.<br/>';
13
+ $notice .= 'This will also be used to introduce you to new features and gather feedback to make the plugin better.<br/><br/>';
14
+ $notice .= 'Join the <a href="https://www.facebook.com/groups/1741126932849712/" target="_blank">WP Recipe Maker Food Bloggers</a> group today!';
15
+
16
+ self::$notices[] = $notice;
includes/admin/modal/class-wprm-modal.php CHANGED
@@ -49,6 +49,7 @@ class WPRM_Modal {
49
  wp_enqueue_script( 'texthighlighter', WPRM_URL . 'vendor/texthighlighter/TextHighlighter.min.js', array( 'jquery' ), WPRM_VERSION, true );
50
 
51
  wp_enqueue_script( 'wprm-modal', WPRM_URL . 'assets/js/admin/modal.js', array( 'jquery' ), WPRM_VERSION, true );
 
52
  wp_enqueue_script( 'wprm-import-text', WPRM_URL . 'assets/js/admin/import-text.js', array( 'jquery', 'wprm-modal', 'texthighlighter' ), WPRM_VERSION, true );
53
  wp_enqueue_script( 'wprm-recipe-form', WPRM_URL . 'assets/js/admin/recipe-form.js', array( 'jquery', 'jquery-ui-sortable', 'wprm-modal', 'medium-editor', 'wprm-select2' ), WPRM_VERSION, true );
54
  wp_enqueue_script( 'wprm-recipe-snippets', WPRM_URL . 'assets/js/admin/recipe-snippets.js', array( 'jquery', 'wprm-modal' ), WPRM_VERSION, true );
49
  wp_enqueue_script( 'texthighlighter', WPRM_URL . 'vendor/texthighlighter/TextHighlighter.min.js', array( 'jquery' ), WPRM_VERSION, true );
50
 
51
  wp_enqueue_script( 'wprm-modal', WPRM_URL . 'assets/js/admin/modal.js', array( 'jquery' ), WPRM_VERSION, true );
52
+ wp_enqueue_script( 'wprm-feedback', WPRM_URL . 'assets/js/admin/feedback.js', array( 'jquery' ), WPRM_VERSION, true );
53
  wp_enqueue_script( 'wprm-import-text', WPRM_URL . 'assets/js/admin/import-text.js', array( 'jquery', 'wprm-modal', 'texthighlighter' ), WPRM_VERSION, true );
54
  wp_enqueue_script( 'wprm-recipe-form', WPRM_URL . 'assets/js/admin/recipe-form.js', array( 'jquery', 'jquery-ui-sortable', 'wprm-modal', 'medium-editor', 'wprm-select2' ), WPRM_VERSION, true );
55
  wp_enqueue_script( 'wprm-recipe-snippets', WPRM_URL . 'assets/js/admin/recipe-snippets.js', array( 'jquery', 'wprm-modal' ), WPRM_VERSION, true );
includes/class-wp-recipe-maker.php CHANGED
@@ -31,7 +31,7 @@ class WP_Recipe_Maker {
31
  * @since 1.0.0
32
  */
33
  private function define_constants() {
34
- define( 'WPRM_VERSION', '1.26.0' );
35
  define( 'WPRM_PREMIUM_VERSION_REQUIRED', '1.6.0' );
36
  define( 'WPRM_POST_TYPE', 'wprm_recipe' );
37
  define( 'WPRM_DIR', plugin_dir_path( dirname( __FILE__ ) ) );
@@ -86,6 +86,9 @@ class WP_Recipe_Maker {
86
  require_once( WPRM_DIR . 'includes/public/class-wprm-print.php' );
87
  require_once( WPRM_DIR . 'includes/public/class-wprm-rating.php' );
88
  require_once( WPRM_DIR . 'includes/public/class-wprm-recipe-manager.php' );
 
 
 
89
  require_once( WPRM_DIR . 'includes/public/class-wprm-recipe.php' );
90
  require_once( WPRM_DIR . 'includes/public/class-wprm-shortcode.php' );
91
  require_once( WPRM_DIR . 'includes/public/class-wprm-taxonomies.php' );
@@ -113,12 +116,10 @@ class WP_Recipe_Maker {
113
  require_once( WPRM_DIR . 'includes/admin/modal/class-wprm-modal.php' );
114
  require_once( WPRM_DIR . 'includes/admin/modal/class-wprm-shortcode-preview.php' );
115
 
 
116
  require_once( WPRM_DIR . 'includes/admin/class-wprm-giveaway.php' );
117
  require_once( WPRM_DIR . 'includes/admin/class-wprm-import-manager.php' );
118
  require_once( WPRM_DIR . 'includes/admin/class-wprm-migrations.php' );
119
- require_once( WPRM_DIR . 'includes/admin/class-wprm-recipe-parser.php' );
120
- require_once( WPRM_DIR . 'includes/admin/class-wprm-recipe-sanitizer.php' );
121
- require_once( WPRM_DIR . 'includes/admin/class-wprm-recipe-saver.php' );
122
  require_once( WPRM_DIR . 'includes/admin/class-wprm-seo-checker.php' );
123
  }
124
  }
31
  * @since 1.0.0
32
  */
33
  private function define_constants() {
34
+ define( 'WPRM_VERSION', '1.27.0' );
35
  define( 'WPRM_PREMIUM_VERSION_REQUIRED', '1.6.0' );
36
  define( 'WPRM_POST_TYPE', 'wprm_recipe' );
37
  define( 'WPRM_DIR', plugin_dir_path( dirname( __FILE__ ) ) );
86
  require_once( WPRM_DIR . 'includes/public/class-wprm-print.php' );
87
  require_once( WPRM_DIR . 'includes/public/class-wprm-rating.php' );
88
  require_once( WPRM_DIR . 'includes/public/class-wprm-recipe-manager.php' );
89
+ require_once( WPRM_DIR . 'includes/public/class-wprm-recipe-parser.php' );
90
+ require_once( WPRM_DIR . 'includes/public/class-wprm-recipe-sanitizer.php' );
91
+ require_once( WPRM_DIR . 'includes/public/class-wprm-recipe-saver.php' );
92
  require_once( WPRM_DIR . 'includes/public/class-wprm-recipe.php' );
93
  require_once( WPRM_DIR . 'includes/public/class-wprm-shortcode.php' );
94
  require_once( WPRM_DIR . 'includes/public/class-wprm-taxonomies.php' );
116
  require_once( WPRM_DIR . 'includes/admin/modal/class-wprm-modal.php' );
117
  require_once( WPRM_DIR . 'includes/admin/modal/class-wprm-shortcode-preview.php' );
118
 
119
+ require_once( WPRM_DIR . 'includes/admin/class-wprm-feedback.php' );
120
  require_once( WPRM_DIR . 'includes/admin/class-wprm-giveaway.php' );
121
  require_once( WPRM_DIR . 'includes/admin/class-wprm-import-manager.php' );
122
  require_once( WPRM_DIR . 'includes/admin/class-wprm-migrations.php' );
 
 
 
123
  require_once( WPRM_DIR . 'includes/admin/class-wprm-seo-checker.php' );
124
  }
125
  }
includes/public/class-wprm-api.php CHANGED
@@ -26,6 +26,8 @@ class WPRM_Api {
26
  */
27
  public static function init() {
28
  add_action( 'rest_api_init', array( __CLASS__, 'api_register_recipe_data' ) );
 
 
29
  add_filter( 'wprm_recipe_post_type_arguments', array( __CLASS__, 'recipe_post_type_arguments' ) );
30
  }
31
 
@@ -45,18 +47,34 @@ class WPRM_Api {
45
  }
46
 
47
  /**
48
- * Get recipe data for the REST API.
49
  *
50
- * @since 1.4.0
51
- * @param array $object Details of current post.
52
- * @param mixed $field_name Name of field.
53
- * @param WP_REST_Request $request Current request.
54
  */
55
  public static function api_get_recipe_data( $object, $field_name, $request ) {
56
  $recipe = WPRM_Recipe_Manager::get_recipe( $object['id'] );
57
  return $recipe->get_data();
58
  }
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  /**
61
  * Add REST API options to the recipe post type arguments.
62
  *
26
  */
27
  public static function init() {
28
  add_action( 'rest_api_init', array( __CLASS__, 'api_register_recipe_data' ) );
29
+ add_action( 'rest_insert_' . WPRM_POST_TYPE, array( __CLASS__, 'api_insert_update_recipe' ), 10, 3 );
30
+
31
  add_filter( 'wprm_recipe_post_type_arguments', array( __CLASS__, 'recipe_post_type_arguments' ) );
32
  }
33
 
47
  }
48
 
49
  /**
50
+ * Handle recipe calls to the REST API.
51
  *
52
+ * @since 1.4.0
53
+ * @param array $object Details of current post.
54
+ * @param mixed $field_name Name of field.
55
+ * @param WP_REST_Request $request Current request.
56
  */
57
  public static function api_get_recipe_data( $object, $field_name, $request ) {
58
  $recipe = WPRM_Recipe_Manager::get_recipe( $object['id'] );
59
  return $recipe->get_data();
60
  }
61
 
62
+ /**
63
+ * Handle recipe calls to the REST API.
64
+ *
65
+ * @since 1.27.0
66
+ * @param WP_Post $post Inserted or updated post object.
67
+ * @param WP_REST_Request $request Request object.
68
+ * @param bool $creating True when creating a post, false when updating.
69
+ */
70
+ public static function api_insert_update_recipe( $post, $request, $creating ) {
71
+ $params = $request->get_params();
72
+ $recipe = isset( $params['recipe'] ) ? WPRM_Recipe_Sanitizer::sanitize( $params['recipe'] ) : array();
73
+ $recipe_id = $post->ID;
74
+
75
+ WPRM_Recipe_Saver::update_recipe( $recipe_id, $recipe );
76
+ }
77
+
78
  /**
79
  * Add REST API options to the recipe post type arguments.
80
  *
includes/public/class-wprm-metadata.php CHANGED
@@ -204,7 +204,7 @@ class WPRM_Metadata {
204
  if ( $value && array_key_exists( $field, $nutrition_mapping ) ) {
205
  $unit = esc_html__( 'g', 'wp-recipe-maker' );
206
 
207
- if ( 'serving_size' === $field && $nutrition['serving_unit'] ) {
208
  $unit = $nutrition['serving_unit'];
209
  } elseif ( 'calories' === $field ) {
210
  $unit = esc_html__( 'kcal', 'wp-recipe-maker' );
204
  if ( $value && array_key_exists( $field, $nutrition_mapping ) ) {
205
  $unit = esc_html__( 'g', 'wp-recipe-maker' );
206
 
207
+ if ( 'serving_size' === $field && isset( $nutrition['serving_unit'] ) && $nutrition['serving_unit'] ) {
208
  $unit = $nutrition['serving_unit'];
209
  } elseif ( 'calories' === $field ) {
210
  $unit = esc_html__( 'kcal', 'wp-recipe-maker' );
includes/{admin → public}/class-wprm-recipe-parser.php RENAMED
@@ -6,7 +6,7 @@
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
- * @subpackage WP_Recipe_Maker/includes/admin
10
  */
11
 
12
  /**
@@ -14,7 +14,7 @@
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
- * @subpackage WP_Recipe_Maker/includes/admin
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Parser {
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
+ * @subpackage WP_Recipe_Maker/includes/public
10
  */
11
 
12
  /**
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
+ * @subpackage WP_Recipe_Maker/includes/public
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Parser {
includes/{admin → public}/class-wprm-recipe-sanitizer.php RENAMED
@@ -6,7 +6,7 @@
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
- * @subpackage WP_Recipe_Maker/includes/admin
10
  */
11
 
12
  /**
@@ -14,7 +14,7 @@
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
- * @subpackage WP_Recipe_Maker/includes/admin
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Sanitizer {
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
+ * @subpackage WP_Recipe_Maker/includes/public
10
  */
11
 
12
  /**
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
+ * @subpackage WP_Recipe_Maker/includes/public
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Sanitizer {
includes/{admin → public}/class-wprm-recipe-saver.php RENAMED
@@ -6,7 +6,7 @@
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
- * @subpackage WP_Recipe_Maker/includes/admin
10
  */
11
 
12
  /**
@@ -14,7 +14,7 @@
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
- * @subpackage WP_Recipe_Maker/includes/admin
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Saver {
@@ -218,6 +218,7 @@ class WPRM_Recipe_Saver {
218
  'post_status' => $post->post_status,
219
  'post_author' => $post->post_author,
220
  'post_date' => $post->post_date,
 
221
  'post_modified' => $post->post_modified,
222
  );
223
  wp_update_post( $recipe );
6
  * @since 1.0.0
7
  *
8
  * @package WP_Recipe_Maker
9
+ * @subpackage WP_Recipe_Maker/includes/public
10
  */
11
 
12
  /**
14
  *
15
  * @since 1.0.0
16
  * @package WP_Recipe_Maker
17
+ * @subpackage WP_Recipe_Maker/includes/public
18
  * @author Brecht Vandersmissen <brecht@bootstrapped.ventures>
19
  */
20
  class WPRM_Recipe_Saver {
218
  'post_status' => $post->post_status,
219
  'post_author' => $post->post_author,
220
  'post_date' => $post->post_date,
221
+ 'post_date_gmt' => $post->post_date,
222
  'post_modified' => $post->post_modified,
223
  );
224
  wp_update_post( $recipe );
includes/public/class-wprm-shortcode.php CHANGED
@@ -192,7 +192,7 @@ class WPRM_Shortcode {
192
  * @param mixed $content Content we want to filter before it gets passed along.
193
  */
194
  public static function automatically_add_recipe_snippets( $content ) {
195
- if ( WPRM_Settings::get( 'recipe_snippets_automatically_add' ) ) {
196
  $text = '<div class="wprm-automatic-recipe-snippets">' . do_shortcode( WPRM_Settings::get( 'recipe_snippets_text' ) ) . '</div>';
197
  $content = $text . $content;
198
  }
192
  * @param mixed $content Content we want to filter before it gets passed along.
193
  */
194
  public static function automatically_add_recipe_snippets( $content ) {
195
+ if ( WPRM_Settings::get( 'recipe_snippets_automatically_add' ) && is_singular() ) {
196
  $text = '<div class="wprm-automatic-recipe-snippets">' . do_shortcode( WPRM_Settings::get( 'recipe_snippets_text' ) ) . '</div>';
197
  $content = $text . $content;
198
  }
includes/public/class-wprm-template-helper.php CHANGED
@@ -181,7 +181,7 @@ class WPRM_Template_Helper {
181
  $output .= '</span> <span class="wprm-recipe-details-unit wprm-recipe-details-unit-hours wprm-recipe-' . $type . '-unit wprm-recipe-' . $type . 'unit-hours">';
182
 
183
  if ( $shorthand ) {
184
- $output .= $hours > 1 ? __( 'hr', 'wp-recipe-maker' ) : __( 'hrs', 'wp-recipe-maker' );
185
  } else {
186
  $output .= $hours > 1 ? __( 'hours', 'wp-recipe-maker' ) : __( 'hour', 'wp-recipe-maker' );
187
  }
181
  $output .= '</span> <span class="wprm-recipe-details-unit wprm-recipe-details-unit-hours wprm-recipe-' . $type . '-unit wprm-recipe-' . $type . 'unit-hours">';
182
 
183
  if ( $shorthand ) {
184
+ $output .= $hours > 1 ? __( 'hrs', 'wp-recipe-maker' ) : __( 'hr', 'wp-recipe-maker' );
185
  } else {
186
  $output .= $hours > 1 ? __( 'hours', 'wp-recipe-maker' ) : __( 'hour', 'wp-recipe-maker' );
187
  }
readme.txt CHANGED
@@ -4,6 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Tags: recipe, recipes, ingredients, food, cooking, seo, schema.org, json-ld
5
  Requires at least: 4.4
6
  Tested up to: 4.9
 
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -14,6 +15,9 @@ The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadat
14
 
15
  [WP Recipe Maker](http://bootstrapped.ventures/wp-recipe-maker/) is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This recipe metadata will improve your SEO and get you more visitors!
16
 
 
 
 
17
  > <strong>Get the most out of WP Recipe Maker!</strong><br>
18
  > Join our [self-paced email course](https://www.getdrip.com/forms/86388969/submissions/new) and we'll help you get started and learn all the tips and trick for using this plugin.
19
 
@@ -105,6 +109,18 @@ Yes! We pride ourselves on offering awesome support and almost always answer sup
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  = 1.26.0 =
109
  * Feature: Setting to automatically add recipe snippets like Jump to Recipe
110
  * Feature: Create recipes on the Manage page
@@ -377,6 +393,12 @@ Yes! We pride ourselves on offering awesome support and almost always answer sup
377
 
378
  == Upgrade notice ==
379
 
 
 
 
 
 
 
380
  = 1.26.0 =
381
  Update to prevent issues with the recipe metadata
382
 
4
  Tags: recipe, recipes, ingredients, food, cooking, seo, schema.org, json-ld
5
  Requires at least: 4.4
6
  Tested up to: 4.9
7
+ Requires PHP: 5.2.4
8
  Stable tag: trunk
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
15
 
16
  [WP Recipe Maker](http://bootstrapped.ventures/wp-recipe-maker/) is the easy recipe plugin that everyone can use. An easy workflow allows you to add recipes to any post or page with automatic JSON-LD metadata for your recipes. This recipe metadata will improve your SEO and get you more visitors!
17
 
18
+ Would you like to see this recipe plugin in action before installing it? Take a look at this introduction video:
19
+ https://www.youtube.com/watch?v=AtvGLRtTQgg
20
+
21
  > <strong>Get the most out of WP Recipe Maker!</strong><br>
22
  > Join our [self-paced email course](https://www.getdrip.com/forms/86388969/submissions/new) and we'll help you get started and learn all the tips and trick for using this plugin.
23
 
109
 
110
  == Changelog ==
111
 
112
+ = 1.27.0 =
113
+ * Feature: Create and update recipes via REST API
114
+ * Improvement: Only show automatically added snippets on singular pages
115
+ * Improvement: Only show warning when changes have actually been made
116
+ * Improvement: Introduction video on the welcome page
117
+ * Fix: Status of recipes in scheduled posts
118
+ * Fix: Show correct plural or singular form for hours
119
+ * Fix: Prevent PHP notice caused by metadata
120
+
121
+ = 1.26.1 =
122
+ * Fix: Modal overlay problem
123
+
124
  = 1.26.0 =
125
  * Feature: Setting to automatically add recipe snippets like Jump to Recipe
126
  * Feature: Create recipes on the Manage page
393
 
394
  == Upgrade notice ==
395
 
396
+ = 1.27.0 =
397
+ Update for a few bug fixes and improvements
398
+
399
+ = 1.26.1 =
400
+ Update to prevent the modal overlay from blocking TinyMCE functionality
401
+
402
  = 1.26.0 =
403
  Update to prevent issues with the recipe metadata
404
 
templates/admin/menu/faq/support.php CHANGED
@@ -14,7 +14,7 @@
14
  <p>Unfortunately there are many things that can go wrong when you're working together with themes and plugins created by other developers. But don't worry, we're here to help!</p>
15
  <h3>How to get help</h3>
16
  <h4>Documentation</h4>
17
- <p>More documentation and demos can be found on the <a href="http://bootstrapped.ventures/wp-recipe-maker/" target="_blank">WP Recipe Maker website</a>.</p>
18
  <h4>Chat with us</h4>
19
  <p>In the bottom-right of this page you can find a chat widget that allows you to contact us directly. Just wait a few seconds if it doesn't show up immediately.</p>
20
  <h4>Send us a message</h4>
14
  <p>Unfortunately there are many things that can go wrong when you're working together with themes and plugins created by other developers. But don't worry, we're here to help!</p>
15
  <h3>How to get help</h3>
16
  <h4>Documentation</h4>
17
+ <p>More documentation and demos can be found on the <a href="https://bootstrapped.ventures/wp-recipe-maker/documentation/" target="_blank">WP Recipe Maker website</a>.</p>
18
  <h4>Chat with us</h4>
19
  <p>In the bottom-right of this page you can find a chat widget that allows you to contact us directly. Just wait a few seconds if it doesn't show up immediately.</p>
20
  <h4>Send us a message</h4>
templates/admin/menu/faq/welcome.php CHANGED
@@ -11,6 +11,9 @@
11
 
12
  ?>
13
 
 
 
 
14
  <h3>Get the most out of WP Recipe Maker!</h3>
15
  <p>
16
  Join our self-paced email course to <strong>help you get started</strong> and learn about all the <strong>tips and tricks</strong> to get the most out of WP Recipe Maker.
11
 
12
  ?>
13
 
14
+ <h3>Video Introduction</h3>
15
+ <iframe width="560" height="315" src="https://www.youtube.com/embed/AtvGLRtTQgg?rel=0" frameborder="0" allowfullscreen></iframe>
16
+
17
  <h3>Get the most out of WP Recipe Maker!</h3>
18
  <p>
19
  Join our self-paced email course to <strong>help you get started</strong> and learn about all the <strong>tips and tricks</strong> to get the most out of WP Recipe Maker.
templates/admin/menu/faq/whats_new.php CHANGED
@@ -11,6 +11,18 @@
11
 
12
  ?>
13
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  <h3>2017-11-22 | WP Recipe Maker 1.26.0</h3>
15
  <ul>
16
  <li>Feature: Setting to automatically add recipe snippets like Jump to Recipe</li>
11
 
12
  ?>
13
 
14
+ <h3>2017-12-01 | WP Recipe Maker 1.27.0</h3>
15
+ <ul>
16
+ <li>Feature: Create and update recipes via REST API</li>
17
+ <li>Improvement: Only show automatically added snippets on singular pages</li>
18
+ <li>Improvement: Only show warning when changes have actually been made</li>
19
+ <li>Improvement: Introduction video on the welcome page</li>
20
+ <li>Fix: Status of recipes in scheduled posts</li>
21
+ <li>Fix: Show correct plural or singular form for hours</li>
22
+ <li>Fix: Prevent PHP notice caused by metadata</li>
23
+ <li>Fix: Modal overlay problem</li>
24
+ </ul>
25
+
26
  <h3>2017-11-22 | WP Recipe Maker 1.26.0</h3>
27
  <ul>
28
  <li>Feature: Setting to automatically add recipe snippets like Jump to Recipe</li>
wp-recipe-maker.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: WP Recipe Maker
16
  * Plugin URI: http://bootstrapped.ventures/wp-recipe-maker/
17
  * Description: The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for better SEO will get you more visitors!
18
- * Version: 1.26.0
19
  * Author: Bootstrapped Ventures
20
  * Author URI: http://bootstrapped.ventures/
21
  * License: GPL-2.0+
15
  * Plugin Name: WP Recipe Maker
16
  * Plugin URI: http://bootstrapped.ventures/wp-recipe-maker/
17
  * Description: The easy and user-friendly recipe plugin for everyone. Automatic JSON-LD metadata for better SEO will get you more visitors!
18
+ * Version: 1.27.0
19
  * Author: Bootstrapped Ventures
20
  * Author URI: http://bootstrapped.ventures/
21
  * License: GPL-2.0+