").addClass(k("wrapper")+" "+f.settings.modifier+" "+k("is",u.CLOSED)).hide().append(f.$modal),e.append(f.$wrapper),f.$wrapper.on("click."+q,'[data-remodal-action="close"]',function(a){a.preventDefault(),f.close()}),f.$wrapper.on("click."+q,'[data-remodal-action="cancel"]',function(a){a.preventDefault(),f.$modal.trigger(v.CANCELLATION),f.settings.closeOnCancel&&f.close(v.CANCELLATION)}),f.$wrapper.on("click."+q,'[data-remodal-action="confirm"]',function(a){a.preventDefault(),f.$modal.trigger(v.CONFIRMATION),f.settings.closeOnConfirm&&f.close(v.CONFIRMATION)}),f.$wrapper.on("click."+q,function(a){var c=b(a.target);c.hasClass(k("wrapper"))&&f.settings.closeOnOutsideClick&&f.close()})}var n,o,p="remodal",q=a.REMODAL_GLOBALS&&a.REMODAL_GLOBALS.NAMESPACE||p,r=b.map(["animationstart","webkitAnimationStart","MSAnimationStart","oAnimationStart"],function(a){return a+"."+q}).join(" "),s=b.map(["animationend","webkitAnimationEnd","MSAnimationEnd","oAnimationEnd"],function(a){return a+"."+q}).join(" "),t=b.extend({hashTracking:!0,closeOnConfirm:!0,closeOnCancel:!0,closeOnEscape:!0,closeOnOutsideClick:!0,modifier:"",appendTo:null},a.REMODAL_GLOBALS&&a.REMODAL_GLOBALS.DEFAULTS),u={CLOSING:"closing",CLOSED:"closed",OPENING:"opening",OPENED:"opened"},v={CONFIRMATION:"confirmation",CANCELLATION:"cancellation"},w=function(){var a=document.createElement("div").style;return void 0!==a.animationName||void 0!==a.WebkitAnimationName||void 0!==a.MozAnimationName||void 0!==a.msAnimationName||void 0!==a.OAnimationName}(),x=/iPad|iPhone|iPod/.test(navigator.platform);m.prototype.open=function(){var a,c=this;c.state!==u.OPENING&&c.state!==u.CLOSING&&(a=c.$modal.attr("data-remodal-id"),a&&c.settings.hashTracking&&(o=b(window).scrollTop(),location.hash=a),n&&n!==c&&i(n),n=c,e(),c.$bg.addClass(c.settings.modifier),c.$overlay.addClass(c.settings.modifier).show(),c.$wrapper.show().scrollTop(0),c.$modal.focus(),h(function(){g(c,u.OPENING)},function(){g(c,u.OPENED)},c))},m.prototype.close=function(a){var c=this;c.state!==u.OPENING&&c.state!==u.CLOSING&&c.state!==u.CLOSED&&(c.settings.hashTracking&&c.$modal.attr("data-remodal-id")===location.hash.substr(1)&&(location.hash="",b(window).scrollTop(o)),h(function(){g(c,u.CLOSING,!1,a)},function(){c.$bg.removeClass(c.settings.modifier),c.$overlay.removeClass(c.settings.modifier).hide(),c.$wrapper.hide(),f(),g(c,u.CLOSED,!1,a)},c))},m.prototype.getState=function(){return this.state},m.prototype.destroy=function(){var a,c=b[p].lookup;i(this),this.$wrapper.remove(),delete c[this.index],a=b.grep(c,function(a){return!!a}).length,0===a&&(this.$overlay.remove(),this.$bg.removeClass(k("is",u.CLOSING)+" "+k("is",u.OPENING)+" "+k("is",u.CLOSED)+" "+k("is",u.OPENED)))},b[p]={lookup:[]},b.fn[p]=function(a){var c,d;return this.each(function(e,f){d=b(f),null==d.data(p)?(c=new m(d,a),d.data(p,c.index),c.settings.hashTracking&&d.attr("data-remodal-id")===location.hash.substr(1)&&c.open()):c=b[p].lookup[d.data(p)]}),c},b(document).ready(function(){b(document).on("click","[data-remodal-target]",function(a){a.preventDefault();var c=a.currentTarget,d=c.getAttribute("data-remodal-target"),e=b('[data-remodal-id="'+d+'"]');b[p].lookup[e.data(p)].open()}),b(document).find("."+q).each(function(a,c){var d=b(c),e=d.data("remodal-options");e?("string"==typeof e||e instanceof String)&&(e=j(e)):e={},d[p](e)}),b(document).on("keydown."+q,function(a){n&&n.settings.closeOnEscape&&n.state===u.OPENED&&27===a.keyCode&&n.close()}),b(window).on("hashchange."+q,l)})});
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/js/screen-options.js b/public/wp-content/plugins/publishpress/common/js/screen-options.js
index 5a04149c8..bb1ad50f3 100644
--- a/public/wp-content/plugins/publishpress/common/js/screen-options.js
+++ b/public/wp-content/plugins/publishpress/common/js/screen-options.js
@@ -2,7 +2,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
diff --git a/public/wp-content/plugins/publishpress/common/libs/chosen-v1.8.3/package.json b/public/wp-content/plugins/publishpress/common/libs/chosen-v1.8.3/package.json
deleted file mode 100644
index c1410a4e5..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/chosen-v1.8.3/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "chosen-js",
- "version": "1.7.0",
- "description": "Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.",
- "keywords": [
- "select",
- "multiselect",
- "dropdown",
- "form",
- "input",
- "ui"
- ],
- "homepage": "https://harvesthq.github.io/chosen/",
- "bugs": "https://github.com/harvesthq/chosen/issues",
- "license": "MIT",
- "contributors": [
- {
- "name": "Patrick Filler",
- "url": "https://github.com/pfiller"
- },
- {
- "name": "Christophe Coevoet",
- "url": "https://github.com/stof"
- },
- {
- "name": "Ken Earley",
- "url": "https://github.com/kenearley"
- },
- {
- "name": "Koen Punt",
- "url": "https://github.com/koenpunt"
- }
- ],
- "dependencies": {},
- "files": [
- "chosen.jquery.js",
- "chosen.css",
- "chosen-sprite@2x.png",
- "chosen-sprite.png"
- ],
- "main": "chosen.jquery.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/harvesthq/chosen.git"
- }
-}
diff --git a/public/wp-content/plugins/publishpress/common/libs/floating-scroll/css/jquery.floatingscroll.css b/public/wp-content/plugins/publishpress/common/libs/floating-scroll/css/jquery.floatingscroll.css
new file mode 100644
index 000000000..47cddfef8
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/floating-scroll/css/jquery.floatingscroll.css
@@ -0,0 +1 @@
+.fl-scrolls{overflow:auto;position:fixed}.fl-scrolls div{overflow:hidden;pointer-events:none}.fl-scrolls div::before{content:"\A0"}.fl-scrolls,.fl-scrolls div{font-size:1px;line-height:0;margin:0;padding:0}.fl-scrolls-hidden div::before{content:"\A0\A0"}.fl-scrolls-viewport{position:relative}.fl-scrolls-body{overflow:auto}.fl-scrolls-viewport .fl-scrolls{position:absolute}.fl-scrolls-hoverable .fl-scrolls{opacity:0;transition:opacity .5s .3s}.fl-scrolls-hoverable:hover .fl-scrolls{opacity:1}.fl-scrolls:not([data-orientation]),.fl-scrolls[data-orientation=horizontal]{bottom:0;min-height:17px}.fl-scrolls:not([data-orientation]) div,.fl-scrolls[data-orientation=horizontal] div{height:1px}.fl-scrolls-hidden.fl-scrolls:not([data-orientation]),.fl-scrolls-hidden.fl-scrolls[data-orientation=horizontal]{bottom:9999px}.fl-scrolls-viewport .fl-scrolls:not([data-orientation]),.fl-scrolls-viewport .fl-scrolls[data-orientation=horizontal]{left:0}.fl-scrolls[data-orientation=vertical]{right:0;min-width:17px}.fl-scrolls[data-orientation=vertical] div{width:1px}.fl-scrolls-hidden.fl-scrolls[data-orientation=vertical]{right:9999px}.fl-scrolls-viewport .fl-scrolls[data-orientation=vertical]{top:0}
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/floating-scroll/js/jquery.floatingscroll.min.js b/public/wp-content/plugins/publishpress/common/libs/floating-scroll/js/jquery.floatingscroll.min.js
new file mode 100644
index 000000000..ccfef61a5
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/floating-scroll/js/jquery.floatingscroll.min.js
@@ -0,0 +1,6 @@
+/*!
+floating-scroll v3.2.0
+https://amphiluke.github.io/floating-scroll/
+(c) 2024 Amphiluke
+*/
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t){"use strict";var n="horizontal",i="vertical",e={init:function(t,i){var e=this;e.orientationProps=function(t){var i=t===n;return{ORIENTATION:t,SIZE:i?"width":"height",X_SIZE:i?"height":"width",OFFSET_SIZE:i?"offsetWidth":"offsetHeight",OFFSET_X_SIZE:i?"offsetHeight":"offsetWidth",CLIENT_SIZE:i?"clientWidth":"clientHeight",CLIENT_X_SIZE:i?"clientHeight":"clientWidth",INNER_X_SIZE:i?"innerHeight":"innerWidth",SCROLL_SIZE:i?"scrollWidth":"scrollHeight",SCROLL_POS:i?"scrollLeft":"scrollTop",START:i?"left":"top",X_START:i?"top":"left",X_END:i?"bottom":"right"}}(i);var o=t.closest(".fl-scrolls-body");o.length&&(e.scrollBody=o),e.container=t[0],e.visible=!0,e.initWidget(),e.updateAPI(),e.addEventHandlers(),e.skipSyncContainer=e.skipSyncWidget=!1},initWidget:function(){var n=this,i=n.orientationProps,e=i.ORIENTATION,o=i.SIZE,r=i.SCROLL_SIZE,c=n.widget=t('
');t("
").appendTo(c)[o](n.container[r]),c.appendTo(n.container)},addEventHandlers:function(){var n=this;(n.eventHandlers=[{$el:t(window),handlers:{"destroyDetached.fscroll":function(t){"fscroll"===t.namespace&&n.destroyDetachedAPI()}}},{$el:n.scrollBody||t(window),handlers:{scroll:function(){n.updateAPI()},resize:function(){n.updateAPI()}}},{$el:n.widget,handlers:{scroll:function(){n.visible&&!n.skipSyncContainer&&n.syncContainer(),n.skipSyncContainer=!1}}},{$el:t(n.container),handlers:{scroll:function(){n.skipSyncWidget||n.syncWidget(),n.skipSyncWidget=!1},focusin:function(){setTimeout((function(){n.widget&&n.syncWidget()}),0)},"update.fscroll":function(t){"fscroll"===t.namespace&&n.updateAPI()},"destroy.fscroll":function(t){"fscroll"===t.namespace&&n.destroyAPI()}}}]).forEach((function(t){var n=t.$el,i=t.handlers;return n.bind(i)}))},checkVisibility:function(){var t=this,n=t.widget,i=t.container,e=t.scrollBody,o=t.orientationProps,r=o.SCROLL_SIZE,c=o.OFFSET_SIZE,s=o.X_START,l=o.X_END,d=o.INNER_X_SIZE,a=o.CLIENT_X_SIZE,f=n[0][r]<=n[0][c];if(!f){var u=i.getBoundingClientRect(),h=e?e[0].getBoundingClientRect()[l]:window[d]||document.documentElement[a];f=u[l]<=h||u[s]>h}t.visible===f&&(t.visible=!f,n.toggleClass("fl-scrolls-hidden"))},syncContainer:function(){var t=this,n=t.orientationProps.SCROLL_POS,i=t.widget[0][n];t.container[n]!==i&&(t.skipSyncWidget=!0,t.container[n]=i)},syncWidget:function(){var t=this,n=t.orientationProps.SCROLL_POS,i=t.container[n];t.widget[0][n]!==i&&(t.skipSyncContainer=!0,t.widget[0][n]=i)},updateAPI:function(){var n=this,i=n.orientationProps,e=i.SIZE,o=i.X_SIZE,r=i.OFFSET_X_SIZE,c=i.CLIENT_SIZE,s=i.CLIENT_X_SIZE,l=i.SCROLL_SIZE,d=i.START,a=n.widget,f=n.container,u=n.scrollBody,h=f[c],S=f[l];a[e](h),u||a.css(d,f.getBoundingClientRect()[d]+"px"),t("div",a)[e](S),S>h&&a[o](a[0][r]-a[0][s]+1),n.syncWidget(),n.checkVisibility()},destroyAPI:function(){var t=this;t.eventHandlers.forEach((function(t){var n=t.$el,i=t.handlers;return n.unbind(i)})),t.widget.remove(),t.eventHandlers=t.widget=t.container=t.scrollBody=null},destroyDetachedAPI:function(){t.contains(document.body,this.container)||this.destroyAPI()}};t.fn.floatingScroll=function(o,r){if(void 0===o&&(o="init"),void 0===r&&(r={}),"init"===o){var c=r.orientation,s=void 0===c?n:c;if(s!==n&&s!==i)throw new Error("Scrollbar orientation should be either “"+n+"” or “"+i+"”");this.each((function(n,i){return Object.create(e).init(t(i),s)}))}else Object.prototype.hasOwnProperty.call(e,o+"API")&&this.trigger(o+".fscroll");return this},t((function(){t("body [data-fl-scrolls]").each((function(n,i){var e=t(i);e.floatingScroll("init",e.data("flScrolls")||{})}))}))}));
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/css/select2-full.min.css b/public/wp-content/plugins/publishpress/common/libs/select2/css/select2-full.min.css
new file mode 100644
index 000000000..34203783c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/select2/css/select2-full.min.css
@@ -0,0 +1 @@
+.pp_select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.pp_select2-container .pp_select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.pp_select2-container .pp_select2-selection--single .pp_select2-selection__rendered{display:block;overflow:hidden;padding-left:8px;padding-right:20px;text-overflow:ellipsis;white-space:nowrap}.pp_select2-container .pp_select2-selection--single .pp_select2-selection__clear{background-color:transparent;border:none;font-size:1em}.pp_select2-container[dir=rtl] .pp_select2-selection--single .pp_select2-selection__rendered{padding-left:20px;padding-right:8px}.pp_select2-container .pp_select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.pp_select2-container .pp_select2-selection--multiple .pp_select2-selection__rendered{display:inline;list-style:none;padding:0}.pp_select2-container .pp_select2-selection--multiple .pp_select2-selection__clear{background-color:transparent;border:none;font-size:1em}.pp_select2-container .pp_select2-search--inline .pp_select2-search__field{border:none;box-sizing:border-box;font-family:sans-serif;font-size:100%;height:18px;margin-left:5px;margin-top:5px;max-width:100%;overflow:hidden;padding:0;resize:none;vertical-align:bottom;word-break:keep-all}.pp_select2-container .pp_select2-search--inline .pp_select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.pp_select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;left:-100000px;position:absolute;width:100%;z-index:1051}.pp_select2-results{display:block}.pp_select2-results__options{list-style:none;margin:0;padding:0}.pp_select2-results__option{padding:6px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.pp_select2-results__option--selectable{cursor:pointer}.pp_select2-container--open .pp_select2-dropdown{left:0}.pp_select2-container--open .pp_select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.pp_select2-container--open .pp_select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.pp_select2-search--dropdown{display:block;padding:4px}.pp_select2-search--dropdown .pp_select2-search__field{box-sizing:border-box;padding:4px;width:100%}.pp_select2-search--dropdown .pp_select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.pp_select2-search--dropdown.pp_select2-search--hide{display:none}.pp_select2-close-mask{background-color:#fff;border:0;display:block;filter:alpha(opacity=0);height:auto;left:0;margin:0;min-height:100%;min-width:100%;opacity:0;padding:0;position:fixed;top:0;width:auto;z-index:99}.pp_select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.pp_select2-container--default .pp_select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.pp_select2-container--default .pp_select2-selection--single .pp_select2-selection__rendered{color:#444;line-height:28px}.pp_select2-container--default .pp_select2-selection--single .pp_select2-selection__clear{cursor:pointer;float:right;font-weight:700;height:26px;margin-right:20px;padding-right:0}.pp_select2-container--default .pp_select2-selection--single .pp_select2-selection__placeholder{color:#999}.pp_select2-container--default .pp_select2-selection--single .pp_select2-selection__arrow{height:26px;position:absolute;right:1px;top:1px;width:20px}.pp_select2-container--default .pp_select2-selection--single .pp_select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.pp_select2-container--default[dir=rtl] .pp_select2-selection--single .pp_select2-selection__clear{float:left}.pp_select2-container--default[dir=rtl] .pp_select2-selection--single .pp_select2-selection__arrow{left:1px;right:auto}.pp_select2-container--default.pp_select2-container--disabled .pp_select2-selection--single{background-color:#eee;cursor:default}.pp_select2-container--default.pp_select2-container--disabled .pp_select2-selection--single .pp_select2-selection__clear{display:none}.pp_select2-container--default.pp_select2-container--open .pp_select2-selection--single .pp_select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.pp_select2-container--default .pp_select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;padding-bottom:5px;padding-right:5px;position:relative}.pp_select2-container--default .pp_select2-selection--multiple.pp_select2-selection--clearable{padding-right:25px}.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__clear{cursor:pointer;font-weight:700;height:20px;margin-right:10px;margin-top:5px;padding:1px;position:absolute;right:0}.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:inline-block;margin-left:5px;margin-top:5px;max-width:100%;overflow:hidden;padding:0 0 0 20px;position:relative;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__choice__remove{background-color:transparent;border:none;border-bottom-left-radius:4px;border-right:1px solid #aaa;border-top-left-radius:4px;color:#999;cursor:pointer;font-size:1em;font-weight:700;left:0;padding:0 4px;position:absolute;top:0}.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__choice__remove:focus,.pp_select2-container--default .pp_select2-selection--multiple .pp_select2-selection__choice__remove:hover{background-color:#f1f1f1;color:#333;outline:none}.pp_select2-container--default[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice{margin-left:5px;margin-right:auto}.pp_select2-container--default[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice__display{padding-left:5px;padding-right:2px}.pp_select2-container--default[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice__remove{border-bottom-left-radius:0;border-bottom-right-radius:4px;border-left:1px solid #aaa;border-right:none;border-top-left-radius:0;border-top-right-radius:4px}.pp_select2-container--default[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__clear{float:left;margin-left:10px;margin-right:auto}.pp_select2-container--default.pp_select2-container--focus .pp_select2-selection--multiple{border:1px solid #000;outline:0}.pp_select2-container--default.pp_select2-container--disabled .pp_select2-selection--multiple{background-color:#eee;cursor:default}.pp_select2-container--default.pp_select2-container--disabled .pp_select2-selection__choice__remove{display:none}.pp_select2-container--default.pp_select2-container--open.pp_select2-container--above .pp_select2-selection--multiple,.pp_select2-container--default.pp_select2-container--open.pp_select2-container--above .pp_select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.pp_select2-container--default.pp_select2-container--open.pp_select2-container--below .pp_select2-selection--multiple,.pp_select2-container--default.pp_select2-container--open.pp_select2-container--below .pp_select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.pp_select2-container--default .pp_select2-search--dropdown .pp_select2-search__field{border:1px solid #aaa}.pp_select2-container--default .pp_select2-search--inline .pp_select2-search__field{-webkit-appearance:textfield;background:transparent;border:none;box-shadow:none;outline:0}.pp_select2-container--default .pp_select2-results>.pp_select2-results__options{max-height:200px;overflow-y:auto}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option{padding-left:1em}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__group{padding-left:0}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option{margin-left:-1em;padding-left:2em}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option{margin-left:-2em;padding-left:3em}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option{margin-left:-3em;padding-left:4em}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option{margin-left:-4em;padding-left:5em}.pp_select2-container--default .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option .pp_select2-results__option{margin-left:-5em;padding-left:6em}.pp_select2-container--default .pp_select2-results__option--group{padding:0}.pp_select2-container--default .pp_select2-results__option--disabled{color:#999}.pp_select2-container--default .pp_select2-results__option--selected{background-color:#ddd}.pp_select2-container--default .pp_select2-results__option--highlighted.pp_select2-results__option--selectable{background-color:#5897fb;color:#fff}.pp_select2-container--default .pp_select2-results__group{cursor:default;display:block;padding:6px}.pp_select2-container--classic .pp_select2-selection--single{background-color:#f7f7f7;background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;border:1px solid #aaa;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0);outline:0}.pp_select2-container--classic .pp_select2-selection--single:focus{border:1px solid #5897fb}.pp_select2-container--classic .pp_select2-selection--single .pp_select2-selection__rendered{color:#444;line-height:28px}.pp_select2-container--classic .pp_select2-selection--single .pp_select2-selection__clear{cursor:pointer;float:right;font-weight:700;height:26px;margin-right:20px}.pp_select2-container--classic .pp_select2-selection--single .pp_select2-selection__placeholder{color:#999}.pp_select2-container--classic .pp_select2-selection--single .pp_select2-selection__arrow{background-color:#ddd;background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;border:none;border-bottom-right-radius:4px;border-left:1px solid #aaa;border-top-right-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0);height:26px;position:absolute;right:1px;top:1px;width:20px}.pp_select2-container--classic .pp_select2-selection--single .pp_select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.pp_select2-container--classic[dir=rtl] .pp_select2-selection--single .pp_select2-selection__clear{float:left}.pp_select2-container--classic[dir=rtl] .pp_select2-selection--single .pp_select2-selection__arrow{border:none;border-radius:0;border-bottom-left-radius:4px;border-right:1px solid #aaa;border-top-left-radius:4px;left:1px;right:auto}.pp_select2-container--classic.pp_select2-container--open .pp_select2-selection--single{border:1px solid #5897fb}.pp_select2-container--classic.pp_select2-container--open .pp_select2-selection--single .pp_select2-selection__arrow{background:transparent;border:none}.pp_select2-container--classic.pp_select2-container--open .pp_select2-selection--single .pp_select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.pp_select2-container--classic.pp_select2-container--open.pp_select2-container--above .pp_select2-selection--single{background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;border-top:none;border-top-left-radius:0;border-top-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.pp_select2-container--classic.pp_select2-container--open.pp_select2-container--below .pp_select2-selection--single{background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.pp_select2-container--classic .pp_select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;padding-bottom:5px;padding-right:5px}.pp_select2-container--classic .pp_select2-selection--multiple:focus{border:1px solid #5897fb}.pp_select2-container--classic .pp_select2-selection--multiple .pp_select2-selection__clear{display:none}.pp_select2-container--classic .pp_select2-selection--multiple .pp_select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;display:inline-block;margin-left:5px;margin-top:5px;padding:0}.pp_select2-container--classic .pp_select2-selection--multiple .pp_select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.pp_select2-container--classic .pp_select2-selection--multiple .pp_select2-selection__choice__remove{background-color:transparent;border:none;border-bottom-left-radius:4px;border-top-left-radius:4px;color:#888;cursor:pointer;font-size:1em;font-weight:700;padding:0 4px}.pp_select2-container--classic .pp_select2-selection--multiple .pp_select2-selection__choice__remove:hover{color:#555;outline:none}.pp_select2-container--classic[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice{margin-left:5px;margin-right:auto}.pp_select2-container--classic[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice__display{padding-left:5px;padding-right:2px}.pp_select2-container--classic[dir=rtl] .pp_select2-selection--multiple .pp_select2-selection__choice__remove{border-bottom-left-radius:0;border-bottom-right-radius:4px;border-top-left-radius:0;border-top-right-radius:4px}.pp_select2-container--classic.pp_select2-container--open .pp_select2-selection--multiple{border:1px solid #5897fb}.pp_select2-container--classic.pp_select2-container--open.pp_select2-container--above .pp_select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.pp_select2-container--classic.pp_select2-container--open.pp_select2-container--below .pp_select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.pp_select2-container--classic .pp_select2-search--dropdown .pp_select2-search__field{border:1px solid #aaa;outline:0}.pp_select2-container--classic .pp_select2-search--inline .pp_select2-search__field{box-shadow:none;outline:0}.pp_select2-container--classic .pp_select2-dropdown{background-color:#fff;border:1px solid transparent}.pp_select2-container--classic .pp_select2-dropdown--above{border-bottom:none}.pp_select2-container--classic .pp_select2-dropdown--below{border-top:none}.pp_select2-container--classic .pp_select2-results>.pp_select2-results__options{max-height:200px;overflow-y:auto}.pp_select2-container--classic .pp_select2-results__option--group{padding:0}.pp_select2-container--classic .pp_select2-results__option--disabled{color:grey}.pp_select2-container--classic .pp_select2-results__option--highlighted.pp_select2-results__option--selectable{background-color:#3875d7;color:#fff}.pp_select2-container--classic .pp_select2-results__group{cursor:default;display:block;padding:6px}.pp_select2-container--classic.pp_select2-container--open .pp_select2-dropdown{border-color:#5897fb}
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.css b/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.css
deleted file mode 100644
index ce3afd1d5..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.css
+++ /dev/null
@@ -1,484 +0,0 @@
-.select2-container {
- box-sizing: border-box;
- display: inline-block;
- margin: 0;
- position: relative;
- vertical-align: middle; }
- .select2-container .select2-selection--single {
- box-sizing: border-box;
- cursor: pointer;
- display: block;
- height: 28px;
- user-select: none;
- -webkit-user-select: none; }
- .select2-container .select2-selection--single .select2-selection__rendered {
- display: block;
- padding-left: 8px;
- padding-right: 20px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap; }
- .select2-container .select2-selection--single .select2-selection__clear {
- position: relative; }
- .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
- padding-right: 8px;
- padding-left: 20px; }
- .select2-container .select2-selection--multiple {
- box-sizing: border-box;
- cursor: pointer;
- display: block;
- min-height: 32px;
- user-select: none;
- -webkit-user-select: none; }
- .select2-container .select2-selection--multiple .select2-selection__rendered {
- display: inline-block;
- overflow: hidden;
- padding-left: 8px;
- text-overflow: ellipsis;
- white-space: nowrap; }
- .select2-container .select2-search--inline {
- float: left; }
- .select2-container .select2-search--inline .select2-search__field {
- box-sizing: border-box;
- border: none;
- font-size: 100%;
- margin-top: 5px;
- padding: 0; }
- .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
- -webkit-appearance: none; }
-
-.select2-dropdown {
- background-color: white;
- border: 1px solid #aaa;
- border-radius: 4px;
- box-sizing: border-box;
- display: block;
- position: absolute;
- left: -100000px;
- width: 100%;
- z-index: 1051; }
-
-.select2-results {
- display: block; }
-
-.select2-results__options {
- list-style: none;
- margin: 0;
- padding: 0; }
-
-.select2-results__option {
- padding: 6px;
- user-select: none;
- -webkit-user-select: none; }
- .select2-results__option[aria-selected] {
- cursor: pointer; }
-
-.select2-container--open .select2-dropdown {
- left: 0; }
-
-.select2-container--open .select2-dropdown--above {
- border-bottom: none;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0; }
-
-.select2-container--open .select2-dropdown--below {
- border-top: none;
- border-top-left-radius: 0;
- border-top-right-radius: 0; }
-
-.select2-search--dropdown {
- display: block;
- padding: 4px; }
- .select2-search--dropdown .select2-search__field {
- padding: 4px;
- width: 100%;
- box-sizing: border-box; }
- .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
- -webkit-appearance: none; }
- .select2-search--dropdown.select2-search--hide {
- display: none; }
-
-.select2-close-mask {
- border: 0;
- margin: 0;
- padding: 0;
- display: block;
- position: fixed;
- left: 0;
- top: 0;
- min-height: 100%;
- min-width: 100%;
- height: auto;
- width: auto;
- opacity: 0;
- z-index: 99;
- background-color: #fff;
- filter: alpha(opacity=0); }
-
-.select2-hidden-accessible {
- border: 0 !important;
- clip: rect(0 0 0 0) !important;
- -webkit-clip-path: inset(50%) !important;
- clip-path: inset(50%) !important;
- height: 1px !important;
- overflow: hidden !important;
- padding: 0 !important;
- position: absolute !important;
- width: 1px !important;
- white-space: nowrap !important; }
-
-.select2-container--default .select2-selection--single {
- background-color: #fff;
- border: 1px solid #aaa;
- border-radius: 4px; }
- .select2-container--default .select2-selection--single .select2-selection__rendered {
- color: #444;
- line-height: 28px; }
- .select2-container--default .select2-selection--single .select2-selection__clear {
- cursor: pointer;
- float: right;
- font-weight: bold; }
- .select2-container--default .select2-selection--single .select2-selection__placeholder {
- color: #999; }
- .select2-container--default .select2-selection--single .select2-selection__arrow {
- height: 26px;
- position: absolute;
- top: 1px;
- right: 1px;
- width: 20px; }
- .select2-container--default .select2-selection--single .select2-selection__arrow b {
- border-color: #888 transparent transparent transparent;
- border-style: solid;
- border-width: 5px 4px 0 4px;
- height: 0;
- left: 50%;
- margin-left: -4px;
- margin-top: -2px;
- position: absolute;
- top: 50%;
- width: 0; }
-
-.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
- float: left; }
-
-.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
- left: 1px;
- right: auto; }
-
-.select2-container--default.select2-container--disabled .select2-selection--single {
- background-color: #eee;
- cursor: default; }
- .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
- display: none; }
-
-.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
- border-color: transparent transparent #888 transparent;
- border-width: 0 4px 5px 4px; }
-
-.select2-container--default .select2-selection--multiple {
- background-color: white;
- border: 1px solid #aaa;
- border-radius: 4px;
- cursor: text; }
- .select2-container--default .select2-selection--multiple .select2-selection__rendered {
- box-sizing: border-box;
- list-style: none;
- margin: 0;
- padding: 0 5px;
- width: 100%; }
- .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
- list-style: none; }
- .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
- color: #999;
- margin-top: 5px;
- float: left; }
- .select2-container--default .select2-selection--multiple .select2-selection__clear {
- cursor: pointer;
- float: right;
- font-weight: bold;
- margin-top: 5px;
- margin-right: 10px; }
- .select2-container--default .select2-selection--multiple .select2-selection__choice {
- background-color: #e4e4e4;
- border: 1px solid #aaa;
- border-radius: 4px;
- cursor: default;
- float: left;
- margin-right: 5px;
- margin-top: 5px;
- padding: 0 5px; }
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
- color: #999;
- cursor: pointer;
- display: inline-block;
- font-weight: bold;
- margin-right: 2px; }
- .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
- color: #333; }
-
-.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
- float: right; }
-
-.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
- margin-left: 5px;
- margin-right: auto; }
-
-.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
- margin-left: 2px;
- margin-right: auto; }
-
-.select2-container--default.select2-container--focus .select2-selection--multiple {
- border: solid black 1px;
- outline: 0; }
-
-.select2-container--default.select2-container--disabled .select2-selection--multiple {
- background-color: #eee;
- cursor: default; }
-
-.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
- display: none; }
-
-.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
- border-top-left-radius: 0;
- border-top-right-radius: 0; }
-
-.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0; }
-
-.select2-container--default .select2-search--dropdown .select2-search__field {
- border: 1px solid #aaa; }
-
-.select2-container--default .select2-search--inline .select2-search__field {
- background: transparent;
- border: none;
- outline: 0;
- box-shadow: none;
- -webkit-appearance: textfield; }
-
-.select2-container--default .select2-results > .select2-results__options {
- max-height: 200px;
- overflow-y: auto; }
-
-.select2-container--default .select2-results__option[role=group] {
- padding: 0; }
-
-.select2-container--default .select2-results__option[aria-disabled=true] {
- color: #999; }
-
-.select2-container--default .select2-results__option[aria-selected=true] {
- background-color: #ddd; }
-
-.select2-container--default .select2-results__option .select2-results__option {
- padding-left: 1em; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
- padding-left: 0; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
- margin-left: -1em;
- padding-left: 2em; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
- margin-left: -2em;
- padding-left: 3em; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
- margin-left: -3em;
- padding-left: 4em; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
- margin-left: -4em;
- padding-left: 5em; }
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
- margin-left: -5em;
- padding-left: 6em; }
-
-.select2-container--default .select2-results__option--highlighted[aria-selected] {
- background-color: #5897fb;
- color: white; }
-
-.select2-container--default .select2-results__group {
- cursor: default;
- display: block;
- padding: 6px; }
-
-.select2-container--classic .select2-selection--single {
- background-color: #f7f7f7;
- border: 1px solid #aaa;
- border-radius: 4px;
- outline: 0;
- background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
- background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
- background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
- .select2-container--classic .select2-selection--single:focus {
- border: 1px solid #5897fb; }
- .select2-container--classic .select2-selection--single .select2-selection__rendered {
- color: #444;
- line-height: 28px; }
- .select2-container--classic .select2-selection--single .select2-selection__clear {
- cursor: pointer;
- float: right;
- font-weight: bold;
- margin-right: 10px; }
- .select2-container--classic .select2-selection--single .select2-selection__placeholder {
- color: #999; }
- .select2-container--classic .select2-selection--single .select2-selection__arrow {
- background-color: #ddd;
- border: none;
- border-left: 1px solid #aaa;
- border-top-right-radius: 4px;
- border-bottom-right-radius: 4px;
- height: 26px;
- position: absolute;
- top: 1px;
- right: 1px;
- width: 20px;
- background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
- background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
- background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
- .select2-container--classic .select2-selection--single .select2-selection__arrow b {
- border-color: #888 transparent transparent transparent;
- border-style: solid;
- border-width: 5px 4px 0 4px;
- height: 0;
- left: 50%;
- margin-left: -4px;
- margin-top: -2px;
- position: absolute;
- top: 50%;
- width: 0; }
-
-.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
- float: left; }
-
-.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
- border: none;
- border-right: 1px solid #aaa;
- border-radius: 0;
- border-top-left-radius: 4px;
- border-bottom-left-radius: 4px;
- left: 1px;
- right: auto; }
-
-.select2-container--classic.select2-container--open .select2-selection--single {
- border: 1px solid #5897fb; }
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
- background: transparent;
- border: none; }
- .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
- border-color: transparent transparent #888 transparent;
- border-width: 0 4px 5px 4px; }
-
-.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
- border-top: none;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
- background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
- background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
-
-.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
- border-bottom: none;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
- background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
- background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
- background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
-
-.select2-container--classic .select2-selection--multiple {
- background-color: white;
- border: 1px solid #aaa;
- border-radius: 4px;
- cursor: text;
- outline: 0; }
- .select2-container--classic .select2-selection--multiple:focus {
- border: 1px solid #5897fb; }
- .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
- list-style: none;
- margin: 0;
- padding: 0 5px; }
- .select2-container--classic .select2-selection--multiple .select2-selection__clear {
- display: none; }
- .select2-container--classic .select2-selection--multiple .select2-selection__choice {
- background-color: #e4e4e4;
- border: 1px solid #aaa;
- border-radius: 4px;
- cursor: default;
- float: left;
- margin-right: 5px;
- margin-top: 5px;
- padding: 0 5px; }
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
- color: #888;
- cursor: pointer;
- display: inline-block;
- font-weight: bold;
- margin-right: 2px; }
- .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
- color: #555; }
-
-.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
- float: right;
- margin-left: 5px;
- margin-right: auto; }
-
-.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
- margin-left: 2px;
- margin-right: auto; }
-
-.select2-container--classic.select2-container--open .select2-selection--multiple {
- border: 1px solid #5897fb; }
-
-.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
- border-top: none;
- border-top-left-radius: 0;
- border-top-right-radius: 0; }
-
-.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
- border-bottom: none;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0; }
-
-.select2-container--classic .select2-search--dropdown .select2-search__field {
- border: 1px solid #aaa;
- outline: 0; }
-
-.select2-container--classic .select2-search--inline .select2-search__field {
- outline: 0;
- box-shadow: none; }
-
-.select2-container--classic .select2-dropdown {
- background-color: white;
- border: 1px solid transparent; }
-
-.select2-container--classic .select2-dropdown--above {
- border-bottom: none; }
-
-.select2-container--classic .select2-dropdown--below {
- border-top: none; }
-
-.select2-container--classic .select2-results > .select2-results__options {
- max-height: 200px;
- overflow-y: auto; }
-
-.select2-container--classic .select2-results__option[role=group] {
- padding: 0; }
-
-.select2-container--classic .select2-results__option[aria-disabled=true] {
- color: grey; }
-
-.select2-container--classic .select2-results__option--highlighted[aria-selected] {
- background-color: #3875d7;
- color: white; }
-
-.select2-container--classic .select2-results__group {
- cursor: default;
- display: block;
- padding: 6px; }
-
-.select2-container--classic.select2-container--open .select2-dropdown {
- border-color: #5897fb; }
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.min.css b/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.min.css
deleted file mode 100644
index 60d599044..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/css/select2.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/af.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/af.js
deleted file mode 100644
index 5f9e40a2f..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/af.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Verwyders asseblief "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Voer asseblief "+t+" of meer karakters";return n},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var t="Kies asseblief net "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ar.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ar.js
deleted file mode 100644
index 8004facb8..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ar.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum;return"الرجاء حذف "+t+" عناصر"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"الرجاء إضافة "+t+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){return"تستطيع إختيار "+e.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/az.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/az.js
deleted file mode 100644
index 705576353..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/az.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bg.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bg.js
deleted file mode 100644
index 1d8b72120..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bg.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bn.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bn.js
deleted file mode 100644
index 4b0e03e1f..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bn.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।";return t!=1&&(n="অনুগ্রহ করে "+t+" টি অক্ষর মুছে দিন।"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=t+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।";return n},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(e){var t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return e.maximum!=1&&(t=e.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),t},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bs.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bs.js
deleted file mode 100644
index c9a013c83..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/bs.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bs",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ca.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ca.js
deleted file mode 100644
index acb7af6af..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ca.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/cs.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/cs.js
deleted file mode 100644
index e7cbd2700..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/cs.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadejte o jeden znak méně.":n<=4?"Prosím, zadejte o "+e(n,!0)+" znaky méně.":"Prosím, zadejte o "+n+" znaků méně."},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadejte ještě jeden znak.":n<=4?"Prosím, zadejte ještě další "+e(n,!0)+" znaky.":"Prosím, zadejte ještě dalších "+n+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku.":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky.":"Můžete zvolit maximálně "+n+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/da.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/da.js
deleted file mode 100644
index 2692bd007..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/da.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/de.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/de.js
deleted file mode 100644
index 8257c6fac..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/de.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Gegenstände"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/dsb.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/dsb.js
deleted file mode 100644
index 242df33f3..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/dsb.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/dsb",[],function(){var e=["znamuško","znamušce","znamuška","znamuškow"],t=["zapisk","zapiska","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Pšosym lašuj "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Pšosym zapódaj nanejmjenjej "+r+" "+n(r,e)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(e){return"Móžoš jano "+e.maximum+" "+n(e.maximum,t)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/el.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/el.js
deleted file mode 100644
index 46503bc0f..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/el.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/en.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/en.js
deleted file mode 100644
index caa668c21..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/en.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/es.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/es.js
deleted file mode 100644
index b4d69653a..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/es.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/et.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/et.js
deleted file mode 100644
index 08ef43664..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/et.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/eu.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/eu.js
deleted file mode 100644
index 56bb78b0b..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/eu.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fa.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fa.js
deleted file mode 100644
index 7ea1ae27a..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fa.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها میتوانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجهای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fi.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fi.js
deleted file mode 100644
index 31eeeb57b..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fi.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fr.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fr.js
deleted file mode 100644
index 250a4ef53..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/fr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Supprimez "+t+" caractère"+(t>1?"s":"")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les articles"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/gl.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/gl.js
deleted file mode 100644
index 271050f44..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/gl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?"Elimine un carácter":"Elimine "+t+" caracteres"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?"Engada un carácter":"Engada "+t+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return e.maximum===1?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/he.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/he.js
deleted file mode 100644
index 20254b5a1..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/he.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hi.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hi.js
deleted file mode 100644
index 521088fcb..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hi.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hr.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hr.js
deleted file mode 100644
index eddd056a5..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hsb.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hsb.js
deleted file mode 100644
index 2542aa4eb..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hsb.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hsb",[],function(){var e=["znamješko","znamješce","znamješka","znamješkow"],t=["zapisk","zapiskaj","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Prošu zhašej "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Prošu zapodaj znajmjeńša "+r+" "+n(r,e)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(e){return"Móžeš jenož "+e.maximum+" "+n(e.maximum,t)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hu.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hu.js
deleted file mode 100644
index 2bdbbe997..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hu.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hy.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hy.js
deleted file mode 100644
index b9a1cae11..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/hy.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Խնդրում ենք հեռացնել "+t+" նշան";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Խնդրում ենք մուտքագրել "+t+" կամ ավել նշաններ";return n},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(e){var t="Դուք կարող եք ընտրել առավելագույնը "+e.maximum+" կետ";return t},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/id.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/id.js
deleted file mode 100644
index c622da968..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/id.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/is.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/is.js
deleted file mode 100644
index c703bf416..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/is.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/it.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/it.js
deleted file mode 100644
index 799a7c869..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/it.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ja.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ja.js
deleted file mode 100644
index 9a6c299a0..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ja.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ka.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ka.js
deleted file mode 100644
index 1a8bf9159..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ka.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="გთხოვთ აკრიფეთ "+t+" სიმბოლოთი ნაკლები";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="გთხოვთ აკრიფეთ "+t+" სიმბოლო ან მეტი";return n},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(e){var t="თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+e.maximum+" ელემენტი";return t},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/km.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/km.js
deleted file mode 100644
index e918d4f51..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/km.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ko.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ko.js
deleted file mode 100644
index cc62730a1..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ko.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lt.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lt.js
deleted file mode 100644
index 3c3dc3258..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lt.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lv.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lv.js
deleted file mode 100644
index 9e62a3ba8..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/lv.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/mk.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/mk.js
deleted file mode 100644
index 6f78a6b27..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/mk.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ms.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ms.js
deleted file mode 100644
index 55411d4a3..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ms.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nb.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nb.js
deleted file mode 100644
index 4d6ffc92b..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nb.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Vennligst skriv inn "+t+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ne.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ne.js
deleted file mode 100644
index ed48b1db7..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ne.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="कृपया "+t+" अक्षर मेटाउनुहोस्।";return t!=1&&(n+="कृपया "+t+" अक्षरहरु मेटाउनुहोस्।"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया बाँकी रहेका "+t+" वा अरु धेरै अक्षरहरु भर्नुहोस्।";return n},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(e){var t="तँपाई "+e.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return e.maximum!=1&&(t="तँपाई "+e.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),t},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nl.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nl.js
deleted file mode 100644
index 00479f8d3..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/nl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pl.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pl.js
deleted file mode 100644
index b611a25e0..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ps.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ps.js
deleted file mode 100644
index 3ddcd2a5c..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ps.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="د مهربانۍ لمخي "+t+" توری ړنګ کړئ";return t!=1&&(n=n.replace("توری","توري")),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لږ تر لږه "+t+" يا ډېر توري وليکئ";return n},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(e){var t="تاسو يوازي "+e.maximum+" قلم په نښه کولای سی";return e.maximum!=1&&(t=t.replace("قلم","قلمونه")),t},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt-BR.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt-BR.js
deleted file mode 100644
index 5b216a8f7..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt-BR.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt.js
deleted file mode 100644
index cdecbc58f..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/pt.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ro.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ro.js
deleted file mode 100644
index d8e674dc3..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ro.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+" sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ru.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ru.js
deleted file mode 100644
index abc73ff0c..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/ru.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите ещё хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sk.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sk.js
deleted file mode 100644
index 6539dfc24..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sk.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sl.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sl.js
deleted file mode 100644
index 98e783da0..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Prosim zbrišite "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Prosim vpišite še "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var t="Označite lahko največ "+e.maximum+" predmet";return e.maximum==2?t+="a":e.maximum!=1&&(t+="e"),t},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sq.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sq.js
deleted file mode 100644
index 71e9b13ba..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sq.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Të lutem fshi "+t+" karakter";return t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Të lutem shkruaj "+t+" ose më shumë karaktere";return n},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var t="Mund të zgjedhësh vetëm "+e.maximum+" element";return e.maximum!=1&&(t+="e"),t},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr-Cyrl.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr-Cyrl.js
deleted file mode 100644
index 0719ff042..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr-Cyrl.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr.js
deleted file mode 100644
index ec50c9929..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sv.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sv.js
deleted file mode 100644
index 567f58449..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/sv.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/th.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/th.js
deleted file mode 100644
index 7d5a0e0bb..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/th.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tk.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tk.js
deleted file mode 100644
index f3da1119b..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tk.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" harp bozuň.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ýene-de iň az "+t+" harp ýazyň.";return n},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){var t="Diňe "+e.maximum+" sanysyny saýlaň.";return t},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tr.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tr.js
deleted file mode 100644
index acdfea669..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/tr.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/uk.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/uk.js
deleted file mode 100644
index 1e0cafe89..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/uk.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/vi.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/vi.js
deleted file mode 100644
index a24fbe50e..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/vi.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng xóa bớt "+t+" ký tự";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập thêm từ "+t+" ký tự trở lên";return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-CN.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-CN.js
deleted file mode 100644
index a037e7b6e..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-CN.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-TW.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-TW.js
deleted file mode 100644
index 116eda147..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/i18n/zh-TW.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
-
-(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),{define:e.define,require:e.require}})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2-full.min.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/select2-full.min.js
new file mode 100644
index 000000000..703fb7577
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/select2/js/select2-full.min.js
@@ -0,0 +1 @@
+(()=>{var e={669:e=>{"use strict";e.exports=jQuery},904:(e,t,n)=>{var i,s,o;function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}s=[n(669)],void 0===(o="function"==typeof(i=function(n){var i=function(){if(n&&n.fn&&n.fn.pp_select2&&n.fn.pp_select2.amd)var i=n.fn.pp_select2.amd;var s,o,a;return i&&i.requirejs||(i?o=i:i={},function(e){var t,n,i,l,c={},p={},u={},d={},h=Object.prototype.hasOwnProperty,f=[].slice,g=/\.js$/;function m(e,t){return h.call(e,t)}function _(e,t){var n,i,s,o,r,a,l,c,p,d,h,f=t&&t.split("/"),m=u.map,_=m&&m["*"]||{};if(e){for(r=(e=e.split("/")).length-1,u.nodeIdCompat&&g.test(e[r])&&(e[r]=e[r].replace(g,"")),"."===e[0].charAt(0)&&f&&(e=f.slice(0,f.length-1).concat(e)),p=0;p
0&&(e.splice(p-1,2),p-=2)}e=e.join("/")}if((f||_)&&m){for(p=(n=e.split("/")).length;p>0;p-=1){if(i=n.slice(0,p).join("/"),f)for(d=f.length;d>0;d-=1)if((s=m[f.slice(0,d).join("/")])&&(s=s[i])){o=s,a=p;break}if(o)break;!l&&_&&_[i]&&(l=_[i],c=p)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function v(t,i){return function(){var s=f.call(arguments,0);return"string"!=typeof s[0]&&1===s.length&&s.push(null),n.apply(e,s.concat([t,i]))}}function y(e){return function(t){return _(t,e)}}function b(e){return function(t){c[e]=t}}function w(n){if(m(p,n)){var i=p[n];delete p[n],d[n]=!0,t.apply(e,i)}if(!m(c,n)&&!m(d,n))throw new Error("No "+n);return c[n]}function $(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function x(e){return e?$(e):[]}function A(e){return function(){return u&&u.config&&u.config[e]||{}}}i=function(e,t){var n,i=$(e),s=i[0],o=t[1];return e=i[1],s&&(n=w(s=_(s,o))),s?e=n&&n.normalize?n.normalize(e,y(o)):_(e,o):(s=(i=$(e=_(e,o)))[0],e=i[1],s&&(n=w(s))),{f:s?s+"!"+e:e,n:e,pr:s,p:n}},l={require:function(e){return v(e)},exports:function(e){var t=c[e];return void 0!==t?t:c[e]={}},module:function(e){return{id:e,uri:"",exports:c[e],config:A(e)}}},t=function(t,n,s,o){var a,u,h,f,g,_,y,$=[],A=r(s);if(_=x(o=o||t),"undefined"===A||"function"===A){for(n=!n.length&&s.length?["require","exports","module"]:n,g=0;g0&&(n.call(arguments,e.prototype.constructor),s=t.prototype.constructor),s.apply(this,arguments)}function r(){this.constructor=o}t.displayName=e.displayName,o.prototype=new r;for(var a=0;a":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,(function(e){return t[e]}))},t.__cache={};var s=0;return t.GetUniqueElementId=function(e){var n=e.getAttribute("data-pp_select2-id");return null!=n||(n=e.id?"pp_select2-data-"+e.id:"pp_select2-data-"+(++s).toString()+"-"+t.generateChars(4),e.setAttribute("data-pp_select2-id",n)),n},t.StoreData=function(e,n,i){var s=t.GetUniqueElementId(e);t.__cache[s]||(t.__cache[s]={}),t.__cache[s][n]=i},t.GetData=function(n,i){var s=t.GetUniqueElementId(n);return i?t.__cache[s]&&null!=t.__cache[s][i]?t.__cache[s][i]:e(n).data(i):t.__cache[s]},t.RemoveData=function(e){var n=t.GetUniqueElementId(e);null!=t.__cache[n]&&delete t.__cache[n],e.removeAttribute("data-pp_select2-id")},t.copyNonInternalCssClasses=function(e,t){var n=e.getAttribute("class").trim().split(/\s+/);n=n.filter((function(e){return 0===e.indexOf("pp_select2-")}));var i=t.getAttribute("class").trim().split(/\s+/);i=i.filter((function(e){return 0!==e.indexOf("pp_select2-")}));var s=n.concat(i);e.setAttribute("class",s.join(" "))},t})),i.define("pp_select2/results",["jquery","./utils"],(function(e,t){function n(e,t,i){this.$element=e,this.data=i,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('');return this.options.get("multiple")&&t.attr("aria-multiselectable","true"),this.$results=t,t},n.prototype.clear=function(){this.$results.empty()},n.prototype.displayMessage=function(t){var n=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var i=e(' '),s=this.options.get("translations").get(t.message);i.append(n(s(t.args))),i[0].className+=" pp_select2-results__message",this.$results.append(i)},n.prototype.hideMessages=function(){this.$results.find(".pp_select2-results__message").remove()},n.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n0?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},n.prototype.setClasses=function(){var n=this;this.data.current((function(i){var s=i.map((function(e){return e.id.toString()}));n.$results.find(".pp_select2-results__option--selectable").each((function(){var n=e(this),i=t.GetData(this,"data"),o=""+i.id;null!=i.element&&i.element.selected||null==i.element&&s.indexOf(o)>-1?(this.classList.add("pp_select2-results__option--selected"),n.attr("aria-selected","true")):(this.classList.remove("pp_select2-results__option--selected"),n.attr("aria-selected","false"))}))}))},n.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},n.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},n.prototype.option=function(n){var i=document.createElement("li");i.classList.add("pp_select2-results__option"),i.classList.add("pp_select2-results__option--selectable");var s={role:"option"},o=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var r in(null!=n.element&&o.call(n.element,":disabled")||null==n.element&&n.disabled)&&(s["aria-disabled"]="true",i.classList.remove("pp_select2-results__option--selectable"),i.classList.add("pp_select2-results__option--disabled")),null==n.id&&i.classList.remove("pp_select2-results__option--selectable"),null!=n._resultId&&(i.id=n._resultId),n.title&&(i.title=n.title),n.children&&(s.role="group",s["aria-label"]=n.text,i.classList.remove("pp_select2-results__option--selectable"),i.classList.add("pp_select2-results__option--group")),s){var a=s[r];i.setAttribute(r,a)}if(n.children){var l=e(i),c=document.createElement("strong");c.className="pp_select2-results__group",this.template(n,c);for(var p=[],u=0;u",{class:"pp_select2-results__options pp_select2-results__options--nested",role:"none"});f.append(p),l.append(c),l.append(f)}else this.template(n,i);return t.StoreData(i,"data",n),i},n.prototype.bind=function(n,i){var s=this,o=n.id+"-results";this.$results.attr("id",o),n.on("results:all",(function(e){s.clear(),s.append(e.data),n.isOpen()&&(s.setClasses(),s.highlightFirstItem())})),n.on("results:append",(function(e){s.append(e.data),n.isOpen()&&s.setClasses()})),n.on("query",(function(e){s.hideMessages(),s.showLoading(e)})),n.on("select",(function(){n.isOpen()&&(s.setClasses(),s.options.get("scrollAfterSelect")&&s.highlightFirstItem())})),n.on("unselect",(function(){n.isOpen()&&(s.setClasses(),s.options.get("scrollAfterSelect")&&s.highlightFirstItem())})),n.on("open",(function(){s.$results.attr("aria-expanded","true"),s.$results.attr("aria-hidden","false"),s.setClasses(),s.ensureHighlightVisible()})),n.on("close",(function(){s.$results.attr("aria-expanded","false"),s.$results.attr("aria-hidden","true"),s.$results[0].removeAttribute("aria-activedescendant")})),n.on("results:toggle",(function(){var e=s.getHighlightedResults();0!==e.length&&e.trigger("mouseup")})),n.on("results:select",(function(){var e=s.getHighlightedResults();if(0!==e.length){var n=t.GetData(e[0],"data");e.hasClass("pp_select2-results__option--selected")?s.trigger("close",{}):s.trigger("select",{data:n})}})),n.on("results:previous",(function(){var e=s.getHighlightedResults(),t=s.$results.find(".pp_select2-results__option--selectable"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var o=t.eq(i);o.trigger("mouseenter");var r=s.$results.offset().top,a=o.offset().top,l=s.$results.scrollTop()+(a-r);0===i?s.$results.scrollTop(0):a-r<0&&s.$results.scrollTop(l)}})),n.on("results:next",(function(){var e=s.getHighlightedResults(),t=s.$results.find(".pp_select2-results__option--selectable"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var o=s.$results.offset().top+s.$results.outerHeight(!1),r=i.offset().top+i.outerHeight(!1),a=s.$results.scrollTop()+r-o;0===n?s.$results.scrollTop(0):r>o&&s.$results.scrollTop(a)}})),n.on("results:focus",(function(e){e.element[0].classList.add("pp_select2-results__option--highlighted"),e.element[0].setAttribute("aria-selected","true")})),n.on("results:message",(function(e){s.displayMessage(e)})),e.fn.mousewheel&&this.$results.on("mousewheel",(function(e){var t=s.$results.scrollTop(),n=s.$results.get(0).scrollHeight-t+e.deltaY,i=e.deltaY>0&&t-e.deltaY<=0,o=e.deltaY<0&&n<=s.$results.height();i?(s.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):o&&(s.$results.scrollTop(s.$results.get(0).scrollHeight-s.$results.height()),e.preventDefault(),e.stopPropagation())})),this.$results.on("mouseup",".pp_select2-results__option--selectable",(function(n){var i=e(this),o=t.GetData(this,"data");i.hasClass("pp_select2-results__option--selected")?s.options.get("multiple")?s.trigger("unselect",{originalEvent:n,data:o}):s.trigger("close",{originalEvent:n,data:o}):s.trigger("select",{originalEvent:n,data:o})})),this.$results.on("mouseenter",".pp_select2-results__option--selectable",(function(n){var i=t.GetData(this,"data");s.getHighlightedResults().removeClass("pp_select2-results__option--highlighted").attr("aria-selected","false"),s.trigger("results:focus",{data:i,element:e(this)})}))},n.prototype.getHighlightedResults=function(){return this.$results.find(".pp_select2-results__option--highlighted")},n.prototype.destroy=function(){this.$results.remove()},n.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find(".pp_select2-results__option--selectable").index(e),n=this.$results.offset().top,i=e.offset().top,s=this.$results.scrollTop()+(i-n),o=i-n;s-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(s)}},n.prototype.template=function(t,n){var i=this.options.get("templateResult"),s=this.options.get("escapeMarkup"),o=i(t,n);null==o?n.style.display="none":"string"==typeof o?n.innerHTML=s(o):e(n).append(o)},n})),i.define("pp_select2/keys",[],(function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}})),i.define("pp_select2/selection/base",["jquery","../utils","../keys"],(function(e,t,n){function i(e,t){this.$element=e,this.options=t,i.__super__.constructor.call(this)}return t.Extend(i,t.Observable),i.prototype.render=function(){var n=e(' ');return this._tabindex=0,null!=t.GetData(this.$element[0],"old-tabindex")?this._tabindex=t.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),n.attr("title",this.$element.attr("title")),n.attr("tabindex",this._tabindex),n.attr("aria-disabled","false"),this.$selection=n,n},i.prototype.bind=function(e,t){var i=this,s=e.id+"-results";this.container=e,this.$selection.on("focus",(function(e){i.trigger("focus",e)})),this.$selection.on("blur",(function(e){i._handleBlur(e)})),this.$selection.on("keydown",(function(e){i.trigger("keypress",e),e.which===n.SPACE&&e.preventDefault()})),e.on("results:focus",(function(e){i.$selection.attr("aria-activedescendant",e.data._resultId)})),e.on("selection:update",(function(e){i.update(e.data)})),e.on("open",(function(){i.$selection.attr("aria-expanded","true"),i.$selection.attr("aria-owns",s),i._attachCloseHandler(e)})),e.on("close",(function(){i.$selection.attr("aria-expanded","false"),i.$selection[0].removeAttribute("aria-activedescendant"),i.$selection[0].removeAttribute("aria-owns"),i.$selection.trigger("focus"),i._detachCloseHandler(e)})),e.on("enable",(function(){i.$selection.attr("tabindex",i._tabindex),i.$selection.attr("aria-disabled","false")})),e.on("disable",(function(){i.$selection.attr("tabindex","-1"),i.$selection.attr("aria-disabled","true")}))},i.prototype._handleBlur=function(t){var n=this;window.setTimeout((function(){document.activeElement==n.$selection[0]||e.contains(n.$selection[0],document.activeElement)||n.trigger("blur",t)}),1)},i.prototype._attachCloseHandler=function(n){e(document.body).on("mousedown.pp_select2."+n.id,(function(n){var i=e(n.target).closest(".pp_select2");e(".pp_select2.pp_select2-container--open").each((function(){this!=i[0]&&t.GetData(this,"element").pp_select2("close")}))}))},i.prototype._detachCloseHandler=function(t){e(document.body).off("mousedown.pp_select2."+t.id)},i.prototype.position=function(e,t){t.find(".selection").append(e)},i.prototype.destroy=function(){this._detachCloseHandler(this.container)},i.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},i.prototype.isEnabled=function(){return!this.isDisabled()},i.prototype.isDisabled=function(){return this.options.get("disabled")},i})),i.define("pp_select2/selection/single",["jquery","./base","../utils","../keys"],(function(e,t,n,i){function s(){s.__super__.constructor.apply(this,arguments)}return n.Extend(s,t),s.prototype.render=function(){var e=s.__super__.render.call(this);return e[0].classList.add("pp_select2-selection--single"),e.html(' '),e},s.prototype.bind=function(e,t){var n=this;s.__super__.bind.apply(this,arguments);var i=e.id+"-container";this.$selection.find(".pp_select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.attr("aria-controls",i),this.$selection.on("mousedown",(function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})})),this.$selection.on("focus",(function(e){})),this.$selection.on("blur",(function(e){})),e.on("focus",(function(t){e.isOpen()||n.$selection.trigger("focus")}))},s.prototype.clear=function(){var e=this.$selection.find(".pp_select2-selection__rendered");e.empty(),e[0].removeAttribute("title")},s.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},s.prototype.selectionContainer=function(){return e(" ")},s.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".pp_select2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var s=t.title||t.text;s?n.attr("title",s):n[0].removeAttribute("title")}else this.clear()},s})),i.define("pp_select2/selection/multiple",["jquery","./base","../utils"],(function(e,t,n){function i(e,t){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e[0].classList.add("pp_select2-selection--multiple"),e.html(''),e},i.prototype.bind=function(t,s){var o=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".pp_select2-selection__rendered").attr("id",r),this.$selection.on("click",(function(e){o.trigger("toggle",{originalEvent:e})})),this.$selection.on("click",".pp_select2-selection__choice__remove",(function(t){if(!o.isDisabled()){var i=e(this).parent(),s=n.GetData(i[0],"data");o.trigger("unselect",{originalEvent:t,data:s})}})),this.$selection.on("keydown",".pp_select2-selection__choice__remove",(function(e){o.isDisabled()||e.stopPropagation()}))},i.prototype.clear=function(){var e=this.$selection.find(".pp_select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e('× ')},i.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],i=this.$selection.find(".pp_select2-selection__rendered").attr("id")+"-choice-",s=0;s1||n)return e.call(this,t);this.clear();var i=this.createPlaceholder(this.placeholder);this.$selection.find(".pp_select2-selection__rendered").append(i)},e})),i.define("pp_select2/selection/allowClear",["jquery","../keys","../utils"],(function(e,t,n){function i(){}return i.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error,this.$selection.on("mousedown",".pp_select2-selection__clear",(function(e){i._handleClear(e)})),t.on("keypress",(function(e){i._handleKeyboardClear(e,t)}))},i.prototype._handleClear=function(e,t){if(!this.isDisabled()){var i=this.$selection.find(".pp_select2-selection__clear");if(0!==i.length){t.stopPropagation();var s=n.GetData(i[0],"data"),o=this.$element.val();this.$element.val(this.placeholder.id);var r={data:s};if(this.trigger("clear",r),r.prevented)this.$element.val(o);else{for(var a=0;a0||0===i.length)){var s=this.$selection.find(".pp_select2-selection__rendered").attr("id"),o=this.options.get("translations").get("removeAllItems"),r=e('× ');r.attr("title",o()),r.attr("aria-label",o()),r.attr("aria-describedby",s),n.StoreData(r[0],"data",i),this.$selection.prepend(r),this.$selection[0].classList.add("pp_select2-selection--clearable")}},i})),i.define("pp_select2/selection/search",["jquery","../utils","../keys"],(function(e,t,n){function i(e,t,n){e.call(this,t,n)}return i.prototype.render=function(t){var n=this.options.get("translations").get("search"),i=e(' ');this.$searchContainer=i,this.$search=i.find("textarea"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",n());var s=t.call(this);return this._transferTabIndex(),s.append(this.$searchContainer),s},i.prototype.bind=function(e,i,s){var o=this,r=i.id+"-results",a=i.id+"-container";e.call(this,i,s),o.$search.attr("aria-describedby",a),i.on("open",(function(){o.$search.attr("aria-controls",r),o.$search.trigger("focus")})),i.on("close",(function(){o.$search.val(""),o.resizeSearch(),o.$search[0].removeAttribute("aria-controls"),o.$search[0].removeAttribute("aria-activedescendant"),o.$search.trigger("focus")})),i.on("enable",(function(){o.$search.prop("disabled",!1),o._transferTabIndex()})),i.on("disable",(function(){o.$search.prop("disabled",!0)})),i.on("focus",(function(e){o.$search.trigger("focus")})),i.on("results:focus",(function(e){e.data._resultId?o.$search.attr("aria-activedescendant",e.data._resultId):o.$search[0].removeAttribute("aria-activedescendant")})),this.$selection.on("focusin",".pp_select2-search--inline",(function(e){o.trigger("focus",e)})),this.$selection.on("focusout",".pp_select2-search--inline",(function(e){o._handleBlur(e)})),this.$selection.on("keydown",".pp_select2-search--inline",(function(e){if(e.stopPropagation(),o.trigger("keypress",e),o._keyUpPrevented=e.isDefaultPrevented(),e.which===n.BACKSPACE&&""===o.$search.val()){var i=o.$selection.find(".pp_select2-selection__choice").last();if(i.length>0){var s=t.GetData(i[0],"data");o.searchRemoveChoice(s),e.preventDefault()}}})),this.$selection.on("click",".pp_select2-search--inline",(function(e){o.$search.val()&&e.stopPropagation()}));var l=document.documentMode,c=l&&l<=11;this.$selection.on("input.searchcheck",".pp_select2-search--inline",(function(e){c?o.$selection.off("input.search input.searchcheck"):o.$selection.off("keyup.search")})),this.$selection.on("keyup.search input.search",".pp_select2-search--inline",(function(e){if(c&&"input"===e.type)o.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=n.SHIFT&&t!=n.CTRL&&t!=n.ALT&&t!=n.TAB&&o.handleSearch(e)}}))},i.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},i.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},i.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.resizeSearch(),n&&this.$search.trigger("focus")},i.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},i.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},i.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="100%";""===this.$search.attr("placeholder")&&(e=.75*(this.$search.val().length+1)+"em"),this.$search.css("width",e)},i})),i.define("pp_select2/selection/selectionCss",["../utils"],(function(e){function t(){}return t.prototype.render=function(t){var n=t.call(this),i=this.options.get("selectionCssClass")||"";return-1!==i.indexOf(":all:")&&(i=i.replace(":all:",""),e.copyNonInternalCssClasses(n[0],this.$element[0])),i.trim().split(" ").forEach((function(e){e.length>0&&n[0].classList.add(e)})),n},t})),i.define("pp_select2/selection/eventRelay",["jquery"],(function(e){function t(){}return t.prototype.bind=function(t,n,i){var s=this,o=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],r=["opening","closing","selecting","unselecting","clearing"];t.call(this,n,i),n.on("*",(function(t,n){if(-1!==o.indexOf(t)){n=n||{};var i=e.Event("select2:"+t,{params:n});s.$element.trigger(i),-1!==r.indexOf(t)&&(n.prevented=i.isDefaultPrevented())}}))},t})),i.define("pp_select2/translation",["jquery","require"],(function(e,t){function n(e){this.dict=e||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(e){return this.dict[e]},n.prototype.extend=function(t){this.dict=e.extend({},t.all(),this.dict)},n._cache={},n.loadPath=function(e){if(!(e in n._cache)){var i=t(e);n._cache[e]=i}return new n(n._cache[e])},n})),i.define("pp_select2/diacritics",[],(function(){return{"Ⓐ":"A",A:"A",À:"A",Á:"A",Â:"A",Ầ:"A",Ấ:"A",Ẫ:"A",Ẩ:"A",Ã:"A",Ā:"A",Ă:"A",Ằ:"A",Ắ:"A",Ẵ:"A",Ẳ:"A",Ȧ:"A",Ǡ:"A",Ä:"A",Ǟ:"A",Ả:"A",Å:"A",Ǻ:"A",Ǎ:"A",Ȁ:"A",Ȃ:"A",Ạ:"A",Ậ:"A",Ặ:"A",Ḁ:"A",Ą:"A",Ⱥ:"A",Ɐ:"A",Ꜳ:"AA",Æ:"AE",Ǽ:"AE",Ǣ:"AE",Ꜵ:"AO",Ꜷ:"AU",Ꜹ:"AV",Ꜻ:"AV",Ꜽ:"AY","Ⓑ":"B",B:"B",Ḃ:"B",Ḅ:"B",Ḇ:"B",Ƀ:"B",Ƃ:"B",Ɓ:"B","Ⓒ":"C",C:"C",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",Ç:"C",Ḉ:"C",Ƈ:"C",Ȼ:"C",Ꜿ:"C","Ⓓ":"D",D:"D",Ḋ:"D",Ď:"D",Ḍ:"D",Ḑ:"D",Ḓ:"D",Ḏ:"D",Đ:"D",Ƌ:"D",Ɗ:"D",Ɖ:"D",Ꝺ:"D",DZ:"DZ",DŽ:"DZ",Dz:"Dz",Dž:"Dz","Ⓔ":"E",E:"E",È:"E",É:"E",Ê:"E",Ề:"E",Ế:"E",Ễ:"E",Ể:"E",Ẽ:"E",Ē:"E",Ḕ:"E",Ḗ:"E",Ĕ:"E",Ė:"E",Ë:"E",Ẻ:"E",Ě:"E",Ȅ:"E",Ȇ:"E",Ẹ:"E",Ệ:"E",Ȩ:"E",Ḝ:"E",Ę:"E",Ḙ:"E",Ḛ:"E",Ɛ:"E",Ǝ:"E","Ⓕ":"F",F:"F",Ḟ:"F",Ƒ:"F",Ꝼ:"F","Ⓖ":"G",G:"G",Ǵ:"G",Ĝ:"G",Ḡ:"G",Ğ:"G",Ġ:"G",Ǧ:"G",Ģ:"G",Ǥ:"G",Ɠ:"G",Ꞡ:"G",Ᵹ:"G",Ꝿ:"G","Ⓗ":"H",H:"H",Ĥ:"H",Ḣ:"H",Ḧ:"H",Ȟ:"H",Ḥ:"H",Ḩ:"H",Ḫ:"H",Ħ:"H",Ⱨ:"H",Ⱶ:"H",Ɥ:"H","Ⓘ":"I",I:"I",Ì:"I",Í:"I",Î:"I",Ĩ:"I",Ī:"I",Ĭ:"I",İ:"I",Ï:"I",Ḯ:"I",Ỉ:"I",Ǐ:"I",Ȉ:"I",Ȋ:"I",Ị:"I",Į:"I",Ḭ:"I",Ɨ:"I","Ⓙ":"J",J:"J",Ĵ:"J",Ɉ:"J","Ⓚ":"K",K:"K",Ḱ:"K",Ǩ:"K",Ḳ:"K",Ķ:"K",Ḵ:"K",Ƙ:"K",Ⱪ:"K",Ꝁ:"K",Ꝃ:"K",Ꝅ:"K",Ꞣ:"K","Ⓛ":"L",L:"L",Ŀ:"L",Ĺ:"L",Ľ:"L",Ḷ:"L",Ḹ:"L",Ļ:"L",Ḽ:"L",Ḻ:"L",Ł:"L",Ƚ:"L",Ɫ:"L",Ⱡ:"L",Ꝉ:"L",Ꝇ:"L",Ꞁ:"L",LJ:"LJ",Lj:"Lj","Ⓜ":"M",M:"M",Ḿ:"M",Ṁ:"M",Ṃ:"M",Ɱ:"M",Ɯ:"M","Ⓝ":"N",N:"N",Ǹ:"N",Ń:"N",Ñ:"N",Ṅ:"N",Ň:"N",Ṇ:"N",Ņ:"N",Ṋ:"N",Ṉ:"N",Ƞ:"N",Ɲ:"N",Ꞑ:"N",Ꞥ:"N",NJ:"NJ",Nj:"Nj","Ⓞ":"O",O:"O",Ò:"O",Ó:"O",Ô:"O",Ồ:"O",Ố:"O",Ỗ:"O",Ổ:"O",Õ:"O",Ṍ:"O",Ȭ:"O",Ṏ:"O",Ō:"O",Ṑ:"O",Ṓ:"O",Ŏ:"O",Ȯ:"O",Ȱ:"O",Ö:"O",Ȫ:"O",Ỏ:"O",Ő:"O",Ǒ:"O",Ȍ:"O",Ȏ:"O",Ơ:"O",Ờ:"O",Ớ:"O",Ỡ:"O",Ở:"O",Ợ:"O",Ọ:"O",Ộ:"O",Ǫ:"O",Ǭ:"O",Ø:"O",Ǿ:"O",Ɔ:"O",Ɵ:"O",Ꝋ:"O",Ꝍ:"O",Œ:"OE",Ƣ:"OI",Ꝏ:"OO",Ȣ:"OU","Ⓟ":"P",P:"P",Ṕ:"P",Ṗ:"P",Ƥ:"P",Ᵽ:"P",Ꝑ:"P",Ꝓ:"P",Ꝕ:"P","Ⓠ":"Q",Q:"Q",Ꝗ:"Q",Ꝙ:"Q",Ɋ:"Q","Ⓡ":"R",R:"R",Ŕ:"R",Ṙ:"R",Ř:"R",Ȑ:"R",Ȓ:"R",Ṛ:"R",Ṝ:"R",Ŗ:"R",Ṟ:"R",Ɍ:"R",Ɽ:"R",Ꝛ:"R",Ꞧ:"R",Ꞃ:"R","Ⓢ":"S",S:"S",ẞ:"S",Ś:"S",Ṥ:"S",Ŝ:"S",Ṡ:"S",Š:"S",Ṧ:"S",Ṣ:"S",Ṩ:"S",Ș:"S",Ş:"S",Ȿ:"S",Ꞩ:"S",Ꞅ:"S","Ⓣ":"T",T:"T",Ṫ:"T",Ť:"T",Ṭ:"T",Ț:"T",Ţ:"T",Ṱ:"T",Ṯ:"T",Ŧ:"T",Ƭ:"T",Ʈ:"T",Ⱦ:"T",Ꞇ:"T",Ꜩ:"TZ","Ⓤ":"U",U:"U",Ù:"U",Ú:"U",Û:"U",Ũ:"U",Ṹ:"U",Ū:"U",Ṻ:"U",Ŭ:"U",Ü:"U",Ǜ:"U",Ǘ:"U",Ǖ:"U",Ǚ:"U",Ủ:"U",Ů:"U",Ű:"U",Ǔ:"U",Ȕ:"U",Ȗ:"U",Ư:"U",Ừ:"U",Ứ:"U",Ữ:"U",Ử:"U",Ự:"U",Ụ:"U",Ṳ:"U",Ų:"U",Ṷ:"U",Ṵ:"U",Ʉ:"U","Ⓥ":"V",V:"V",Ṽ:"V",Ṿ:"V",Ʋ:"V",Ꝟ:"V",Ʌ:"V",Ꝡ:"VY","Ⓦ":"W",W:"W",Ẁ:"W",Ẃ:"W",Ŵ:"W",Ẇ:"W",Ẅ:"W",Ẉ:"W",Ⱳ:"W","Ⓧ":"X",X:"X",Ẋ:"X",Ẍ:"X","Ⓨ":"Y",Y:"Y",Ỳ:"Y",Ý:"Y",Ŷ:"Y",Ỹ:"Y",Ȳ:"Y",Ẏ:"Y",Ÿ:"Y",Ỷ:"Y",Ỵ:"Y",Ƴ:"Y",Ɏ:"Y",Ỿ:"Y","Ⓩ":"Z",Z:"Z",Ź:"Z",Ẑ:"Z",Ż:"Z",Ž:"Z",Ẓ:"Z",Ẕ:"Z",Ƶ:"Z",Ȥ:"Z",Ɀ:"Z",Ⱬ:"Z",Ꝣ:"Z","ⓐ":"a",a:"a",ẚ:"a",à:"a",á:"a",â:"a",ầ:"a",ấ:"a",ẫ:"a",ẩ:"a",ã:"a",ā:"a",ă:"a",ằ:"a",ắ:"a",ẵ:"a",ẳ:"a",ȧ:"a",ǡ:"a",ä:"a",ǟ:"a",ả:"a",å:"a",ǻ:"a",ǎ:"a",ȁ:"a",ȃ:"a",ạ:"a",ậ:"a",ặ:"a",ḁ:"a",ą:"a",ⱥ:"a",ɐ:"a",ꜳ:"aa",æ:"ae",ǽ:"ae",ǣ:"ae",ꜵ:"ao",ꜷ:"au",ꜹ:"av",ꜻ:"av",ꜽ:"ay","ⓑ":"b",b:"b",ḃ:"b",ḅ:"b",ḇ:"b",ƀ:"b",ƃ:"b",ɓ:"b","ⓒ":"c",c:"c",ć:"c",ĉ:"c",ċ:"c",č:"c",ç:"c",ḉ:"c",ƈ:"c",ȼ:"c",ꜿ:"c",ↄ:"c","ⓓ":"d",d:"d",ḋ:"d",ď:"d",ḍ:"d",ḑ:"d",ḓ:"d",ḏ:"d",đ:"d",ƌ:"d",ɖ:"d",ɗ:"d",ꝺ:"d",dz:"dz",dž:"dz","ⓔ":"e",e:"e",è:"e",é:"e",ê:"e",ề:"e",ế:"e",ễ:"e",ể:"e",ẽ:"e",ē:"e",ḕ:"e",ḗ:"e",ĕ:"e",ė:"e",ë:"e",ẻ:"e",ě:"e",ȅ:"e",ȇ:"e",ẹ:"e",ệ:"e",ȩ:"e",ḝ:"e",ę:"e",ḙ:"e",ḛ:"e",ɇ:"e",ɛ:"e",ǝ:"e","ⓕ":"f",f:"f",ḟ:"f",ƒ:"f",ꝼ:"f","ⓖ":"g",g:"g",ǵ:"g",ĝ:"g",ḡ:"g",ğ:"g",ġ:"g",ǧ:"g",ģ:"g",ǥ:"g",ɠ:"g",ꞡ:"g",ᵹ:"g",ꝿ:"g","ⓗ":"h",h:"h",ĥ:"h",ḣ:"h",ḧ:"h",ȟ:"h",ḥ:"h",ḩ:"h",ḫ:"h",ẖ:"h",ħ:"h",ⱨ:"h",ⱶ:"h",ɥ:"h",ƕ:"hv","ⓘ":"i",i:"i",ì:"i",í:"i",î:"i",ĩ:"i",ī:"i",ĭ:"i",ï:"i",ḯ:"i",ỉ:"i",ǐ:"i",ȉ:"i",ȋ:"i",ị:"i",į:"i",ḭ:"i",ɨ:"i",ı:"i","ⓙ":"j",j:"j",ĵ:"j",ǰ:"j",ɉ:"j","ⓚ":"k",k:"k",ḱ:"k",ǩ:"k",ḳ:"k",ķ:"k",ḵ:"k",ƙ:"k",ⱪ:"k",ꝁ:"k",ꝃ:"k",ꝅ:"k",ꞣ:"k","ⓛ":"l",l:"l",ŀ:"l",ĺ:"l",ľ:"l",ḷ:"l",ḹ:"l",ļ:"l",ḽ:"l",ḻ:"l",ſ:"l",ł:"l",ƚ:"l",ɫ:"l",ⱡ:"l",ꝉ:"l",ꞁ:"l",ꝇ:"l",lj:"lj","ⓜ":"m",m:"m",ḿ:"m",ṁ:"m",ṃ:"m",ɱ:"m",ɯ:"m","ⓝ":"n",n:"n",ǹ:"n",ń:"n",ñ:"n",ṅ:"n",ň:"n",ṇ:"n",ņ:"n",ṋ:"n",ṉ:"n",ƞ:"n",ɲ:"n",ʼn:"n",ꞑ:"n",ꞥ:"n",nj:"nj","ⓞ":"o",o:"o",ò:"o",ó:"o",ô:"o",ồ:"o",ố:"o",ỗ:"o",ổ:"o",õ:"o",ṍ:"o",ȭ:"o",ṏ:"o",ō:"o",ṑ:"o",ṓ:"o",ŏ:"o",ȯ:"o",ȱ:"o",ö:"o",ȫ:"o",ỏ:"o",ő:"o",ǒ:"o",ȍ:"o",ȏ:"o",ơ:"o",ờ:"o",ớ:"o",ỡ:"o",ở:"o",ợ:"o",ọ:"o",ộ:"o",ǫ:"o",ǭ:"o",ø:"o",ǿ:"o",ɔ:"o",ꝋ:"o",ꝍ:"o",ɵ:"o",œ:"oe",ƣ:"oi",ȣ:"ou",ꝏ:"oo","ⓟ":"p",p:"p",ṕ:"p",ṗ:"p",ƥ:"p",ᵽ:"p",ꝑ:"p",ꝓ:"p",ꝕ:"p","ⓠ":"q",q:"q",ɋ:"q",ꝗ:"q",ꝙ:"q","ⓡ":"r",r:"r",ŕ:"r",ṙ:"r",ř:"r",ȑ:"r",ȓ:"r",ṛ:"r",ṝ:"r",ŗ:"r",ṟ:"r",ɍ:"r",ɽ:"r",ꝛ:"r",ꞧ:"r",ꞃ:"r","ⓢ":"s",s:"s",ß:"s",ś:"s",ṥ:"s",ŝ:"s",ṡ:"s",š:"s",ṧ:"s",ṣ:"s",ṩ:"s",ș:"s",ş:"s",ȿ:"s",ꞩ:"s",ꞅ:"s",ẛ:"s","ⓣ":"t",t:"t",ṫ:"t",ẗ:"t",ť:"t",ṭ:"t",ț:"t",ţ:"t",ṱ:"t",ṯ:"t",ŧ:"t",ƭ:"t",ʈ:"t",ⱦ:"t",ꞇ:"t",ꜩ:"tz","ⓤ":"u",u:"u",ù:"u",ú:"u",û:"u",ũ:"u",ṹ:"u",ū:"u",ṻ:"u",ŭ:"u",ü:"u",ǜ:"u",ǘ:"u",ǖ:"u",ǚ:"u",ủ:"u",ů:"u",ű:"u",ǔ:"u",ȕ:"u",ȗ:"u",ư:"u",ừ:"u",ứ:"u",ữ:"u",ử:"u",ự:"u",ụ:"u",ṳ:"u",ų:"u",ṷ:"u",ṵ:"u",ʉ:"u","ⓥ":"v",v:"v",ṽ:"v",ṿ:"v",ʋ:"v",ꝟ:"v",ʌ:"v",ꝡ:"vy","ⓦ":"w",w:"w",ẁ:"w",ẃ:"w",ŵ:"w",ẇ:"w",ẅ:"w",ẘ:"w",ẉ:"w",ⱳ:"w","ⓧ":"x",x:"x",ẋ:"x",ẍ:"x","ⓨ":"y",y:"y",ỳ:"y",ý:"y",ŷ:"y",ỹ:"y",ȳ:"y",ẏ:"y",ÿ:"y",ỷ:"y",ẙ:"y",ỵ:"y",ƴ:"y",ɏ:"y",ỿ:"y","ⓩ":"z",z:"z",ź:"z",ẑ:"z",ż:"z",ž:"z",ẓ:"z",ẕ:"z",ƶ:"z",ȥ:"z",ɀ:"z",ⱬ:"z",ꝣ:"z",Ά:"Α",Έ:"Ε",Ή:"Η",Ί:"Ι",Ϊ:"Ι",Ό:"Ο",Ύ:"Υ",Ϋ:"Υ",Ώ:"Ω",ά:"α",έ:"ε",ή:"η",ί:"ι",ϊ:"ι",ΐ:"ι",ό:"ο",ύ:"υ",ϋ:"υ",ΰ:"υ",ώ:"ω",ς:"σ","’":"'"}})),i.define("pp_select2/data/base",["../utils"],(function(e){function t(e,n){t.__super__.constructor.call(this)}return e.Extend(t,e.Observable),t.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},t.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},t.prototype.bind=function(e,t){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,n){var i=t.id+"-result-";return i+=e.generateChars(4),null!=n.id?i+="-"+n.id.toString():i+="-"+e.generateChars(4),i},t})),i.define("pp_select2/data/select",["./base","../utils","jquery"],(function(e,t,n){function i(e,t){this.$element=e,this.options=t,i.__super__.constructor.call(this)}return t.Extend(i,e),i.prototype.current=function(e){var t=this;e(Array.prototype.map.call(this.$element[0].querySelectorAll(":checked"),(function(e){return t.item(n(e))})))},i.prototype.select=function(e){var t=this;if(e.selected=!0,null!=e.element&&"option"===e.element.tagName.toLowerCase())return e.element.selected=!0,void this.$element.trigger("input").trigger("change");if(this.$element.prop("multiple"))this.current((function(n){var i=[];(e=[e]).push.apply(e,n);for(var s=0;s=0){var c=i.filter(r(l)),p=this.item(c),u=n.extend(!0,{},l,p),d=this.option(u);c.replaceWith(d)}else{var h=this.option(l);if(l.children){var f=this.convertToOptions(l.children);h.append(f)}o.push(h)}}return o},i})),i.define("pp_select2/data/ajax",["./array","../utils","jquery"],(function(e,t,n){function i(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),i.__super__.constructor.call(this,e,t)}return t.Extend(i,e),i.prototype._applyDefaults=function(e){var t={data:function(e){return n.extend({},e,{q:e.term})},transport:function(e,t,i){var s=n.ajax(e);return s.then(t),s.fail(i),s}};return n.extend({},t,e,!0)},i.prototype.processResults=function(e){return e},i.prototype.query=function(e,t){var s=this;null!=this._request&&("function"==typeof this._request.abort&&this._request.abort(),this._request=null);var o=n.extend({type:"GET"},this.ajaxOptions);function r(){var n=o.transport(o,(function(n){var o=s.processResults(n,e);o&&o.results&&Array.isArray(o.results)?o.results=o.results.map(i.prototype._normalizeItem):s.options.get("debug")&&window.console&&console.error,t(o)}),(function(){n&&"status"in n&&(0===n.status||"0"===n.status)||s.trigger("results:message",{message:"errorLoading"})}));s._request=n}"function"==typeof o.url&&(o.url=o.url.call(this.$element,e)),"function"==typeof o.data&&(o.data=o.data.call(this.$element,e)),this.ajaxOptions.delay&&null!=e.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(r,this.ajaxOptions.delay)):r()},i})),i.define("pp_select2/data/tags",["jquery"],(function(e){function t(e,t,n){var i=n.get("tags"),s=n.get("createTag");void 0!==s&&(this.createTag=s);var o=n.get("insertTag");if(void 0!==o&&(this.insertTag=o),e.call(this,t,n),Array.isArray(i))for(var r=0;r0&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),i.define("pp_select2/data/maximumSelectionLength",[],(function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",(function(){i._checkIfMaximumSelected()}))},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected((function(){e.call(i,t,n)}))},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current((function(e){var i=null!=e?e.length:0;n.maximumSelectionLength>0&&i>=n.maximumSelectionLength?n.trigger("results:message",{message:"maximumSelected",args:{maximum:n.maximumSelectionLength}}):t&&t()}))},e})),i.define("pp_select2/dropdown",["jquery","./utils"],(function(e,t){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e(' ');return t.attr("dir",this.options.get("dir")),this.$dropdown=t,t},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n})),i.define("pp_select2/dropdown/search",["jquery"],(function(e){function t(){}return t.prototype.render=function(t){var n=t.call(this),i=this.options.get("translations").get("search"),s=e(' ');return this.$searchContainer=s,this.$search=s.find("input"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",i()),n.prepend(s),n},t.prototype.bind=function(t,n,i){var s=this,o=n.id+"-results";t.call(this,n,i),this.$search.on("keydown",(function(e){s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented()})),this.$search.on("input",(function(t){e(this).off("keyup")})),this.$search.on("keyup input",(function(e){s.handleSearch(e)})),n.on("open",(function(){s.$search.attr("tabindex",0),s.$search.attr("aria-controls",o),s.$search.trigger("focus"),window.setTimeout((function(){s.$search.trigger("focus")}),0)})),n.on("close",(function(){s.$search.attr("tabindex",-1),s.$search[0].removeAttribute("aria-controls"),s.$search[0].removeAttribute("aria-activedescendant"),s.$search.val(""),s.$search.trigger("blur")})),n.on("focus",(function(){n.isOpen()||s.$search.trigger("focus")})),n.on("results:all",(function(e){null!=e.query.term&&""!==e.query.term||(s.showSearch(e)?s.$searchContainer[0].classList.remove("pp_select2-search--hide"):s.$searchContainer[0].classList.add("pp_select2-search--hide"))})),n.on("results:focus",(function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search[0].removeAttribute("aria-activedescendant")}))},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t})),i.define("pp_select2/dropdown/hidePlaceholder",[],(function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;i>=0;i--){var s=t[i];this.placeholder.id===s.id&&n.splice(i,1)}return n},e})),i.define("pp_select2/dropdown/infiniteScroll",["jquery"],(function(e){function t(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return t.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},t.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",(function(e){i.lastParams=e,i.loading=!0})),t.on("query:append",(function(e){i.lastParams=e,i.loading=!0})),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},t.prototype.loadMoreIfNeeded=function(){var t=e.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&t&&this.$results.offset().top+this.$results.outerHeight(!1)+50>=this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)&&this.loadMore()},t.prototype.loadMore=function(){this.loading=!0;var t=e.extend({},{page:1},this.lastParams);t.page++,this.trigger("query:append",t)},t.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=e(' '),n=this.options.get("translations").get("loadingMore");return t.html(n(this.lastParams)),t},t})),i.define("pp_select2/dropdown/attachBody",["jquery","../utils"],(function(e,t){function n(t,n,i){this.$dropdownParent=e(i.get("dropdownParent")||document.body),t.call(this,n,i)}return n.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",(function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)})),t.on("close",(function(){i._hideDropdown(),i._detachPositioningHandler(t)})),this.$dropdownContainer.on("mousedown",(function(e){e.stopPropagation()}))},n.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t[0].classList.remove("pp_select2"),t[0].classList.add("pp_select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},n.prototype.render=function(t){var n=e(" "),i=t.call(this);return n.append(i),this.$dropdownContainer=n,n},n.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},n.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:append",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:message",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("select",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("unselect",(function(){n._positionDropdown(),n._resizeDropdown()})),this._containerResultsHandlersBound=!0}},n.prototype._attachPositioningHandler=function(n,i){var s=this,o="scroll.pp_select2."+i.id,r="resize.pp_select2."+i.id,a="orientationchange.pp_select2."+i.id,l=this.$container.parents().filter(t.hasScroll);l.each((function(){t.StoreData(this,"pp_select2-scroll-position",{x:e(this).scrollLeft(),y:e(this).scrollTop()})})),l.on(o,(function(n){var i=t.GetData(this,"pp_select2-scroll-position");e(this).scrollTop(i.y)})),e(window).on(o+" "+r+" "+a,(function(e){s._positionDropdown(),s._resizeDropdown()}))},n.prototype._detachPositioningHandler=function(n,i){var s="scroll.pp_select2."+i.id,o="resize.pp_select2."+i.id,r="orientationchange.pp_select2."+i.id;this.$container.parents().filter(t.hasScroll).off(s),e(window).off(s+" "+o+" "+r)},n.prototype._positionDropdown=function(){var t=e(window),n=this.$dropdown[0].classList.contains("pp_select2-dropdown--above"),i=this.$dropdown[0].classList.contains("pp_select2-dropdown--below"),s=null,o=this.$container.offset();o.bottom=o.top+this.$container.outerHeight(!1);var r={height:this.$container.outerHeight(!1)};r.top=o.top,r.bottom=o.top+r.height;var a={height:this.$dropdown.outerHeight(!1)},l={top:t.scrollTop(),bottom:t.scrollTop()+t.height()},c=l.topo.bottom+a.height,u={left:o.left,top:r.bottom},d=this.$dropdownParent;"static"===d.css("position")&&(d=d.offsetParent());var h={top:0,left:0};(e.contains(document.body,d[0])||d[0].isConnected)&&(h=d.offset()),u.top-=h.top,u.left-=h.left,n||i||(s="below"),p||!c||n?!c&&p&&n&&(s="below"):s="above",("above"==s||n&&"below"!==s)&&(u.top=r.top-h.top-a.height),null!=s&&(this.$dropdown[0].classList.remove("pp_select2-dropdown--below"),this.$dropdown[0].classList.remove("pp_select2-dropdown--above"),this.$dropdown[0].classList.add("pp_select2-dropdown--"+s),this.$container[0].classList.remove("pp_select2-container--below"),this.$container[0].classList.remove("pp_select2-container--above"),this.$container[0].classList.add("pp_select2-container--"+s)),this.$dropdownContainer.css(u)},n.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},n.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n})),i.define("pp_select2/dropdown/minimumResultsForSearch",[],(function(){function e(t){for(var n=0,i=0;i0&&n[0].classList.add(e)})),n},t})),i.define("pp_select2/dropdown/tagsSearchHighlight",["../utils"],(function(e){function t(){}return t.prototype.highlightFirstItem=function(t){var n=this.$results.find(".pp_select2-results__option--selectable:not(.pp_select2-results__option--selected)");if(n.length>0){var i=n.first(),s=e.GetData(i[0],"data").element;if(s&&s.getAttribute&&"true"===s.getAttribute("data-pp_select2-tag"))return void i.trigger("mouseenter")}t.call(this)},t})),i.define("pp_select2/i18n/en",[],(function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"},removeItem:function(){return"Remove item"},search:function(){return"Search"}}})),i.define("pp_select2/defaults",["jquery","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/selectionCss","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./dropdown/dropdownCss","./dropdown/tagsSearchHighlight","./i18n/en"],(function(e,t,n,i,s,o,r,a,l,c,p,u,d,h,f,g,m,_,v,y,b,w,$,x,A,D,L,E,O,S,C){function T(){this.reset()}return T.prototype.apply=function(p){if(null==(p=e.extend(!0,{},this.defaults,p)).dataAdapter&&(null!=p.ajax?p.dataAdapter=f:null!=p.data?p.dataAdapter=h:p.dataAdapter=d,p.minimumInputLength>0&&(p.dataAdapter=c.Decorate(p.dataAdapter,_)),p.maximumInputLength>0&&(p.dataAdapter=c.Decorate(p.dataAdapter,v)),p.maximumSelectionLength>0&&(p.dataAdapter=c.Decorate(p.dataAdapter,y)),p.tags&&(p.dataAdapter=c.Decorate(p.dataAdapter,g)),null==p.tokenSeparators&&null==p.tokenizer||(p.dataAdapter=c.Decorate(p.dataAdapter,m))),null==p.resultsAdapter&&(p.resultsAdapter=t,null!=p.ajax&&(p.resultsAdapter=c.Decorate(p.resultsAdapter,x)),null!=p.placeholder&&(p.resultsAdapter=c.Decorate(p.resultsAdapter,$)),p.selectOnClose&&(p.resultsAdapter=c.Decorate(p.resultsAdapter,L)),p.tags&&(p.resultsAdapter=c.Decorate(p.resultsAdapter,S))),null==p.dropdownAdapter){if(p.multiple)p.dropdownAdapter=b;else{var u=c.Decorate(b,w);p.dropdownAdapter=u}0!==p.minimumResultsForSearch&&(p.dropdownAdapter=c.Decorate(p.dropdownAdapter,D)),p.closeOnSelect&&(p.dropdownAdapter=c.Decorate(p.dropdownAdapter,E)),null!=p.dropdownCssClass&&(p.dropdownAdapter=c.Decorate(p.dropdownAdapter,O)),p.dropdownAdapter=c.Decorate(p.dropdownAdapter,A)}null==p.selectionAdapter&&(p.multiple?p.selectionAdapter=i:p.selectionAdapter=n,null!=p.placeholder&&(p.selectionAdapter=c.Decorate(p.selectionAdapter,s)),p.allowClear&&(p.selectionAdapter=c.Decorate(p.selectionAdapter,o)),p.multiple&&(p.selectionAdapter=c.Decorate(p.selectionAdapter,r)),null!=p.selectionCssClass&&(p.selectionAdapter=c.Decorate(p.selectionAdapter,a)),p.selectionAdapter=c.Decorate(p.selectionAdapter,l)),p.language=this._resolveLanguage(p.language),p.language.push("en");for(var C=[],T=0;T0){for(var o=e.extend(!0,{},s),r=s.children.length-1;r>=0;r--)null==n(i,s.children[r])&&o.children.splice(r,1);return o.children.length>0?o:n(i,o)}var a=t(s.text).toUpperCase(),l=t(i.term).toUpperCase();return a.indexOf(l)>-1?s:null}this.defaults={amdLanguageBase:"./i18n/",autocomplete:"off",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:c.escapeMarkup,language:{},matcher:n,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},T.prototype.applyFromElement=function(e,t){var n=e.language,i=this.defaults.language,s=t.prop("lang"),o=t.closest("[lang]").prop("lang"),r=Array.prototype.concat.call(this._resolveLanguage(s),this._resolveLanguage(n),this._resolveLanguage(i),this._resolveLanguage(o));return e.language=r,e},T.prototype._resolveLanguage=function(t){if(!t)return[];if(e.isEmptyObject(t))return[];if(e.isPlainObject(t))return[t];var n;n=Array.isArray(t)?t:[t];for(var i=[],s=0;s0){var o=n[s].split("-")[0];i.push(o)}return i},T.prototype._processTranslations=function(t,n){for(var i=new p,s=0;s-1||(e.isPlainObject(this.options[d])?e.extend(this.options[d],u[d]):this.options[d]=u[d]);return this},i.prototype.get=function(e){return this.options[e]},i.prototype.set=function(e,t){this.options[e]=t},i})),i.define("pp_select2/core",["jquery","./options","./utils","./keys"],(function(e,t,n,i){var s=function(e,i){null!=n.GetData(e[0],"pp_select2")&&n.GetData(e[0],"pp_select2").destroy(),this.$element=e,this.id=this._generateId(e),i=i||{},this.options=new t(i,e),s.__super__.constructor.call(this);var o=e.attr("tabindex")||0;n.StoreData(e[0],"old-tabindex",o),e.attr("tabindex","-1");var r=this.options.get("dataAdapter");this.dataAdapter=new r(e,this.options);var a=this.render();this._placeContainer(a);var l=this.options.get("selectionAdapter");this.selection=new l(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,a);var c=this.options.get("dropdownAdapter");this.dropdown=new c(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,a);var p=this.options.get("resultsAdapter");this.results=new p(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var u=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current((function(e){u.trigger("selection:update",{data:e})})),e[0].classList.add("pp_select2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),n.StoreData(e[0],"pp_select2",this),e.data("pp_select2",this)};return n.Extend(s,n.Observable),s.prototype._generateId=function(e){return"pp_select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+n.generateChars(2):n.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},s.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},s.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var i=this._resolveWidth(e,"style");return null!=i?i:this._resolveWidth(e,"element")}if("element"==t){var s=e.outerWidth(!1);return s<=0?"auto":s+"px"}if("style"==t){var o=e.attr("style");if("string"!=typeof o)return null;for(var r=o.split(";"),a=0,l=r.length;a=1)return c[1]}return null}return"computedstyle"==t?window.getComputedStyle(e[0]).width:t},s.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},s.prototype._registerDomEvents=function(){var e=this;this.$element.on("change.pp_select2",(function(){e.dataAdapter.current((function(t){e.trigger("selection:update",{data:t})}))})),this.$element.on("focus.pp_select2",(function(t){e.trigger("focus",t)})),this._syncA=n.bind(this._syncAttributes,this),this._syncS=n.bind(this._syncSubtree,this),this._observer=new window.MutationObserver((function(t){e._syncA(),e._syncS(t)})),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})},s.prototype._registerDataEvents=function(){var e=this;this.dataAdapter.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerSelectionEvents=function(){var e=this,t=["toggle","focus"];this.selection.on("toggle",(function(){e.toggleDropdown()})),this.selection.on("focus",(function(t){e.focus(t)})),this.selection.on("*",(function(n,i){-1===t.indexOf(n)&&e.trigger(n,i)}))},s.prototype._registerDropdownEvents=function(){var e=this;this.dropdown.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerResultsEvents=function(){var e=this;this.results.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerEvents=function(){var e=this;this.on("open",(function(){e.$container[0].classList.add("pp_select2-container--open")})),this.on("close",(function(){e.$container[0].classList.remove("pp_select2-container--open")})),this.on("enable",(function(){e.$container[0].classList.remove("pp_select2-container--disabled")})),this.on("disable",(function(){e.$container[0].classList.add("pp_select2-container--disabled")})),this.on("blur",(function(){e.$container[0].classList.remove("pp_select2-container--focus")})),this.on("query",(function(t){e.isOpen()||e.trigger("open",{}),this.dataAdapter.query(t,(function(n){e.trigger("results:all",{data:n,query:t})}))})),this.on("query:append",(function(t){this.dataAdapter.query(t,(function(n){e.trigger("results:append",{data:n,query:t})}))})),this.on("keypress",(function(t){var n=t.which;e.isOpen()?n===i.ESC||n===i.UP&&t.altKey?(e.close(t),t.preventDefault()):n===i.ENTER||n===i.TAB?(e.trigger("results:select",{}),t.preventDefault()):n===i.SPACE&&t.ctrlKey?(e.trigger("results:toggle",{}),t.preventDefault()):n===i.UP?(e.trigger("results:previous",{}),t.preventDefault()):n===i.DOWN&&(e.trigger("results:next",{}),t.preventDefault()):(n===i.ENTER||n===i.SPACE||n===i.DOWN&&t.altKey)&&(e.open(),t.preventDefault())}))},s.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},s.prototype._isChangeMutation=function(e){var t=this;if(e.addedNodes&&e.addedNodes.length>0){for(var n=0;n0)return!0;if(Array.isArray(e))return e.some((function(e){return t._isChangeMutation(e)}))}return!1},s.prototype._syncSubtree=function(e){var t=this._isChangeMutation(e),n=this;t&&this.dataAdapter.current((function(e){n.trigger("selection:update",{data:e})}))},s.prototype.trigger=function(e,t){var n=s.__super__.trigger,i={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in i){var o=i[e],r={prevented:!1,name:e,args:t};if(n.call(this,o,r),r.prevented)return void(t.prevented=!0)}n.call(this,e,t)},s.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},s.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},s.prototype.close=function(e){this.isOpen()&&this.trigger("close",{originalEvent:e})},s.prototype.isEnabled=function(){return!this.isDisabled()},s.prototype.isDisabled=function(){return this.options.get("disabled")},s.prototype.isOpen=function(){return this.$container[0].classList.contains("pp_select2-container--open")},s.prototype.hasFocus=function(){return this.$container[0].classList.contains("pp_select2-container--focus")},s.prototype.focus=function(e){this.hasFocus()||(this.$container[0].classList.add("pp_select2-container--focus"),this.trigger("focus",{}))},s.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn,null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},s.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn;var e=[];return this.dataAdapter.current((function(t){e=t})),e},s.prototype.val=function(e){if(this.options.get("debug")&&window.console&&console.warn,null==e||0===e.length)return this.$element.val();var t=e[0];Array.isArray(t)&&(t=t.map((function(e){return e.toString()}))),this.$element.val(t).trigger("input").trigger("change")},s.prototype.destroy=function(){n.RemoveData(this.$container[0]),this.$container.remove(),this._observer.disconnect(),this._observer=null,this._syncA=null,this._syncS=null,this.$element.off(".pp_select2"),this.$element.attr("tabindex",n.GetData(this.$element[0],"old-tabindex")),this.$element[0].classList.remove("pp_select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),n.RemoveData(this.$element[0]),this.$element.removeData("pp_select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},s.prototype.render=function(){var t=e(' ');return t.attr("dir",this.options.get("dir")),this.$container=t,this.$container[0].classList.add("pp_select2-container--"+this.options.get("theme")),n.StoreData(t[0],"element",this.$element),t},s})),i.define("pp_select2/dropdown/attachContainer",[],(function(){function e(e,t,n){e.call(this,t,n)}return e.prototype.position=function(e,t,n){n.find(".dropdown-wrapper").append(t),t[0].classList.add("pp_select2-dropdown--below"),n[0].classList.add("pp_select2-container--below")},e})),i.define("pp_select2/dropdown/stopPropagation",[],(function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);var i=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(i.join(" "),(function(e){e.stopPropagation()}))},e})),i.define("pp_select2/selection/stopPropagation",[],(function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);var i=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(i.join(" "),(function(e){e.stopPropagation()}))},e})),function(s){"function"==typeof i.define&&i.define.amd?i.define("jquery-mousewheel",["jquery"],s):"object"===r(t)?e.exports=s:s(n)}((function(e){var t,n,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],o=Array.prototype.slice;if(e.event.fixHooks)for(var r=i.length;r;)e.event.fixHooks[i[--r]]=e.event.mouseHooks;var a=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var t=s.length;t;)this.addEventListener(s[--t],l,!1);else this.onmousewheel=l;e.data(this,"mousewheel-line-height",a.getLineHeight(this)),e.data(this,"mousewheel-page-height",a.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var t=s.length;t;)this.removeEventListener(s[--t],l,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var n=e(t),i=n["offsetParent"in e.fn?"offsetParent":"parent"]();return i.length||(i=e("body")),parseInt(i.css("fontSize"),10)||parseInt(n.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function l(i){var s=i||window.event,r=o.call(arguments,1),l=0,u=0,d=0,h=0,f=0,g=0;if((i=e.event.fix(s)).type="mousewheel","detail"in s&&(d=-1*s.detail),"wheelDelta"in s&&(d=s.wheelDelta),"wheelDeltaY"in s&&(d=s.wheelDeltaY),"wheelDeltaX"in s&&(u=-1*s.wheelDeltaX),"axis"in s&&s.axis===s.HORIZONTAL_AXIS&&(u=-1*d,d=0),l=0===d?u:d,"deltaY"in s&&(l=d=-1*s.deltaY),"deltaX"in s&&(u=s.deltaX,0===d&&(l=-1*u)),0!==d||0!==u){if(1===s.deltaMode){var m=e.data(this,"mousewheel-line-height");l*=m,d*=m,u*=m}else if(2===s.deltaMode){var _=e.data(this,"mousewheel-page-height");l*=_,d*=_,u*=_}if(h=Math.max(Math.abs(d),Math.abs(u)),(!n||h=1?"floor":"ceil"](l/n),u=Math[u>=1?"floor":"ceil"](u/n),d=Math[d>=1?"floor":"ceil"](d/n),a.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();f=i.clientX-v.left,g=i.clientY-v.top}return i.deltaX=u,i.deltaY=d,i.deltaFactor=n,i.offsetX=f,i.offsetY=g,i.deltaMode=0,r.unshift(i,l,u,d),t&&clearTimeout(t),t=setTimeout(c,200),(e.event.dispatch||e.event.handle).apply(this,r)}}function c(){n=null}function p(e,t){return a.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})})),i.define("jquery.pp_select2",["jquery","jquery-mousewheel","./pp_select2/core","./pp_select2/defaults","./pp_select2/utils"],(function(e,t,n,i,s){if(null==e.fn.pp_select2){var o=["open","close","destroy"];e.fn.pp_select2=function(t){if("object"===r(t=t||{}))return this.each((function(){var i=e.extend(!0,{},t);new n(e(this),i)})),this;if("string"==typeof t){var i,a=Array.prototype.slice.call(arguments,1);return this.each((function(){var e=s.GetData(this,"pp_select2");null==e&&window.console&&console.error,i=e[t].apply(e,a)})),o.indexOf(t)>-1?this:i}throw new Error("Invalid arguments for pp_select2: "+t)}}return null==e.fn.pp_select2.defaults&&(e.fn.pp_select2.defaults=i),n})),{define:i.define,require:i.require}}(),s=i.require("jquery.pp_select2");return n.fn.pp_select2.amd=i,s})?i.apply(t,s):i)||(e.exports=o)}},t={};(function n(i){var s=t[i];if(void 0!==s)return s.exports;var o=t[i]={exports:{}};return e[i](o,o.exports,n),o.exports})(904)})();
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.js
deleted file mode 100644
index 6d1069ca8..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.js
+++ /dev/null
@@ -1,6602 +0,0 @@
-/*!
- * Select2 4.0.7 - modified by OSTraining.
- * https://select2.github.io
- *
- * Released under the MIT license
- * https://github.com/select2/select2/blob/master/LICENSE.md
- *
- * Changelog:
- *
- * [2019-06-24] - Refactored jQuery.fn.select2 to jQuery.fn.pp_select2 to avoid conflict with 3rd party plugins that load legacy versions of this library;
- */
-
-;(function (factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module.
- define(['jquery'], factory);
- } else if (typeof module === 'object' && module.exports) {
- // Node/CommonJS
- module.exports = function (root, jQuery) {
- if (jQuery === undefined) {
- // require('jQuery') returns a factory that requires window to
- // build a jQuery instance, we normalize how we use modules
- // that require this pattern but the window provided is a noop
- // if it's defined (how jquery works)
- if (typeof window !== 'undefined') {
- jQuery = require('jquery');
- }
- else {
- jQuery = require('jquery')(root);
- }
- }
- factory(jQuery);
- return jQuery;
- };
- } else {
- // Browser globals
- factory(jQuery);
- }
-} (function (jQuery) {
- // This is needed so we can catch the AMD loader configuration and use it
- // The inner file should be wrapped (by `banner.start.js`) in a function that
- // returns the AMD loader references.
- var S2 =(function () {
- // Restore the Select2 AMD loader so it can be used
- // Needed mostly in the language files, where the loader is not inserted
- if (jQuery && jQuery.fn && jQuery.fn.pp_select2 && jQuery.fn.pp_select2.amd) {
- var S2 = jQuery.fn.pp_select2.amd;
- }
-var S2;(function () { if (!S2 || !S2.requirejs) {
-if (!S2) { S2 = {}; } else { require = S2; }
-/**
- * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
- * Released under MIT license, http://github.com/requirejs/almond/LICENSE
- */
-//Going sloppy to avoid 'use strict' string cost, but strict practices should
-//be followed.
-/*global setTimeout: false */
-
-var requirejs, require, define;
-(function (undef) {
- var main, req, makeMap, handlers,
- defined = {},
- waiting = {},
- config = {},
- defining = {},
- hasOwn = Object.prototype.hasOwnProperty,
- aps = [].slice,
- jsSuffixRegExp = /\.js$/;
-
- function hasProp(obj, prop) {
- return hasOwn.call(obj, prop);
- }
-
- /**
- * Given a relative module name, like ./something, normalize it to
- * a real name that can be mapped to a path.
- * @param {String} name the relative name
- * @param {String} baseName a real name that the name arg is relative
- * to.
- * @returns {String} normalized name
- */
- function normalize(name, baseName) {
- var nameParts, nameSegment, mapValue, foundMap, lastIndex,
- foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,
- baseParts = baseName && baseName.split("/"),
- map = config.map,
- starMap = (map && map['*']) || {};
-
- //Adjust any relative paths.
- if (name) {
- name = name.split('/');
- lastIndex = name.length - 1;
-
- // If wanting node ID compatibility, strip .js from end
- // of IDs. Have to do this here, and not in nameToUrl
- // because node allows either .js or non .js to map
- // to same file.
- if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
- name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
- }
-
- // Starts with a '.' so need the baseName
- if (name[0].charAt(0) === '.' && baseParts) {
- //Convert baseName to array, and lop off the last part,
- //so that . matches that 'directory' and not name of the baseName's
- //module. For instance, baseName of 'one/two/three', maps to
- //'one/two/three.js', but we want the directory, 'one/two' for
- //this normalization.
- normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
- name = normalizedBaseParts.concat(name);
- }
-
- //start trimDots
- for (i = 0; i < name.length; i++) {
- part = name[i];
- if (part === '.') {
- name.splice(i, 1);
- i -= 1;
- } else if (part === '..') {
- // If at the start, or previous value is still ..,
- // keep them so that when converted to a path it may
- // still work when converted to a path, even though
- // as an ID it is less than ideal. In larger point
- // releases, may be better to just kick out an error.
- if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {
- continue;
- } else if (i > 0) {
- name.splice(i - 1, 2);
- i -= 2;
- }
- }
- }
- //end trimDots
-
- name = name.join('/');
- }
-
- //Apply map config if available.
- if ((baseParts || starMap) && map) {
- nameParts = name.split('/');
-
- for (i = nameParts.length; i > 0; i -= 1) {
- nameSegment = nameParts.slice(0, i).join("/");
-
- if (baseParts) {
- //Find the longest baseName segment match in the config.
- //So, do joins on the biggest to smallest lengths of baseParts.
- for (j = baseParts.length; j > 0; j -= 1) {
- mapValue = map[baseParts.slice(0, j).join('/')];
-
- //baseName segment has config, find if it has one for
- //this name.
- if (mapValue) {
- mapValue = mapValue[nameSegment];
- if (mapValue) {
- //Match, update name to the new value.
- foundMap = mapValue;
- foundI = i;
- break;
- }
- }
- }
- }
-
- if (foundMap) {
- break;
- }
-
- //Check for a star map match, but just hold on to it,
- //if there is a shorter segment match later in a matching
- //config, then favor over this star map.
- if (!foundStarMap && starMap && starMap[nameSegment]) {
- foundStarMap = starMap[nameSegment];
- starI = i;
- }
- }
-
- if (!foundMap && foundStarMap) {
- foundMap = foundStarMap;
- foundI = starI;
- }
-
- if (foundMap) {
- nameParts.splice(0, foundI, foundMap);
- name = nameParts.join('/');
- }
- }
-
- return name;
- }
-
- function makeRequire(relName, forceSync) {
- return function () {
- //A version of a require function that passes a moduleName
- //value for items that may need to
- //look up paths relative to the moduleName
- var args = aps.call(arguments, 0);
-
- //If first arg is not require('string'), and there is only
- //one arg, it is the array form without a callback. Insert
- //a null so that the following concat is correct.
- if (typeof args[0] !== 'string' && args.length === 1) {
- args.push(null);
- }
- return req.apply(undef, args.concat([relName, forceSync]));
- };
- }
-
- function makeNormalize(relName) {
- return function (name) {
- return normalize(name, relName);
- };
- }
-
- function makeLoad(depName) {
- return function (value) {
- defined[depName] = value;
- };
- }
-
- function callDep(name) {
- if (hasProp(waiting, name)) {
- var args = waiting[name];
- delete waiting[name];
- defining[name] = true;
- main.apply(undef, args);
- }
-
- if (!hasProp(defined, name) && !hasProp(defining, name)) {
- throw new Error('No ' + name);
- }
- return defined[name];
- }
-
- //Turns a plugin!resource to [plugin, resource]
- //with the plugin being undefined if the name
- //did not have a plugin prefix.
- function splitPrefix(name) {
- var prefix,
- index = name ? name.indexOf('!') : -1;
- if (index > -1) {
- prefix = name.substring(0, index);
- name = name.substring(index + 1, name.length);
- }
- return [prefix, name];
- }
-
- //Creates a parts array for a relName where first part is plugin ID,
- //second part is resource ID. Assumes relName has already been normalized.
- function makeRelParts(relName) {
- return relName ? splitPrefix(relName) : [];
- }
-
- /**
- * Makes a name map, normalizing the name, and using a plugin
- * for normalization if necessary. Grabs a ref to plugin
- * too, as an optimization.
- */
- makeMap = function (name, relParts) {
- var plugin,
- parts = splitPrefix(name),
- prefix = parts[0],
- relResourceName = relParts[1];
-
- name = parts[1];
-
- if (prefix) {
- prefix = normalize(prefix, relResourceName);
- plugin = callDep(prefix);
- }
-
- //Normalize according
- if (prefix) {
- if (plugin && plugin.normalize) {
- name = plugin.normalize(name, makeNormalize(relResourceName));
- } else {
- name = normalize(name, relResourceName);
- }
- } else {
- name = normalize(name, relResourceName);
- parts = splitPrefix(name);
- prefix = parts[0];
- name = parts[1];
- if (prefix) {
- plugin = callDep(prefix);
- }
- }
-
- //Using ridiculous property names for space reasons
- return {
- f: prefix ? prefix + '!' + name : name, //fullName
- n: name,
- pr: prefix,
- p: plugin
- };
- };
-
- function makeConfig(name) {
- return function () {
- return (config && config.config && config.config[name]) || {};
- };
- }
-
- handlers = {
- require: function (name) {
- return makeRequire(name);
- },
- exports: function (name) {
- var e = defined[name];
- if (typeof e !== 'undefined') {
- return e;
- } else {
- return (defined[name] = {});
- }
- },
- module: function (name) {
- return {
- id: name,
- uri: '',
- exports: defined[name],
- config: makeConfig(name)
- };
- }
- };
-
- main = function (name, deps, callback, relName) {
- var cjsModule, depName, ret, map, i, relParts,
- args = [],
- callbackType = typeof callback,
- usingExports;
-
- //Use name if no relName
- relName = relName || name;
- relParts = makeRelParts(relName);
-
- //Call the callback to define the module, if necessary.
- if (callbackType === 'undefined' || callbackType === 'function') {
- //Pull out the defined dependencies and pass the ordered
- //values to the callback.
- //Default to [require, exports, module] if no deps
- deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
- for (i = 0; i < deps.length; i += 1) {
- map = makeMap(deps[i], relParts);
- depName = map.f;
-
- //Fast path CommonJS standard dependencies.
- if (depName === "require") {
- args[i] = handlers.require(name);
- } else if (depName === "exports") {
- //CommonJS module spec 1.1
- args[i] = handlers.exports(name);
- usingExports = true;
- } else if (depName === "module") {
- //CommonJS module spec 1.1
- cjsModule = args[i] = handlers.module(name);
- } else if (hasProp(defined, depName) ||
- hasProp(waiting, depName) ||
- hasProp(defining, depName)) {
- args[i] = callDep(depName);
- } else if (map.p) {
- map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
- args[i] = defined[depName];
- } else {
- throw new Error(name + ' missing ' + depName);
- }
- }
-
- ret = callback ? callback.apply(defined[name], args) : undefined;
-
- if (name) {
- //If setting exports via "module" is in play,
- //favor that over return value and exports. After that,
- //favor a non-undefined return value over exports use.
- if (cjsModule && cjsModule.exports !== undef &&
- cjsModule.exports !== defined[name]) {
- defined[name] = cjsModule.exports;
- } else if (ret !== undef || !usingExports) {
- //Use the return value from the function.
- defined[name] = ret;
- }
- }
- } else if (name) {
- //May just be an object definition for the module. Only
- //worry about defining if have a module name.
- defined[name] = callback;
- }
- };
-
- requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
- if (typeof deps === "string") {
- if (handlers[deps]) {
- //callback in this case is really relName
- return handlers[deps](callback);
- }
- //Just return the module wanted. In this scenario, the
- //deps arg is the module name, and second arg (if passed)
- //is just the relName.
- //Normalize module name, if it contains . or ..
- return callDep(makeMap(deps, makeRelParts(callback)).f);
- } else if (!deps.splice) {
- //deps is a config object, not an array.
- config = deps;
- if (config.deps) {
- req(config.deps, config.callback);
- }
- if (!callback) {
- return;
- }
-
- if (callback.splice) {
- //callback is an array, which means it is a dependency list.
- //Adjust args if there are dependencies
- deps = callback;
- callback = relName;
- relName = null;
- } else {
- deps = undef;
- }
- }
-
- //Support require(['a'])
- callback = callback || function () {};
-
- //If relName is a function, it is an errback handler,
- //so remove it.
- if (typeof relName === 'function') {
- relName = forceSync;
- forceSync = alt;
- }
-
- //Simulate async callback;
- if (forceSync) {
- main(undef, deps, callback, relName);
- } else {
- //Using a non-zero value because of concern for what old browsers
- //do, and latest browsers "upgrade" to 4 if lower value is used:
- //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
- //If want a value immediately, use require('id') instead -- something
- //that works in almond on the global level, but not guaranteed and
- //unlikely to work in other AMD implementations.
- setTimeout(function () {
- main(undef, deps, callback, relName);
- }, 4);
- }
-
- return req;
- };
-
- /**
- * Just drops the config on the floor, but returns req in case
- * the config return value is used.
- */
- req.config = function (cfg) {
- return req(cfg);
- };
-
- /**
- * Expose module registry for debugging and tooling
- */
- requirejs._defined = defined;
-
- define = function (name, deps, callback) {
- if (typeof name !== 'string') {
- throw new Error('See almond README: incorrect module build, no module name');
- }
-
- //This module may not have dependencies
- if (!deps.splice) {
- //deps is not an array, so probably means
- //an object literal or factory function for
- //the value. Adjust args.
- callback = deps;
- deps = [];
- }
-
- if (!hasProp(defined, name) && !hasProp(waiting, name)) {
- waiting[name] = [name, deps, callback];
- }
- };
-
- define.amd = {
- jQuery: true
- };
-}());
-
-S2.requirejs = requirejs;S2.require = require;S2.define = define;
-}
-}());
-S2.define("almond", function(){});
-
-/* global jQuery:false, $:false */
-S2.define('jquery',[],function () {
- var _$ = jQuery || $;
-
- if (_$ == null && console && console.error) {
- console.error(
- 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
- 'found. Make sure that you are including jQuery before Select2 on your ' +
- 'web page.'
- );
- }
-
- return _$;
-});
-
-S2.define('select2/utils',[
- 'jquery'
-], function ($) {
- var Utils = {};
-
- Utils.Extend = function (ChildClass, SuperClass) {
- var __hasProp = {}.hasOwnProperty;
-
- function BaseConstructor () {
- this.constructor = ChildClass;
- }
-
- for (var key in SuperClass) {
- if (__hasProp.call(SuperClass, key)) {
- ChildClass[key] = SuperClass[key];
- }
- }
-
- BaseConstructor.prototype = SuperClass.prototype;
- ChildClass.prototype = new BaseConstructor();
- ChildClass.__super__ = SuperClass.prototype;
-
- return ChildClass;
- };
-
- function getMethods (theClass) {
- var proto = theClass.prototype;
-
- var methods = [];
-
- for (var methodName in proto) {
- var m = proto[methodName];
-
- if (typeof m !== 'function') {
- continue;
- }
-
- if (methodName === 'constructor') {
- continue;
- }
-
- methods.push(methodName);
- }
-
- return methods;
- }
-
- Utils.Decorate = function (SuperClass, DecoratorClass) {
- var decoratedMethods = getMethods(DecoratorClass);
- var superMethods = getMethods(SuperClass);
-
- function DecoratedClass () {
- var unshift = Array.prototype.unshift;
-
- var argCount = DecoratorClass.prototype.constructor.length;
-
- var calledConstructor = SuperClass.prototype.constructor;
-
- if (argCount > 0) {
- unshift.call(arguments, SuperClass.prototype.constructor);
-
- calledConstructor = DecoratorClass.prototype.constructor;
- }
-
- calledConstructor.apply(this, arguments);
- }
-
- DecoratorClass.displayName = SuperClass.displayName;
-
- function ctr () {
- this.constructor = DecoratedClass;
- }
-
- DecoratedClass.prototype = new ctr();
-
- for (var m = 0; m < superMethods.length; m++) {
- var superMethod = superMethods[m];
-
- DecoratedClass.prototype[superMethod] =
- SuperClass.prototype[superMethod];
- }
-
- var calledMethod = function (methodName) {
- // Stub out the original method if it's not decorating an actual method
- var originalMethod = function () {};
-
- if (methodName in DecoratedClass.prototype) {
- originalMethod = DecoratedClass.prototype[methodName];
- }
-
- var decoratedMethod = DecoratorClass.prototype[methodName];
-
- return function () {
- var unshift = Array.prototype.unshift;
-
- unshift.call(arguments, originalMethod);
-
- return decoratedMethod.apply(this, arguments);
- };
- };
-
- for (var d = 0; d < decoratedMethods.length; d++) {
- var decoratedMethod = decoratedMethods[d];
-
- DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
- }
-
- return DecoratedClass;
- };
-
- var Observable = function () {
- this.listeners = {};
- };
-
- Observable.prototype.on = function (event, callback) {
- this.listeners = this.listeners || {};
-
- if (event in this.listeners) {
- this.listeners[event].push(callback);
- } else {
- this.listeners[event] = [callback];
- }
- };
-
- Observable.prototype.trigger = function (event) {
- var slice = Array.prototype.slice;
- var params = slice.call(arguments, 1);
-
- this.listeners = this.listeners || {};
-
- // Params should always come in as an array
- if (params == null) {
- params = [];
- }
-
- // If there are no arguments to the event, use a temporary object
- if (params.length === 0) {
- params.push({});
- }
-
- // Set the `_type` of the first object to the event
- params[0]._type = event;
-
- if (event in this.listeners) {
- this.invoke(this.listeners[event], slice.call(arguments, 1));
- }
-
- if ('*' in this.listeners) {
- this.invoke(this.listeners['*'], arguments);
- }
- };
-
- Observable.prototype.invoke = function (listeners, params) {
- for (var i = 0, len = listeners.length; i < len; i++) {
- listeners[i].apply(this, params);
- }
- };
-
- Utils.Observable = Observable;
-
- Utils.generateChars = function (length) {
- var chars = '';
-
- for (var i = 0; i < length; i++) {
- var randomChar = Math.floor(Math.random() * 36);
- chars += randomChar.toString(36);
- }
-
- return chars;
- };
-
- Utils.bind = function (func, context) {
- return function () {
- func.apply(context, arguments);
- };
- };
-
- Utils._convertData = function (data) {
- for (var originalKey in data) {
- var keys = originalKey.split('-');
-
- var dataLevel = data;
-
- if (keys.length === 1) {
- continue;
- }
-
- for (var k = 0; k < keys.length; k++) {
- var key = keys[k];
-
- // Lowercase the first letter
- // By default, dash-separated becomes camelCase
- key = key.substring(0, 1).toLowerCase() + key.substring(1);
-
- if (!(key in dataLevel)) {
- dataLevel[key] = {};
- }
-
- if (k == keys.length - 1) {
- dataLevel[key] = data[originalKey];
- }
-
- dataLevel = dataLevel[key];
- }
-
- delete data[originalKey];
- }
-
- return data;
- };
-
- Utils.hasScroll = function (index, el) {
- // Adapted from the function created by @ShadowScripter
- // and adapted by @BillBarry on the Stack Exchange Code Review website.
- // The original code can be found at
- // http://codereview.stackexchange.com/q/13338
- // and was designed to be used with the Sizzle selector engine.
-
- var $el = $(el);
- var overflowX = el.style.overflowX;
- var overflowY = el.style.overflowY;
-
- //Check both x and y declarations
- if (overflowX === overflowY &&
- (overflowY === 'hidden' || overflowY === 'visible')) {
- return false;
- }
-
- if (overflowX === 'scroll' || overflowY === 'scroll') {
- return true;
- }
-
- return ($el.innerHeight() < el.scrollHeight ||
- $el.innerWidth() < el.scrollWidth);
- };
-
- Utils.escapeMarkup = function (markup) {
- var replaceMap = {
- '\\': '\',
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- '\'': ''',
- '/': '/'
- };
-
- // Do not try to escape the markup if it's not a string
- if (typeof markup !== 'string') {
- return markup;
- }
-
- return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
- return replaceMap[match];
- });
- };
-
- // Append an array of jQuery nodes to a given element.
- Utils.appendMany = function ($element, $nodes) {
- // jQuery 1.7.x does not support $.fn.append() with an array
- // Fall back to a jQuery object collection using $.fn.add()
- if ($.fn.jquery.substr(0, 3) === '1.7') {
- var $jqNodes = $();
-
- $.map($nodes, function (node) {
- $jqNodes = $jqNodes.add(node);
- });
-
- $nodes = $jqNodes;
- }
-
- $element.append($nodes);
- };
-
- // Cache objects in Utils.__cache instead of $.data (see #4346)
- Utils.__cache = {};
-
- var id = 0;
- Utils.GetUniqueElementId = function (element) {
- // Get a unique element Id. If element has no id,
- // creates a new unique number, stores it in the id
- // attribute and returns the new id.
- // If an id already exists, it simply returns it.
-
- var select2Id = element.getAttribute('data-select2-id');
- if (select2Id == null) {
- // If element has id, use it.
- if (element.id) {
- select2Id = element.id;
- element.setAttribute('data-select2-id', select2Id);
- } else {
- element.setAttribute('data-select2-id', ++id);
- select2Id = id.toString();
- }
- }
- return select2Id;
- };
-
- Utils.StoreData = function (element, name, value) {
- // Stores an item in the cache for a specified element.
- // name is the cache key.
- var id = Utils.GetUniqueElementId(element);
- if (!Utils.__cache[id]) {
- Utils.__cache[id] = {};
- }
-
- Utils.__cache[id][name] = value;
- };
-
- Utils.GetData = function (element, name) {
- // Retrieves a value from the cache by its key (name)
- // name is optional. If no name specified, return
- // all cache items for the specified element.
- // and for a specified element.
- var id = Utils.GetUniqueElementId(element);
- if (name) {
- if (Utils.__cache[id]) {
- if (Utils.__cache[id][name] != null) {
- return Utils.__cache[id][name];
- }
- return $(element).data(name); // Fallback to HTML5 data attribs.
- }
- return $(element).data(name); // Fallback to HTML5 data attribs.
- } else {
- return Utils.__cache[id];
- }
- };
-
- Utils.RemoveData = function (element) {
- // Removes all cached items for a specified element.
- var id = Utils.GetUniqueElementId(element);
- if (Utils.__cache[id] != null) {
- delete Utils.__cache[id];
- }
- };
-
- return Utils;
-});
-
-S2.define('select2/results',[
- 'jquery',
- './utils'
-], function ($, Utils) {
- function Results ($element, options, dataAdapter) {
- this.$element = $element;
- this.data = dataAdapter;
- this.options = options;
-
- Results.__super__.constructor.call(this);
- }
-
- Utils.Extend(Results, Utils.Observable);
-
- Results.prototype.render = function () {
- var $results = $(
- ''
- );
-
- if (this.options.get('multiple')) {
- $results.attr('aria-multiselectable', 'true');
- }
-
- this.$results = $results;
-
- return $results;
- };
-
- Results.prototype.clear = function () {
- this.$results.empty();
- };
-
- Results.prototype.displayMessage = function (params) {
- var escapeMarkup = this.options.get('escapeMarkup');
-
- this.clear();
- this.hideLoading();
-
- var $message = $(
- ' '
- );
-
- var message = this.options.get('translations').get(params.message);
-
- $message.append(
- escapeMarkup(
- message(params.args)
- )
- );
-
- $message[0].className += ' select2-results__message';
-
- this.$results.append($message);
- };
-
- Results.prototype.hideMessages = function () {
- this.$results.find('.select2-results__message').remove();
- };
-
- Results.prototype.append = function (data) {
- this.hideLoading();
-
- var $options = [];
-
- if (data.results == null || data.results.length === 0) {
- if (this.$results.children().length === 0) {
- this.trigger('results:message', {
- message: 'noResults'
- });
- }
-
- return;
- }
-
- data.results = this.sort(data.results);
-
- for (var d = 0; d < data.results.length; d++) {
- var item = data.results[d];
-
- var $option = this.option(item);
-
- $options.push($option);
- }
-
- this.$results.append($options);
- };
-
- Results.prototype.position = function ($results, $dropdown) {
- var $resultsContainer = $dropdown.find('.select2-results');
- $resultsContainer.append($results);
- };
-
- Results.prototype.sort = function (data) {
- var sorter = this.options.get('sorter');
-
- return sorter(data);
- };
-
- Results.prototype.highlightFirstItem = function () {
- var $options = this.$results
- .find('.select2-results__option[aria-selected]');
-
- var $selected = $options.filter('[aria-selected=true]');
-
- // Check if there are any selected options
- if ($selected.length > 0) {
- // If there are selected options, highlight the first
- $selected.first().trigger('mouseenter');
- } else {
- // If there are no selected options, highlight the first option
- // in the dropdown
- $options.first().trigger('mouseenter');
- }
-
- this.ensureHighlightVisible();
- };
-
- Results.prototype.setClasses = function () {
- var self = this;
-
- this.data.current(function (selected) {
- var selectedIds = $.map(selected, function (s) {
- return s.id.toString();
- });
-
- var $options = self.$results
- .find('.select2-results__option[aria-selected]');
-
- $options.each(function () {
- var $option = $(this);
-
- var item = Utils.GetData(this, 'data');
-
- // id needs to be converted to a string when comparing
- var id = '' + item.id;
-
- if ((item.element != null && item.element.selected) ||
- (item.element == null && $.inArray(id, selectedIds) > -1)) {
- $option.attr('aria-selected', 'true');
- } else {
- $option.attr('aria-selected', 'false');
- }
- });
-
- });
- };
-
- Results.prototype.showLoading = function (params) {
- this.hideLoading();
-
- var loadingMore = this.options.get('translations').get('searching');
-
- var loading = {
- disabled: true,
- loading: true,
- text: loadingMore(params)
- };
- var $loading = this.option(loading);
- $loading.className += ' loading-results';
-
- this.$results.prepend($loading);
- };
-
- Results.prototype.hideLoading = function () {
- this.$results.find('.loading-results').remove();
- };
-
- Results.prototype.option = function (data) {
- var option = document.createElement('li');
- option.className = 'select2-results__option';
-
- var attrs = {
- 'role': 'treeitem',
- 'aria-selected': 'false'
- };
-
- if (data.disabled) {
- delete attrs['aria-selected'];
- attrs['aria-disabled'] = 'true';
- }
-
- if (data.id == null) {
- delete attrs['aria-selected'];
- }
-
- if (data._resultId != null) {
- option.id = data._resultId;
- }
-
- if (data.title) {
- option.title = data.title;
- }
-
- if (data.children) {
- attrs.role = 'group';
- attrs['aria-label'] = data.text;
- delete attrs['aria-selected'];
- }
-
- for (var attr in attrs) {
- var val = attrs[attr];
-
- option.setAttribute(attr, val);
- }
-
- if (data.children) {
- var $option = $(option);
-
- var label = document.createElement('strong');
- label.className = 'select2-results__group';
-
- var $label = $(label);
- this.template(data, label);
-
- var $children = [];
-
- for (var c = 0; c < data.children.length; c++) {
- var child = data.children[c];
-
- var $child = this.option(child);
-
- $children.push($child);
- }
-
- var $childrenContainer = $('', {
- 'class': 'select2-results__options select2-results__options--nested'
- });
-
- $childrenContainer.append($children);
-
- $option.append(label);
- $option.append($childrenContainer);
- } else {
- this.template(data, option);
- }
-
- Utils.StoreData(option, 'data', data);
-
- return option;
- };
-
- Results.prototype.bind = function (container, $container) {
- var self = this;
-
- var id = container.id + '-results';
-
- this.$results.attr('id', id);
-
- container.on('results:all', function (params) {
- self.clear();
- self.append(params.data);
-
- if (container.isOpen()) {
- self.setClasses();
- self.highlightFirstItem();
- }
- });
-
- container.on('results:append', function (params) {
- self.append(params.data);
-
- if (container.isOpen()) {
- self.setClasses();
- }
- });
-
- container.on('query', function (params) {
- self.hideMessages();
- self.showLoading(params);
- });
-
- container.on('select', function () {
- if (!container.isOpen()) {
- return;
- }
-
- self.setClasses();
-
- if (self.options.get('scrollAfterSelect')) {
- self.highlightFirstItem();
- }
- });
-
- container.on('unselect', function () {
- if (!container.isOpen()) {
- return;
- }
-
- self.setClasses();
-
- if (self.options.get('scrollAfterSelect')) {
- self.highlightFirstItem();
- }
- });
-
- container.on('open', function () {
- // When the dropdown is open, aria-expended="true"
- self.$results.attr('aria-expanded', 'true');
- self.$results.attr('aria-hidden', 'false');
-
- self.setClasses();
- self.ensureHighlightVisible();
- });
-
- container.on('close', function () {
- // When the dropdown is closed, aria-expended="false"
- self.$results.attr('aria-expanded', 'false');
- self.$results.attr('aria-hidden', 'true');
- self.$results.removeAttr('aria-activedescendant');
- });
-
- container.on('results:toggle', function () {
- var $highlighted = self.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- $highlighted.trigger('mouseup');
- });
-
- container.on('results:select', function () {
- var $highlighted = self.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- var data = Utils.GetData($highlighted[0], 'data');
-
- if ($highlighted.attr('aria-selected') == 'true') {
- self.trigger('close', {});
- } else {
- self.trigger('select', {
- data: data
- });
- }
- });
-
- container.on('results:previous', function () {
- var $highlighted = self.getHighlightedResults();
-
- var $options = self.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- // If we are already at the top, don't move further
- // If no options, currentIndex will be -1
- if (currentIndex <= 0) {
- return;
- }
-
- var nextIndex = currentIndex - 1;
-
- // If none are highlighted, highlight the first
- if ($highlighted.length === 0) {
- nextIndex = 0;
- }
-
- var $next = $options.eq(nextIndex);
-
- $next.trigger('mouseenter');
-
- var currentOffset = self.$results.offset().top;
- var nextTop = $next.offset().top;
- var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
-
- if (nextIndex === 0) {
- self.$results.scrollTop(0);
- } else if (nextTop - currentOffset < 0) {
- self.$results.scrollTop(nextOffset);
- }
- });
-
- container.on('results:next', function () {
- var $highlighted = self.getHighlightedResults();
-
- var $options = self.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- var nextIndex = currentIndex + 1;
-
- // If we are at the last option, stay there
- if (nextIndex >= $options.length) {
- return;
- }
-
- var $next = $options.eq(nextIndex);
-
- $next.trigger('mouseenter');
-
- var currentOffset = self.$results.offset().top +
- self.$results.outerHeight(false);
- var nextBottom = $next.offset().top + $next.outerHeight(false);
- var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
-
- if (nextIndex === 0) {
- self.$results.scrollTop(0);
- } else if (nextBottom > currentOffset) {
- self.$results.scrollTop(nextOffset);
- }
- });
-
- container.on('results:focus', function (params) {
- params.element.addClass('select2-results__option--highlighted');
- });
-
- container.on('results:message', function (params) {
- self.displayMessage(params);
- });
-
- if ($.fn.mousewheel) {
- this.$results.on('mousewheel', function (e) {
- var top = self.$results.scrollTop();
-
- var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
-
- var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
- var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
-
- if (isAtTop) {
- self.$results.scrollTop(0);
-
- e.preventDefault();
- e.stopPropagation();
- } else if (isAtBottom) {
- self.$results.scrollTop(
- self.$results.get(0).scrollHeight - self.$results.height()
- );
-
- e.preventDefault();
- e.stopPropagation();
- }
- });
- }
-
- this.$results.on('mouseup', '.select2-results__option[aria-selected]',
- function (evt) {
- var $this = $(this);
-
- var data = Utils.GetData(this, 'data');
-
- if ($this.attr('aria-selected') === 'true') {
- if (self.options.get('multiple')) {
- self.trigger('unselect', {
- originalEvent: evt,
- data: data
- });
- } else {
- self.trigger('close', {});
- }
-
- return;
- }
-
- self.trigger('select', {
- originalEvent: evt,
- data: data
- });
- });
-
- this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
- function (evt) {
- var data = Utils.GetData(this, 'data');
-
- self.getHighlightedResults()
- .removeClass('select2-results__option--highlighted');
-
- self.trigger('results:focus', {
- data: data,
- element: $(this)
- });
- });
- };
-
- Results.prototype.getHighlightedResults = function () {
- var $highlighted = this.$results
- .find('.select2-results__option--highlighted');
-
- return $highlighted;
- };
-
- Results.prototype.destroy = function () {
- this.$results.remove();
- };
-
- Results.prototype.ensureHighlightVisible = function () {
- var $highlighted = this.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- var $options = this.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- var currentOffset = this.$results.offset().top;
- var nextTop = $highlighted.offset().top;
- var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
-
- var offsetDelta = nextTop - currentOffset;
- nextOffset -= $highlighted.outerHeight(false) * 2;
-
- if (currentIndex <= 2) {
- this.$results.scrollTop(0);
- } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
- this.$results.scrollTop(nextOffset);
- }
- };
-
- Results.prototype.template = function (result, container) {
- var template = this.options.get('templateResult');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- var content = template(result, container);
-
- if (content == null) {
- container.style.display = 'none';
- } else if (typeof content === 'string') {
- container.innerHTML = escapeMarkup(content);
- } else {
- $(container).append(content);
- }
- };
-
- return Results;
-});
-
-S2.define('select2/keys',[
-
-], function () {
- var KEYS = {
- BACKSPACE: 8,
- TAB: 9,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- ESC: 27,
- SPACE: 32,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- END: 35,
- HOME: 36,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- DELETE: 46
- };
-
- return KEYS;
-});
-
-S2.define('select2/selection/base',[
- 'jquery',
- '../utils',
- '../keys'
-], function ($, Utils, KEYS) {
- function BaseSelection ($element, options) {
- this.$element = $element;
- this.options = options;
-
- BaseSelection.__super__.constructor.call(this);
- }
-
- Utils.Extend(BaseSelection, Utils.Observable);
-
- BaseSelection.prototype.render = function () {
- var $selection = $(
- '' +
- ' '
- );
-
- this._tabindex = 0;
-
- if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {
- this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');
- } else if (this.$element.attr('tabindex') != null) {
- this._tabindex = this.$element.attr('tabindex');
- }
-
- $selection.attr('title', this.$element.attr('title'));
- $selection.attr('tabindex', this._tabindex);
-
- this.$selection = $selection;
-
- return $selection;
- };
-
- BaseSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- var id = container.id + '-container';
- var resultsId = container.id + '-results';
-
- this.container = container;
-
- this.$selection.on('focus', function (evt) {
- self.trigger('focus', evt);
- });
-
- this.$selection.on('blur', function (evt) {
- self._handleBlur(evt);
- });
-
- this.$selection.on('keydown', function (evt) {
- self.trigger('keypress', evt);
-
- if (evt.which === KEYS.SPACE) {
- evt.preventDefault();
- }
- });
-
- container.on('results:focus', function (params) {
- self.$selection.attr('aria-activedescendant', params.data._resultId);
- });
-
- container.on('selection:update', function (params) {
- self.update(params.data);
- });
-
- container.on('open', function () {
- // When the dropdown is open, aria-expanded="true"
- self.$selection.attr('aria-expanded', 'true');
- self.$selection.attr('aria-owns', resultsId);
-
- self._attachCloseHandler(container);
- });
-
- container.on('close', function () {
- // When the dropdown is closed, aria-expanded="false"
- self.$selection.attr('aria-expanded', 'false');
- self.$selection.removeAttr('aria-activedescendant');
- self.$selection.removeAttr('aria-owns');
-
- window.setTimeout(function () {
- self.$selection.focus();
- }, 0);
-
- self._detachCloseHandler(container);
- });
-
- container.on('enable', function () {
- self.$selection.attr('tabindex', self._tabindex);
- });
-
- container.on('disable', function () {
- self.$selection.attr('tabindex', '-1');
- });
- };
-
- BaseSelection.prototype._handleBlur = function (evt) {
- var self = this;
-
- // This needs to be delayed as the active element is the body when the tab
- // key is pressed, possibly along with others.
- window.setTimeout(function () {
- // Don't trigger `blur` if the focus is still in the selection
- if (
- (document.activeElement == self.$selection[0]) ||
- ($.contains(self.$selection[0], document.activeElement))
- ) {
- return;
- }
-
- self.trigger('blur', evt);
- }, 1);
- };
-
- BaseSelection.prototype._attachCloseHandler = function (container) {
- var self = this;
-
- $(document.body).on('mousedown.select2.' + container.id, function (e) {
- var $target = $(e.target);
-
- var $select = $target.closest('.select2');
-
- var $all = $('.select2.select2-container--open');
-
- $all.each(function () {
- var $this = $(this);
-
- if (this == $select[0]) {
- return;
- }
-
- var $element = Utils.GetData(this, 'element');
-
- $element.pp_select2('close');
- });
- });
- };
-
- BaseSelection.prototype._detachCloseHandler = function (container) {
- $(document.body).off('mousedown.select2.' + container.id);
- };
-
- BaseSelection.prototype.position = function ($selection, $container) {
- var $selectionContainer = $container.find('.selection');
- $selectionContainer.append($selection);
- };
-
- BaseSelection.prototype.destroy = function () {
- this._detachCloseHandler(this.container);
- };
-
- BaseSelection.prototype.update = function (data) {
- throw new Error('The `update` method must be defined in child classes.');
- };
-
- return BaseSelection;
-});
-
-S2.define('select2/selection/single',[
- 'jquery',
- './base',
- '../utils',
- '../keys'
-], function ($, BaseSelection, Utils, KEYS) {
- function SingleSelection () {
- SingleSelection.__super__.constructor.apply(this, arguments);
- }
-
- Utils.Extend(SingleSelection, BaseSelection);
-
- SingleSelection.prototype.render = function () {
- var $selection = SingleSelection.__super__.render.call(this);
-
- $selection.addClass('select2-selection--single');
-
- $selection.html(
- ' ' +
- '' +
- ' ' +
- ' '
- );
-
- return $selection;
- };
-
- SingleSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- SingleSelection.__super__.bind.apply(this, arguments);
-
- var id = container.id + '-container';
-
- this.$selection.find('.select2-selection__rendered')
- .attr('id', id)
- .attr('role', 'textbox')
- .attr('aria-readonly', 'true');
- this.$selection.attr('aria-labelledby', id);
-
- this.$selection.on('mousedown', function (evt) {
- // Only respond to left clicks
- if (evt.which !== 1) {
- return;
- }
-
- self.trigger('toggle', {
- originalEvent: evt
- });
- });
-
- this.$selection.on('focus', function (evt) {
- // User focuses on the container
- });
-
- this.$selection.on('blur', function (evt) {
- // User exits the container
- });
-
- container.on('focus', function (evt) {
- if (!container.isOpen()) {
- self.$selection.focus();
- }
- });
- };
-
- SingleSelection.prototype.clear = function () {
- var $rendered = this.$selection.find('.select2-selection__rendered');
- $rendered.empty();
- $rendered.removeAttr('title'); // clear tooltip on empty
- };
-
- SingleSelection.prototype.display = function (data, container) {
- var template = this.options.get('templateSelection');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- return escapeMarkup(template(data, container));
- };
-
- SingleSelection.prototype.selectionContainer = function () {
- return $(' ');
- };
-
- SingleSelection.prototype.update = function (data) {
- if (data.length === 0) {
- this.clear();
- return;
- }
-
- var selection = data[0];
-
- var $rendered = this.$selection.find('.select2-selection__rendered');
- var formatted = this.display(selection, $rendered);
-
- $rendered.empty().append(formatted);
- $rendered.attr('title', selection.title || selection.text);
- };
-
- return SingleSelection;
-});
-
-S2.define('select2/selection/multiple',[
- 'jquery',
- './base',
- '../utils'
-], function ($, BaseSelection, Utils) {
- function MultipleSelection ($element, options) {
- MultipleSelection.__super__.constructor.apply(this, arguments);
- }
-
- Utils.Extend(MultipleSelection, BaseSelection);
-
- MultipleSelection.prototype.render = function () {
- var $selection = MultipleSelection.__super__.render.call(this);
-
- $selection.addClass('select2-selection--multiple');
-
- $selection.html(
- ''
- );
-
- return $selection;
- };
-
- MultipleSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- MultipleSelection.__super__.bind.apply(this, arguments);
-
- this.$selection.on('click', function (evt) {
- self.trigger('toggle', {
- originalEvent: evt
- });
- });
-
- this.$selection.on(
- 'click',
- '.select2-selection__choice__remove',
- function (evt) {
- // Ignore the event if it is disabled
- if (self.options.get('disabled')) {
- return;
- }
-
- var $remove = $(this);
- var $selection = $remove.parent();
-
- var data = Utils.GetData($selection[0], 'data');
-
- self.trigger('unselect', {
- originalEvent: evt,
- data: data
- });
- }
- );
- };
-
- MultipleSelection.prototype.clear = function () {
- var $rendered = this.$selection.find('.select2-selection__rendered');
- $rendered.empty();
- $rendered.removeAttr('title');
- };
-
- MultipleSelection.prototype.display = function (data, container) {
- var template = this.options.get('templateSelection');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- return escapeMarkup(template(data, container));
- };
-
- MultipleSelection.prototype.selectionContainer = function () {
- var $container = $(
- '' +
- '' +
- '×' +
- ' ' +
- ' '
- );
-
- return $container;
- };
-
- MultipleSelection.prototype.update = function (data) {
- this.clear();
-
- if (data.length === 0) {
- return;
- }
-
- var $selections = [];
-
- for (var d = 0; d < data.length; d++) {
- var selection = data[d];
-
- var $selection = this.selectionContainer();
- var formatted = this.display(selection, $selection);
-
- $selection.append(formatted);
- $selection.attr('title', selection.title || selection.text);
-
- Utils.StoreData($selection[0], 'data', selection);
-
- $selections.push($selection);
- }
-
- var $rendered = this.$selection.find('.select2-selection__rendered');
-
- Utils.appendMany($rendered, $selections);
- };
-
- return MultipleSelection;
-});
-
-S2.define('select2/selection/placeholder',[
- '../utils'
-], function (Utils) {
- function Placeholder (decorated, $element, options) {
- this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
-
- decorated.call(this, $element, options);
- }
-
- Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
- if (typeof placeholder === 'string') {
- placeholder = {
- id: '',
- text: placeholder
- };
- }
-
- return placeholder;
- };
-
- Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
- var $placeholder = this.selectionContainer();
-
- $placeholder.html(this.display(placeholder));
- $placeholder.addClass('select2-selection__placeholder')
- .removeClass('select2-selection__choice');
-
- return $placeholder;
- };
-
- Placeholder.prototype.update = function (decorated, data) {
- var singlePlaceholder = (
- data.length == 1 && data[0].id != this.placeholder.id
- );
- var multipleSelections = data.length > 1;
-
- if (multipleSelections || singlePlaceholder) {
- return decorated.call(this, data);
- }
-
- this.clear();
-
- var $placeholder = this.createPlaceholder(this.placeholder);
-
- this.$selection.find('.select2-selection__rendered').append($placeholder);
- };
-
- return Placeholder;
-});
-
-S2.define('select2/selection/allowClear',[
- 'jquery',
- '../keys',
- '../utils'
-], function ($, KEYS, Utils) {
- function AllowClear () { }
-
- AllowClear.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- if (this.placeholder == null) {
- if (this.options.get('debug') && window.console && console.error) {
- console.error(
- 'Select2: The `allowClear` option should be used in combination ' +
- 'with the `placeholder` option.'
- );
- }
- }
-
- this.$selection.on('mousedown', '.select2-selection__clear',
- function (evt) {
- self._handleClear(evt);
- });
-
- container.on('keypress', function (evt) {
- self._handleKeyboardClear(evt, container);
- });
- };
-
- AllowClear.prototype._handleClear = function (_, evt) {
- // Ignore the event if it is disabled
- if (this.options.get('disabled')) {
- return;
- }
-
- var $clear = this.$selection.find('.select2-selection__clear');
-
- // Ignore the event if nothing has been selected
- if ($clear.length === 0) {
- return;
- }
-
- evt.stopPropagation();
-
- var data = Utils.GetData($clear[0], 'data');
-
- var previousVal = this.$element.val();
- this.$element.val(this.placeholder.id);
-
- var unselectData = {
- data: data
- };
- this.trigger('clear', unselectData);
- if (unselectData.prevented) {
- this.$element.val(previousVal);
- return;
- }
-
- for (var d = 0; d < data.length; d++) {
- unselectData = {
- data: data[d]
- };
-
- // Trigger the `unselect` event, so people can prevent it from being
- // cleared.
- this.trigger('unselect', unselectData);
-
- // If the event was prevented, don't clear it out.
- if (unselectData.prevented) {
- this.$element.val(previousVal);
- return;
- }
- }
-
- this.$element.trigger('change');
-
- this.trigger('toggle', {});
- };
-
- AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
- if (container.isOpen()) {
- return;
- }
-
- if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
- this._handleClear(evt);
- }
- };
-
- AllowClear.prototype.update = function (decorated, data) {
- decorated.call(this, data);
-
- if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
- data.length === 0) {
- return;
- }
-
- var removeAll = this.options.get('translations').get('removeAllItems');
-
- var $remove = $(
- '' +
- '×' +
- ' '
- );
- Utils.StoreData($remove[0], 'data', data);
-
- this.$selection.find('.select2-selection__rendered').prepend($remove);
- };
-
- return AllowClear;
-});
-
-S2.define('select2/selection/search',[
- 'jquery',
- '../utils',
- '../keys'
-], function ($, Utils, KEYS) {
- function Search (decorated, $element, options) {
- decorated.call(this, $element, options);
- }
-
- Search.prototype.render = function (decorated) {
- var $search = $(
- '' +
- ' ' +
- ' '
- );
-
- this.$searchContainer = $search;
- this.$search = $search.find('input');
-
- var $rendered = decorated.call(this);
-
- this._transferTabIndex();
-
- return $rendered;
- };
-
- Search.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('open', function () {
- self.$search.trigger('focus');
- });
-
- container.on('close', function () {
- self.$search.val('');
- self.$search.removeAttr('aria-activedescendant');
- self.$search.trigger('focus');
- });
-
- container.on('enable', function () {
- self.$search.prop('disabled', false);
-
- self._transferTabIndex();
- });
-
- container.on('disable', function () {
- self.$search.prop('disabled', true);
- });
-
- container.on('focus', function (evt) {
- self.$search.trigger('focus');
- });
-
- container.on('results:focus', function (params) {
- self.$search.attr('aria-activedescendant', params.id);
- });
-
- this.$selection.on('focusin', '.select2-search--inline', function (evt) {
- self.trigger('focus', evt);
- });
-
- this.$selection.on('focusout', '.select2-search--inline', function (evt) {
- self._handleBlur(evt);
- });
-
- this.$selection.on('keydown', '.select2-search--inline', function (evt) {
- evt.stopPropagation();
-
- self.trigger('keypress', evt);
-
- self._keyUpPrevented = evt.isDefaultPrevented();
-
- var key = evt.which;
-
- if (key === KEYS.BACKSPACE && self.$search.val() === '') {
- var $previousChoice = self.$searchContainer
- .prev('.select2-selection__choice');
-
- if ($previousChoice.length > 0) {
- var item = Utils.GetData($previousChoice[0], 'data');
-
- self.searchRemoveChoice(item);
-
- evt.preventDefault();
- }
- }
- });
-
- // Try to detect the IE version should the `documentMode` property that
- // is stored on the document. This is only implemented in IE and is
- // slightly cleaner than doing a user agent check.
- // This property is not available in Edge, but Edge also doesn't have
- // this bug.
- var msie = document.documentMode;
- var disableInputEvents = msie && msie <= 11;
-
- // Workaround for browsers which do not support the `input` event
- // This will prevent double-triggering of events for browsers which support
- // both the `keyup` and `input` events.
- this.$selection.on(
- 'input.searchcheck',
- '.select2-search--inline',
- function (evt) {
- // IE will trigger the `input` event when a placeholder is used on a
- // search box. To get around this issue, we are forced to ignore all
- // `input` events in IE and keep using `keyup`.
- if (disableInputEvents) {
- self.$selection.off('input.search input.searchcheck');
- return;
- }
-
- // Unbind the duplicated `keyup` event
- self.$selection.off('keyup.search');
- }
- );
-
- this.$selection.on(
- 'keyup.search input.search',
- '.select2-search--inline',
- function (evt) {
- // IE will trigger the `input` event when a placeholder is used on a
- // search box. To get around this issue, we are forced to ignore all
- // `input` events in IE and keep using `keyup`.
- if (disableInputEvents && evt.type === 'input') {
- self.$selection.off('input.search input.searchcheck');
- return;
- }
-
- var key = evt.which;
-
- // We can freely ignore events from modifier keys
- if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
- return;
- }
-
- // Tabbing will be handled during the `keydown` phase
- if (key == KEYS.TAB) {
- return;
- }
-
- self.handleSearch(evt);
- }
- );
- };
-
- /**
- * This method will transfer the tabindex attribute from the rendered
- * selection to the search box. This allows for the search box to be used as
- * the primary focus instead of the selection container.
- *
- * @private
- */
- Search.prototype._transferTabIndex = function (decorated) {
- this.$search.attr('tabindex', this.$selection.attr('tabindex'));
- this.$selection.attr('tabindex', '-1');
- };
-
- Search.prototype.createPlaceholder = function (decorated, placeholder) {
- this.$search.attr('placeholder', placeholder.text);
- };
-
- Search.prototype.update = function (decorated, data) {
- var searchHadFocus = this.$search[0] == document.activeElement;
-
- this.$search.attr('placeholder', '');
-
- decorated.call(this, data);
-
- this.$selection.find('.select2-selection__rendered')
- .append(this.$searchContainer);
-
- this.resizeSearch();
- if (searchHadFocus) {
- var isTagInput = this.$element.find('[data-select2-tag]').length;
- if (isTagInput) {
- // fix IE11 bug where tag input lost focus
- this.$element.focus();
- } else {
- this.$search.focus();
- }
- }
- };
-
- Search.prototype.handleSearch = function () {
- this.resizeSearch();
-
- if (!this._keyUpPrevented) {
- var input = this.$search.val();
-
- this.trigger('query', {
- term: input
- });
- }
-
- this._keyUpPrevented = false;
- };
-
- Search.prototype.searchRemoveChoice = function (decorated, item) {
- this.trigger('unselect', {
- data: item
- });
-
- this.$search.val(item.text);
- this.handleSearch();
- };
-
- Search.prototype.resizeSearch = function () {
- this.$search.css('width', '25px');
-
- var width = '';
-
- if (this.$search.attr('placeholder') !== '') {
- width = this.$selection.find('.select2-selection__rendered').innerWidth();
- } else {
- var minimumWidth = this.$search.val().length + 1;
-
- width = (minimumWidth * 0.75) + 'em';
- }
-
- this.$search.css('width', width);
- };
-
- return Search;
-});
-
-S2.define('select2/selection/eventRelay',[
- 'jquery'
-], function ($) {
- function EventRelay () { }
-
- EventRelay.prototype.bind = function (decorated, container, $container) {
- var self = this;
- var relayEvents = [
- 'open', 'opening',
- 'close', 'closing',
- 'select', 'selecting',
- 'unselect', 'unselecting',
- 'clear', 'clearing'
- ];
-
- var preventableEvents = [
- 'opening', 'closing', 'selecting', 'unselecting', 'clearing'
- ];
-
- decorated.call(this, container, $container);
-
- container.on('*', function (name, params) {
- // Ignore events that should not be relayed
- if ($.inArray(name, relayEvents) === -1) {
- return;
- }
-
- // The parameters should always be an object
- params = params || {};
-
- // Generate the jQuery event for the Select2 event
- var evt = $.Event('select2:' + name, {
- params: params
- });
-
- self.$element.trigger(evt);
-
- // Only handle preventable events if it was one
- if ($.inArray(name, preventableEvents) === -1) {
- return;
- }
-
- params.prevented = evt.isDefaultPrevented();
- });
- };
-
- return EventRelay;
-});
-
-S2.define('select2/translation',[
- 'jquery',
- 'require'
-], function ($, require) {
- function Translation (dict) {
- this.dict = dict || {};
- }
-
- Translation.prototype.all = function () {
- return this.dict;
- };
-
- Translation.prototype.get = function (key) {
- return this.dict[key];
- };
-
- Translation.prototype.extend = function (translation) {
- this.dict = $.extend({}, translation.all(), this.dict);
- };
-
- // Static functions
-
- Translation._cache = {};
-
- Translation.loadPath = function (path) {
- if (!(path in Translation._cache)) {
- var translations = require(path);
-
- Translation._cache[path] = translations;
- }
-
- return new Translation(Translation._cache[path]);
- };
-
- return Translation;
-});
-
-S2.define('select2/diacritics',[
-
-], function () {
- var diacritics = {
- '\u24B6': 'A',
- '\uFF21': 'A',
- '\u00C0': 'A',
- '\u00C1': 'A',
- '\u00C2': 'A',
- '\u1EA6': 'A',
- '\u1EA4': 'A',
- '\u1EAA': 'A',
- '\u1EA8': 'A',
- '\u00C3': 'A',
- '\u0100': 'A',
- '\u0102': 'A',
- '\u1EB0': 'A',
- '\u1EAE': 'A',
- '\u1EB4': 'A',
- '\u1EB2': 'A',
- '\u0226': 'A',
- '\u01E0': 'A',
- '\u00C4': 'A',
- '\u01DE': 'A',
- '\u1EA2': 'A',
- '\u00C5': 'A',
- '\u01FA': 'A',
- '\u01CD': 'A',
- '\u0200': 'A',
- '\u0202': 'A',
- '\u1EA0': 'A',
- '\u1EAC': 'A',
- '\u1EB6': 'A',
- '\u1E00': 'A',
- '\u0104': 'A',
- '\u023A': 'A',
- '\u2C6F': 'A',
- '\uA732': 'AA',
- '\u00C6': 'AE',
- '\u01FC': 'AE',
- '\u01E2': 'AE',
- '\uA734': 'AO',
- '\uA736': 'AU',
- '\uA738': 'AV',
- '\uA73A': 'AV',
- '\uA73C': 'AY',
- '\u24B7': 'B',
- '\uFF22': 'B',
- '\u1E02': 'B',
- '\u1E04': 'B',
- '\u1E06': 'B',
- '\u0243': 'B',
- '\u0182': 'B',
- '\u0181': 'B',
- '\u24B8': 'C',
- '\uFF23': 'C',
- '\u0106': 'C',
- '\u0108': 'C',
- '\u010A': 'C',
- '\u010C': 'C',
- '\u00C7': 'C',
- '\u1E08': 'C',
- '\u0187': 'C',
- '\u023B': 'C',
- '\uA73E': 'C',
- '\u24B9': 'D',
- '\uFF24': 'D',
- '\u1E0A': 'D',
- '\u010E': 'D',
- '\u1E0C': 'D',
- '\u1E10': 'D',
- '\u1E12': 'D',
- '\u1E0E': 'D',
- '\u0110': 'D',
- '\u018B': 'D',
- '\u018A': 'D',
- '\u0189': 'D',
- '\uA779': 'D',
- '\u01F1': 'DZ',
- '\u01C4': 'DZ',
- '\u01F2': 'Dz',
- '\u01C5': 'Dz',
- '\u24BA': 'E',
- '\uFF25': 'E',
- '\u00C8': 'E',
- '\u00C9': 'E',
- '\u00CA': 'E',
- '\u1EC0': 'E',
- '\u1EBE': 'E',
- '\u1EC4': 'E',
- '\u1EC2': 'E',
- '\u1EBC': 'E',
- '\u0112': 'E',
- '\u1E14': 'E',
- '\u1E16': 'E',
- '\u0114': 'E',
- '\u0116': 'E',
- '\u00CB': 'E',
- '\u1EBA': 'E',
- '\u011A': 'E',
- '\u0204': 'E',
- '\u0206': 'E',
- '\u1EB8': 'E',
- '\u1EC6': 'E',
- '\u0228': 'E',
- '\u1E1C': 'E',
- '\u0118': 'E',
- '\u1E18': 'E',
- '\u1E1A': 'E',
- '\u0190': 'E',
- '\u018E': 'E',
- '\u24BB': 'F',
- '\uFF26': 'F',
- '\u1E1E': 'F',
- '\u0191': 'F',
- '\uA77B': 'F',
- '\u24BC': 'G',
- '\uFF27': 'G',
- '\u01F4': 'G',
- '\u011C': 'G',
- '\u1E20': 'G',
- '\u011E': 'G',
- '\u0120': 'G',
- '\u01E6': 'G',
- '\u0122': 'G',
- '\u01E4': 'G',
- '\u0193': 'G',
- '\uA7A0': 'G',
- '\uA77D': 'G',
- '\uA77E': 'G',
- '\u24BD': 'H',
- '\uFF28': 'H',
- '\u0124': 'H',
- '\u1E22': 'H',
- '\u1E26': 'H',
- '\u021E': 'H',
- '\u1E24': 'H',
- '\u1E28': 'H',
- '\u1E2A': 'H',
- '\u0126': 'H',
- '\u2C67': 'H',
- '\u2C75': 'H',
- '\uA78D': 'H',
- '\u24BE': 'I',
- '\uFF29': 'I',
- '\u00CC': 'I',
- '\u00CD': 'I',
- '\u00CE': 'I',
- '\u0128': 'I',
- '\u012A': 'I',
- '\u012C': 'I',
- '\u0130': 'I',
- '\u00CF': 'I',
- '\u1E2E': 'I',
- '\u1EC8': 'I',
- '\u01CF': 'I',
- '\u0208': 'I',
- '\u020A': 'I',
- '\u1ECA': 'I',
- '\u012E': 'I',
- '\u1E2C': 'I',
- '\u0197': 'I',
- '\u24BF': 'J',
- '\uFF2A': 'J',
- '\u0134': 'J',
- '\u0248': 'J',
- '\u24C0': 'K',
- '\uFF2B': 'K',
- '\u1E30': 'K',
- '\u01E8': 'K',
- '\u1E32': 'K',
- '\u0136': 'K',
- '\u1E34': 'K',
- '\u0198': 'K',
- '\u2C69': 'K',
- '\uA740': 'K',
- '\uA742': 'K',
- '\uA744': 'K',
- '\uA7A2': 'K',
- '\u24C1': 'L',
- '\uFF2C': 'L',
- '\u013F': 'L',
- '\u0139': 'L',
- '\u013D': 'L',
- '\u1E36': 'L',
- '\u1E38': 'L',
- '\u013B': 'L',
- '\u1E3C': 'L',
- '\u1E3A': 'L',
- '\u0141': 'L',
- '\u023D': 'L',
- '\u2C62': 'L',
- '\u2C60': 'L',
- '\uA748': 'L',
- '\uA746': 'L',
- '\uA780': 'L',
- '\u01C7': 'LJ',
- '\u01C8': 'Lj',
- '\u24C2': 'M',
- '\uFF2D': 'M',
- '\u1E3E': 'M',
- '\u1E40': 'M',
- '\u1E42': 'M',
- '\u2C6E': 'M',
- '\u019C': 'M',
- '\u24C3': 'N',
- '\uFF2E': 'N',
- '\u01F8': 'N',
- '\u0143': 'N',
- '\u00D1': 'N',
- '\u1E44': 'N',
- '\u0147': 'N',
- '\u1E46': 'N',
- '\u0145': 'N',
- '\u1E4A': 'N',
- '\u1E48': 'N',
- '\u0220': 'N',
- '\u019D': 'N',
- '\uA790': 'N',
- '\uA7A4': 'N',
- '\u01CA': 'NJ',
- '\u01CB': 'Nj',
- '\u24C4': 'O',
- '\uFF2F': 'O',
- '\u00D2': 'O',
- '\u00D3': 'O',
- '\u00D4': 'O',
- '\u1ED2': 'O',
- '\u1ED0': 'O',
- '\u1ED6': 'O',
- '\u1ED4': 'O',
- '\u00D5': 'O',
- '\u1E4C': 'O',
- '\u022C': 'O',
- '\u1E4E': 'O',
- '\u014C': 'O',
- '\u1E50': 'O',
- '\u1E52': 'O',
- '\u014E': 'O',
- '\u022E': 'O',
- '\u0230': 'O',
- '\u00D6': 'O',
- '\u022A': 'O',
- '\u1ECE': 'O',
- '\u0150': 'O',
- '\u01D1': 'O',
- '\u020C': 'O',
- '\u020E': 'O',
- '\u01A0': 'O',
- '\u1EDC': 'O',
- '\u1EDA': 'O',
- '\u1EE0': 'O',
- '\u1EDE': 'O',
- '\u1EE2': 'O',
- '\u1ECC': 'O',
- '\u1ED8': 'O',
- '\u01EA': 'O',
- '\u01EC': 'O',
- '\u00D8': 'O',
- '\u01FE': 'O',
- '\u0186': 'O',
- '\u019F': 'O',
- '\uA74A': 'O',
- '\uA74C': 'O',
- '\u0152': 'OE',
- '\u01A2': 'OI',
- '\uA74E': 'OO',
- '\u0222': 'OU',
- '\u24C5': 'P',
- '\uFF30': 'P',
- '\u1E54': 'P',
- '\u1E56': 'P',
- '\u01A4': 'P',
- '\u2C63': 'P',
- '\uA750': 'P',
- '\uA752': 'P',
- '\uA754': 'P',
- '\u24C6': 'Q',
- '\uFF31': 'Q',
- '\uA756': 'Q',
- '\uA758': 'Q',
- '\u024A': 'Q',
- '\u24C7': 'R',
- '\uFF32': 'R',
- '\u0154': 'R',
- '\u1E58': 'R',
- '\u0158': 'R',
- '\u0210': 'R',
- '\u0212': 'R',
- '\u1E5A': 'R',
- '\u1E5C': 'R',
- '\u0156': 'R',
- '\u1E5E': 'R',
- '\u024C': 'R',
- '\u2C64': 'R',
- '\uA75A': 'R',
- '\uA7A6': 'R',
- '\uA782': 'R',
- '\u24C8': 'S',
- '\uFF33': 'S',
- '\u1E9E': 'S',
- '\u015A': 'S',
- '\u1E64': 'S',
- '\u015C': 'S',
- '\u1E60': 'S',
- '\u0160': 'S',
- '\u1E66': 'S',
- '\u1E62': 'S',
- '\u1E68': 'S',
- '\u0218': 'S',
- '\u015E': 'S',
- '\u2C7E': 'S',
- '\uA7A8': 'S',
- '\uA784': 'S',
- '\u24C9': 'T',
- '\uFF34': 'T',
- '\u1E6A': 'T',
- '\u0164': 'T',
- '\u1E6C': 'T',
- '\u021A': 'T',
- '\u0162': 'T',
- '\u1E70': 'T',
- '\u1E6E': 'T',
- '\u0166': 'T',
- '\u01AC': 'T',
- '\u01AE': 'T',
- '\u023E': 'T',
- '\uA786': 'T',
- '\uA728': 'TZ',
- '\u24CA': 'U',
- '\uFF35': 'U',
- '\u00D9': 'U',
- '\u00DA': 'U',
- '\u00DB': 'U',
- '\u0168': 'U',
- '\u1E78': 'U',
- '\u016A': 'U',
- '\u1E7A': 'U',
- '\u016C': 'U',
- '\u00DC': 'U',
- '\u01DB': 'U',
- '\u01D7': 'U',
- '\u01D5': 'U',
- '\u01D9': 'U',
- '\u1EE6': 'U',
- '\u016E': 'U',
- '\u0170': 'U',
- '\u01D3': 'U',
- '\u0214': 'U',
- '\u0216': 'U',
- '\u01AF': 'U',
- '\u1EEA': 'U',
- '\u1EE8': 'U',
- '\u1EEE': 'U',
- '\u1EEC': 'U',
- '\u1EF0': 'U',
- '\u1EE4': 'U',
- '\u1E72': 'U',
- '\u0172': 'U',
- '\u1E76': 'U',
- '\u1E74': 'U',
- '\u0244': 'U',
- '\u24CB': 'V',
- '\uFF36': 'V',
- '\u1E7C': 'V',
- '\u1E7E': 'V',
- '\u01B2': 'V',
- '\uA75E': 'V',
- '\u0245': 'V',
- '\uA760': 'VY',
- '\u24CC': 'W',
- '\uFF37': 'W',
- '\u1E80': 'W',
- '\u1E82': 'W',
- '\u0174': 'W',
- '\u1E86': 'W',
- '\u1E84': 'W',
- '\u1E88': 'W',
- '\u2C72': 'W',
- '\u24CD': 'X',
- '\uFF38': 'X',
- '\u1E8A': 'X',
- '\u1E8C': 'X',
- '\u24CE': 'Y',
- '\uFF39': 'Y',
- '\u1EF2': 'Y',
- '\u00DD': 'Y',
- '\u0176': 'Y',
- '\u1EF8': 'Y',
- '\u0232': 'Y',
- '\u1E8E': 'Y',
- '\u0178': 'Y',
- '\u1EF6': 'Y',
- '\u1EF4': 'Y',
- '\u01B3': 'Y',
- '\u024E': 'Y',
- '\u1EFE': 'Y',
- '\u24CF': 'Z',
- '\uFF3A': 'Z',
- '\u0179': 'Z',
- '\u1E90': 'Z',
- '\u017B': 'Z',
- '\u017D': 'Z',
- '\u1E92': 'Z',
- '\u1E94': 'Z',
- '\u01B5': 'Z',
- '\u0224': 'Z',
- '\u2C7F': 'Z',
- '\u2C6B': 'Z',
- '\uA762': 'Z',
- '\u24D0': 'a',
- '\uFF41': 'a',
- '\u1E9A': 'a',
- '\u00E0': 'a',
- '\u00E1': 'a',
- '\u00E2': 'a',
- '\u1EA7': 'a',
- '\u1EA5': 'a',
- '\u1EAB': 'a',
- '\u1EA9': 'a',
- '\u00E3': 'a',
- '\u0101': 'a',
- '\u0103': 'a',
- '\u1EB1': 'a',
- '\u1EAF': 'a',
- '\u1EB5': 'a',
- '\u1EB3': 'a',
- '\u0227': 'a',
- '\u01E1': 'a',
- '\u00E4': 'a',
- '\u01DF': 'a',
- '\u1EA3': 'a',
- '\u00E5': 'a',
- '\u01FB': 'a',
- '\u01CE': 'a',
- '\u0201': 'a',
- '\u0203': 'a',
- '\u1EA1': 'a',
- '\u1EAD': 'a',
- '\u1EB7': 'a',
- '\u1E01': 'a',
- '\u0105': 'a',
- '\u2C65': 'a',
- '\u0250': 'a',
- '\uA733': 'aa',
- '\u00E6': 'ae',
- '\u01FD': 'ae',
- '\u01E3': 'ae',
- '\uA735': 'ao',
- '\uA737': 'au',
- '\uA739': 'av',
- '\uA73B': 'av',
- '\uA73D': 'ay',
- '\u24D1': 'b',
- '\uFF42': 'b',
- '\u1E03': 'b',
- '\u1E05': 'b',
- '\u1E07': 'b',
- '\u0180': 'b',
- '\u0183': 'b',
- '\u0253': 'b',
- '\u24D2': 'c',
- '\uFF43': 'c',
- '\u0107': 'c',
- '\u0109': 'c',
- '\u010B': 'c',
- '\u010D': 'c',
- '\u00E7': 'c',
- '\u1E09': 'c',
- '\u0188': 'c',
- '\u023C': 'c',
- '\uA73F': 'c',
- '\u2184': 'c',
- '\u24D3': 'd',
- '\uFF44': 'd',
- '\u1E0B': 'd',
- '\u010F': 'd',
- '\u1E0D': 'd',
- '\u1E11': 'd',
- '\u1E13': 'd',
- '\u1E0F': 'd',
- '\u0111': 'd',
- '\u018C': 'd',
- '\u0256': 'd',
- '\u0257': 'd',
- '\uA77A': 'd',
- '\u01F3': 'dz',
- '\u01C6': 'dz',
- '\u24D4': 'e',
- '\uFF45': 'e',
- '\u00E8': 'e',
- '\u00E9': 'e',
- '\u00EA': 'e',
- '\u1EC1': 'e',
- '\u1EBF': 'e',
- '\u1EC5': 'e',
- '\u1EC3': 'e',
- '\u1EBD': 'e',
- '\u0113': 'e',
- '\u1E15': 'e',
- '\u1E17': 'e',
- '\u0115': 'e',
- '\u0117': 'e',
- '\u00EB': 'e',
- '\u1EBB': 'e',
- '\u011B': 'e',
- '\u0205': 'e',
- '\u0207': 'e',
- '\u1EB9': 'e',
- '\u1EC7': 'e',
- '\u0229': 'e',
- '\u1E1D': 'e',
- '\u0119': 'e',
- '\u1E19': 'e',
- '\u1E1B': 'e',
- '\u0247': 'e',
- '\u025B': 'e',
- '\u01DD': 'e',
- '\u24D5': 'f',
- '\uFF46': 'f',
- '\u1E1F': 'f',
- '\u0192': 'f',
- '\uA77C': 'f',
- '\u24D6': 'g',
- '\uFF47': 'g',
- '\u01F5': 'g',
- '\u011D': 'g',
- '\u1E21': 'g',
- '\u011F': 'g',
- '\u0121': 'g',
- '\u01E7': 'g',
- '\u0123': 'g',
- '\u01E5': 'g',
- '\u0260': 'g',
- '\uA7A1': 'g',
- '\u1D79': 'g',
- '\uA77F': 'g',
- '\u24D7': 'h',
- '\uFF48': 'h',
- '\u0125': 'h',
- '\u1E23': 'h',
- '\u1E27': 'h',
- '\u021F': 'h',
- '\u1E25': 'h',
- '\u1E29': 'h',
- '\u1E2B': 'h',
- '\u1E96': 'h',
- '\u0127': 'h',
- '\u2C68': 'h',
- '\u2C76': 'h',
- '\u0265': 'h',
- '\u0195': 'hv',
- '\u24D8': 'i',
- '\uFF49': 'i',
- '\u00EC': 'i',
- '\u00ED': 'i',
- '\u00EE': 'i',
- '\u0129': 'i',
- '\u012B': 'i',
- '\u012D': 'i',
- '\u00EF': 'i',
- '\u1E2F': 'i',
- '\u1EC9': 'i',
- '\u01D0': 'i',
- '\u0209': 'i',
- '\u020B': 'i',
- '\u1ECB': 'i',
- '\u012F': 'i',
- '\u1E2D': 'i',
- '\u0268': 'i',
- '\u0131': 'i',
- '\u24D9': 'j',
- '\uFF4A': 'j',
- '\u0135': 'j',
- '\u01F0': 'j',
- '\u0249': 'j',
- '\u24DA': 'k',
- '\uFF4B': 'k',
- '\u1E31': 'k',
- '\u01E9': 'k',
- '\u1E33': 'k',
- '\u0137': 'k',
- '\u1E35': 'k',
- '\u0199': 'k',
- '\u2C6A': 'k',
- '\uA741': 'k',
- '\uA743': 'k',
- '\uA745': 'k',
- '\uA7A3': 'k',
- '\u24DB': 'l',
- '\uFF4C': 'l',
- '\u0140': 'l',
- '\u013A': 'l',
- '\u013E': 'l',
- '\u1E37': 'l',
- '\u1E39': 'l',
- '\u013C': 'l',
- '\u1E3D': 'l',
- '\u1E3B': 'l',
- '\u017F': 'l',
- '\u0142': 'l',
- '\u019A': 'l',
- '\u026B': 'l',
- '\u2C61': 'l',
- '\uA749': 'l',
- '\uA781': 'l',
- '\uA747': 'l',
- '\u01C9': 'lj',
- '\u24DC': 'm',
- '\uFF4D': 'm',
- '\u1E3F': 'm',
- '\u1E41': 'm',
- '\u1E43': 'm',
- '\u0271': 'm',
- '\u026F': 'm',
- '\u24DD': 'n',
- '\uFF4E': 'n',
- '\u01F9': 'n',
- '\u0144': 'n',
- '\u00F1': 'n',
- '\u1E45': 'n',
- '\u0148': 'n',
- '\u1E47': 'n',
- '\u0146': 'n',
- '\u1E4B': 'n',
- '\u1E49': 'n',
- '\u019E': 'n',
- '\u0272': 'n',
- '\u0149': 'n',
- '\uA791': 'n',
- '\uA7A5': 'n',
- '\u01CC': 'nj',
- '\u24DE': 'o',
- '\uFF4F': 'o',
- '\u00F2': 'o',
- '\u00F3': 'o',
- '\u00F4': 'o',
- '\u1ED3': 'o',
- '\u1ED1': 'o',
- '\u1ED7': 'o',
- '\u1ED5': 'o',
- '\u00F5': 'o',
- '\u1E4D': 'o',
- '\u022D': 'o',
- '\u1E4F': 'o',
- '\u014D': 'o',
- '\u1E51': 'o',
- '\u1E53': 'o',
- '\u014F': 'o',
- '\u022F': 'o',
- '\u0231': 'o',
- '\u00F6': 'o',
- '\u022B': 'o',
- '\u1ECF': 'o',
- '\u0151': 'o',
- '\u01D2': 'o',
- '\u020D': 'o',
- '\u020F': 'o',
- '\u01A1': 'o',
- '\u1EDD': 'o',
- '\u1EDB': 'o',
- '\u1EE1': 'o',
- '\u1EDF': 'o',
- '\u1EE3': 'o',
- '\u1ECD': 'o',
- '\u1ED9': 'o',
- '\u01EB': 'o',
- '\u01ED': 'o',
- '\u00F8': 'o',
- '\u01FF': 'o',
- '\u0254': 'o',
- '\uA74B': 'o',
- '\uA74D': 'o',
- '\u0275': 'o',
- '\u0153': 'oe',
- '\u01A3': 'oi',
- '\u0223': 'ou',
- '\uA74F': 'oo',
- '\u24DF': 'p',
- '\uFF50': 'p',
- '\u1E55': 'p',
- '\u1E57': 'p',
- '\u01A5': 'p',
- '\u1D7D': 'p',
- '\uA751': 'p',
- '\uA753': 'p',
- '\uA755': 'p',
- '\u24E0': 'q',
- '\uFF51': 'q',
- '\u024B': 'q',
- '\uA757': 'q',
- '\uA759': 'q',
- '\u24E1': 'r',
- '\uFF52': 'r',
- '\u0155': 'r',
- '\u1E59': 'r',
- '\u0159': 'r',
- '\u0211': 'r',
- '\u0213': 'r',
- '\u1E5B': 'r',
- '\u1E5D': 'r',
- '\u0157': 'r',
- '\u1E5F': 'r',
- '\u024D': 'r',
- '\u027D': 'r',
- '\uA75B': 'r',
- '\uA7A7': 'r',
- '\uA783': 'r',
- '\u24E2': 's',
- '\uFF53': 's',
- '\u00DF': 's',
- '\u015B': 's',
- '\u1E65': 's',
- '\u015D': 's',
- '\u1E61': 's',
- '\u0161': 's',
- '\u1E67': 's',
- '\u1E63': 's',
- '\u1E69': 's',
- '\u0219': 's',
- '\u015F': 's',
- '\u023F': 's',
- '\uA7A9': 's',
- '\uA785': 's',
- '\u1E9B': 's',
- '\u24E3': 't',
- '\uFF54': 't',
- '\u1E6B': 't',
- '\u1E97': 't',
- '\u0165': 't',
- '\u1E6D': 't',
- '\u021B': 't',
- '\u0163': 't',
- '\u1E71': 't',
- '\u1E6F': 't',
- '\u0167': 't',
- '\u01AD': 't',
- '\u0288': 't',
- '\u2C66': 't',
- '\uA787': 't',
- '\uA729': 'tz',
- '\u24E4': 'u',
- '\uFF55': 'u',
- '\u00F9': 'u',
- '\u00FA': 'u',
- '\u00FB': 'u',
- '\u0169': 'u',
- '\u1E79': 'u',
- '\u016B': 'u',
- '\u1E7B': 'u',
- '\u016D': 'u',
- '\u00FC': 'u',
- '\u01DC': 'u',
- '\u01D8': 'u',
- '\u01D6': 'u',
- '\u01DA': 'u',
- '\u1EE7': 'u',
- '\u016F': 'u',
- '\u0171': 'u',
- '\u01D4': 'u',
- '\u0215': 'u',
- '\u0217': 'u',
- '\u01B0': 'u',
- '\u1EEB': 'u',
- '\u1EE9': 'u',
- '\u1EEF': 'u',
- '\u1EED': 'u',
- '\u1EF1': 'u',
- '\u1EE5': 'u',
- '\u1E73': 'u',
- '\u0173': 'u',
- '\u1E77': 'u',
- '\u1E75': 'u',
- '\u0289': 'u',
- '\u24E5': 'v',
- '\uFF56': 'v',
- '\u1E7D': 'v',
- '\u1E7F': 'v',
- '\u028B': 'v',
- '\uA75F': 'v',
- '\u028C': 'v',
- '\uA761': 'vy',
- '\u24E6': 'w',
- '\uFF57': 'w',
- '\u1E81': 'w',
- '\u1E83': 'w',
- '\u0175': 'w',
- '\u1E87': 'w',
- '\u1E85': 'w',
- '\u1E98': 'w',
- '\u1E89': 'w',
- '\u2C73': 'w',
- '\u24E7': 'x',
- '\uFF58': 'x',
- '\u1E8B': 'x',
- '\u1E8D': 'x',
- '\u24E8': 'y',
- '\uFF59': 'y',
- '\u1EF3': 'y',
- '\u00FD': 'y',
- '\u0177': 'y',
- '\u1EF9': 'y',
- '\u0233': 'y',
- '\u1E8F': 'y',
- '\u00FF': 'y',
- '\u1EF7': 'y',
- '\u1E99': 'y',
- '\u1EF5': 'y',
- '\u01B4': 'y',
- '\u024F': 'y',
- '\u1EFF': 'y',
- '\u24E9': 'z',
- '\uFF5A': 'z',
- '\u017A': 'z',
- '\u1E91': 'z',
- '\u017C': 'z',
- '\u017E': 'z',
- '\u1E93': 'z',
- '\u1E95': 'z',
- '\u01B6': 'z',
- '\u0225': 'z',
- '\u0240': 'z',
- '\u2C6C': 'z',
- '\uA763': 'z',
- '\u0386': '\u0391',
- '\u0388': '\u0395',
- '\u0389': '\u0397',
- '\u038A': '\u0399',
- '\u03AA': '\u0399',
- '\u038C': '\u039F',
- '\u038E': '\u03A5',
- '\u03AB': '\u03A5',
- '\u038F': '\u03A9',
- '\u03AC': '\u03B1',
- '\u03AD': '\u03B5',
- '\u03AE': '\u03B7',
- '\u03AF': '\u03B9',
- '\u03CA': '\u03B9',
- '\u0390': '\u03B9',
- '\u03CC': '\u03BF',
- '\u03CD': '\u03C5',
- '\u03CB': '\u03C5',
- '\u03B0': '\u03C5',
- '\u03CE': '\u03C9',
- '\u03C2': '\u03C3',
- '\u2019': '\''
- };
-
- return diacritics;
-});
-
-S2.define('select2/data/base',[
- '../utils'
-], function (Utils) {
- function BaseAdapter ($element, options) {
- BaseAdapter.__super__.constructor.call(this);
- }
-
- Utils.Extend(BaseAdapter, Utils.Observable);
-
- BaseAdapter.prototype.current = function (callback) {
- throw new Error('The `current` method must be defined in child classes.');
- };
-
- BaseAdapter.prototype.query = function (params, callback) {
- throw new Error('The `query` method must be defined in child classes.');
- };
-
- BaseAdapter.prototype.bind = function (container, $container) {
- // Can be implemented in subclasses
- };
-
- BaseAdapter.prototype.destroy = function () {
- // Can be implemented in subclasses
- };
-
- BaseAdapter.prototype.generateResultId = function (container, data) {
- var id = container.id + '-result-';
-
- id += Utils.generateChars(4);
-
- if (data.id != null) {
- id += '-' + data.id.toString();
- } else {
- id += '-' + Utils.generateChars(4);
- }
- return id;
- };
-
- return BaseAdapter;
-});
-
-S2.define('select2/data/select',[
- './base',
- '../utils',
- 'jquery'
-], function (BaseAdapter, Utils, $) {
- function SelectAdapter ($element, options) {
- this.$element = $element;
- this.options = options;
-
- SelectAdapter.__super__.constructor.call(this);
- }
-
- Utils.Extend(SelectAdapter, BaseAdapter);
-
- SelectAdapter.prototype.current = function (callback) {
- var data = [];
- var self = this;
-
- this.$element.find(':selected').each(function () {
- var $option = $(this);
-
- var option = self.item($option);
-
- data.push(option);
- });
-
- callback(data);
- };
-
- SelectAdapter.prototype.select = function (data) {
- var self = this;
-
- data.selected = true;
-
- // If data.element is a DOM node, use it instead
- if ($(data.element).is('option')) {
- data.element.selected = true;
-
- this.$element.trigger('change');
-
- return;
- }
-
- if (this.$element.prop('multiple')) {
- this.current(function (currentData) {
- var val = [];
-
- data = [data];
- data.push.apply(data, currentData);
-
- for (var d = 0; d < data.length; d++) {
- var id = data[d].id;
-
- if ($.inArray(id, val) === -1) {
- val.push(id);
- }
- }
-
- self.$element.val(val);
- self.$element.trigger('change');
- });
- } else {
- var val = data.id;
-
- this.$element.val(val);
- this.$element.trigger('change');
- }
- };
-
- SelectAdapter.prototype.unselect = function (data) {
- var self = this;
-
- if (!this.$element.prop('multiple')) {
- return;
- }
-
- data.selected = false;
-
- if ($(data.element).is('option')) {
- data.element.selected = false;
-
- this.$element.trigger('change');
-
- return;
- }
-
- this.current(function (currentData) {
- var val = [];
-
- for (var d = 0; d < currentData.length; d++) {
- var id = currentData[d].id;
-
- if (id !== data.id && $.inArray(id, val) === -1) {
- val.push(id);
- }
- }
-
- self.$element.val(val);
-
- self.$element.trigger('change');
- });
- };
-
- SelectAdapter.prototype.bind = function (container, $container) {
- var self = this;
-
- this.container = container;
-
- container.on('select', function (params) {
- self.select(params.data);
- });
-
- container.on('unselect', function (params) {
- self.unselect(params.data);
- });
- };
-
- SelectAdapter.prototype.destroy = function () {
- // Remove anything added to child elements
- this.$element.find('*').each(function () {
- // Remove any custom data set by Select2
- Utils.RemoveData(this);
- });
- };
-
- SelectAdapter.prototype.query = function (params, callback) {
- var data = [];
- var self = this;
-
- var $options = this.$element.children();
-
- $options.each(function () {
- var $option = $(this);
-
- if (!$option.is('option') && !$option.is('optgroup')) {
- return;
- }
-
- var option = self.item($option);
-
- var matches = self.matches(params, option);
-
- if (matches !== null) {
- data.push(matches);
- }
- });
-
- callback({
- results: data
- });
- };
-
- SelectAdapter.prototype.addOptions = function ($options) {
- Utils.appendMany(this.$element, $options);
- };
-
- SelectAdapter.prototype.option = function (data) {
- var option;
-
- if (data.children) {
- option = document.createElement('optgroup');
- option.label = data.text;
- } else {
- option = document.createElement('option');
-
- if (option.textContent !== undefined) {
- option.textContent = data.text;
- } else {
- option.innerText = data.text;
- }
- }
-
- if (data.id !== undefined) {
- option.value = data.id;
- }
-
- if (data.disabled) {
- option.disabled = true;
- }
-
- if (data.selected) {
- option.selected = true;
- }
-
- if (data.title) {
- option.title = data.title;
- }
-
- var $option = $(option);
-
- var normalizedData = this._normalizeItem(data);
- normalizedData.element = option;
-
- // Override the option's data with the combined data
- Utils.StoreData(option, 'data', normalizedData);
-
- return $option;
- };
-
- SelectAdapter.prototype.item = function ($option) {
- var data = {};
-
- data = Utils.GetData($option[0], 'data');
-
- if (data != null) {
- return data;
- }
-
- if ($option.is('option')) {
- data = {
- id: $option.val(),
- text: $option.text(),
- disabled: $option.prop('disabled'),
- selected: $option.prop('selected'),
- title: $option.prop('title')
- };
- } else if ($option.is('optgroup')) {
- data = {
- text: $option.prop('label'),
- children: [],
- title: $option.prop('title')
- };
-
- var $children = $option.children('option');
- var children = [];
-
- for (var c = 0; c < $children.length; c++) {
- var $child = $($children[c]);
-
- var child = this.item($child);
-
- children.push(child);
- }
-
- data.children = children;
- }
-
- data = this._normalizeItem(data);
- data.element = $option[0];
-
- Utils.StoreData($option[0], 'data', data);
-
- return data;
- };
-
- SelectAdapter.prototype._normalizeItem = function (item) {
- if (item !== Object(item)) {
- item = {
- id: item,
- text: item
- };
- }
-
- item = $.extend({}, {
- text: ''
- }, item);
-
- var defaults = {
- selected: false,
- disabled: false
- };
-
- if (item.id != null) {
- item.id = item.id.toString();
- }
-
- if (item.text != null) {
- item.text = item.text.toString();
- }
-
- if (item._resultId == null && item.id && this.container != null) {
- item._resultId = this.generateResultId(this.container, item);
- }
-
- return $.extend({}, defaults, item);
- };
-
- SelectAdapter.prototype.matches = function (params, data) {
- var matcher = this.options.get('matcher');
-
- return matcher(params, data);
- };
-
- return SelectAdapter;
-});
-
-S2.define('select2/data/array',[
- './select',
- '../utils',
- 'jquery'
-], function (SelectAdapter, Utils, $) {
- function ArrayAdapter ($element, options) {
- var data = options.get('data') || [];
-
- ArrayAdapter.__super__.constructor.call(this, $element, options);
-
- this.addOptions(this.convertToOptions(data));
- }
-
- Utils.Extend(ArrayAdapter, SelectAdapter);
-
- ArrayAdapter.prototype.select = function (data) {
- var $option = this.$element.find('option').filter(function (i, elm) {
- return elm.value == data.id.toString();
- });
-
- if ($option.length === 0) {
- $option = this.option(data);
-
- this.addOptions($option);
- }
-
- ArrayAdapter.__super__.select.call(this, data);
- };
-
- ArrayAdapter.prototype.convertToOptions = function (data) {
- var self = this;
-
- var $existing = this.$element.find('option');
- var existingIds = $existing.map(function () {
- return self.item($(this)).id;
- }).get();
-
- var $options = [];
-
- // Filter out all items except for the one passed in the argument
- function onlyItem (item) {
- return function () {
- return $(this).val() == item.id;
- };
- }
-
- for (var d = 0; d < data.length; d++) {
- var item = this._normalizeItem(data[d]);
-
- // Skip items which were pre-loaded, only merge the data
- if ($.inArray(item.id, existingIds) >= 0) {
- var $existingOption = $existing.filter(onlyItem(item));
-
- var existingData = this.item($existingOption);
- var newData = $.extend(true, {}, item, existingData);
-
- var $newOption = this.option(newData);
-
- $existingOption.replaceWith($newOption);
-
- continue;
- }
-
- var $option = this.option(item);
-
- if (item.children) {
- var $children = this.convertToOptions(item.children);
-
- Utils.appendMany($option, $children);
- }
-
- $options.push($option);
- }
-
- return $options;
- };
-
- return ArrayAdapter;
-});
-
-S2.define('select2/data/ajax',[
- './array',
- '../utils',
- 'jquery'
-], function (ArrayAdapter, Utils, $) {
- function AjaxAdapter ($element, options) {
- this.ajaxOptions = this._applyDefaults(options.get('ajax'));
-
- if (this.ajaxOptions.processResults != null) {
- this.processResults = this.ajaxOptions.processResults;
- }
-
- AjaxAdapter.__super__.constructor.call(this, $element, options);
- }
-
- Utils.Extend(AjaxAdapter, ArrayAdapter);
-
- AjaxAdapter.prototype._applyDefaults = function (options) {
- var defaults = {
- data: function (params) {
- return $.extend({}, params, {
- q: params.term
- });
- },
- transport: function (params, success, failure) {
- var $request = $.ajax(params);
-
- $request.then(success);
- $request.fail(failure);
-
- return $request;
- }
- };
-
- return $.extend({}, defaults, options, true);
- };
-
- AjaxAdapter.prototype.processResults = function (results) {
- return results;
- };
-
- AjaxAdapter.prototype.query = function (params, callback) {
- var matches = [];
- var self = this;
-
- if (this._request != null) {
- // JSONP requests cannot always be aborted
- if ($.isFunction(this._request.abort)) {
- this._request.abort();
- }
-
- this._request = null;
- }
-
- var options = $.extend({
- type: 'GET'
- }, this.ajaxOptions);
-
- if (typeof options.url === 'function') {
- options.url = options.url.call(this.$element, params);
- }
-
- if (typeof options.data === 'function') {
- options.data = options.data.call(this.$element, params);
- }
-
- function request () {
- var $request = options.transport(options, function (data) {
- var results = self.processResults(data, params);
-
- if (self.options.get('debug') && window.console && console.error) {
- // Check to make sure that the response included a `results` key.
- if (!results || !results.results || !$.isArray(results.results)) {
- console.error(
- 'Select2: The AJAX results did not return an array in the ' +
- '`results` key of the response.'
- );
- }
- }
-
- callback(results);
- }, function () {
- // Attempt to detect if a request was aborted
- // Only works if the transport exposes a status property
- if ('status' in $request &&
- ($request.status === 0 || $request.status === '0')) {
- return;
- }
-
- self.trigger('results:message', {
- message: 'errorLoading'
- });
- });
-
- self._request = $request;
- }
-
- if (this.ajaxOptions.delay && params.term != null) {
- if (this._queryTimeout) {
- window.clearTimeout(this._queryTimeout);
- }
-
- this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
- } else {
- request();
- }
- };
-
- return AjaxAdapter;
-});
-
-S2.define('select2/data/tags',[
- 'jquery'
-], function ($) {
- function Tags (decorated, $element, options) {
- var tags = options.get('tags');
-
- var createTag = options.get('createTag');
-
- if (createTag !== undefined) {
- this.createTag = createTag;
- }
-
- var insertTag = options.get('insertTag');
-
- if (insertTag !== undefined) {
- this.insertTag = insertTag;
- }
-
- decorated.call(this, $element, options);
-
- if ($.isArray(tags)) {
- for (var t = 0; t < tags.length; t++) {
- var tag = tags[t];
- var item = this._normalizeItem(tag);
-
- var $option = this.option(item);
-
- this.$element.append($option);
- }
- }
- }
-
- Tags.prototype.query = function (decorated, params, callback) {
- var self = this;
-
- this._removeOldTags();
-
- if (params.term == null || params.page != null) {
- decorated.call(this, params, callback);
- return;
- }
-
- function wrapper (obj, child) {
- var data = obj.results;
-
- for (var i = 0; i < data.length; i++) {
- var option = data[i];
-
- var checkChildren = (
- option.children != null &&
- !wrapper({
- results: option.children
- }, true)
- );
-
- var optionText = (option.text || '').toUpperCase();
- var paramsTerm = (params.term || '').toUpperCase();
-
- var checkText = optionText === paramsTerm;
-
- if (checkText || checkChildren) {
- if (child) {
- return false;
- }
-
- obj.data = data;
- callback(obj);
-
- return;
- }
- }
-
- if (child) {
- return true;
- }
-
- var tag = self.createTag(params);
-
- if (tag != null) {
- var $option = self.option(tag);
- $option.attr('data-select2-tag', true);
-
- self.addOptions([$option]);
-
- self.insertTag(data, tag);
- }
-
- obj.results = data;
-
- callback(obj);
- }
-
- decorated.call(this, params, wrapper);
- };
-
- Tags.prototype.createTag = function (decorated, params) {
- var term = $.trim(params.term);
-
- if (term === '') {
- return null;
- }
-
- return {
- id: term,
- text: term
- };
- };
-
- Tags.prototype.insertTag = function (_, data, tag) {
- data.unshift(tag);
- };
-
- Tags.prototype._removeOldTags = function (_) {
- var tag = this._lastTag;
-
- var $options = this.$element.find('option[data-select2-tag]');
-
- $options.each(function () {
- if (this.selected) {
- return;
- }
-
- $(this).remove();
- });
- };
-
- return Tags;
-});
-
-S2.define('select2/data/tokenizer',[
- 'jquery'
-], function ($) {
- function Tokenizer (decorated, $element, options) {
- var tokenizer = options.get('tokenizer');
-
- if (tokenizer !== undefined) {
- this.tokenizer = tokenizer;
- }
-
- decorated.call(this, $element, options);
- }
-
- Tokenizer.prototype.bind = function (decorated, container, $container) {
- decorated.call(this, container, $container);
-
- this.$search = container.dropdown.$search || container.selection.$search ||
- $container.find('.select2-search__field');
- };
-
- Tokenizer.prototype.query = function (decorated, params, callback) {
- var self = this;
-
- function createAndSelect (data) {
- // Normalize the data object so we can use it for checks
- var item = self._normalizeItem(data);
-
- // Check if the data object already exists as a tag
- // Select it if it doesn't
- var $existingOptions = self.$element.find('option').filter(function () {
- return $(this).val() === item.id;
- });
-
- // If an existing option wasn't found for it, create the option
- if (!$existingOptions.length) {
- var $option = self.option(item);
- $option.attr('data-select2-tag', true);
-
- self._removeOldTags();
- self.addOptions([$option]);
- }
-
- // Select the item, now that we know there is an option for it
- select(item);
- }
-
- function select (data) {
- self.trigger('select', {
- data: data
- });
- }
-
- params.term = params.term || '';
-
- var tokenData = this.tokenizer(params, this.options, createAndSelect);
-
- if (tokenData.term !== params.term) {
- // Replace the search term if we have the search box
- if (this.$search.length) {
- this.$search.val(tokenData.term);
- this.$search.focus();
- }
-
- params.term = tokenData.term;
- }
-
- decorated.call(this, params, callback);
- };
-
- Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
- var separators = options.get('tokenSeparators') || [];
- var term = params.term;
- var i = 0;
-
- var createTag = this.createTag || function (params) {
- return {
- id: params.term,
- text: params.term
- };
- };
-
- while (i < term.length) {
- var termChar = term[i];
-
- if ($.inArray(termChar, separators) === -1) {
- i++;
-
- continue;
- }
-
- var part = term.substr(0, i);
- var partParams = $.extend({}, params, {
- term: part
- });
-
- var data = createTag(partParams);
-
- if (data == null) {
- i++;
- continue;
- }
-
- callback(data);
-
- // Reset the term to not include the tokenized portion
- term = term.substr(i + 1) || '';
- i = 0;
- }
-
- return {
- term: term
- };
- };
-
- return Tokenizer;
-});
-
-S2.define('select2/data/minimumInputLength',[
-
-], function () {
- function MinimumInputLength (decorated, $e, options) {
- this.minimumInputLength = options.get('minimumInputLength');
-
- decorated.call(this, $e, options);
- }
-
- MinimumInputLength.prototype.query = function (decorated, params, callback) {
- params.term = params.term || '';
-
- if (params.term.length < this.minimumInputLength) {
- this.trigger('results:message', {
- message: 'inputTooShort',
- args: {
- minimum: this.minimumInputLength,
- input: params.term,
- params: params
- }
- });
-
- return;
- }
-
- decorated.call(this, params, callback);
- };
-
- return MinimumInputLength;
-});
-
-S2.define('select2/data/maximumInputLength',[
-
-], function () {
- function MaximumInputLength (decorated, $e, options) {
- this.maximumInputLength = options.get('maximumInputLength');
-
- decorated.call(this, $e, options);
- }
-
- MaximumInputLength.prototype.query = function (decorated, params, callback) {
- params.term = params.term || '';
-
- if (this.maximumInputLength > 0 &&
- params.term.length > this.maximumInputLength) {
- this.trigger('results:message', {
- message: 'inputTooLong',
- args: {
- maximum: this.maximumInputLength,
- input: params.term,
- params: params
- }
- });
-
- return;
- }
-
- decorated.call(this, params, callback);
- };
-
- return MaximumInputLength;
-});
-
-S2.define('select2/data/maximumSelectionLength',[
-
-], function (){
- function MaximumSelectionLength (decorated, $e, options) {
- this.maximumSelectionLength = options.get('maximumSelectionLength');
-
- decorated.call(this, $e, options);
- }
-
- MaximumSelectionLength.prototype.query =
- function (decorated, params, callback) {
- var self = this;
-
- this.current(function (currentData) {
- var count = currentData != null ? currentData.length : 0;
- if (self.maximumSelectionLength > 0 &&
- count >= self.maximumSelectionLength) {
- self.trigger('results:message', {
- message: 'maximumSelected',
- args: {
- maximum: self.maximumSelectionLength
- }
- });
- return;
- }
- decorated.call(self, params, callback);
- });
- };
-
- return MaximumSelectionLength;
-});
-
-S2.define('select2/dropdown',[
- 'jquery',
- './utils'
-], function ($, Utils) {
- function Dropdown ($element, options) {
- this.$element = $element;
- this.options = options;
-
- Dropdown.__super__.constructor.call(this);
- }
-
- Utils.Extend(Dropdown, Utils.Observable);
-
- Dropdown.prototype.render = function () {
- var $dropdown = $(
- '' +
- ' ' +
- ' '
- );
-
- $dropdown.attr('dir', this.options.get('dir'));
-
- this.$dropdown = $dropdown;
-
- return $dropdown;
- };
-
- Dropdown.prototype.bind = function () {
- // Should be implemented in subclasses
- };
-
- Dropdown.prototype.position = function ($dropdown, $container) {
- // Should be implemented in subclasses
- };
-
- Dropdown.prototype.destroy = function () {
- // Remove the dropdown from the DOM
- this.$dropdown.remove();
- };
-
- return Dropdown;
-});
-
-S2.define('select2/dropdown/search',[
- 'jquery',
- '../utils'
-], function ($, Utils) {
- function Search () { }
-
- Search.prototype.render = function (decorated) {
- var $rendered = decorated.call(this);
-
- var $search = $(
- '' +
- ' ' +
- ' '
- );
-
- this.$searchContainer = $search;
- this.$search = $search.find('input');
-
- $rendered.prepend($search);
-
- return $rendered;
- };
-
- Search.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- this.$search.on('keydown', function (evt) {
- self.trigger('keypress', evt);
-
- self._keyUpPrevented = evt.isDefaultPrevented();
- });
-
- // Workaround for browsers which do not support the `input` event
- // This will prevent double-triggering of events for browsers which support
- // both the `keyup` and `input` events.
- this.$search.on('input', function (evt) {
- // Unbind the duplicated `keyup` event
- $(this).off('keyup');
- });
-
- this.$search.on('keyup input', function (evt) {
- self.handleSearch(evt);
- });
-
- container.on('open', function () {
- self.$search.attr('tabindex', 0);
-
- self.$search.focus();
-
- window.setTimeout(function () {
- self.$search.focus();
- }, 0);
- });
-
- container.on('close', function () {
- self.$search.attr('tabindex', -1);
-
- self.$search.val('');
- self.$search.blur();
- });
-
- container.on('focus', function () {
- if (!container.isOpen()) {
- self.$search.focus();
- }
- });
-
- container.on('results:all', function (params) {
- if (params.query.term == null || params.query.term === '') {
- var showSearch = self.showSearch(params);
-
- if (showSearch) {
- self.$searchContainer.removeClass('select2-search--hide');
- } else {
- self.$searchContainer.addClass('select2-search--hide');
- }
- }
- });
- };
-
- Search.prototype.handleSearch = function (evt) {
- if (!this._keyUpPrevented) {
- var input = this.$search.val();
-
- this.trigger('query', {
- term: input
- });
- }
-
- this._keyUpPrevented = false;
- };
-
- Search.prototype.showSearch = function (_, params) {
- return true;
- };
-
- return Search;
-});
-
-S2.define('select2/dropdown/hidePlaceholder',[
-
-], function () {
- function HidePlaceholder (decorated, $element, options, dataAdapter) {
- this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
-
- decorated.call(this, $element, options, dataAdapter);
- }
-
- HidePlaceholder.prototype.append = function (decorated, data) {
- data.results = this.removePlaceholder(data.results);
-
- decorated.call(this, data);
- };
-
- HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
- if (typeof placeholder === 'string') {
- placeholder = {
- id: '',
- text: placeholder
- };
- }
-
- return placeholder;
- };
-
- HidePlaceholder.prototype.removePlaceholder = function (_, data) {
- var modifiedData = data.slice(0);
-
- for (var d = data.length - 1; d >= 0; d--) {
- var item = data[d];
-
- if (this.placeholder.id === item.id) {
- modifiedData.splice(d, 1);
- }
- }
-
- return modifiedData;
- };
-
- return HidePlaceholder;
-});
-
-S2.define('select2/dropdown/infiniteScroll',[
- 'jquery'
-], function ($) {
- function InfiniteScroll (decorated, $element, options, dataAdapter) {
- this.lastParams = {};
-
- decorated.call(this, $element, options, dataAdapter);
-
- this.$loadingMore = this.createLoadingMore();
- this.loading = false;
- }
-
- InfiniteScroll.prototype.append = function (decorated, data) {
- this.$loadingMore.remove();
- this.loading = false;
-
- decorated.call(this, data);
-
- if (this.showLoadingMore(data)) {
- this.$results.append(this.$loadingMore);
- }
- };
-
- InfiniteScroll.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('query', function (params) {
- self.lastParams = params;
- self.loading = true;
- });
-
- container.on('query:append', function (params) {
- self.lastParams = params;
- self.loading = true;
- });
-
- this.$results.on('scroll', function () {
- var isLoadMoreVisible = $.contains(
- document.documentElement,
- self.$loadingMore[0]
- );
-
- if (self.loading || !isLoadMoreVisible) {
- return;
- }
-
- var currentOffset = self.$results.offset().top +
- self.$results.outerHeight(false);
- var loadingMoreOffset = self.$loadingMore.offset().top +
- self.$loadingMore.outerHeight(false);
-
- if (currentOffset + 50 >= loadingMoreOffset) {
- self.loadMore();
- }
- });
- };
-
- InfiniteScroll.prototype.loadMore = function () {
- this.loading = true;
-
- var params = $.extend({}, {page: 1}, this.lastParams);
-
- params.page++;
-
- this.trigger('query:append', params);
- };
-
- InfiniteScroll.prototype.showLoadingMore = function (_, data) {
- return data.pagination && data.pagination.more;
- };
-
- InfiniteScroll.prototype.createLoadingMore = function () {
- var $option = $(
- ' '
- );
-
- var message = this.options.get('translations').get('loadingMore');
-
- $option.html(message(this.lastParams));
-
- return $option;
- };
-
- return InfiniteScroll;
-});
-
-S2.define('select2/dropdown/attachBody',[
- 'jquery',
- '../utils'
-], function ($, Utils) {
- function AttachBody (decorated, $element, options) {
- this.$dropdownParent = options.get('dropdownParent') || $(document.body);
-
- decorated.call(this, $element, options);
- }
-
- AttachBody.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- var setupResultsEvents = false;
-
- decorated.call(this, container, $container);
-
- container.on('open', function () {
- self._showDropdown();
- self._attachPositioningHandler(container);
-
- if (!setupResultsEvents) {
- setupResultsEvents = true;
-
- container.on('results:all', function () {
- self._positionDropdown();
- self._resizeDropdown();
- });
-
- container.on('results:append', function () {
- self._positionDropdown();
- self._resizeDropdown();
- });
- }
- });
-
- container.on('close', function () {
- self._hideDropdown();
- self._detachPositioningHandler(container);
- });
-
- this.$dropdownContainer.on('mousedown', function (evt) {
- evt.stopPropagation();
- });
- };
-
- AttachBody.prototype.destroy = function (decorated) {
- decorated.call(this);
-
- this.$dropdownContainer.remove();
- };
-
- AttachBody.prototype.position = function (decorated, $dropdown, $container) {
- // Clone all of the container classes
- $dropdown.attr('class', $container.attr('class'));
-
- $dropdown.removeClass('select2');
- $dropdown.addClass('select2-container--open');
-
- $dropdown.css({
- position: 'absolute',
- top: -999999
- });
-
- this.$container = $container;
- };
-
- AttachBody.prototype.render = function (decorated) {
- var $container = $(' ');
-
- var $dropdown = decorated.call(this);
- $container.append($dropdown);
-
- this.$dropdownContainer = $container;
-
- return $container;
- };
-
- AttachBody.prototype._hideDropdown = function (decorated) {
- this.$dropdownContainer.detach();
- };
-
- AttachBody.prototype._attachPositioningHandler =
- function (decorated, container) {
- var self = this;
-
- var scrollEvent = 'scroll.select2.' + container.id;
- var resizeEvent = 'resize.select2.' + container.id;
- var orientationEvent = 'orientationchange.select2.' + container.id;
-
- var $watchers = this.$container.parents().filter(Utils.hasScroll);
- $watchers.each(function () {
- Utils.StoreData(this, 'select2-scroll-position', {
- x: $(this).scrollLeft(),
- y: $(this).scrollTop()
- });
- });
-
- $watchers.on(scrollEvent, function (ev) {
- var position = Utils.GetData(this, 'select2-scroll-position');
- $(this).scrollTop(position.y);
- });
-
- $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
- function (e) {
- self._positionDropdown();
- self._resizeDropdown();
- });
- };
-
- AttachBody.prototype._detachPositioningHandler =
- function (decorated, container) {
- var scrollEvent = 'scroll.select2.' + container.id;
- var resizeEvent = 'resize.select2.' + container.id;
- var orientationEvent = 'orientationchange.select2.' + container.id;
-
- var $watchers = this.$container.parents().filter(Utils.hasScroll);
- $watchers.off(scrollEvent);
-
- $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
- };
-
- AttachBody.prototype._positionDropdown = function () {
- var $window = $(window);
-
- var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
- var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
-
- var newDirection = null;
-
- var offset = this.$container.offset();
-
- offset.bottom = offset.top + this.$container.outerHeight(false);
-
- var container = {
- height: this.$container.outerHeight(false)
- };
-
- container.top = offset.top;
- container.bottom = offset.top + container.height;
-
- var dropdown = {
- height: this.$dropdown.outerHeight(false)
- };
-
- var viewport = {
- top: $window.scrollTop(),
- bottom: $window.scrollTop() + $window.height()
- };
-
- var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
- var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
-
- var css = {
- left: offset.left,
- top: container.bottom
- };
-
- // Determine what the parent element is to use for calculating the offset
- var $offsetParent = this.$dropdownParent;
-
- // For statically positioned elements, we need to get the element
- // that is determining the offset
- if ($offsetParent.css('position') === 'static') {
- $offsetParent = $offsetParent.offsetParent();
- }
-
- var parentOffset = $offsetParent.offset();
-
- css.top -= parentOffset.top;
- css.left -= parentOffset.left;
-
- if (!isCurrentlyAbove && !isCurrentlyBelow) {
- newDirection = 'below';
- }
-
- if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
- newDirection = 'above';
- } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
- newDirection = 'below';
- }
-
- if (newDirection == 'above' ||
- (isCurrentlyAbove && newDirection !== 'below')) {
- css.top = container.top - parentOffset.top - dropdown.height;
- }
-
- if (newDirection != null) {
- this.$dropdown
- .removeClass('select2-dropdown--below select2-dropdown--above')
- .addClass('select2-dropdown--' + newDirection);
- this.$container
- .removeClass('select2-container--below select2-container--above')
- .addClass('select2-container--' + newDirection);
- }
-
- this.$dropdownContainer.css(css);
- };
-
- AttachBody.prototype._resizeDropdown = function () {
- var css = {
- width: this.$container.outerWidth(false) + 'px'
- };
-
- if (this.options.get('dropdownAutoWidth')) {
- css.minWidth = css.width;
- css.position = 'relative';
- css.width = 'auto';
- }
-
- this.$dropdown.css(css);
- };
-
- AttachBody.prototype._showDropdown = function (decorated) {
- this.$dropdownContainer.appendTo(this.$dropdownParent);
-
- this._positionDropdown();
- this._resizeDropdown();
- };
-
- return AttachBody;
-});
-
-S2.define('select2/dropdown/minimumResultsForSearch',[
-
-], function () {
- function countResults (data) {
- var count = 0;
-
- for (var d = 0; d < data.length; d++) {
- var item = data[d];
-
- if (item.children) {
- count += countResults(item.children);
- } else {
- count++;
- }
- }
-
- return count;
- }
-
- function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
- this.minimumResultsForSearch = options.get('minimumResultsForSearch');
-
- if (this.minimumResultsForSearch < 0) {
- this.minimumResultsForSearch = Infinity;
- }
-
- decorated.call(this, $element, options, dataAdapter);
- }
-
- MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
- if (countResults(params.data.results) < this.minimumResultsForSearch) {
- return false;
- }
-
- return decorated.call(this, params);
- };
-
- return MinimumResultsForSearch;
-});
-
-S2.define('select2/dropdown/selectOnClose',[
- '../utils'
-], function (Utils) {
- function SelectOnClose () { }
-
- SelectOnClose.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('close', function (params) {
- self._handleSelectOnClose(params);
- });
- };
-
- SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
- if (params && params.originalSelect2Event != null) {
- var event = params.originalSelect2Event;
-
- // Don't select an item if the close event was triggered from a select or
- // unselect event
- if (event._type === 'select' || event._type === 'unselect') {
- return;
- }
- }
-
- var $highlightedResults = this.getHighlightedResults();
-
- // Only select highlighted results
- if ($highlightedResults.length < 1) {
- return;
- }
-
- var data = Utils.GetData($highlightedResults[0], 'data');
-
- // Don't re-select already selected resulte
- if (
- (data.element != null && data.element.selected) ||
- (data.element == null && data.selected)
- ) {
- return;
- }
-
- this.trigger('select', {
- data: data
- });
- };
-
- return SelectOnClose;
-});
-
-S2.define('select2/dropdown/closeOnSelect',[
-
-], function () {
- function CloseOnSelect () { }
-
- CloseOnSelect.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('select', function (evt) {
- self._selectTriggered(evt);
- });
-
- container.on('unselect', function (evt) {
- self._selectTriggered(evt);
- });
- };
-
- CloseOnSelect.prototype._selectTriggered = function (_, evt) {
- var originalEvent = evt.originalEvent;
-
- // Don't close if the control key is being held
- if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {
- return;
- }
-
- this.trigger('close', {
- originalEvent: originalEvent,
- originalSelect2Event: evt
- });
- };
-
- return CloseOnSelect;
-});
-
-S2.define('select2/i18n/en',[],function () {
- // English
- return {
- errorLoading: function () {
- return 'The results could not be loaded.';
- },
- inputTooLong: function (args) {
- var overChars = args.input.length - args.maximum;
-
- var message = 'Please delete ' + overChars + ' character';
-
- if (overChars != 1) {
- message += 's';
- }
-
- return message;
- },
- inputTooShort: function (args) {
- var remainingChars = args.minimum - args.input.length;
-
- var message = 'Please enter ' + remainingChars + ' or more characters';
-
- return message;
- },
- loadingMore: function () {
- return 'Loading more results…';
- },
- maximumSelected: function (args) {
- var message = 'You can only select ' + args.maximum + ' item';
-
- if (args.maximum != 1) {
- message += 's';
- }
-
- return message;
- },
- noResults: function () {
- return 'No results found';
- },
- searching: function () {
- return 'Searching…';
- },
- removeAllItems: function () {
- return 'Remove all items';
- }
- };
-});
-
-S2.define('select2/defaults',[
- 'jquery',
- 'require',
-
- './results',
-
- './selection/single',
- './selection/multiple',
- './selection/placeholder',
- './selection/allowClear',
- './selection/search',
- './selection/eventRelay',
-
- './utils',
- './translation',
- './diacritics',
-
- './data/select',
- './data/array',
- './data/ajax',
- './data/tags',
- './data/tokenizer',
- './data/minimumInputLength',
- './data/maximumInputLength',
- './data/maximumSelectionLength',
-
- './dropdown',
- './dropdown/search',
- './dropdown/hidePlaceholder',
- './dropdown/infiniteScroll',
- './dropdown/attachBody',
- './dropdown/minimumResultsForSearch',
- './dropdown/selectOnClose',
- './dropdown/closeOnSelect',
-
- './i18n/en'
-], function ($, require,
-
- ResultsList,
-
- SingleSelection, MultipleSelection, Placeholder, AllowClear,
- SelectionSearch, EventRelay,
-
- Utils, Translation, DIACRITICS,
-
- SelectData, ArrayData, AjaxData, Tags, Tokenizer,
- MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
-
- Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
- AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
-
- EnglishTranslation) {
- function Defaults () {
- this.reset();
- }
-
- Defaults.prototype.apply = function (options) {
- options = $.extend(true, {}, this.defaults, options);
-
- if (options.dataAdapter == null) {
- if (options.ajax != null) {
- options.dataAdapter = AjaxData;
- } else if (options.data != null) {
- options.dataAdapter = ArrayData;
- } else {
- options.dataAdapter = SelectData;
- }
-
- if (options.minimumInputLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MinimumInputLength
- );
- }
-
- if (options.maximumInputLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MaximumInputLength
- );
- }
-
- if (options.maximumSelectionLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MaximumSelectionLength
- );
- }
-
- if (options.tags) {
- options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
- }
-
- if (options.tokenSeparators != null || options.tokenizer != null) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- Tokenizer
- );
- }
-
- if (options.query != null) {
- var Query = require(options.amdBase + 'compat/query');
-
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- Query
- );
- }
-
- if (options.initSelection != null) {
- var InitSelection = require(options.amdBase + 'compat/initSelection');
-
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- InitSelection
- );
- }
- }
-
- if (options.resultsAdapter == null) {
- options.resultsAdapter = ResultsList;
-
- if (options.ajax != null) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- InfiniteScroll
- );
- }
-
- if (options.placeholder != null) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- HidePlaceholder
- );
- }
-
- if (options.selectOnClose) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- SelectOnClose
- );
- }
- }
-
- if (options.dropdownAdapter == null) {
- if (options.multiple) {
- options.dropdownAdapter = Dropdown;
- } else {
- var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
-
- options.dropdownAdapter = SearchableDropdown;
- }
-
- if (options.minimumResultsForSearch !== 0) {
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- MinimumResultsForSearch
- );
- }
-
- if (options.closeOnSelect) {
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- CloseOnSelect
- );
- }
-
- if (
- options.dropdownCssClass != null ||
- options.dropdownCss != null ||
- options.adaptDropdownCssClass != null
- ) {
- var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
-
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- DropdownCSS
- );
- }
-
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- AttachBody
- );
- }
-
- if (options.selectionAdapter == null) {
- if (options.multiple) {
- options.selectionAdapter = MultipleSelection;
- } else {
- options.selectionAdapter = SingleSelection;
- }
-
- // Add the placeholder mixin if a placeholder was specified
- if (options.placeholder != null) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- Placeholder
- );
- }
-
- if (options.allowClear) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- AllowClear
- );
- }
-
- if (options.multiple) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- SelectionSearch
- );
- }
-
- if (
- options.containerCssClass != null ||
- options.containerCss != null ||
- options.adaptContainerCssClass != null
- ) {
- var ContainerCSS = require(options.amdBase + 'compat/containerCss');
-
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- ContainerCSS
- );
- }
-
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- EventRelay
- );
- }
-
- if (typeof options.language === 'string') {
- // Check if the language is specified with a region
- if (options.language.indexOf('-') > 0) {
- // Extract the region information if it is included
- var languageParts = options.language.split('-');
- var baseLanguage = languageParts[0];
-
- options.language = [options.language, baseLanguage];
- } else {
- options.language = [options.language];
- }
- }
-
- if ($.isArray(options.language)) {
- var languages = new Translation();
- options.language.push('en');
-
- var languageNames = options.language;
-
- for (var l = 0; l < languageNames.length; l++) {
- var name = languageNames[l];
- var language = {};
-
- try {
- // Try to load it with the original name
- language = Translation.loadPath(name);
- } catch (e) {
- try {
- // If we couldn't load it, check if it wasn't the full path
- name = this.defaults.amdLanguageBase + name;
- language = Translation.loadPath(name);
- } catch (ex) {
- // The translation could not be loaded at all. Sometimes this is
- // because of a configuration problem, other times this can be
- // because of how Select2 helps load all possible translation files.
- if (options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The language file for "' + name + '" could not be ' +
- 'automatically loaded. A fallback will be used instead.'
- );
- }
-
- continue;
- }
- }
-
- languages.extend(language);
- }
-
- options.translations = languages;
- } else {
- var baseTranslation = Translation.loadPath(
- this.defaults.amdLanguageBase + 'en'
- );
- var customTranslation = new Translation(options.language);
-
- customTranslation.extend(baseTranslation);
-
- options.translations = customTranslation;
- }
-
- return options;
- };
-
- Defaults.prototype.reset = function () {
- function stripDiacritics (text) {
- // Used 'uni range + named function' from http://jsperf.com/diacritics/18
- function match(a) {
- return DIACRITICS[a] || a;
- }
-
- return text.replace(/[^\u0000-\u007E]/g, match);
- }
-
- function matcher (params, data) {
- // Always return the object if there is nothing to compare
- if ($.trim(params.term) === '') {
- return data;
- }
-
- // Do a recursive check for options with children
- if (data.children && data.children.length > 0) {
- // Clone the data object if there are children
- // This is required as we modify the object to remove any non-matches
- var match = $.extend(true, {}, data);
-
- // Check each child of the option
- for (var c = data.children.length - 1; c >= 0; c--) {
- var child = data.children[c];
-
- var matches = matcher(params, child);
-
- // If there wasn't a match, remove the object in the array
- if (matches == null) {
- match.children.splice(c, 1);
- }
- }
-
- // If any children matched, return the new object
- if (match.children.length > 0) {
- return match;
- }
-
- // If there were no matching children, check just the plain object
- return matcher(params, match);
- }
-
- var original = stripDiacritics(data.text).toUpperCase();
- var term = stripDiacritics(params.term).toUpperCase();
-
- // Check if the text contains the term
- if (original.indexOf(term) > -1) {
- return data;
- }
-
- // If it doesn't contain the term, don't return anything
- return null;
- }
-
- this.defaults = {
- amdBase: './',
- amdLanguageBase: './i18n/',
- closeOnSelect: true,
- debug: false,
- dropdownAutoWidth: false,
- escapeMarkup: Utils.escapeMarkup,
- language: EnglishTranslation,
- matcher: matcher,
- minimumInputLength: 0,
- maximumInputLength: 0,
- maximumSelectionLength: 0,
- minimumResultsForSearch: 0,
- selectOnClose: false,
- scrollAfterSelect: false,
- sorter: function (data) {
- return data;
- },
- templateResult: function (result) {
- return result.text;
- },
- templateSelection: function (selection) {
- return selection.text;
- },
- theme: 'default',
- width: 'resolve'
- };
- };
-
- Defaults.prototype.set = function (key, value) {
- var camelKey = $.camelCase(key);
-
- var data = {};
- data[camelKey] = value;
-
- var convertedData = Utils._convertData(data);
-
- $.extend(true, this.defaults, convertedData);
- };
-
- var defaults = new Defaults();
-
- return defaults;
-});
-
-S2.define('select2/options',[
- 'require',
- 'jquery',
- './defaults',
- './utils'
-], function (require, $, Defaults, Utils) {
- function Options (options, $element) {
- this.options = options;
-
- if ($element != null) {
- this.fromElement($element);
- }
-
- this.options = Defaults.apply(this.options);
-
- if ($element && $element.is('input')) {
- var InputCompat = require(this.get('amdBase') + 'compat/inputData');
-
- this.options.dataAdapter = Utils.Decorate(
- this.options.dataAdapter,
- InputCompat
- );
- }
- }
-
- Options.prototype.fromElement = function ($e) {
- var excludedData = ['select2'];
-
- if (this.options.multiple == null) {
- this.options.multiple = $e.prop('multiple');
- }
-
- if (this.options.disabled == null) {
- this.options.disabled = $e.prop('disabled');
- }
-
- if (this.options.language == null) {
- if ($e.prop('lang')) {
- this.options.language = $e.prop('lang').toLowerCase();
- } else if ($e.closest('[lang]').prop('lang')) {
- this.options.language = $e.closest('[lang]').prop('lang');
- }
- }
-
- if (this.options.dir == null) {
- if ($e.prop('dir')) {
- this.options.dir = $e.prop('dir');
- } else if ($e.closest('[dir]').prop('dir')) {
- this.options.dir = $e.closest('[dir]').prop('dir');
- } else {
- this.options.dir = 'ltr';
- }
- }
-
- $e.prop('disabled', this.options.disabled);
- $e.prop('multiple', this.options.multiple);
-
- if (Utils.GetData($e[0], 'select2Tags')) {
- if (this.options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The `data-select2-tags` attribute has been changed to ' +
- 'use the `data-data` and `data-tags="true"` attributes and will be ' +
- 'removed in future versions of Select2.'
- );
- }
-
- Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));
- Utils.StoreData($e[0], 'tags', true);
- }
-
- if (Utils.GetData($e[0], 'ajaxUrl')) {
- if (this.options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The `data-ajax-url` attribute has been changed to ' +
- '`data-ajax--url` and support for the old attribute will be removed' +
- ' in future versions of Select2.'
- );
- }
-
- $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));
- Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));
- }
-
- var dataset = {};
-
- function upperCaseLetter(_, letter) {
- return letter.toUpperCase();
- }
-
- // Pre-load all of the attributes which are prefixed with `data-`
- for (var attr = 0; attr < $e[0].attributes.length; attr++) {
- var attributeName = $e[0].attributes[attr].name;
- var prefix = 'data-';
-
- if (attributeName.substr(0, prefix.length) == prefix) {
- // Get the contents of the attribute after `data-`
- var dataName = attributeName.substring(prefix.length);
-
- // Get the data contents from the consistent source
- // This is more than likely the jQuery data helper
- var dataValue = Utils.GetData($e[0], dataName);
-
- // camelCase the attribute name to match the spec
- var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);
-
- // Store the data attribute contents into the dataset since
- dataset[camelDataName] = dataValue;
- }
- }
-
- // Prefer the element's `dataset` attribute if it exists
- // jQuery 1.x does not correctly handle data attributes with multiple dashes
- if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
- dataset = $.extend(true, {}, $e[0].dataset, dataset);
- }
-
- // Prefer our internal data cache if it exists
- var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);
-
- data = Utils._convertData(data);
-
- for (var key in data) {
- if ($.inArray(key, excludedData) > -1) {
- continue;
- }
-
- if ($.isPlainObject(this.options[key])) {
- $.extend(this.options[key], data[key]);
- } else {
- this.options[key] = data[key];
- }
- }
-
- return this;
- };
-
- Options.prototype.get = function (key) {
- return this.options[key];
- };
-
- Options.prototype.set = function (key, val) {
- this.options[key] = val;
- };
-
- return Options;
-});
-
-S2.define('select2/core',[
- 'jquery',
- './options',
- './utils',
- './keys'
-], function ($, Options, Utils, KEYS) {
- var Select2 = function ($element, options) {
- if (Utils.GetData($element[0], 'select2') != null) {
- Utils.GetData($element[0], 'select2').destroy();
- }
-
- this.$element = $element;
-
- this.id = this._generateId($element);
-
- options = options || {};
-
- this.options = new Options(options, $element);
-
- Select2.__super__.constructor.call(this);
-
- // Set up the tabindex
-
- var tabindex = $element.attr('tabindex') || 0;
- Utils.StoreData($element[0], 'old-tabindex', tabindex);
- $element.attr('tabindex', '-1');
-
- // Set up containers and adapters
-
- var DataAdapter = this.options.get('dataAdapter');
- this.dataAdapter = new DataAdapter($element, this.options);
-
- var $container = this.render();
-
- this._placeContainer($container);
-
- var SelectionAdapter = this.options.get('selectionAdapter');
- this.selection = new SelectionAdapter($element, this.options);
- this.$selection = this.selection.render();
-
- this.selection.position(this.$selection, $container);
-
- var DropdownAdapter = this.options.get('dropdownAdapter');
- this.dropdown = new DropdownAdapter($element, this.options);
- this.$dropdown = this.dropdown.render();
-
- this.dropdown.position(this.$dropdown, $container);
-
- var ResultsAdapter = this.options.get('resultsAdapter');
- this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
- this.$results = this.results.render();
-
- this.results.position(this.$results, this.$dropdown);
-
- // Bind events
-
- var self = this;
-
- // Bind the container to all of the adapters
- this._bindAdapters();
-
- // Register any DOM event handlers
- this._registerDomEvents();
-
- // Register any internal event handlers
- this._registerDataEvents();
- this._registerSelectionEvents();
- this._registerDropdownEvents();
- this._registerResultsEvents();
- this._registerEvents();
-
- // Set the initial state
- this.dataAdapter.current(function (initialData) {
- self.trigger('selection:update', {
- data: initialData
- });
- });
-
- // Hide the original select
- $element.addClass('select2-hidden-accessible');
- $element.attr('aria-hidden', 'true');
-
- // Synchronize any monitored attributes
- this._syncAttributes();
-
- Utils.StoreData($element[0], 'select2', this);
-
- // Ensure backwards compatibility with $element.data('select2').
- $element.data('select2', this);
- };
-
- Utils.Extend(Select2, Utils.Observable);
-
- Select2.prototype._generateId = function ($element) {
- var id = '';
-
- if ($element.attr('id') != null) {
- id = $element.attr('id');
- } else if ($element.attr('name') != null) {
- id = $element.attr('name') + '-' + Utils.generateChars(2);
- } else {
- id = Utils.generateChars(4);
- }
-
- id = id.replace(/(:|\.|\[|\]|,)/g, '');
- id = 'select2-' + id;
-
- return id;
- };
-
- Select2.prototype._placeContainer = function ($container) {
- $container.insertAfter(this.$element);
-
- var width = this._resolveWidth(this.$element, this.options.get('width'));
-
- if (width != null) {
- $container.css('width', width);
- }
- };
-
- Select2.prototype._resolveWidth = function ($element, method) {
- var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
-
- if (method == 'resolve') {
- var styleWidth = this._resolveWidth($element, 'style');
-
- if (styleWidth != null) {
- return styleWidth;
- }
-
- return this._resolveWidth($element, 'element');
- }
-
- if (method == 'element') {
- var elementWidth = $element.outerWidth(false);
-
- if (elementWidth <= 0) {
- return 'auto';
- }
-
- return elementWidth + 'px';
- }
-
- if (method == 'style') {
- var style = $element.attr('style');
-
- if (typeof(style) !== 'string') {
- return null;
- }
-
- var attrs = style.split(';');
-
- for (var i = 0, l = attrs.length; i < l; i = i + 1) {
- var attr = attrs[i].replace(/\s/g, '');
- var matches = attr.match(WIDTH);
-
- if (matches !== null && matches.length >= 1) {
- return matches[1];
- }
- }
-
- return null;
- }
-
- return method;
- };
-
- Select2.prototype._bindAdapters = function () {
- this.dataAdapter.bind(this, this.$container);
- this.selection.bind(this, this.$container);
-
- this.dropdown.bind(this, this.$container);
- this.results.bind(this, this.$container);
- };
-
- Select2.prototype._registerDomEvents = function () {
- var self = this;
-
- this.$element.on('change.select2', function () {
- self.dataAdapter.current(function (data) {
- self.trigger('selection:update', {
- data: data
- });
- });
- });
-
- this.$element.on('focus.select2', function (evt) {
- self.trigger('focus', evt);
- });
-
- this._syncA = Utils.bind(this._syncAttributes, this);
- this._syncS = Utils.bind(this._syncSubtree, this);
-
- if (this.$element[0].attachEvent) {
- this.$element[0].attachEvent('onpropertychange', this._syncA);
- }
-
- var observer = window.MutationObserver ||
- window.WebKitMutationObserver ||
- window.MozMutationObserver
- ;
-
- if (observer != null) {
- this._observer = new observer(function (mutations) {
- $.each(mutations, self._syncA);
- $.each(mutations, self._syncS);
- });
- this._observer.observe(this.$element[0], {
- attributes: true,
- childList: true,
- subtree: false
- });
- } else if (this.$element[0].addEventListener) {
- this.$element[0].addEventListener(
- 'DOMAttrModified',
- self._syncA,
- false
- );
- this.$element[0].addEventListener(
- 'DOMNodeInserted',
- self._syncS,
- false
- );
- this.$element[0].addEventListener(
- 'DOMNodeRemoved',
- self._syncS,
- false
- );
- }
- };
-
- Select2.prototype._registerDataEvents = function () {
- var self = this;
-
- this.dataAdapter.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerSelectionEvents = function () {
- var self = this;
- var nonRelayEvents = ['toggle', 'focus'];
-
- this.selection.on('toggle', function () {
- self.toggleDropdown();
- });
-
- this.selection.on('focus', function (params) {
- self.focus(params);
- });
-
- this.selection.on('*', function (name, params) {
- if ($.inArray(name, nonRelayEvents) !== -1) {
- return;
- }
-
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerDropdownEvents = function () {
- var self = this;
-
- this.dropdown.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerResultsEvents = function () {
- var self = this;
-
- this.results.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerEvents = function () {
- var self = this;
-
- this.on('open', function () {
- self.$container.addClass('select2-container--open');
- });
-
- this.on('close', function () {
- self.$container.removeClass('select2-container--open');
- });
-
- this.on('enable', function () {
- self.$container.removeClass('select2-container--disabled');
- });
-
- this.on('disable', function () {
- self.$container.addClass('select2-container--disabled');
- });
-
- this.on('blur', function () {
- self.$container.removeClass('select2-container--focus');
- });
-
- this.on('query', function (params) {
- if (!self.isOpen()) {
- self.trigger('open', {});
- }
-
- this.dataAdapter.query(params, function (data) {
- self.trigger('results:all', {
- data: data,
- query: params
- });
- });
- });
-
- this.on('query:append', function (params) {
- this.dataAdapter.query(params, function (data) {
- self.trigger('results:append', {
- data: data,
- query: params
- });
- });
- });
-
- this.on('keypress', function (evt) {
- var key = evt.which;
-
- if (self.isOpen()) {
- if (key === KEYS.ESC || key === KEYS.TAB ||
- (key === KEYS.UP && evt.altKey)) {
- self.close();
-
- evt.preventDefault();
- } else if (key === KEYS.ENTER) {
- self.trigger('results:select', {});
-
- evt.preventDefault();
- } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
- self.trigger('results:toggle', {});
-
- evt.preventDefault();
- } else if (key === KEYS.UP) {
- self.trigger('results:previous', {});
-
- evt.preventDefault();
- } else if (key === KEYS.DOWN) {
- self.trigger('results:next', {});
-
- evt.preventDefault();
- }
- } else {
- if (key === KEYS.ENTER || key === KEYS.SPACE ||
- (key === KEYS.DOWN && evt.altKey)) {
- self.open();
-
- evt.preventDefault();
- }
- }
- });
- };
-
- Select2.prototype._syncAttributes = function () {
- this.options.set('disabled', this.$element.prop('disabled'));
-
- if (this.options.get('disabled')) {
- if (this.isOpen()) {
- this.close();
- }
-
- this.trigger('disable', {});
- } else {
- this.trigger('enable', {});
- }
- };
-
- Select2.prototype._syncSubtree = function (evt, mutations) {
- var changed = false;
- var self = this;
-
- // Ignore any mutation events raised for elements that aren't options or
- // optgroups. This handles the case when the select element is destroyed
- if (
- evt && evt.target && (
- evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
- )
- ) {
- return;
- }
-
- if (!mutations) {
- // If mutation events aren't supported, then we can only assume that the
- // change affected the selections
- changed = true;
- } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
- for (var n = 0; n < mutations.addedNodes.length; n++) {
- var node = mutations.addedNodes[n];
-
- if (node.selected) {
- changed = true;
- }
- }
- } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
- changed = true;
- }
-
- // Only re-pull the data if we think there is a change
- if (changed) {
- this.dataAdapter.current(function (currentData) {
- self.trigger('selection:update', {
- data: currentData
- });
- });
- }
- };
-
- /**
- * Override the trigger method to automatically trigger pre-events when
- * there are events that can be prevented.
- */
- Select2.prototype.trigger = function (name, args) {
- var actualTrigger = Select2.__super__.trigger;
- var preTriggerMap = {
- 'open': 'opening',
- 'close': 'closing',
- 'select': 'selecting',
- 'unselect': 'unselecting',
- 'clear': 'clearing'
- };
-
- if (args === undefined) {
- args = {};
- }
-
- if (name in preTriggerMap) {
- var preTriggerName = preTriggerMap[name];
- var preTriggerArgs = {
- prevented: false,
- name: name,
- args: args
- };
-
- actualTrigger.call(this, preTriggerName, preTriggerArgs);
-
- if (preTriggerArgs.prevented) {
- args.prevented = true;
-
- return;
- }
- }
-
- actualTrigger.call(this, name, args);
- };
-
- Select2.prototype.toggleDropdown = function () {
- if (this.options.get('disabled')) {
- return;
- }
-
- if (this.isOpen()) {
- this.close();
- } else {
- this.open();
- }
- };
-
- Select2.prototype.open = function () {
- if (this.isOpen()) {
- return;
- }
-
- this.trigger('query', {});
- };
-
- Select2.prototype.close = function () {
- if (!this.isOpen()) {
- return;
- }
-
- this.trigger('close', {});
- };
-
- Select2.prototype.isOpen = function () {
- return this.$container.hasClass('select2-container--open');
- };
-
- Select2.prototype.hasFocus = function () {
- return this.$container.hasClass('select2-container--focus');
- };
-
- Select2.prototype.focus = function (data) {
- // No need to re-trigger focus events if we are already focused
- if (this.hasFocus()) {
- return;
- }
-
- this.$container.addClass('select2-container--focus');
- this.trigger('focus', {});
- };
-
- Select2.prototype.enable = function (args) {
- if (this.options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `select2("enable")` method has been deprecated and will' +
- ' be removed in later Select2 versions. Use $element.prop("disabled")' +
- ' instead.'
- );
- }
-
- if (args == null || args.length === 0) {
- args = [true];
- }
-
- var disabled = !args[0];
-
- this.$element.prop('disabled', disabled);
- };
-
- Select2.prototype.data = function () {
- if (this.options.get('debug') &&
- arguments.length > 0 && window.console && console.warn) {
- console.warn(
- 'Select2: Data can no longer be set using `select2("data")`. You ' +
- 'should consider setting the value instead using `$element.val()`.'
- );
- }
-
- var data = [];
-
- this.dataAdapter.current(function (currentData) {
- data = currentData;
- });
-
- return data;
- };
-
- Select2.prototype.val = function (args) {
- if (this.options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `select2("val")` method has been deprecated and will be' +
- ' removed in later Select2 versions. Use $element.val() instead.'
- );
- }
-
- if (args == null || args.length === 0) {
- return this.$element.val();
- }
-
- var newVal = args[0];
-
- if ($.isArray(newVal)) {
- newVal = $.map(newVal, function (obj) {
- return obj.toString();
- });
- }
-
- this.$element.val(newVal).trigger('change');
- };
-
- Select2.prototype.destroy = function () {
- this.$container.remove();
-
- if (this.$element[0].detachEvent) {
- this.$element[0].detachEvent('onpropertychange', this._syncA);
- }
-
- if (this._observer != null) {
- this._observer.disconnect();
- this._observer = null;
- } else if (this.$element[0].removeEventListener) {
- this.$element[0]
- .removeEventListener('DOMAttrModified', this._syncA, false);
- this.$element[0]
- .removeEventListener('DOMNodeInserted', this._syncS, false);
- this.$element[0]
- .removeEventListener('DOMNodeRemoved', this._syncS, false);
- }
-
- this._syncA = null;
- this._syncS = null;
-
- this.$element.off('.select2');
- this.$element.attr('tabindex',
- Utils.GetData(this.$element[0], 'old-tabindex'));
-
- this.$element.removeClass('select2-hidden-accessible');
- this.$element.attr('aria-hidden', 'false');
- Utils.RemoveData(this.$element[0]);
- this.$element.removeData('select2');
-
- this.dataAdapter.destroy();
- this.selection.destroy();
- this.dropdown.destroy();
- this.results.destroy();
-
- this.dataAdapter = null;
- this.selection = null;
- this.dropdown = null;
- this.results = null;
- };
-
- Select2.prototype.render = function () {
- var $container = $(
- '' +
- ' ' +
- ' ' +
- ' '
- );
-
- $container.attr('dir', this.options.get('dir'));
-
- this.$container = $container;
-
- this.$container.addClass('select2-container--' + this.options.get('theme'));
-
- Utils.StoreData($container[0], 'element', this.$element);
-
- return $container;
- };
-
- return Select2;
-});
-
-S2.define('select2/compat/utils',[
- 'jquery'
-], function ($) {
- function syncCssClasses ($dest, $src, adapter) {
- var classes, replacements = [], adapted;
-
- classes = $.trim($dest.attr('class'));
-
- if (classes) {
- classes = '' + classes; // for IE which returns object
-
- $(classes.split(/\s+/)).each(function () {
- // Save all Select2 classes
- if (this.indexOf('select2-') === 0) {
- replacements.push(this);
- }
- });
- }
-
- classes = $.trim($src.attr('class'));
-
- if (classes) {
- classes = '' + classes; // for IE which returns object
-
- $(classes.split(/\s+/)).each(function () {
- // Only adapt non-Select2 classes
- if (this.indexOf('select2-') !== 0) {
- adapted = adapter(this);
-
- if (adapted != null) {
- replacements.push(adapted);
- }
- }
- });
- }
-
- $dest.attr('class', replacements.join(' '));
- }
-
- return {
- syncCssClasses: syncCssClasses
- };
-});
-
-S2.define('select2/compat/containerCss',[
- 'jquery',
- './utils'
-], function ($, CompatUtils) {
- // No-op CSS adapter that discards all classes by default
- function _containerAdapter (clazz) {
- return null;
- }
-
- function ContainerCSS () { }
-
- ContainerCSS.prototype.render = function (decorated) {
- var $container = decorated.call(this);
-
- var containerCssClass = this.options.get('containerCssClass') || '';
-
- if ($.isFunction(containerCssClass)) {
- containerCssClass = containerCssClass(this.$element);
- }
-
- var containerCssAdapter = this.options.get('adaptContainerCssClass');
- containerCssAdapter = containerCssAdapter || _containerAdapter;
-
- if (containerCssClass.indexOf(':all:') !== -1) {
- containerCssClass = containerCssClass.replace(':all:', '');
-
- var _cssAdapter = containerCssAdapter;
-
- containerCssAdapter = function (clazz) {
- var adapted = _cssAdapter(clazz);
-
- if (adapted != null) {
- // Append the old one along with the adapted one
- return adapted + ' ' + clazz;
- }
-
- return clazz;
- };
- }
-
- var containerCss = this.options.get('containerCss') || {};
-
- if ($.isFunction(containerCss)) {
- containerCss = containerCss(this.$element);
- }
-
- CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
-
- $container.css(containerCss);
- $container.addClass(containerCssClass);
-
- return $container;
- };
-
- return ContainerCSS;
-});
-
-S2.define('select2/compat/dropdownCss',[
- 'jquery',
- './utils'
-], function ($, CompatUtils) {
- // No-op CSS adapter that discards all classes by default
- function _dropdownAdapter (clazz) {
- return null;
- }
-
- function DropdownCSS () { }
-
- DropdownCSS.prototype.render = function (decorated) {
- var $dropdown = decorated.call(this);
-
- var dropdownCssClass = this.options.get('dropdownCssClass') || '';
-
- if ($.isFunction(dropdownCssClass)) {
- dropdownCssClass = dropdownCssClass(this.$element);
- }
-
- var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
- dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
-
- if (dropdownCssClass.indexOf(':all:') !== -1) {
- dropdownCssClass = dropdownCssClass.replace(':all:', '');
-
- var _cssAdapter = dropdownCssAdapter;
-
- dropdownCssAdapter = function (clazz) {
- var adapted = _cssAdapter(clazz);
-
- if (adapted != null) {
- // Append the old one along with the adapted one
- return adapted + ' ' + clazz;
- }
-
- return clazz;
- };
- }
-
- var dropdownCss = this.options.get('dropdownCss') || {};
-
- if ($.isFunction(dropdownCss)) {
- dropdownCss = dropdownCss(this.$element);
- }
-
- CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
-
- $dropdown.css(dropdownCss);
- $dropdown.addClass(dropdownCssClass);
-
- return $dropdown;
- };
-
- return DropdownCSS;
-});
-
-S2.define('select2/compat/initSelection',[
- 'jquery'
-], function ($) {
- function InitSelection (decorated, $element, options) {
- if (options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `initSelection` option has been deprecated in favor' +
- ' of a custom data adapter that overrides the `current` method. ' +
- 'This method is now called multiple times instead of a single ' +
- 'time when the instance is initialized. Support will be removed ' +
- 'for the `initSelection` option in future versions of Select2'
- );
- }
-
- this.initSelection = options.get('initSelection');
- this._isInitialized = false;
-
- decorated.call(this, $element, options);
- }
-
- InitSelection.prototype.current = function (decorated, callback) {
- var self = this;
-
- if (this._isInitialized) {
- decorated.call(this, callback);
-
- return;
- }
-
- this.initSelection.call(null, this.$element, function (data) {
- self._isInitialized = true;
-
- if (!$.isArray(data)) {
- data = [data];
- }
-
- callback(data);
- });
- };
-
- return InitSelection;
-});
-
-S2.define('select2/compat/inputData',[
- 'jquery',
- '../utils'
-], function ($, Utils) {
- function InputData (decorated, $element, options) {
- this._currentData = [];
- this._valueSeparator = options.get('valueSeparator') || ',';
-
- if ($element.prop('type') === 'hidden') {
- if (options.get('debug') && console && console.warn) {
- console.warn(
- 'Select2: Using a hidden input with Select2 is no longer ' +
- 'supported and may stop working in the future. It is recommended ' +
- 'to use a `` element instead.'
- );
- }
- }
-
- decorated.call(this, $element, options);
- }
-
- InputData.prototype.current = function (_, callback) {
- function getSelected (data, selectedIds) {
- var selected = [];
-
- if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
- data.selected = true;
- selected.push(data);
- } else {
- data.selected = false;
- }
-
- if (data.children) {
- selected.push.apply(selected, getSelected(data.children, selectedIds));
- }
-
- return selected;
- }
-
- var selected = [];
-
- for (var d = 0; d < this._currentData.length; d++) {
- var data = this._currentData[d];
-
- selected.push.apply(
- selected,
- getSelected(
- data,
- this.$element.val().split(
- this._valueSeparator
- )
- )
- );
- }
-
- callback(selected);
- };
-
- InputData.prototype.select = function (_, data) {
- if (!this.options.get('multiple')) {
- this.current(function (allData) {
- $.map(allData, function (data) {
- data.selected = false;
- });
- });
-
- this.$element.val(data.id);
- this.$element.trigger('change');
- } else {
- var value = this.$element.val();
- value += this._valueSeparator + data.id;
-
- this.$element.val(value);
- this.$element.trigger('change');
- }
- };
-
- InputData.prototype.unselect = function (_, data) {
- var self = this;
-
- data.selected = false;
-
- this.current(function (allData) {
- var values = [];
-
- for (var d = 0; d < allData.length; d++) {
- var item = allData[d];
-
- if (data.id == item.id) {
- continue;
- }
-
- values.push(item.id);
- }
-
- self.$element.val(values.join(self._valueSeparator));
- self.$element.trigger('change');
- });
- };
-
- InputData.prototype.query = function (_, params, callback) {
- var results = [];
-
- for (var d = 0; d < this._currentData.length; d++) {
- var data = this._currentData[d];
-
- var matches = this.matches(params, data);
-
- if (matches !== null) {
- results.push(matches);
- }
- }
-
- callback({
- results: results
- });
- };
-
- InputData.prototype.addOptions = function (_, $options) {
- var options = $.map($options, function ($option) {
- return Utils.GetData($option[0], 'data');
- });
-
- this._currentData.push.apply(this._currentData, options);
- };
-
- return InputData;
-});
-
-S2.define('select2/compat/matcher',[
- 'jquery'
-], function ($) {
- function oldMatcher (matcher) {
- function wrappedMatcher (params, data) {
- var match = $.extend(true, {}, data);
-
- if (params.term == null || $.trim(params.term) === '') {
- return match;
- }
-
- if (data.children) {
- for (var c = data.children.length - 1; c >= 0; c--) {
- var child = data.children[c];
-
- // Check if the child object matches
- // The old matcher returned a boolean true or false
- var doesMatch = matcher(params.term, child.text, child);
-
- // If the child didn't match, pop it off
- if (!doesMatch) {
- match.children.splice(c, 1);
- }
- }
-
- if (match.children.length > 0) {
- return match;
- }
- }
-
- if (matcher(params.term, data.text, data)) {
- return match;
- }
-
- return null;
- }
-
- return wrappedMatcher;
- }
-
- return oldMatcher;
-});
-
-S2.define('select2/compat/query',[
-
-], function () {
- function Query (decorated, $element, options) {
- if (options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `query` option has been deprecated in favor of a ' +
- 'custom data adapter that overrides the `query` method. Support ' +
- 'will be removed for the `query` option in future versions of ' +
- 'Select2.'
- );
- }
-
- decorated.call(this, $element, options);
- }
-
- Query.prototype.query = function (_, params, callback) {
- params.callback = callback;
-
- var query = this.options.get('query');
-
- query.call(null, params);
- };
-
- return Query;
-});
-
-S2.define('select2/dropdown/attachContainer',[
-
-], function () {
- function AttachContainer (decorated, $element, options) {
- decorated.call(this, $element, options);
- }
-
- AttachContainer.prototype.position =
- function (decorated, $dropdown, $container) {
- var $dropdownContainer = $container.find('.dropdown-wrapper');
- $dropdownContainer.append($dropdown);
-
- $dropdown.addClass('select2-dropdown--below');
- $container.addClass('select2-container--below');
- };
-
- return AttachContainer;
-});
-
-S2.define('select2/dropdown/stopPropagation',[
-
-], function () {
- function StopPropagation () { }
-
- StopPropagation.prototype.bind = function (decorated, container, $container) {
- decorated.call(this, container, $container);
-
- var stoppedEvents = [
- 'blur',
- 'change',
- 'click',
- 'dblclick',
- 'focus',
- 'focusin',
- 'focusout',
- 'input',
- 'keydown',
- 'keyup',
- 'keypress',
- 'mousedown',
- 'mouseenter',
- 'mouseleave',
- 'mousemove',
- 'mouseover',
- 'mouseup',
- 'search',
- 'touchend',
- 'touchstart'
- ];
-
- this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
- evt.stopPropagation();
- });
- };
-
- return StopPropagation;
-});
-
-S2.define('select2/selection/stopPropagation',[
-
-], function () {
- function StopPropagation () { }
-
- StopPropagation.prototype.bind = function (decorated, container, $container) {
- decorated.call(this, container, $container);
-
- var stoppedEvents = [
- 'blur',
- 'change',
- 'click',
- 'dblclick',
- 'focus',
- 'focusin',
- 'focusout',
- 'input',
- 'keydown',
- 'keyup',
- 'keypress',
- 'mousedown',
- 'mouseenter',
- 'mouseleave',
- 'mousemove',
- 'mouseover',
- 'mouseup',
- 'search',
- 'touchend',
- 'touchstart'
- ];
-
- this.$selection.on(stoppedEvents.join(' '), function (evt) {
- evt.stopPropagation();
- });
- };
-
- return StopPropagation;
-});
-
-/*!
- * jQuery Mousewheel 3.1.13
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- */
-
-(function (factory) {
- if ( typeof S2.define === 'function' && S2.define.amd ) {
- // AMD. Register as an anonymous module.
- S2.define('jquery-mousewheel',['jquery'], factory);
- } else if (typeof exports === 'object') {
- // Node/CommonJS style for Browserify
- module.exports = factory;
- } else {
- // Browser globals
- factory(jQuery);
- }
-}(function ($) {
-
- var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
- toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
- ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
- slice = Array.prototype.slice,
- nullLowestDeltaTimeout, lowestDelta;
-
- if ( $.event.fixHooks ) {
- for ( var i = toFix.length; i; ) {
- $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
- }
- }
-
- var special = $.event.special.mousewheel = {
- version: '3.1.12',
-
- setup: function() {
- if ( this.addEventListener ) {
- for ( var i = toBind.length; i; ) {
- this.addEventListener( toBind[--i], handler, false );
- }
- } else {
- this.onmousewheel = handler;
- }
- // Store the line height and page height for this particular element
- $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
- $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
- },
-
- teardown: function() {
- if ( this.removeEventListener ) {
- for ( var i = toBind.length; i; ) {
- this.removeEventListener( toBind[--i], handler, false );
- }
- } else {
- this.onmousewheel = null;
- }
- // Clean up the data we added to the element
- $.removeData(this, 'mousewheel-line-height');
- $.removeData(this, 'mousewheel-page-height');
- },
-
- getLineHeight: function(elem) {
- var $elem = $(elem),
- $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
- if (!$parent.length) {
- $parent = $('body');
- }
- return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
- },
-
- getPageHeight: function(elem) {
- return $(elem).height();
- },
-
- settings: {
- adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
- normalizeOffset: true // calls getBoundingClientRect for each event
- }
- };
-
- $.fn.extend({
- mousewheel: function(fn) {
- return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
- },
-
- unmousewheel: function(fn) {
- return this.unbind('mousewheel', fn);
- }
- });
-
-
- function handler(event) {
- var orgEvent = event || window.event,
- args = slice.call(arguments, 1),
- delta = 0,
- deltaX = 0,
- deltaY = 0,
- absDelta = 0,
- offsetX = 0,
- offsetY = 0;
- event = $.event.fix(orgEvent);
- event.type = 'mousewheel';
-
- // Old school scrollwheel delta
- if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
- if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
- if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
- if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
-
- // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
- if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
- deltaX = deltaY * -1;
- deltaY = 0;
- }
-
- // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
- delta = deltaY === 0 ? deltaX : deltaY;
-
- // New school wheel delta (wheel event)
- if ( 'deltaY' in orgEvent ) {
- deltaY = orgEvent.deltaY * -1;
- delta = deltaY;
- }
- if ( 'deltaX' in orgEvent ) {
- deltaX = orgEvent.deltaX;
- if ( deltaY === 0 ) { delta = deltaX * -1; }
- }
-
- // No change actually happened, no reason to go any further
- if ( deltaY === 0 && deltaX === 0 ) { return; }
-
- // Need to convert lines and pages to pixels if we aren't already in pixels
- // There are three delta modes:
- // * deltaMode 0 is by pixels, nothing to do
- // * deltaMode 1 is by lines
- // * deltaMode 2 is by pages
- if ( orgEvent.deltaMode === 1 ) {
- var lineHeight = $.data(this, 'mousewheel-line-height');
- delta *= lineHeight;
- deltaY *= lineHeight;
- deltaX *= lineHeight;
- } else if ( orgEvent.deltaMode === 2 ) {
- var pageHeight = $.data(this, 'mousewheel-page-height');
- delta *= pageHeight;
- deltaY *= pageHeight;
- deltaX *= pageHeight;
- }
-
- // Store lowest absolute delta to normalize the delta values
- absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
-
- if ( !lowestDelta || absDelta < lowestDelta ) {
- lowestDelta = absDelta;
-
- // Adjust older deltas if necessary
- if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
- lowestDelta /= 40;
- }
- }
-
- // Adjust older deltas if necessary
- if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
- // Divide all the things by 40!
- delta /= 40;
- deltaX /= 40;
- deltaY /= 40;
- }
-
- // Get a whole, normalized value for the deltas
- delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
- deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
- deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
-
- // Normalise offsetX and offsetY properties
- if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
- var boundingRect = this.getBoundingClientRect();
- offsetX = event.clientX - boundingRect.left;
- offsetY = event.clientY - boundingRect.top;
- }
-
- // Add information to the event object
- event.deltaX = deltaX;
- event.deltaY = deltaY;
- event.deltaFactor = lowestDelta;
- event.offsetX = offsetX;
- event.offsetY = offsetY;
- // Go ahead and set deltaMode to 0 since we converted to pixels
- // Although this is a little odd since we overwrite the deltaX/Y
- // properties with normalized deltas.
- event.deltaMode = 0;
-
- // Add event and delta to the front of the arguments
- args.unshift(event, delta, deltaX, deltaY);
-
- // Clearout lowestDelta after sometime to better
- // handle multiple device types that give different
- // a different lowestDelta
- // Ex: trackpad = 3 and mouse wheel = 120
- if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
- nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
-
- return ($.event.dispatch || $.event.handle).apply(this, args);
- }
-
- function nullLowestDelta() {
- lowestDelta = null;
- }
-
- function shouldAdjustOldDeltas(orgEvent, absDelta) {
- // If this is an older event and the delta is divisable by 120,
- // then we are assuming that the browser is treating this as an
- // older mouse wheel event and that we should divide the deltas
- // by 40 to try and get a more usable deltaFactor.
- // Side note, this actually impacts the reported scroll distance
- // in older browsers and can cause scrolling to be slower than native.
- // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
- return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
- }
-
-}));
-
-S2.define('jquery.select2',[
- 'jquery',
- 'jquery-mousewheel',
-
- './select2/core',
- './select2/defaults',
- './select2/utils'
-], function ($, _, Select2, Defaults, Utils) {
- if ($.fn.pp_select2 == null) {
- // All methods that should return the element
- var thisMethods = ['open', 'close', 'destroy'];
-
- $.fn.pp_select2 = function (options) {
- options = options || {};
-
- if (typeof options === 'object') {
- this.each(function () {
- var instanceOptions = $.extend(true, {}, options);
-
- var instance = new Select2($(this), instanceOptions);
- });
-
- return this;
- } else if (typeof options === 'string') {
- var ret;
- var args = Array.prototype.slice.call(arguments, 1);
-
- this.each(function () {
- var instance = Utils.GetData(this, 'select2');
-
- if (instance == null && window.console && console.error) {
- console.error(
- 'The select2(\'' + options + '\') method was called on an ' +
- 'element that is not using Select2.'
- );
- }
-
- ret = instance[options].apply(instance, args);
- });
-
- // Check if we should be returning `this`
- if ($.inArray(options, thisMethods) > -1) {
- return this;
- }
-
- return ret;
- } else {
- throw new Error('Invalid arguments for Select2: ' + options);
- }
- };
- }
-
- if ($.fn.pp_select2.defaults == null) {
- $.fn.pp_select2.defaults = Defaults;
- }
-
- return Select2;
-});
-
- // Return the AMD loader configuration so it can be used outside of this file
- return {
- define: S2.define,
- require: S2.require
- };
-}());
-
- // Autoload the jQuery bindings
- // We know that all of the modules exist above this, so we're safe
- var select2 = S2.require('jquery.select2');
-
- // Hold the AMD module references on the jQuery function that was just loaded
- // This allows Select2 to use the internal loader outside of this file, such
- // as in the language files.
- jQuery.fn.pp_select2.amd = S2;
-
- // Return the Select2 instance for anyone who is importing it.
- return select2;
-}));
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.min.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.min.js
deleted file mode 100644
index d8e9af2b2..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.full.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
- * Select2 4.0.7 - modified by OSTraining.
- * https://select2.github.io
- *
- * Released under the MIT license
- * https://github.com/select2/select2/blob/master/LICENSE.md
- *
- * Changelog:
- *
- * [2019-06-24] - Refactored jQuery.fn.select2 to jQuery.fn.pp_select2 to avoid conflict with 3rd party plugins that load legacy versions of this library;
- */
-!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.pp_select2&&d.fn.pp_select2.amd)var e=d.fn.pp_select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t]},r}),e.define("select2/results",["jquery","./utils"],function(p,h){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return h.Extend(i,h.Observable),i.prototype.render=function(){var e=p('');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=p(' '),i=this.options.get("translations").get(e.message);n.append(t(i(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});d.append(a),o.append(s),o.append(d)}else this.template(e,t);return h.StoreData(t,"data",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=h.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):rthis.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),r=n(e,t);null==r?t.style.display="none":"string"==typeof r?t.innerHTML=i(r):p(t).append(r)},i}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n(' ');return this._tabindex=0,null!=i.GetData(this.$element[0],"old-tabindex")?this._tabindex=i.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=(e.id,e.id+"-results");this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===r.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",i),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),window.setTimeout(function(){n.$selection.focus()},0),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex)}),e.on("disable",function(){n.$selection.attr("tabindex","-1")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){n(this);this!=t[0]&&i.GetData(this,"element").pp_select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(' '),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.focus()})},r.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return e(" ")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),i=this.display(t,n);n.empty().append(i),n.attr("title",t.title||t.text)}else this.clear()},r}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(r,e,a){function n(e,t){n.__super__.constructor.apply(this,arguments)}return a.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html(''),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!i.options.get("disabled")){var t=r(this).parent(),n=a.GetData(t[0],"data");i.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return r('× ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(i[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(i)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(i,s,a){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i(' ');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){i.$search.attr("aria-activedescendant",e.id)}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===a.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.query=function(n,i,r){var o=this;this.current(function(e){var t=null!=e?e.length:0;0=o.maximumSelectionLength?o.trigger("results:message",{message:"maximumSelected",args:{maximum:o.maximumSelectionLength}}):n.call(o,i,r)})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t(' ');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(r,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=r(' ');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){r(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.focus(),window.setTimeout(function(){i.$search.focus()},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.val(""),i.$search.blur()}),t.on("focus",function(){t.isOpen()||i.$search.focus()}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(r){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&this.$results.append(this.$loadingMore)},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",function(){var e=r.contains(document.documentElement,i.$loadingMore[0]);if(!i.loading&&e){var t=i.$results.offset().top+i.$results.outerHeight(!1);i.$loadingMore.offset().top+i.$loadingMore.outerHeight(!1)<=t+50&&i.loadMore()}})},e.prototype.loadMore=function(){this.loading=!0;var e=r.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=r(' '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=n.get("dropdownParent")||f(document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this,r=!1;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),r||(r=!0,t.on("results:all",function(){i._positionDropdown(),i._resizeDropdown()}),t.on("results:append",function(){i._positionDropdown(),i._resizeDropdown()}))}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(" "),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.select2."+t.id,r="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ar.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h=p.offset();d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i ');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("select2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("select2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("select2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("select2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `` element instead."),e.call(this,t,n)}return e.prototype.current=function(e,t){function i(e,t){var n=[];return e.selected||-1!==s.inArray(e.id,t)?(e.selected=!0,n.push(e)):e.selected=!1,e.children&&n.push.apply(n,i(e.children,t)),n}for(var n=[],r=0;r 0) {
- name.splice(i - 1, 2);
- i -= 2;
- }
- }
- }
- //end trimDots
-
- name = name.join('/');
- }
-
- //Apply map config if available.
- if ((baseParts || starMap) && map) {
- nameParts = name.split('/');
-
- for (i = nameParts.length; i > 0; i -= 1) {
- nameSegment = nameParts.slice(0, i).join("/");
-
- if (baseParts) {
- //Find the longest baseName segment match in the config.
- //So, do joins on the biggest to smallest lengths of baseParts.
- for (j = baseParts.length; j > 0; j -= 1) {
- mapValue = map[baseParts.slice(0, j).join('/')];
-
- //baseName segment has config, find if it has one for
- //this name.
- if (mapValue) {
- mapValue = mapValue[nameSegment];
- if (mapValue) {
- //Match, update name to the new value.
- foundMap = mapValue;
- foundI = i;
- break;
- }
- }
- }
- }
-
- if (foundMap) {
- break;
- }
-
- //Check for a star map match, but just hold on to it,
- //if there is a shorter segment match later in a matching
- //config, then favor over this star map.
- if (!foundStarMap && starMap && starMap[nameSegment]) {
- foundStarMap = starMap[nameSegment];
- starI = i;
- }
- }
-
- if (!foundMap && foundStarMap) {
- foundMap = foundStarMap;
- foundI = starI;
- }
-
- if (foundMap) {
- nameParts.splice(0, foundI, foundMap);
- name = nameParts.join('/');
- }
- }
-
- return name;
- }
-
- function makeRequire(relName, forceSync) {
- return function () {
- //A version of a require function that passes a moduleName
- //value for items that may need to
- //look up paths relative to the moduleName
- var args = aps.call(arguments, 0);
-
- //If first arg is not require('string'), and there is only
- //one arg, it is the array form without a callback. Insert
- //a null so that the following concat is correct.
- if (typeof args[0] !== 'string' && args.length === 1) {
- args.push(null);
- }
- return req.apply(undef, args.concat([relName, forceSync]));
- };
- }
-
- function makeNormalize(relName) {
- return function (name) {
- return normalize(name, relName);
- };
- }
-
- function makeLoad(depName) {
- return function (value) {
- defined[depName] = value;
- };
- }
-
- function callDep(name) {
- if (hasProp(waiting, name)) {
- var args = waiting[name];
- delete waiting[name];
- defining[name] = true;
- main.apply(undef, args);
- }
-
- if (!hasProp(defined, name) && !hasProp(defining, name)) {
- throw new Error('No ' + name);
- }
- return defined[name];
- }
-
- //Turns a plugin!resource to [plugin, resource]
- //with the plugin being undefined if the name
- //did not have a plugin prefix.
- function splitPrefix(name) {
- var prefix,
- index = name ? name.indexOf('!') : -1;
- if (index > -1) {
- prefix = name.substring(0, index);
- name = name.substring(index + 1, name.length);
- }
- return [prefix, name];
- }
-
- //Creates a parts array for a relName where first part is plugin ID,
- //second part is resource ID. Assumes relName has already been normalized.
- function makeRelParts(relName) {
- return relName ? splitPrefix(relName) : [];
- }
-
- /**
- * Makes a name map, normalizing the name, and using a plugin
- * for normalization if necessary. Grabs a ref to plugin
- * too, as an optimization.
- */
- makeMap = function (name, relParts) {
- var plugin,
- parts = splitPrefix(name),
- prefix = parts[0],
- relResourceName = relParts[1];
-
- name = parts[1];
-
- if (prefix) {
- prefix = normalize(prefix, relResourceName);
- plugin = callDep(prefix);
- }
-
- //Normalize according
- if (prefix) {
- if (plugin && plugin.normalize) {
- name = plugin.normalize(name, makeNormalize(relResourceName));
- } else {
- name = normalize(name, relResourceName);
- }
- } else {
- name = normalize(name, relResourceName);
- parts = splitPrefix(name);
- prefix = parts[0];
- name = parts[1];
- if (prefix) {
- plugin = callDep(prefix);
- }
- }
-
- //Using ridiculous property names for space reasons
- return {
- f: prefix ? prefix + '!' + name : name, //fullName
- n: name,
- pr: prefix,
- p: plugin
- };
- };
-
- function makeConfig(name) {
- return function () {
- return (config && config.config && config.config[name]) || {};
- };
- }
-
- handlers = {
- require: function (name) {
- return makeRequire(name);
- },
- exports: function (name) {
- var e = defined[name];
- if (typeof e !== 'undefined') {
- return e;
- } else {
- return (defined[name] = {});
- }
- },
- module: function (name) {
- return {
- id: name,
- uri: '',
- exports: defined[name],
- config: makeConfig(name)
- };
- }
- };
-
- main = function (name, deps, callback, relName) {
- var cjsModule, depName, ret, map, i, relParts,
- args = [],
- callbackType = typeof callback,
- usingExports;
-
- //Use name if no relName
- relName = relName || name;
- relParts = makeRelParts(relName);
-
- //Call the callback to define the module, if necessary.
- if (callbackType === 'undefined' || callbackType === 'function') {
- //Pull out the defined dependencies and pass the ordered
- //values to the callback.
- //Default to [require, exports, module] if no deps
- deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
- for (i = 0; i < deps.length; i += 1) {
- map = makeMap(deps[i], relParts);
- depName = map.f;
-
- //Fast path CommonJS standard dependencies.
- if (depName === "require") {
- args[i] = handlers.require(name);
- } else if (depName === "exports") {
- //CommonJS module spec 1.1
- args[i] = handlers.exports(name);
- usingExports = true;
- } else if (depName === "module") {
- //CommonJS module spec 1.1
- cjsModule = args[i] = handlers.module(name);
- } else if (hasProp(defined, depName) ||
- hasProp(waiting, depName) ||
- hasProp(defining, depName)) {
- args[i] = callDep(depName);
- } else if (map.p) {
- map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
- args[i] = defined[depName];
- } else {
- throw new Error(name + ' missing ' + depName);
- }
- }
-
- ret = callback ? callback.apply(defined[name], args) : undefined;
-
- if (name) {
- //If setting exports via "module" is in play,
- //favor that over return value and exports. After that,
- //favor a non-undefined return value over exports use.
- if (cjsModule && cjsModule.exports !== undef &&
- cjsModule.exports !== defined[name]) {
- defined[name] = cjsModule.exports;
- } else if (ret !== undef || !usingExports) {
- //Use the return value from the function.
- defined[name] = ret;
- }
- }
- } else if (name) {
- //May just be an object definition for the module. Only
- //worry about defining if have a module name.
- defined[name] = callback;
- }
- };
-
- requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
- if (typeof deps === "string") {
- if (handlers[deps]) {
- //callback in this case is really relName
- return handlers[deps](callback);
- }
- //Just return the module wanted. In this scenario, the
- //deps arg is the module name, and second arg (if passed)
- //is just the relName.
- //Normalize module name, if it contains . or ..
- return callDep(makeMap(deps, makeRelParts(callback)).f);
- } else if (!deps.splice) {
- //deps is a config object, not an array.
- config = deps;
- if (config.deps) {
- req(config.deps, config.callback);
- }
- if (!callback) {
- return;
- }
-
- if (callback.splice) {
- //callback is an array, which means it is a dependency list.
- //Adjust args if there are dependencies
- deps = callback;
- callback = relName;
- relName = null;
- } else {
- deps = undef;
- }
- }
-
- //Support require(['a'])
- callback = callback || function () {};
-
- //If relName is a function, it is an errback handler,
- //so remove it.
- if (typeof relName === 'function') {
- relName = forceSync;
- forceSync = alt;
- }
-
- //Simulate async callback;
- if (forceSync) {
- main(undef, deps, callback, relName);
- } else {
- //Using a non-zero value because of concern for what old browsers
- //do, and latest browsers "upgrade" to 4 if lower value is used:
- //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
- //If want a value immediately, use require('id') instead -- something
- //that works in almond on the global level, but not guaranteed and
- //unlikely to work in other AMD implementations.
- setTimeout(function () {
- main(undef, deps, callback, relName);
- }, 4);
- }
-
- return req;
- };
-
- /**
- * Just drops the config on the floor, but returns req in case
- * the config return value is used.
- */
- req.config = function (cfg) {
- return req(cfg);
- };
-
- /**
- * Expose module registry for debugging and tooling
- */
- requirejs._defined = defined;
-
- define = function (name, deps, callback) {
- if (typeof name !== 'string') {
- throw new Error('See almond README: incorrect module build, no module name');
- }
-
- //This module may not have dependencies
- if (!deps.splice) {
- //deps is not an array, so probably means
- //an object literal or factory function for
- //the value. Adjust args.
- callback = deps;
- deps = [];
- }
-
- if (!hasProp(defined, name) && !hasProp(waiting, name)) {
- waiting[name] = [name, deps, callback];
- }
- };
-
- define.amd = {
- jQuery: true
- };
-}());
-
-S2.requirejs = requirejs;S2.require = require;S2.define = define;
-}
-}());
-S2.define("almond", function(){});
-
-/* global jQuery:false, $:false */
-S2.define('jquery',[],function () {
- var _$ = jQuery || $;
-
- if (_$ == null && console && console.error) {
- console.error(
- 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
- 'found. Make sure that you are including jQuery before Select2 on your ' +
- 'web page.'
- );
- }
-
- return _$;
-});
-
-S2.define('select2/utils',[
- 'jquery'
-], function ($) {
- var Utils = {};
-
- Utils.Extend = function (ChildClass, SuperClass) {
- var __hasProp = {}.hasOwnProperty;
-
- function BaseConstructor () {
- this.constructor = ChildClass;
- }
-
- for (var key in SuperClass) {
- if (__hasProp.call(SuperClass, key)) {
- ChildClass[key] = SuperClass[key];
- }
- }
-
- BaseConstructor.prototype = SuperClass.prototype;
- ChildClass.prototype = new BaseConstructor();
- ChildClass.__super__ = SuperClass.prototype;
-
- return ChildClass;
- };
-
- function getMethods (theClass) {
- var proto = theClass.prototype;
-
- var methods = [];
-
- for (var methodName in proto) {
- var m = proto[methodName];
-
- if (typeof m !== 'function') {
- continue;
- }
-
- if (methodName === 'constructor') {
- continue;
- }
-
- methods.push(methodName);
- }
-
- return methods;
- }
-
- Utils.Decorate = function (SuperClass, DecoratorClass) {
- var decoratedMethods = getMethods(DecoratorClass);
- var superMethods = getMethods(SuperClass);
-
- function DecoratedClass () {
- var unshift = Array.prototype.unshift;
-
- var argCount = DecoratorClass.prototype.constructor.length;
-
- var calledConstructor = SuperClass.prototype.constructor;
-
- if (argCount > 0) {
- unshift.call(arguments, SuperClass.prototype.constructor);
-
- calledConstructor = DecoratorClass.prototype.constructor;
- }
-
- calledConstructor.apply(this, arguments);
- }
-
- DecoratorClass.displayName = SuperClass.displayName;
-
- function ctr () {
- this.constructor = DecoratedClass;
- }
-
- DecoratedClass.prototype = new ctr();
-
- for (var m = 0; m < superMethods.length; m++) {
- var superMethod = superMethods[m];
-
- DecoratedClass.prototype[superMethod] =
- SuperClass.prototype[superMethod];
- }
-
- var calledMethod = function (methodName) {
- // Stub out the original method if it's not decorating an actual method
- var originalMethod = function () {};
-
- if (methodName in DecoratedClass.prototype) {
- originalMethod = DecoratedClass.prototype[methodName];
- }
-
- var decoratedMethod = DecoratorClass.prototype[methodName];
-
- return function () {
- var unshift = Array.prototype.unshift;
-
- unshift.call(arguments, originalMethod);
-
- return decoratedMethod.apply(this, arguments);
- };
- };
-
- for (var d = 0; d < decoratedMethods.length; d++) {
- var decoratedMethod = decoratedMethods[d];
-
- DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
- }
-
- return DecoratedClass;
- };
-
- var Observable = function () {
- this.listeners = {};
- };
-
- Observable.prototype.on = function (event, callback) {
- this.listeners = this.listeners || {};
-
- if (event in this.listeners) {
- this.listeners[event].push(callback);
- } else {
- this.listeners[event] = [callback];
- }
- };
-
- Observable.prototype.trigger = function (event) {
- var slice = Array.prototype.slice;
- var params = slice.call(arguments, 1);
-
- this.listeners = this.listeners || {};
-
- // Params should always come in as an array
- if (params == null) {
- params = [];
- }
-
- // If there are no arguments to the event, use a temporary object
- if (params.length === 0) {
- params.push({});
- }
-
- // Set the `_type` of the first object to the event
- params[0]._type = event;
-
- if (event in this.listeners) {
- this.invoke(this.listeners[event], slice.call(arguments, 1));
- }
-
- if ('*' in this.listeners) {
- this.invoke(this.listeners['*'], arguments);
- }
- };
-
- Observable.prototype.invoke = function (listeners, params) {
- for (var i = 0, len = listeners.length; i < len; i++) {
- listeners[i].apply(this, params);
- }
- };
-
- Utils.Observable = Observable;
-
- Utils.generateChars = function (length) {
- var chars = '';
-
- for (var i = 0; i < length; i++) {
- var randomChar = Math.floor(Math.random() * 36);
- chars += randomChar.toString(36);
- }
-
- return chars;
- };
-
- Utils.bind = function (func, context) {
- return function () {
- func.apply(context, arguments);
- };
- };
-
- Utils._convertData = function (data) {
- for (var originalKey in data) {
- var keys = originalKey.split('-');
-
- var dataLevel = data;
-
- if (keys.length === 1) {
- continue;
- }
-
- for (var k = 0; k < keys.length; k++) {
- var key = keys[k];
-
- // Lowercase the first letter
- // By default, dash-separated becomes camelCase
- key = key.substring(0, 1).toLowerCase() + key.substring(1);
-
- if (!(key in dataLevel)) {
- dataLevel[key] = {};
- }
-
- if (k == keys.length - 1) {
- dataLevel[key] = data[originalKey];
- }
-
- dataLevel = dataLevel[key];
- }
-
- delete data[originalKey];
- }
-
- return data;
- };
-
- Utils.hasScroll = function (index, el) {
- // Adapted from the function created by @ShadowScripter
- // and adapted by @BillBarry on the Stack Exchange Code Review website.
- // The original code can be found at
- // http://codereview.stackexchange.com/q/13338
- // and was designed to be used with the Sizzle selector engine.
-
- var $el = $(el);
- var overflowX = el.style.overflowX;
- var overflowY = el.style.overflowY;
-
- //Check both x and y declarations
- if (overflowX === overflowY &&
- (overflowY === 'hidden' || overflowY === 'visible')) {
- return false;
- }
-
- if (overflowX === 'scroll' || overflowY === 'scroll') {
- return true;
- }
-
- return ($el.innerHeight() < el.scrollHeight ||
- $el.innerWidth() < el.scrollWidth);
- };
-
- Utils.escapeMarkup = function (markup) {
- var replaceMap = {
- '\\': '\',
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- '\'': ''',
- '/': '/'
- };
-
- // Do not try to escape the markup if it's not a string
- if (typeof markup !== 'string') {
- return markup;
- }
-
- return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
- return replaceMap[match];
- });
- };
-
- // Append an array of jQuery nodes to a given element.
- Utils.appendMany = function ($element, $nodes) {
- // jQuery 1.7.x does not support $.fn.append() with an array
- // Fall back to a jQuery object collection using $.fn.add()
- if ($.fn.jquery.substr(0, 3) === '1.7') {
- var $jqNodes = $();
-
- $.map($nodes, function (node) {
- $jqNodes = $jqNodes.add(node);
- });
-
- $nodes = $jqNodes;
- }
-
- $element.append($nodes);
- };
-
- // Cache objects in Utils.__cache instead of $.data (see #4346)
- Utils.__cache = {};
-
- var id = 0;
- Utils.GetUniqueElementId = function (element) {
- // Get a unique element Id. If element has no id,
- // creates a new unique number, stores it in the id
- // attribute and returns the new id.
- // If an id already exists, it simply returns it.
-
- var select2Id = element.getAttribute('data-select2-id');
- if (select2Id == null) {
- // If element has id, use it.
- if (element.id) {
- select2Id = element.id;
- element.setAttribute('data-select2-id', select2Id);
- } else {
- element.setAttribute('data-select2-id', ++id);
- select2Id = id.toString();
- }
- }
- return select2Id;
- };
-
- Utils.StoreData = function (element, name, value) {
- // Stores an item in the cache for a specified element.
- // name is the cache key.
- var id = Utils.GetUniqueElementId(element);
- if (!Utils.__cache[id]) {
- Utils.__cache[id] = {};
- }
-
- Utils.__cache[id][name] = value;
- };
-
- Utils.GetData = function (element, name) {
- // Retrieves a value from the cache by its key (name)
- // name is optional. If no name specified, return
- // all cache items for the specified element.
- // and for a specified element.
- var id = Utils.GetUniqueElementId(element);
- if (name) {
- if (Utils.__cache[id]) {
- if (Utils.__cache[id][name] != null) {
- return Utils.__cache[id][name];
- }
- return $(element).data(name); // Fallback to HTML5 data attribs.
- }
- return $(element).data(name); // Fallback to HTML5 data attribs.
- } else {
- return Utils.__cache[id];
- }
- };
-
- Utils.RemoveData = function (element) {
- // Removes all cached items for a specified element.
- var id = Utils.GetUniqueElementId(element);
- if (Utils.__cache[id] != null) {
- delete Utils.__cache[id];
- }
- };
-
- return Utils;
-});
-
-S2.define('select2/results',[
- 'jquery',
- './utils'
-], function ($, Utils) {
- function Results ($element, options, dataAdapter) {
- this.$element = $element;
- this.data = dataAdapter;
- this.options = options;
-
- Results.__super__.constructor.call(this);
- }
-
- Utils.Extend(Results, Utils.Observable);
-
- Results.prototype.render = function () {
- var $results = $(
- ''
- );
-
- if (this.options.get('multiple')) {
- $results.attr('aria-multiselectable', 'true');
- }
-
- this.$results = $results;
-
- return $results;
- };
-
- Results.prototype.clear = function () {
- this.$results.empty();
- };
-
- Results.prototype.displayMessage = function (params) {
- var escapeMarkup = this.options.get('escapeMarkup');
-
- this.clear();
- this.hideLoading();
-
- var $message = $(
- ' '
- );
-
- var message = this.options.get('translations').get(params.message);
-
- $message.append(
- escapeMarkup(
- message(params.args)
- )
- );
-
- $message[0].className += ' select2-results__message';
-
- this.$results.append($message);
- };
-
- Results.prototype.hideMessages = function () {
- this.$results.find('.select2-results__message').remove();
- };
-
- Results.prototype.append = function (data) {
- this.hideLoading();
-
- var $options = [];
-
- if (data.results == null || data.results.length === 0) {
- if (this.$results.children().length === 0) {
- this.trigger('results:message', {
- message: 'noResults'
- });
- }
-
- return;
- }
-
- data.results = this.sort(data.results);
-
- for (var d = 0; d < data.results.length; d++) {
- var item = data.results[d];
-
- var $option = this.option(item);
-
- $options.push($option);
- }
-
- this.$results.append($options);
- };
-
- Results.prototype.position = function ($results, $dropdown) {
- var $resultsContainer = $dropdown.find('.select2-results');
- $resultsContainer.append($results);
- };
-
- Results.prototype.sort = function (data) {
- var sorter = this.options.get('sorter');
-
- return sorter(data);
- };
-
- Results.prototype.highlightFirstItem = function () {
- var $options = this.$results
- .find('.select2-results__option[aria-selected]');
-
- var $selected = $options.filter('[aria-selected=true]');
-
- // Check if there are any selected options
- if ($selected.length > 0) {
- // If there are selected options, highlight the first
- $selected.first().trigger('mouseenter');
- } else {
- // If there are no selected options, highlight the first option
- // in the dropdown
- $options.first().trigger('mouseenter');
- }
-
- this.ensureHighlightVisible();
- };
-
- Results.prototype.setClasses = function () {
- var self = this;
-
- this.data.current(function (selected) {
- var selectedIds = $.map(selected, function (s) {
- return s.id.toString();
- });
-
- var $options = self.$results
- .find('.select2-results__option[aria-selected]');
-
- $options.each(function () {
- var $option = $(this);
-
- var item = Utils.GetData(this, 'data');
-
- // id needs to be converted to a string when comparing
- var id = '' + item.id;
-
- if ((item.element != null && item.element.selected) ||
- (item.element == null && $.inArray(id, selectedIds) > -1)) {
- $option.attr('aria-selected', 'true');
- } else {
- $option.attr('aria-selected', 'false');
- }
- });
-
- });
- };
-
- Results.prototype.showLoading = function (params) {
- this.hideLoading();
-
- var loadingMore = this.options.get('translations').get('searching');
-
- var loading = {
- disabled: true,
- loading: true,
- text: loadingMore(params)
- };
- var $loading = this.option(loading);
- $loading.className += ' loading-results';
-
- this.$results.prepend($loading);
- };
-
- Results.prototype.hideLoading = function () {
- this.$results.find('.loading-results').remove();
- };
-
- Results.prototype.option = function (data) {
- var option = document.createElement('li');
- option.className = 'select2-results__option';
-
- var attrs = {
- 'role': 'treeitem',
- 'aria-selected': 'false'
- };
-
- if (data.disabled) {
- delete attrs['aria-selected'];
- attrs['aria-disabled'] = 'true';
- }
-
- if (data.id == null) {
- delete attrs['aria-selected'];
- }
-
- if (data._resultId != null) {
- option.id = data._resultId;
- }
-
- if (data.title) {
- option.title = data.title;
- }
-
- if (data.children) {
- attrs.role = 'group';
- attrs['aria-label'] = data.text;
- delete attrs['aria-selected'];
- }
-
- for (var attr in attrs) {
- var val = attrs[attr];
-
- option.setAttribute(attr, val);
- }
-
- if (data.children) {
- var $option = $(option);
-
- var label = document.createElement('strong');
- label.className = 'select2-results__group';
-
- var $label = $(label);
- this.template(data, label);
-
- var $children = [];
-
- for (var c = 0; c < data.children.length; c++) {
- var child = data.children[c];
-
- var $child = this.option(child);
-
- $children.push($child);
- }
-
- var $childrenContainer = $('', {
- 'class': 'select2-results__options select2-results__options--nested'
- });
-
- $childrenContainer.append($children);
-
- $option.append(label);
- $option.append($childrenContainer);
- } else {
- this.template(data, option);
- }
-
- Utils.StoreData(option, 'data', data);
-
- return option;
- };
-
- Results.prototype.bind = function (container, $container) {
- var self = this;
-
- var id = container.id + '-results';
-
- this.$results.attr('id', id);
-
- container.on('results:all', function (params) {
- self.clear();
- self.append(params.data);
-
- if (container.isOpen()) {
- self.setClasses();
- self.highlightFirstItem();
- }
- });
-
- container.on('results:append', function (params) {
- self.append(params.data);
-
- if (container.isOpen()) {
- self.setClasses();
- }
- });
-
- container.on('query', function (params) {
- self.hideMessages();
- self.showLoading(params);
- });
-
- container.on('select', function () {
- if (!container.isOpen()) {
- return;
- }
-
- self.setClasses();
-
- if (self.options.get('scrollAfterSelect')) {
- self.highlightFirstItem();
- }
- });
-
- container.on('unselect', function () {
- if (!container.isOpen()) {
- return;
- }
-
- self.setClasses();
-
- if (self.options.get('scrollAfterSelect')) {
- self.highlightFirstItem();
- }
- });
-
- container.on('open', function () {
- // When the dropdown is open, aria-expended="true"
- self.$results.attr('aria-expanded', 'true');
- self.$results.attr('aria-hidden', 'false');
-
- self.setClasses();
- self.ensureHighlightVisible();
- });
-
- container.on('close', function () {
- // When the dropdown is closed, aria-expended="false"
- self.$results.attr('aria-expanded', 'false');
- self.$results.attr('aria-hidden', 'true');
- self.$results.removeAttr('aria-activedescendant');
- });
-
- container.on('results:toggle', function () {
- var $highlighted = self.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- $highlighted.trigger('mouseup');
- });
-
- container.on('results:select', function () {
- var $highlighted = self.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- var data = Utils.GetData($highlighted[0], 'data');
-
- if ($highlighted.attr('aria-selected') == 'true') {
- self.trigger('close', {});
- } else {
- self.trigger('select', {
- data: data
- });
- }
- });
-
- container.on('results:previous', function () {
- var $highlighted = self.getHighlightedResults();
-
- var $options = self.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- // If we are already at the top, don't move further
- // If no options, currentIndex will be -1
- if (currentIndex <= 0) {
- return;
- }
-
- var nextIndex = currentIndex - 1;
-
- // If none are highlighted, highlight the first
- if ($highlighted.length === 0) {
- nextIndex = 0;
- }
-
- var $next = $options.eq(nextIndex);
-
- $next.trigger('mouseenter');
-
- var currentOffset = self.$results.offset().top;
- var nextTop = $next.offset().top;
- var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
-
- if (nextIndex === 0) {
- self.$results.scrollTop(0);
- } else if (nextTop - currentOffset < 0) {
- self.$results.scrollTop(nextOffset);
- }
- });
-
- container.on('results:next', function () {
- var $highlighted = self.getHighlightedResults();
-
- var $options = self.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- var nextIndex = currentIndex + 1;
-
- // If we are at the last option, stay there
- if (nextIndex >= $options.length) {
- return;
- }
-
- var $next = $options.eq(nextIndex);
-
- $next.trigger('mouseenter');
-
- var currentOffset = self.$results.offset().top +
- self.$results.outerHeight(false);
- var nextBottom = $next.offset().top + $next.outerHeight(false);
- var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
-
- if (nextIndex === 0) {
- self.$results.scrollTop(0);
- } else if (nextBottom > currentOffset) {
- self.$results.scrollTop(nextOffset);
- }
- });
-
- container.on('results:focus', function (params) {
- params.element.addClass('select2-results__option--highlighted');
- });
-
- container.on('results:message', function (params) {
- self.displayMessage(params);
- });
-
- if ($.fn.mousewheel) {
- this.$results.on('mousewheel', function (e) {
- var top = self.$results.scrollTop();
-
- var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
-
- var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
- var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
-
- if (isAtTop) {
- self.$results.scrollTop(0);
-
- e.preventDefault();
- e.stopPropagation();
- } else if (isAtBottom) {
- self.$results.scrollTop(
- self.$results.get(0).scrollHeight - self.$results.height()
- );
-
- e.preventDefault();
- e.stopPropagation();
- }
- });
- }
-
- this.$results.on('mouseup', '.select2-results__option[aria-selected]',
- function (evt) {
- var $this = $(this);
-
- var data = Utils.GetData(this, 'data');
-
- if ($this.attr('aria-selected') === 'true') {
- if (self.options.get('multiple')) {
- self.trigger('unselect', {
- originalEvent: evt,
- data: data
- });
- } else {
- self.trigger('close', {});
- }
-
- return;
- }
-
- self.trigger('select', {
- originalEvent: evt,
- data: data
- });
- });
-
- this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
- function (evt) {
- var data = Utils.GetData(this, 'data');
-
- self.getHighlightedResults()
- .removeClass('select2-results__option--highlighted');
-
- self.trigger('results:focus', {
- data: data,
- element: $(this)
- });
- });
- };
-
- Results.prototype.getHighlightedResults = function () {
- var $highlighted = this.$results
- .find('.select2-results__option--highlighted');
-
- return $highlighted;
- };
-
- Results.prototype.destroy = function () {
- this.$results.remove();
- };
-
- Results.prototype.ensureHighlightVisible = function () {
- var $highlighted = this.getHighlightedResults();
-
- if ($highlighted.length === 0) {
- return;
- }
-
- var $options = this.$results.find('[aria-selected]');
-
- var currentIndex = $options.index($highlighted);
-
- var currentOffset = this.$results.offset().top;
- var nextTop = $highlighted.offset().top;
- var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
-
- var offsetDelta = nextTop - currentOffset;
- nextOffset -= $highlighted.outerHeight(false) * 2;
-
- if (currentIndex <= 2) {
- this.$results.scrollTop(0);
- } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
- this.$results.scrollTop(nextOffset);
- }
- };
-
- Results.prototype.template = function (result, container) {
- var template = this.options.get('templateResult');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- var content = template(result, container);
-
- if (content == null) {
- container.style.display = 'none';
- } else if (typeof content === 'string') {
- container.innerHTML = escapeMarkup(content);
- } else {
- $(container).append(content);
- }
- };
-
- return Results;
-});
-
-S2.define('select2/keys',[
-
-], function () {
- var KEYS = {
- BACKSPACE: 8,
- TAB: 9,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- ESC: 27,
- SPACE: 32,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- END: 35,
- HOME: 36,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- DELETE: 46
- };
-
- return KEYS;
-});
-
-S2.define('select2/selection/base',[
- 'jquery',
- '../utils',
- '../keys'
-], function ($, Utils, KEYS) {
- function BaseSelection ($element, options) {
- this.$element = $element;
- this.options = options;
-
- BaseSelection.__super__.constructor.call(this);
- }
-
- Utils.Extend(BaseSelection, Utils.Observable);
-
- BaseSelection.prototype.render = function () {
- var $selection = $(
- '' +
- ' '
- );
-
- this._tabindex = 0;
-
- if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {
- this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');
- } else if (this.$element.attr('tabindex') != null) {
- this._tabindex = this.$element.attr('tabindex');
- }
-
- $selection.attr('title', this.$element.attr('title'));
- $selection.attr('tabindex', this._tabindex);
-
- this.$selection = $selection;
-
- return $selection;
- };
-
- BaseSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- var id = container.id + '-container';
- var resultsId = container.id + '-results';
-
- this.container = container;
-
- this.$selection.on('focus', function (evt) {
- self.trigger('focus', evt);
- });
-
- this.$selection.on('blur', function (evt) {
- self._handleBlur(evt);
- });
-
- this.$selection.on('keydown', function (evt) {
- self.trigger('keypress', evt);
-
- if (evt.which === KEYS.SPACE) {
- evt.preventDefault();
- }
- });
-
- container.on('results:focus', function (params) {
- self.$selection.attr('aria-activedescendant', params.data._resultId);
- });
-
- container.on('selection:update', function (params) {
- self.update(params.data);
- });
-
- container.on('open', function () {
- // When the dropdown is open, aria-expanded="true"
- self.$selection.attr('aria-expanded', 'true');
- self.$selection.attr('aria-owns', resultsId);
-
- self._attachCloseHandler(container);
- });
-
- container.on('close', function () {
- // When the dropdown is closed, aria-expanded="false"
- self.$selection.attr('aria-expanded', 'false');
- self.$selection.removeAttr('aria-activedescendant');
- self.$selection.removeAttr('aria-owns');
-
- window.setTimeout(function () {
- self.$selection.focus();
- }, 0);
-
- self._detachCloseHandler(container);
- });
-
- container.on('enable', function () {
- self.$selection.attr('tabindex', self._tabindex);
- });
-
- container.on('disable', function () {
- self.$selection.attr('tabindex', '-1');
- });
- };
-
- BaseSelection.prototype._handleBlur = function (evt) {
- var self = this;
-
- // This needs to be delayed as the active element is the body when the tab
- // key is pressed, possibly along with others.
- window.setTimeout(function () {
- // Don't trigger `blur` if the focus is still in the selection
- if (
- (document.activeElement == self.$selection[0]) ||
- ($.contains(self.$selection[0], document.activeElement))
- ) {
- return;
- }
-
- self.trigger('blur', evt);
- }, 1);
- };
-
- BaseSelection.prototype._attachCloseHandler = function (container) {
- var self = this;
-
- $(document.body).on('mousedown.select2.' + container.id, function (e) {
- var $target = $(e.target);
-
- var $select = $target.closest('.select2');
-
- var $all = $('.select2.select2-container--open');
-
- $all.each(function () {
- var $this = $(this);
-
- if (this == $select[0]) {
- return;
- }
-
- var $element = Utils.GetData(this, 'element');
-
- $element.pp_select2('close');
- });
- });
- };
-
- BaseSelection.prototype._detachCloseHandler = function (container) {
- $(document.body).off('mousedown.select2.' + container.id);
- };
-
- BaseSelection.prototype.position = function ($selection, $container) {
- var $selectionContainer = $container.find('.selection');
- $selectionContainer.append($selection);
- };
-
- BaseSelection.prototype.destroy = function () {
- this._detachCloseHandler(this.container);
- };
-
- BaseSelection.prototype.update = function (data) {
- throw new Error('The `update` method must be defined in child classes.');
- };
-
- return BaseSelection;
-});
-
-S2.define('select2/selection/single',[
- 'jquery',
- './base',
- '../utils',
- '../keys'
-], function ($, BaseSelection, Utils, KEYS) {
- function SingleSelection () {
- SingleSelection.__super__.constructor.apply(this, arguments);
- }
-
- Utils.Extend(SingleSelection, BaseSelection);
-
- SingleSelection.prototype.render = function () {
- var $selection = SingleSelection.__super__.render.call(this);
-
- $selection.addClass('select2-selection--single');
-
- $selection.html(
- ' ' +
- '' +
- ' ' +
- ' '
- );
-
- return $selection;
- };
-
- SingleSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- SingleSelection.__super__.bind.apply(this, arguments);
-
- var id = container.id + '-container';
-
- this.$selection.find('.select2-selection__rendered')
- .attr('id', id)
- .attr('role', 'textbox')
- .attr('aria-readonly', 'true');
- this.$selection.attr('aria-labelledby', id);
-
- this.$selection.on('mousedown', function (evt) {
- // Only respond to left clicks
- if (evt.which !== 1) {
- return;
- }
-
- self.trigger('toggle', {
- originalEvent: evt
- });
- });
-
- this.$selection.on('focus', function (evt) {
- // User focuses on the container
- });
-
- this.$selection.on('blur', function (evt) {
- // User exits the container
- });
-
- container.on('focus', function (evt) {
- if (!container.isOpen()) {
- self.$selection.focus();
- }
- });
- };
-
- SingleSelection.prototype.clear = function () {
- var $rendered = this.$selection.find('.select2-selection__rendered');
- $rendered.empty();
- $rendered.removeAttr('title'); // clear tooltip on empty
- };
-
- SingleSelection.prototype.display = function (data, container) {
- var template = this.options.get('templateSelection');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- return escapeMarkup(template(data, container));
- };
-
- SingleSelection.prototype.selectionContainer = function () {
- return $(' ');
- };
-
- SingleSelection.prototype.update = function (data) {
- if (data.length === 0) {
- this.clear();
- return;
- }
-
- var selection = data[0];
-
- var $rendered = this.$selection.find('.select2-selection__rendered');
- var formatted = this.display(selection, $rendered);
-
- $rendered.empty().append(formatted);
- $rendered.attr('title', selection.title || selection.text);
- };
-
- return SingleSelection;
-});
-
-S2.define('select2/selection/multiple',[
- 'jquery',
- './base',
- '../utils'
-], function ($, BaseSelection, Utils) {
- function MultipleSelection ($element, options) {
- MultipleSelection.__super__.constructor.apply(this, arguments);
- }
-
- Utils.Extend(MultipleSelection, BaseSelection);
-
- MultipleSelection.prototype.render = function () {
- var $selection = MultipleSelection.__super__.render.call(this);
-
- $selection.addClass('select2-selection--multiple');
-
- $selection.html(
- ''
- );
-
- return $selection;
- };
-
- MultipleSelection.prototype.bind = function (container, $container) {
- var self = this;
-
- MultipleSelection.__super__.bind.apply(this, arguments);
-
- this.$selection.on('click', function (evt) {
- self.trigger('toggle', {
- originalEvent: evt
- });
- });
-
- this.$selection.on(
- 'click',
- '.select2-selection__choice__remove',
- function (evt) {
- // Ignore the event if it is disabled
- if (self.options.get('disabled')) {
- return;
- }
-
- var $remove = $(this);
- var $selection = $remove.parent();
-
- var data = Utils.GetData($selection[0], 'data');
-
- self.trigger('unselect', {
- originalEvent: evt,
- data: data
- });
- }
- );
- };
-
- MultipleSelection.prototype.clear = function () {
- var $rendered = this.$selection.find('.select2-selection__rendered');
- $rendered.empty();
- $rendered.removeAttr('title');
- };
-
- MultipleSelection.prototype.display = function (data, container) {
- var template = this.options.get('templateSelection');
- var escapeMarkup = this.options.get('escapeMarkup');
-
- return escapeMarkup(template(data, container));
- };
-
- MultipleSelection.prototype.selectionContainer = function () {
- var $container = $(
- '' +
- '' +
- '×' +
- ' ' +
- ' '
- );
-
- return $container;
- };
-
- MultipleSelection.prototype.update = function (data) {
- this.clear();
-
- if (data.length === 0) {
- return;
- }
-
- var $selections = [];
-
- for (var d = 0; d < data.length; d++) {
- var selection = data[d];
-
- var $selection = this.selectionContainer();
- var formatted = this.display(selection, $selection);
-
- $selection.append(formatted);
- $selection.attr('title', selection.title || selection.text);
-
- Utils.StoreData($selection[0], 'data', selection);
-
- $selections.push($selection);
- }
-
- var $rendered = this.$selection.find('.select2-selection__rendered');
-
- Utils.appendMany($rendered, $selections);
- };
-
- return MultipleSelection;
-});
-
-S2.define('select2/selection/placeholder',[
- '../utils'
-], function (Utils) {
- function Placeholder (decorated, $element, options) {
- this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
-
- decorated.call(this, $element, options);
- }
-
- Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
- if (typeof placeholder === 'string') {
- placeholder = {
- id: '',
- text: placeholder
- };
- }
-
- return placeholder;
- };
-
- Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
- var $placeholder = this.selectionContainer();
-
- $placeholder.html(this.display(placeholder));
- $placeholder.addClass('select2-selection__placeholder')
- .removeClass('select2-selection__choice');
-
- return $placeholder;
- };
-
- Placeholder.prototype.update = function (decorated, data) {
- var singlePlaceholder = (
- data.length == 1 && data[0].id != this.placeholder.id
- );
- var multipleSelections = data.length > 1;
-
- if (multipleSelections || singlePlaceholder) {
- return decorated.call(this, data);
- }
-
- this.clear();
-
- var $placeholder = this.createPlaceholder(this.placeholder);
-
- this.$selection.find('.select2-selection__rendered').append($placeholder);
- };
-
- return Placeholder;
-});
-
-S2.define('select2/selection/allowClear',[
- 'jquery',
- '../keys',
- '../utils'
-], function ($, KEYS, Utils) {
- function AllowClear () { }
-
- AllowClear.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- if (this.placeholder == null) {
- if (this.options.get('debug') && window.console && console.error) {
- console.error(
- 'Select2: The `allowClear` option should be used in combination ' +
- 'with the `placeholder` option.'
- );
- }
- }
-
- this.$selection.on('mousedown', '.select2-selection__clear',
- function (evt) {
- self._handleClear(evt);
- });
-
- container.on('keypress', function (evt) {
- self._handleKeyboardClear(evt, container);
- });
- };
-
- AllowClear.prototype._handleClear = function (_, evt) {
- // Ignore the event if it is disabled
- if (this.options.get('disabled')) {
- return;
- }
-
- var $clear = this.$selection.find('.select2-selection__clear');
-
- // Ignore the event if nothing has been selected
- if ($clear.length === 0) {
- return;
- }
-
- evt.stopPropagation();
-
- var data = Utils.GetData($clear[0], 'data');
-
- var previousVal = this.$element.val();
- this.$element.val(this.placeholder.id);
-
- var unselectData = {
- data: data
- };
- this.trigger('clear', unselectData);
- if (unselectData.prevented) {
- this.$element.val(previousVal);
- return;
- }
-
- for (var d = 0; d < data.length; d++) {
- unselectData = {
- data: data[d]
- };
-
- // Trigger the `unselect` event, so people can prevent it from being
- // cleared.
- this.trigger('unselect', unselectData);
-
- // If the event was prevented, don't clear it out.
- if (unselectData.prevented) {
- this.$element.val(previousVal);
- return;
- }
- }
-
- this.$element.trigger('change');
-
- this.trigger('toggle', {});
- };
-
- AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
- if (container.isOpen()) {
- return;
- }
-
- if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
- this._handleClear(evt);
- }
- };
-
- AllowClear.prototype.update = function (decorated, data) {
- decorated.call(this, data);
-
- if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
- data.length === 0) {
- return;
- }
-
- var removeAll = this.options.get('translations').get('removeAllItems');
-
- var $remove = $(
- '' +
- '×' +
- ' '
- );
- Utils.StoreData($remove[0], 'data', data);
-
- this.$selection.find('.select2-selection__rendered').prepend($remove);
- };
-
- return AllowClear;
-});
-
-S2.define('select2/selection/search',[
- 'jquery',
- '../utils',
- '../keys'
-], function ($, Utils, KEYS) {
- function Search (decorated, $element, options) {
- decorated.call(this, $element, options);
- }
-
- Search.prototype.render = function (decorated) {
- var $search = $(
- '' +
- ' ' +
- ' '
- );
-
- this.$searchContainer = $search;
- this.$search = $search.find('input');
-
- var $rendered = decorated.call(this);
-
- this._transferTabIndex();
-
- return $rendered;
- };
-
- Search.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('open', function () {
- self.$search.trigger('focus');
- });
-
- container.on('close', function () {
- self.$search.val('');
- self.$search.removeAttr('aria-activedescendant');
- self.$search.trigger('focus');
- });
-
- container.on('enable', function () {
- self.$search.prop('disabled', false);
-
- self._transferTabIndex();
- });
-
- container.on('disable', function () {
- self.$search.prop('disabled', true);
- });
-
- container.on('focus', function (evt) {
- self.$search.trigger('focus');
- });
-
- container.on('results:focus', function (params) {
- self.$search.attr('aria-activedescendant', params.id);
- });
-
- this.$selection.on('focusin', '.select2-search--inline', function (evt) {
- self.trigger('focus', evt);
- });
-
- this.$selection.on('focusout', '.select2-search--inline', function (evt) {
- self._handleBlur(evt);
- });
-
- this.$selection.on('keydown', '.select2-search--inline', function (evt) {
- evt.stopPropagation();
-
- self.trigger('keypress', evt);
-
- self._keyUpPrevented = evt.isDefaultPrevented();
-
- var key = evt.which;
-
- if (key === KEYS.BACKSPACE && self.$search.val() === '') {
- var $previousChoice = self.$searchContainer
- .prev('.select2-selection__choice');
-
- if ($previousChoice.length > 0) {
- var item = Utils.GetData($previousChoice[0], 'data');
-
- self.searchRemoveChoice(item);
-
- evt.preventDefault();
- }
- }
- });
-
- // Try to detect the IE version should the `documentMode` property that
- // is stored on the document. This is only implemented in IE and is
- // slightly cleaner than doing a user agent check.
- // This property is not available in Edge, but Edge also doesn't have
- // this bug.
- var msie = document.documentMode;
- var disableInputEvents = msie && msie <= 11;
-
- // Workaround for browsers which do not support the `input` event
- // This will prevent double-triggering of events for browsers which support
- // both the `keyup` and `input` events.
- this.$selection.on(
- 'input.searchcheck',
- '.select2-search--inline',
- function (evt) {
- // IE will trigger the `input` event when a placeholder is used on a
- // search box. To get around this issue, we are forced to ignore all
- // `input` events in IE and keep using `keyup`.
- if (disableInputEvents) {
- self.$selection.off('input.search input.searchcheck');
- return;
- }
-
- // Unbind the duplicated `keyup` event
- self.$selection.off('keyup.search');
- }
- );
-
- this.$selection.on(
- 'keyup.search input.search',
- '.select2-search--inline',
- function (evt) {
- // IE will trigger the `input` event when a placeholder is used on a
- // search box. To get around this issue, we are forced to ignore all
- // `input` events in IE and keep using `keyup`.
- if (disableInputEvents && evt.type === 'input') {
- self.$selection.off('input.search input.searchcheck');
- return;
- }
-
- var key = evt.which;
-
- // We can freely ignore events from modifier keys
- if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
- return;
- }
-
- // Tabbing will be handled during the `keydown` phase
- if (key == KEYS.TAB) {
- return;
- }
-
- self.handleSearch(evt);
- }
- );
- };
-
- /**
- * This method will transfer the tabindex attribute from the rendered
- * selection to the search box. This allows for the search box to be used as
- * the primary focus instead of the selection container.
- *
- * @private
- */
- Search.prototype._transferTabIndex = function (decorated) {
- this.$search.attr('tabindex', this.$selection.attr('tabindex'));
- this.$selection.attr('tabindex', '-1');
- };
-
- Search.prototype.createPlaceholder = function (decorated, placeholder) {
- this.$search.attr('placeholder', placeholder.text);
- };
-
- Search.prototype.update = function (decorated, data) {
- var searchHadFocus = this.$search[0] == document.activeElement;
-
- this.$search.attr('placeholder', '');
-
- decorated.call(this, data);
-
- this.$selection.find('.select2-selection__rendered')
- .append(this.$searchContainer);
-
- this.resizeSearch();
- if (searchHadFocus) {
- var isTagInput = this.$element.find('[data-select2-tag]').length;
- if (isTagInput) {
- // fix IE11 bug where tag input lost focus
- this.$element.focus();
- } else {
- this.$search.focus();
- }
- }
- };
-
- Search.prototype.handleSearch = function () {
- this.resizeSearch();
-
- if (!this._keyUpPrevented) {
- var input = this.$search.val();
-
- this.trigger('query', {
- term: input
- });
- }
-
- this._keyUpPrevented = false;
- };
-
- Search.prototype.searchRemoveChoice = function (decorated, item) {
- this.trigger('unselect', {
- data: item
- });
-
- this.$search.val(item.text);
- this.handleSearch();
- };
-
- Search.prototype.resizeSearch = function () {
- this.$search.css('width', '25px');
-
- var width = '';
-
- if (this.$search.attr('placeholder') !== '') {
- width = this.$selection.find('.select2-selection__rendered').innerWidth();
- } else {
- var minimumWidth = this.$search.val().length + 1;
-
- width = (minimumWidth * 0.75) + 'em';
- }
-
- this.$search.css('width', width);
- };
-
- return Search;
-});
-
-S2.define('select2/selection/eventRelay',[
- 'jquery'
-], function ($) {
- function EventRelay () { }
-
- EventRelay.prototype.bind = function (decorated, container, $container) {
- var self = this;
- var relayEvents = [
- 'open', 'opening',
- 'close', 'closing',
- 'select', 'selecting',
- 'unselect', 'unselecting',
- 'clear', 'clearing'
- ];
-
- var preventableEvents = [
- 'opening', 'closing', 'selecting', 'unselecting', 'clearing'
- ];
-
- decorated.call(this, container, $container);
-
- container.on('*', function (name, params) {
- // Ignore events that should not be relayed
- if ($.inArray(name, relayEvents) === -1) {
- return;
- }
-
- // The parameters should always be an object
- params = params || {};
-
- // Generate the jQuery event for the Select2 event
- var evt = $.Event('select2:' + name, {
- params: params
- });
-
- self.$element.trigger(evt);
-
- // Only handle preventable events if it was one
- if ($.inArray(name, preventableEvents) === -1) {
- return;
- }
-
- params.prevented = evt.isDefaultPrevented();
- });
- };
-
- return EventRelay;
-});
-
-S2.define('select2/translation',[
- 'jquery',
- 'require'
-], function ($, require) {
- function Translation (dict) {
- this.dict = dict || {};
- }
-
- Translation.prototype.all = function () {
- return this.dict;
- };
-
- Translation.prototype.get = function (key) {
- return this.dict[key];
- };
-
- Translation.prototype.extend = function (translation) {
- this.dict = $.extend({}, translation.all(), this.dict);
- };
-
- // Static functions
-
- Translation._cache = {};
-
- Translation.loadPath = function (path) {
- if (!(path in Translation._cache)) {
- var translations = require(path);
-
- Translation._cache[path] = translations;
- }
-
- return new Translation(Translation._cache[path]);
- };
-
- return Translation;
-});
-
-S2.define('select2/diacritics',[
-
-], function () {
- var diacritics = {
- '\u24B6': 'A',
- '\uFF21': 'A',
- '\u00C0': 'A',
- '\u00C1': 'A',
- '\u00C2': 'A',
- '\u1EA6': 'A',
- '\u1EA4': 'A',
- '\u1EAA': 'A',
- '\u1EA8': 'A',
- '\u00C3': 'A',
- '\u0100': 'A',
- '\u0102': 'A',
- '\u1EB0': 'A',
- '\u1EAE': 'A',
- '\u1EB4': 'A',
- '\u1EB2': 'A',
- '\u0226': 'A',
- '\u01E0': 'A',
- '\u00C4': 'A',
- '\u01DE': 'A',
- '\u1EA2': 'A',
- '\u00C5': 'A',
- '\u01FA': 'A',
- '\u01CD': 'A',
- '\u0200': 'A',
- '\u0202': 'A',
- '\u1EA0': 'A',
- '\u1EAC': 'A',
- '\u1EB6': 'A',
- '\u1E00': 'A',
- '\u0104': 'A',
- '\u023A': 'A',
- '\u2C6F': 'A',
- '\uA732': 'AA',
- '\u00C6': 'AE',
- '\u01FC': 'AE',
- '\u01E2': 'AE',
- '\uA734': 'AO',
- '\uA736': 'AU',
- '\uA738': 'AV',
- '\uA73A': 'AV',
- '\uA73C': 'AY',
- '\u24B7': 'B',
- '\uFF22': 'B',
- '\u1E02': 'B',
- '\u1E04': 'B',
- '\u1E06': 'B',
- '\u0243': 'B',
- '\u0182': 'B',
- '\u0181': 'B',
- '\u24B8': 'C',
- '\uFF23': 'C',
- '\u0106': 'C',
- '\u0108': 'C',
- '\u010A': 'C',
- '\u010C': 'C',
- '\u00C7': 'C',
- '\u1E08': 'C',
- '\u0187': 'C',
- '\u023B': 'C',
- '\uA73E': 'C',
- '\u24B9': 'D',
- '\uFF24': 'D',
- '\u1E0A': 'D',
- '\u010E': 'D',
- '\u1E0C': 'D',
- '\u1E10': 'D',
- '\u1E12': 'D',
- '\u1E0E': 'D',
- '\u0110': 'D',
- '\u018B': 'D',
- '\u018A': 'D',
- '\u0189': 'D',
- '\uA779': 'D',
- '\u01F1': 'DZ',
- '\u01C4': 'DZ',
- '\u01F2': 'Dz',
- '\u01C5': 'Dz',
- '\u24BA': 'E',
- '\uFF25': 'E',
- '\u00C8': 'E',
- '\u00C9': 'E',
- '\u00CA': 'E',
- '\u1EC0': 'E',
- '\u1EBE': 'E',
- '\u1EC4': 'E',
- '\u1EC2': 'E',
- '\u1EBC': 'E',
- '\u0112': 'E',
- '\u1E14': 'E',
- '\u1E16': 'E',
- '\u0114': 'E',
- '\u0116': 'E',
- '\u00CB': 'E',
- '\u1EBA': 'E',
- '\u011A': 'E',
- '\u0204': 'E',
- '\u0206': 'E',
- '\u1EB8': 'E',
- '\u1EC6': 'E',
- '\u0228': 'E',
- '\u1E1C': 'E',
- '\u0118': 'E',
- '\u1E18': 'E',
- '\u1E1A': 'E',
- '\u0190': 'E',
- '\u018E': 'E',
- '\u24BB': 'F',
- '\uFF26': 'F',
- '\u1E1E': 'F',
- '\u0191': 'F',
- '\uA77B': 'F',
- '\u24BC': 'G',
- '\uFF27': 'G',
- '\u01F4': 'G',
- '\u011C': 'G',
- '\u1E20': 'G',
- '\u011E': 'G',
- '\u0120': 'G',
- '\u01E6': 'G',
- '\u0122': 'G',
- '\u01E4': 'G',
- '\u0193': 'G',
- '\uA7A0': 'G',
- '\uA77D': 'G',
- '\uA77E': 'G',
- '\u24BD': 'H',
- '\uFF28': 'H',
- '\u0124': 'H',
- '\u1E22': 'H',
- '\u1E26': 'H',
- '\u021E': 'H',
- '\u1E24': 'H',
- '\u1E28': 'H',
- '\u1E2A': 'H',
- '\u0126': 'H',
- '\u2C67': 'H',
- '\u2C75': 'H',
- '\uA78D': 'H',
- '\u24BE': 'I',
- '\uFF29': 'I',
- '\u00CC': 'I',
- '\u00CD': 'I',
- '\u00CE': 'I',
- '\u0128': 'I',
- '\u012A': 'I',
- '\u012C': 'I',
- '\u0130': 'I',
- '\u00CF': 'I',
- '\u1E2E': 'I',
- '\u1EC8': 'I',
- '\u01CF': 'I',
- '\u0208': 'I',
- '\u020A': 'I',
- '\u1ECA': 'I',
- '\u012E': 'I',
- '\u1E2C': 'I',
- '\u0197': 'I',
- '\u24BF': 'J',
- '\uFF2A': 'J',
- '\u0134': 'J',
- '\u0248': 'J',
- '\u24C0': 'K',
- '\uFF2B': 'K',
- '\u1E30': 'K',
- '\u01E8': 'K',
- '\u1E32': 'K',
- '\u0136': 'K',
- '\u1E34': 'K',
- '\u0198': 'K',
- '\u2C69': 'K',
- '\uA740': 'K',
- '\uA742': 'K',
- '\uA744': 'K',
- '\uA7A2': 'K',
- '\u24C1': 'L',
- '\uFF2C': 'L',
- '\u013F': 'L',
- '\u0139': 'L',
- '\u013D': 'L',
- '\u1E36': 'L',
- '\u1E38': 'L',
- '\u013B': 'L',
- '\u1E3C': 'L',
- '\u1E3A': 'L',
- '\u0141': 'L',
- '\u023D': 'L',
- '\u2C62': 'L',
- '\u2C60': 'L',
- '\uA748': 'L',
- '\uA746': 'L',
- '\uA780': 'L',
- '\u01C7': 'LJ',
- '\u01C8': 'Lj',
- '\u24C2': 'M',
- '\uFF2D': 'M',
- '\u1E3E': 'M',
- '\u1E40': 'M',
- '\u1E42': 'M',
- '\u2C6E': 'M',
- '\u019C': 'M',
- '\u24C3': 'N',
- '\uFF2E': 'N',
- '\u01F8': 'N',
- '\u0143': 'N',
- '\u00D1': 'N',
- '\u1E44': 'N',
- '\u0147': 'N',
- '\u1E46': 'N',
- '\u0145': 'N',
- '\u1E4A': 'N',
- '\u1E48': 'N',
- '\u0220': 'N',
- '\u019D': 'N',
- '\uA790': 'N',
- '\uA7A4': 'N',
- '\u01CA': 'NJ',
- '\u01CB': 'Nj',
- '\u24C4': 'O',
- '\uFF2F': 'O',
- '\u00D2': 'O',
- '\u00D3': 'O',
- '\u00D4': 'O',
- '\u1ED2': 'O',
- '\u1ED0': 'O',
- '\u1ED6': 'O',
- '\u1ED4': 'O',
- '\u00D5': 'O',
- '\u1E4C': 'O',
- '\u022C': 'O',
- '\u1E4E': 'O',
- '\u014C': 'O',
- '\u1E50': 'O',
- '\u1E52': 'O',
- '\u014E': 'O',
- '\u022E': 'O',
- '\u0230': 'O',
- '\u00D6': 'O',
- '\u022A': 'O',
- '\u1ECE': 'O',
- '\u0150': 'O',
- '\u01D1': 'O',
- '\u020C': 'O',
- '\u020E': 'O',
- '\u01A0': 'O',
- '\u1EDC': 'O',
- '\u1EDA': 'O',
- '\u1EE0': 'O',
- '\u1EDE': 'O',
- '\u1EE2': 'O',
- '\u1ECC': 'O',
- '\u1ED8': 'O',
- '\u01EA': 'O',
- '\u01EC': 'O',
- '\u00D8': 'O',
- '\u01FE': 'O',
- '\u0186': 'O',
- '\u019F': 'O',
- '\uA74A': 'O',
- '\uA74C': 'O',
- '\u0152': 'OE',
- '\u01A2': 'OI',
- '\uA74E': 'OO',
- '\u0222': 'OU',
- '\u24C5': 'P',
- '\uFF30': 'P',
- '\u1E54': 'P',
- '\u1E56': 'P',
- '\u01A4': 'P',
- '\u2C63': 'P',
- '\uA750': 'P',
- '\uA752': 'P',
- '\uA754': 'P',
- '\u24C6': 'Q',
- '\uFF31': 'Q',
- '\uA756': 'Q',
- '\uA758': 'Q',
- '\u024A': 'Q',
- '\u24C7': 'R',
- '\uFF32': 'R',
- '\u0154': 'R',
- '\u1E58': 'R',
- '\u0158': 'R',
- '\u0210': 'R',
- '\u0212': 'R',
- '\u1E5A': 'R',
- '\u1E5C': 'R',
- '\u0156': 'R',
- '\u1E5E': 'R',
- '\u024C': 'R',
- '\u2C64': 'R',
- '\uA75A': 'R',
- '\uA7A6': 'R',
- '\uA782': 'R',
- '\u24C8': 'S',
- '\uFF33': 'S',
- '\u1E9E': 'S',
- '\u015A': 'S',
- '\u1E64': 'S',
- '\u015C': 'S',
- '\u1E60': 'S',
- '\u0160': 'S',
- '\u1E66': 'S',
- '\u1E62': 'S',
- '\u1E68': 'S',
- '\u0218': 'S',
- '\u015E': 'S',
- '\u2C7E': 'S',
- '\uA7A8': 'S',
- '\uA784': 'S',
- '\u24C9': 'T',
- '\uFF34': 'T',
- '\u1E6A': 'T',
- '\u0164': 'T',
- '\u1E6C': 'T',
- '\u021A': 'T',
- '\u0162': 'T',
- '\u1E70': 'T',
- '\u1E6E': 'T',
- '\u0166': 'T',
- '\u01AC': 'T',
- '\u01AE': 'T',
- '\u023E': 'T',
- '\uA786': 'T',
- '\uA728': 'TZ',
- '\u24CA': 'U',
- '\uFF35': 'U',
- '\u00D9': 'U',
- '\u00DA': 'U',
- '\u00DB': 'U',
- '\u0168': 'U',
- '\u1E78': 'U',
- '\u016A': 'U',
- '\u1E7A': 'U',
- '\u016C': 'U',
- '\u00DC': 'U',
- '\u01DB': 'U',
- '\u01D7': 'U',
- '\u01D5': 'U',
- '\u01D9': 'U',
- '\u1EE6': 'U',
- '\u016E': 'U',
- '\u0170': 'U',
- '\u01D3': 'U',
- '\u0214': 'U',
- '\u0216': 'U',
- '\u01AF': 'U',
- '\u1EEA': 'U',
- '\u1EE8': 'U',
- '\u1EEE': 'U',
- '\u1EEC': 'U',
- '\u1EF0': 'U',
- '\u1EE4': 'U',
- '\u1E72': 'U',
- '\u0172': 'U',
- '\u1E76': 'U',
- '\u1E74': 'U',
- '\u0244': 'U',
- '\u24CB': 'V',
- '\uFF36': 'V',
- '\u1E7C': 'V',
- '\u1E7E': 'V',
- '\u01B2': 'V',
- '\uA75E': 'V',
- '\u0245': 'V',
- '\uA760': 'VY',
- '\u24CC': 'W',
- '\uFF37': 'W',
- '\u1E80': 'W',
- '\u1E82': 'W',
- '\u0174': 'W',
- '\u1E86': 'W',
- '\u1E84': 'W',
- '\u1E88': 'W',
- '\u2C72': 'W',
- '\u24CD': 'X',
- '\uFF38': 'X',
- '\u1E8A': 'X',
- '\u1E8C': 'X',
- '\u24CE': 'Y',
- '\uFF39': 'Y',
- '\u1EF2': 'Y',
- '\u00DD': 'Y',
- '\u0176': 'Y',
- '\u1EF8': 'Y',
- '\u0232': 'Y',
- '\u1E8E': 'Y',
- '\u0178': 'Y',
- '\u1EF6': 'Y',
- '\u1EF4': 'Y',
- '\u01B3': 'Y',
- '\u024E': 'Y',
- '\u1EFE': 'Y',
- '\u24CF': 'Z',
- '\uFF3A': 'Z',
- '\u0179': 'Z',
- '\u1E90': 'Z',
- '\u017B': 'Z',
- '\u017D': 'Z',
- '\u1E92': 'Z',
- '\u1E94': 'Z',
- '\u01B5': 'Z',
- '\u0224': 'Z',
- '\u2C7F': 'Z',
- '\u2C6B': 'Z',
- '\uA762': 'Z',
- '\u24D0': 'a',
- '\uFF41': 'a',
- '\u1E9A': 'a',
- '\u00E0': 'a',
- '\u00E1': 'a',
- '\u00E2': 'a',
- '\u1EA7': 'a',
- '\u1EA5': 'a',
- '\u1EAB': 'a',
- '\u1EA9': 'a',
- '\u00E3': 'a',
- '\u0101': 'a',
- '\u0103': 'a',
- '\u1EB1': 'a',
- '\u1EAF': 'a',
- '\u1EB5': 'a',
- '\u1EB3': 'a',
- '\u0227': 'a',
- '\u01E1': 'a',
- '\u00E4': 'a',
- '\u01DF': 'a',
- '\u1EA3': 'a',
- '\u00E5': 'a',
- '\u01FB': 'a',
- '\u01CE': 'a',
- '\u0201': 'a',
- '\u0203': 'a',
- '\u1EA1': 'a',
- '\u1EAD': 'a',
- '\u1EB7': 'a',
- '\u1E01': 'a',
- '\u0105': 'a',
- '\u2C65': 'a',
- '\u0250': 'a',
- '\uA733': 'aa',
- '\u00E6': 'ae',
- '\u01FD': 'ae',
- '\u01E3': 'ae',
- '\uA735': 'ao',
- '\uA737': 'au',
- '\uA739': 'av',
- '\uA73B': 'av',
- '\uA73D': 'ay',
- '\u24D1': 'b',
- '\uFF42': 'b',
- '\u1E03': 'b',
- '\u1E05': 'b',
- '\u1E07': 'b',
- '\u0180': 'b',
- '\u0183': 'b',
- '\u0253': 'b',
- '\u24D2': 'c',
- '\uFF43': 'c',
- '\u0107': 'c',
- '\u0109': 'c',
- '\u010B': 'c',
- '\u010D': 'c',
- '\u00E7': 'c',
- '\u1E09': 'c',
- '\u0188': 'c',
- '\u023C': 'c',
- '\uA73F': 'c',
- '\u2184': 'c',
- '\u24D3': 'd',
- '\uFF44': 'd',
- '\u1E0B': 'd',
- '\u010F': 'd',
- '\u1E0D': 'd',
- '\u1E11': 'd',
- '\u1E13': 'd',
- '\u1E0F': 'd',
- '\u0111': 'd',
- '\u018C': 'd',
- '\u0256': 'd',
- '\u0257': 'd',
- '\uA77A': 'd',
- '\u01F3': 'dz',
- '\u01C6': 'dz',
- '\u24D4': 'e',
- '\uFF45': 'e',
- '\u00E8': 'e',
- '\u00E9': 'e',
- '\u00EA': 'e',
- '\u1EC1': 'e',
- '\u1EBF': 'e',
- '\u1EC5': 'e',
- '\u1EC3': 'e',
- '\u1EBD': 'e',
- '\u0113': 'e',
- '\u1E15': 'e',
- '\u1E17': 'e',
- '\u0115': 'e',
- '\u0117': 'e',
- '\u00EB': 'e',
- '\u1EBB': 'e',
- '\u011B': 'e',
- '\u0205': 'e',
- '\u0207': 'e',
- '\u1EB9': 'e',
- '\u1EC7': 'e',
- '\u0229': 'e',
- '\u1E1D': 'e',
- '\u0119': 'e',
- '\u1E19': 'e',
- '\u1E1B': 'e',
- '\u0247': 'e',
- '\u025B': 'e',
- '\u01DD': 'e',
- '\u24D5': 'f',
- '\uFF46': 'f',
- '\u1E1F': 'f',
- '\u0192': 'f',
- '\uA77C': 'f',
- '\u24D6': 'g',
- '\uFF47': 'g',
- '\u01F5': 'g',
- '\u011D': 'g',
- '\u1E21': 'g',
- '\u011F': 'g',
- '\u0121': 'g',
- '\u01E7': 'g',
- '\u0123': 'g',
- '\u01E5': 'g',
- '\u0260': 'g',
- '\uA7A1': 'g',
- '\u1D79': 'g',
- '\uA77F': 'g',
- '\u24D7': 'h',
- '\uFF48': 'h',
- '\u0125': 'h',
- '\u1E23': 'h',
- '\u1E27': 'h',
- '\u021F': 'h',
- '\u1E25': 'h',
- '\u1E29': 'h',
- '\u1E2B': 'h',
- '\u1E96': 'h',
- '\u0127': 'h',
- '\u2C68': 'h',
- '\u2C76': 'h',
- '\u0265': 'h',
- '\u0195': 'hv',
- '\u24D8': 'i',
- '\uFF49': 'i',
- '\u00EC': 'i',
- '\u00ED': 'i',
- '\u00EE': 'i',
- '\u0129': 'i',
- '\u012B': 'i',
- '\u012D': 'i',
- '\u00EF': 'i',
- '\u1E2F': 'i',
- '\u1EC9': 'i',
- '\u01D0': 'i',
- '\u0209': 'i',
- '\u020B': 'i',
- '\u1ECB': 'i',
- '\u012F': 'i',
- '\u1E2D': 'i',
- '\u0268': 'i',
- '\u0131': 'i',
- '\u24D9': 'j',
- '\uFF4A': 'j',
- '\u0135': 'j',
- '\u01F0': 'j',
- '\u0249': 'j',
- '\u24DA': 'k',
- '\uFF4B': 'k',
- '\u1E31': 'k',
- '\u01E9': 'k',
- '\u1E33': 'k',
- '\u0137': 'k',
- '\u1E35': 'k',
- '\u0199': 'k',
- '\u2C6A': 'k',
- '\uA741': 'k',
- '\uA743': 'k',
- '\uA745': 'k',
- '\uA7A3': 'k',
- '\u24DB': 'l',
- '\uFF4C': 'l',
- '\u0140': 'l',
- '\u013A': 'l',
- '\u013E': 'l',
- '\u1E37': 'l',
- '\u1E39': 'l',
- '\u013C': 'l',
- '\u1E3D': 'l',
- '\u1E3B': 'l',
- '\u017F': 'l',
- '\u0142': 'l',
- '\u019A': 'l',
- '\u026B': 'l',
- '\u2C61': 'l',
- '\uA749': 'l',
- '\uA781': 'l',
- '\uA747': 'l',
- '\u01C9': 'lj',
- '\u24DC': 'm',
- '\uFF4D': 'm',
- '\u1E3F': 'm',
- '\u1E41': 'm',
- '\u1E43': 'm',
- '\u0271': 'm',
- '\u026F': 'm',
- '\u24DD': 'n',
- '\uFF4E': 'n',
- '\u01F9': 'n',
- '\u0144': 'n',
- '\u00F1': 'n',
- '\u1E45': 'n',
- '\u0148': 'n',
- '\u1E47': 'n',
- '\u0146': 'n',
- '\u1E4B': 'n',
- '\u1E49': 'n',
- '\u019E': 'n',
- '\u0272': 'n',
- '\u0149': 'n',
- '\uA791': 'n',
- '\uA7A5': 'n',
- '\u01CC': 'nj',
- '\u24DE': 'o',
- '\uFF4F': 'o',
- '\u00F2': 'o',
- '\u00F3': 'o',
- '\u00F4': 'o',
- '\u1ED3': 'o',
- '\u1ED1': 'o',
- '\u1ED7': 'o',
- '\u1ED5': 'o',
- '\u00F5': 'o',
- '\u1E4D': 'o',
- '\u022D': 'o',
- '\u1E4F': 'o',
- '\u014D': 'o',
- '\u1E51': 'o',
- '\u1E53': 'o',
- '\u014F': 'o',
- '\u022F': 'o',
- '\u0231': 'o',
- '\u00F6': 'o',
- '\u022B': 'o',
- '\u1ECF': 'o',
- '\u0151': 'o',
- '\u01D2': 'o',
- '\u020D': 'o',
- '\u020F': 'o',
- '\u01A1': 'o',
- '\u1EDD': 'o',
- '\u1EDB': 'o',
- '\u1EE1': 'o',
- '\u1EDF': 'o',
- '\u1EE3': 'o',
- '\u1ECD': 'o',
- '\u1ED9': 'o',
- '\u01EB': 'o',
- '\u01ED': 'o',
- '\u00F8': 'o',
- '\u01FF': 'o',
- '\u0254': 'o',
- '\uA74B': 'o',
- '\uA74D': 'o',
- '\u0275': 'o',
- '\u0153': 'oe',
- '\u01A3': 'oi',
- '\u0223': 'ou',
- '\uA74F': 'oo',
- '\u24DF': 'p',
- '\uFF50': 'p',
- '\u1E55': 'p',
- '\u1E57': 'p',
- '\u01A5': 'p',
- '\u1D7D': 'p',
- '\uA751': 'p',
- '\uA753': 'p',
- '\uA755': 'p',
- '\u24E0': 'q',
- '\uFF51': 'q',
- '\u024B': 'q',
- '\uA757': 'q',
- '\uA759': 'q',
- '\u24E1': 'r',
- '\uFF52': 'r',
- '\u0155': 'r',
- '\u1E59': 'r',
- '\u0159': 'r',
- '\u0211': 'r',
- '\u0213': 'r',
- '\u1E5B': 'r',
- '\u1E5D': 'r',
- '\u0157': 'r',
- '\u1E5F': 'r',
- '\u024D': 'r',
- '\u027D': 'r',
- '\uA75B': 'r',
- '\uA7A7': 'r',
- '\uA783': 'r',
- '\u24E2': 's',
- '\uFF53': 's',
- '\u00DF': 's',
- '\u015B': 's',
- '\u1E65': 's',
- '\u015D': 's',
- '\u1E61': 's',
- '\u0161': 's',
- '\u1E67': 's',
- '\u1E63': 's',
- '\u1E69': 's',
- '\u0219': 's',
- '\u015F': 's',
- '\u023F': 's',
- '\uA7A9': 's',
- '\uA785': 's',
- '\u1E9B': 's',
- '\u24E3': 't',
- '\uFF54': 't',
- '\u1E6B': 't',
- '\u1E97': 't',
- '\u0165': 't',
- '\u1E6D': 't',
- '\u021B': 't',
- '\u0163': 't',
- '\u1E71': 't',
- '\u1E6F': 't',
- '\u0167': 't',
- '\u01AD': 't',
- '\u0288': 't',
- '\u2C66': 't',
- '\uA787': 't',
- '\uA729': 'tz',
- '\u24E4': 'u',
- '\uFF55': 'u',
- '\u00F9': 'u',
- '\u00FA': 'u',
- '\u00FB': 'u',
- '\u0169': 'u',
- '\u1E79': 'u',
- '\u016B': 'u',
- '\u1E7B': 'u',
- '\u016D': 'u',
- '\u00FC': 'u',
- '\u01DC': 'u',
- '\u01D8': 'u',
- '\u01D6': 'u',
- '\u01DA': 'u',
- '\u1EE7': 'u',
- '\u016F': 'u',
- '\u0171': 'u',
- '\u01D4': 'u',
- '\u0215': 'u',
- '\u0217': 'u',
- '\u01B0': 'u',
- '\u1EEB': 'u',
- '\u1EE9': 'u',
- '\u1EEF': 'u',
- '\u1EED': 'u',
- '\u1EF1': 'u',
- '\u1EE5': 'u',
- '\u1E73': 'u',
- '\u0173': 'u',
- '\u1E77': 'u',
- '\u1E75': 'u',
- '\u0289': 'u',
- '\u24E5': 'v',
- '\uFF56': 'v',
- '\u1E7D': 'v',
- '\u1E7F': 'v',
- '\u028B': 'v',
- '\uA75F': 'v',
- '\u028C': 'v',
- '\uA761': 'vy',
- '\u24E6': 'w',
- '\uFF57': 'w',
- '\u1E81': 'w',
- '\u1E83': 'w',
- '\u0175': 'w',
- '\u1E87': 'w',
- '\u1E85': 'w',
- '\u1E98': 'w',
- '\u1E89': 'w',
- '\u2C73': 'w',
- '\u24E7': 'x',
- '\uFF58': 'x',
- '\u1E8B': 'x',
- '\u1E8D': 'x',
- '\u24E8': 'y',
- '\uFF59': 'y',
- '\u1EF3': 'y',
- '\u00FD': 'y',
- '\u0177': 'y',
- '\u1EF9': 'y',
- '\u0233': 'y',
- '\u1E8F': 'y',
- '\u00FF': 'y',
- '\u1EF7': 'y',
- '\u1E99': 'y',
- '\u1EF5': 'y',
- '\u01B4': 'y',
- '\u024F': 'y',
- '\u1EFF': 'y',
- '\u24E9': 'z',
- '\uFF5A': 'z',
- '\u017A': 'z',
- '\u1E91': 'z',
- '\u017C': 'z',
- '\u017E': 'z',
- '\u1E93': 'z',
- '\u1E95': 'z',
- '\u01B6': 'z',
- '\u0225': 'z',
- '\u0240': 'z',
- '\u2C6C': 'z',
- '\uA763': 'z',
- '\u0386': '\u0391',
- '\u0388': '\u0395',
- '\u0389': '\u0397',
- '\u038A': '\u0399',
- '\u03AA': '\u0399',
- '\u038C': '\u039F',
- '\u038E': '\u03A5',
- '\u03AB': '\u03A5',
- '\u038F': '\u03A9',
- '\u03AC': '\u03B1',
- '\u03AD': '\u03B5',
- '\u03AE': '\u03B7',
- '\u03AF': '\u03B9',
- '\u03CA': '\u03B9',
- '\u0390': '\u03B9',
- '\u03CC': '\u03BF',
- '\u03CD': '\u03C5',
- '\u03CB': '\u03C5',
- '\u03B0': '\u03C5',
- '\u03CE': '\u03C9',
- '\u03C2': '\u03C3',
- '\u2019': '\''
- };
-
- return diacritics;
-});
-
-S2.define('select2/data/base',[
- '../utils'
-], function (Utils) {
- function BaseAdapter ($element, options) {
- BaseAdapter.__super__.constructor.call(this);
- }
-
- Utils.Extend(BaseAdapter, Utils.Observable);
-
- BaseAdapter.prototype.current = function (callback) {
- throw new Error('The `current` method must be defined in child classes.');
- };
-
- BaseAdapter.prototype.query = function (params, callback) {
- throw new Error('The `query` method must be defined in child classes.');
- };
-
- BaseAdapter.prototype.bind = function (container, $container) {
- // Can be implemented in subclasses
- };
-
- BaseAdapter.prototype.destroy = function () {
- // Can be implemented in subclasses
- };
-
- BaseAdapter.prototype.generateResultId = function (container, data) {
- var id = container.id + '-result-';
-
- id += Utils.generateChars(4);
-
- if (data.id != null) {
- id += '-' + data.id.toString();
- } else {
- id += '-' + Utils.generateChars(4);
- }
- return id;
- };
-
- return BaseAdapter;
-});
-
-S2.define('select2/data/select',[
- './base',
- '../utils',
- 'jquery'
-], function (BaseAdapter, Utils, $) {
- function SelectAdapter ($element, options) {
- this.$element = $element;
- this.options = options;
-
- SelectAdapter.__super__.constructor.call(this);
- }
-
- Utils.Extend(SelectAdapter, BaseAdapter);
-
- SelectAdapter.prototype.current = function (callback) {
- var data = [];
- var self = this;
-
- this.$element.find(':selected').each(function () {
- var $option = $(this);
-
- var option = self.item($option);
-
- data.push(option);
- });
-
- callback(data);
- };
-
- SelectAdapter.prototype.select = function (data) {
- var self = this;
-
- data.selected = true;
-
- // If data.element is a DOM node, use it instead
- if ($(data.element).is('option')) {
- data.element.selected = true;
-
- this.$element.trigger('change');
-
- return;
- }
-
- if (this.$element.prop('multiple')) {
- this.current(function (currentData) {
- var val = [];
-
- data = [data];
- data.push.apply(data, currentData);
-
- for (var d = 0; d < data.length; d++) {
- var id = data[d].id;
-
- if ($.inArray(id, val) === -1) {
- val.push(id);
- }
- }
-
- self.$element.val(val);
- self.$element.trigger('change');
- });
- } else {
- var val = data.id;
-
- this.$element.val(val);
- this.$element.trigger('change');
- }
- };
-
- SelectAdapter.prototype.unselect = function (data) {
- var self = this;
-
- if (!this.$element.prop('multiple')) {
- return;
- }
-
- data.selected = false;
-
- if ($(data.element).is('option')) {
- data.element.selected = false;
-
- this.$element.trigger('change');
-
- return;
- }
-
- this.current(function (currentData) {
- var val = [];
-
- for (var d = 0; d < currentData.length; d++) {
- var id = currentData[d].id;
-
- if (id !== data.id && $.inArray(id, val) === -1) {
- val.push(id);
- }
- }
-
- self.$element.val(val);
-
- self.$element.trigger('change');
- });
- };
-
- SelectAdapter.prototype.bind = function (container, $container) {
- var self = this;
-
- this.container = container;
-
- container.on('select', function (params) {
- self.select(params.data);
- });
-
- container.on('unselect', function (params) {
- self.unselect(params.data);
- });
- };
-
- SelectAdapter.prototype.destroy = function () {
- // Remove anything added to child elements
- this.$element.find('*').each(function () {
- // Remove any custom data set by Select2
- Utils.RemoveData(this);
- });
- };
-
- SelectAdapter.prototype.query = function (params, callback) {
- var data = [];
- var self = this;
-
- var $options = this.$element.children();
-
- $options.each(function () {
- var $option = $(this);
-
- if (!$option.is('option') && !$option.is('optgroup')) {
- return;
- }
-
- var option = self.item($option);
-
- var matches = self.matches(params, option);
-
- if (matches !== null) {
- data.push(matches);
- }
- });
-
- callback({
- results: data
- });
- };
-
- SelectAdapter.prototype.addOptions = function ($options) {
- Utils.appendMany(this.$element, $options);
- };
-
- SelectAdapter.prototype.option = function (data) {
- var option;
-
- if (data.children) {
- option = document.createElement('optgroup');
- option.label = data.text;
- } else {
- option = document.createElement('option');
-
- if (option.textContent !== undefined) {
- option.textContent = data.text;
- } else {
- option.innerText = data.text;
- }
- }
-
- if (data.id !== undefined) {
- option.value = data.id;
- }
-
- if (data.disabled) {
- option.disabled = true;
- }
-
- if (data.selected) {
- option.selected = true;
- }
-
- if (data.title) {
- option.title = data.title;
- }
-
- var $option = $(option);
-
- var normalizedData = this._normalizeItem(data);
- normalizedData.element = option;
-
- // Override the option's data with the combined data
- Utils.StoreData(option, 'data', normalizedData);
-
- return $option;
- };
-
- SelectAdapter.prototype.item = function ($option) {
- var data = {};
-
- data = Utils.GetData($option[0], 'data');
-
- if (data != null) {
- return data;
- }
-
- if ($option.is('option')) {
- data = {
- id: $option.val(),
- text: $option.text(),
- disabled: $option.prop('disabled'),
- selected: $option.prop('selected'),
- title: $option.prop('title')
- };
- } else if ($option.is('optgroup')) {
- data = {
- text: $option.prop('label'),
- children: [],
- title: $option.prop('title')
- };
-
- var $children = $option.children('option');
- var children = [];
-
- for (var c = 0; c < $children.length; c++) {
- var $child = $($children[c]);
-
- var child = this.item($child);
-
- children.push(child);
- }
-
- data.children = children;
- }
-
- data = this._normalizeItem(data);
- data.element = $option[0];
-
- Utils.StoreData($option[0], 'data', data);
-
- return data;
- };
-
- SelectAdapter.prototype._normalizeItem = function (item) {
- if (item !== Object(item)) {
- item = {
- id: item,
- text: item
- };
- }
-
- item = $.extend({}, {
- text: ''
- }, item);
-
- var defaults = {
- selected: false,
- disabled: false
- };
-
- if (item.id != null) {
- item.id = item.id.toString();
- }
-
- if (item.text != null) {
- item.text = item.text.toString();
- }
-
- if (item._resultId == null && item.id && this.container != null) {
- item._resultId = this.generateResultId(this.container, item);
- }
-
- return $.extend({}, defaults, item);
- };
-
- SelectAdapter.prototype.matches = function (params, data) {
- var matcher = this.options.get('matcher');
-
- return matcher(params, data);
- };
-
- return SelectAdapter;
-});
-
-S2.define('select2/data/array',[
- './select',
- '../utils',
- 'jquery'
-], function (SelectAdapter, Utils, $) {
- function ArrayAdapter ($element, options) {
- var data = options.get('data') || [];
-
- ArrayAdapter.__super__.constructor.call(this, $element, options);
-
- this.addOptions(this.convertToOptions(data));
- }
-
- Utils.Extend(ArrayAdapter, SelectAdapter);
-
- ArrayAdapter.prototype.select = function (data) {
- var $option = this.$element.find('option').filter(function (i, elm) {
- return elm.value == data.id.toString();
- });
-
- if ($option.length === 0) {
- $option = this.option(data);
-
- this.addOptions($option);
- }
-
- ArrayAdapter.__super__.select.call(this, data);
- };
-
- ArrayAdapter.prototype.convertToOptions = function (data) {
- var self = this;
-
- var $existing = this.$element.find('option');
- var existingIds = $existing.map(function () {
- return self.item($(this)).id;
- }).get();
-
- var $options = [];
-
- // Filter out all items except for the one passed in the argument
- function onlyItem (item) {
- return function () {
- return $(this).val() == item.id;
- };
- }
-
- for (var d = 0; d < data.length; d++) {
- var item = this._normalizeItem(data[d]);
-
- // Skip items which were pre-loaded, only merge the data
- if ($.inArray(item.id, existingIds) >= 0) {
- var $existingOption = $existing.filter(onlyItem(item));
-
- var existingData = this.item($existingOption);
- var newData = $.extend(true, {}, item, existingData);
-
- var $newOption = this.option(newData);
-
- $existingOption.replaceWith($newOption);
-
- continue;
- }
-
- var $option = this.option(item);
-
- if (item.children) {
- var $children = this.convertToOptions(item.children);
-
- Utils.appendMany($option, $children);
- }
-
- $options.push($option);
- }
-
- return $options;
- };
-
- return ArrayAdapter;
-});
-
-S2.define('select2/data/ajax',[
- './array',
- '../utils',
- 'jquery'
-], function (ArrayAdapter, Utils, $) {
- function AjaxAdapter ($element, options) {
- this.ajaxOptions = this._applyDefaults(options.get('ajax'));
-
- if (this.ajaxOptions.processResults != null) {
- this.processResults = this.ajaxOptions.processResults;
- }
-
- AjaxAdapter.__super__.constructor.call(this, $element, options);
- }
-
- Utils.Extend(AjaxAdapter, ArrayAdapter);
-
- AjaxAdapter.prototype._applyDefaults = function (options) {
- var defaults = {
- data: function (params) {
- return $.extend({}, params, {
- q: params.term
- });
- },
- transport: function (params, success, failure) {
- var $request = $.ajax(params);
-
- $request.then(success);
- $request.fail(failure);
-
- return $request;
- }
- };
-
- return $.extend({}, defaults, options, true);
- };
-
- AjaxAdapter.prototype.processResults = function (results) {
- return results;
- };
-
- AjaxAdapter.prototype.query = function (params, callback) {
- var matches = [];
- var self = this;
-
- if (this._request != null) {
- // JSONP requests cannot always be aborted
- if ($.isFunction(this._request.abort)) {
- this._request.abort();
- }
-
- this._request = null;
- }
-
- var options = $.extend({
- type: 'GET'
- }, this.ajaxOptions);
-
- if (typeof options.url === 'function') {
- options.url = options.url.call(this.$element, params);
- }
-
- if (typeof options.data === 'function') {
- options.data = options.data.call(this.$element, params);
- }
-
- function request () {
- var $request = options.transport(options, function (data) {
- var results = self.processResults(data, params);
-
- if (self.options.get('debug') && window.console && console.error) {
- // Check to make sure that the response included a `results` key.
- if (!results || !results.results || !$.isArray(results.results)) {
- console.error(
- 'Select2: The AJAX results did not return an array in the ' +
- '`results` key of the response.'
- );
- }
- }
-
- callback(results);
- }, function () {
- // Attempt to detect if a request was aborted
- // Only works if the transport exposes a status property
- if ('status' in $request &&
- ($request.status === 0 || $request.status === '0')) {
- return;
- }
-
- self.trigger('results:message', {
- message: 'errorLoading'
- });
- });
-
- self._request = $request;
- }
-
- if (this.ajaxOptions.delay && params.term != null) {
- if (this._queryTimeout) {
- window.clearTimeout(this._queryTimeout);
- }
-
- this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
- } else {
- request();
- }
- };
-
- return AjaxAdapter;
-});
-
-S2.define('select2/data/tags',[
- 'jquery'
-], function ($) {
- function Tags (decorated, $element, options) {
- var tags = options.get('tags');
-
- var createTag = options.get('createTag');
-
- if (createTag !== undefined) {
- this.createTag = createTag;
- }
-
- var insertTag = options.get('insertTag');
-
- if (insertTag !== undefined) {
- this.insertTag = insertTag;
- }
-
- decorated.call(this, $element, options);
-
- if ($.isArray(tags)) {
- for (var t = 0; t < tags.length; t++) {
- var tag = tags[t];
- var item = this._normalizeItem(tag);
-
- var $option = this.option(item);
-
- this.$element.append($option);
- }
- }
- }
-
- Tags.prototype.query = function (decorated, params, callback) {
- var self = this;
-
- this._removeOldTags();
-
- if (params.term == null || params.page != null) {
- decorated.call(this, params, callback);
- return;
- }
-
- function wrapper (obj, child) {
- var data = obj.results;
-
- for (var i = 0; i < data.length; i++) {
- var option = data[i];
-
- var checkChildren = (
- option.children != null &&
- !wrapper({
- results: option.children
- }, true)
- );
-
- var optionText = (option.text || '').toUpperCase();
- var paramsTerm = (params.term || '').toUpperCase();
-
- var checkText = optionText === paramsTerm;
-
- if (checkText || checkChildren) {
- if (child) {
- return false;
- }
-
- obj.data = data;
- callback(obj);
-
- return;
- }
- }
-
- if (child) {
- return true;
- }
-
- var tag = self.createTag(params);
-
- if (tag != null) {
- var $option = self.option(tag);
- $option.attr('data-select2-tag', true);
-
- self.addOptions([$option]);
-
- self.insertTag(data, tag);
- }
-
- obj.results = data;
-
- callback(obj);
- }
-
- decorated.call(this, params, wrapper);
- };
-
- Tags.prototype.createTag = function (decorated, params) {
- var term = $.trim(params.term);
-
- if (term === '') {
- return null;
- }
-
- return {
- id: term,
- text: term
- };
- };
-
- Tags.prototype.insertTag = function (_, data, tag) {
- data.unshift(tag);
- };
-
- Tags.prototype._removeOldTags = function (_) {
- var tag = this._lastTag;
-
- var $options = this.$element.find('option[data-select2-tag]');
-
- $options.each(function () {
- if (this.selected) {
- return;
- }
-
- $(this).remove();
- });
- };
-
- return Tags;
-});
-
-S2.define('select2/data/tokenizer',[
- 'jquery'
-], function ($) {
- function Tokenizer (decorated, $element, options) {
- var tokenizer = options.get('tokenizer');
-
- if (tokenizer !== undefined) {
- this.tokenizer = tokenizer;
- }
-
- decorated.call(this, $element, options);
- }
-
- Tokenizer.prototype.bind = function (decorated, container, $container) {
- decorated.call(this, container, $container);
-
- this.$search = container.dropdown.$search || container.selection.$search ||
- $container.find('.select2-search__field');
- };
-
- Tokenizer.prototype.query = function (decorated, params, callback) {
- var self = this;
-
- function createAndSelect (data) {
- // Normalize the data object so we can use it for checks
- var item = self._normalizeItem(data);
-
- // Check if the data object already exists as a tag
- // Select it if it doesn't
- var $existingOptions = self.$element.find('option').filter(function () {
- return $(this).val() === item.id;
- });
-
- // If an existing option wasn't found for it, create the option
- if (!$existingOptions.length) {
- var $option = self.option(item);
- $option.attr('data-select2-tag', true);
-
- self._removeOldTags();
- self.addOptions([$option]);
- }
-
- // Select the item, now that we know there is an option for it
- select(item);
- }
-
- function select (data) {
- self.trigger('select', {
- data: data
- });
- }
-
- params.term = params.term || '';
-
- var tokenData = this.tokenizer(params, this.options, createAndSelect);
-
- if (tokenData.term !== params.term) {
- // Replace the search term if we have the search box
- if (this.$search.length) {
- this.$search.val(tokenData.term);
- this.$search.focus();
- }
-
- params.term = tokenData.term;
- }
-
- decorated.call(this, params, callback);
- };
-
- Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
- var separators = options.get('tokenSeparators') || [];
- var term = params.term;
- var i = 0;
-
- var createTag = this.createTag || function (params) {
- return {
- id: params.term,
- text: params.term
- };
- };
-
- while (i < term.length) {
- var termChar = term[i];
-
- if ($.inArray(termChar, separators) === -1) {
- i++;
-
- continue;
- }
-
- var part = term.substr(0, i);
- var partParams = $.extend({}, params, {
- term: part
- });
-
- var data = createTag(partParams);
-
- if (data == null) {
- i++;
- continue;
- }
-
- callback(data);
-
- // Reset the term to not include the tokenized portion
- term = term.substr(i + 1) || '';
- i = 0;
- }
-
- return {
- term: term
- };
- };
-
- return Tokenizer;
-});
-
-S2.define('select2/data/minimumInputLength',[
-
-], function () {
- function MinimumInputLength (decorated, $e, options) {
- this.minimumInputLength = options.get('minimumInputLength');
-
- decorated.call(this, $e, options);
- }
-
- MinimumInputLength.prototype.query = function (decorated, params, callback) {
- params.term = params.term || '';
-
- if (params.term.length < this.minimumInputLength) {
- this.trigger('results:message', {
- message: 'inputTooShort',
- args: {
- minimum: this.minimumInputLength,
- input: params.term,
- params: params
- }
- });
-
- return;
- }
-
- decorated.call(this, params, callback);
- };
-
- return MinimumInputLength;
-});
-
-S2.define('select2/data/maximumInputLength',[
-
-], function () {
- function MaximumInputLength (decorated, $e, options) {
- this.maximumInputLength = options.get('maximumInputLength');
-
- decorated.call(this, $e, options);
- }
-
- MaximumInputLength.prototype.query = function (decorated, params, callback) {
- params.term = params.term || '';
-
- if (this.maximumInputLength > 0 &&
- params.term.length > this.maximumInputLength) {
- this.trigger('results:message', {
- message: 'inputTooLong',
- args: {
- maximum: this.maximumInputLength,
- input: params.term,
- params: params
- }
- });
-
- return;
- }
-
- decorated.call(this, params, callback);
- };
-
- return MaximumInputLength;
-});
-
-S2.define('select2/data/maximumSelectionLength',[
-
-], function (){
- function MaximumSelectionLength (decorated, $e, options) {
- this.maximumSelectionLength = options.get('maximumSelectionLength');
-
- decorated.call(this, $e, options);
- }
-
- MaximumSelectionLength.prototype.query =
- function (decorated, params, callback) {
- var self = this;
-
- this.current(function (currentData) {
- var count = currentData != null ? currentData.length : 0;
- if (self.maximumSelectionLength > 0 &&
- count >= self.maximumSelectionLength) {
- self.trigger('results:message', {
- message: 'maximumSelected',
- args: {
- maximum: self.maximumSelectionLength
- }
- });
- return;
- }
- decorated.call(self, params, callback);
- });
- };
-
- return MaximumSelectionLength;
-});
-
-S2.define('select2/dropdown',[
- 'jquery',
- './utils'
-], function ($, Utils) {
- function Dropdown ($element, options) {
- this.$element = $element;
- this.options = options;
-
- Dropdown.__super__.constructor.call(this);
- }
-
- Utils.Extend(Dropdown, Utils.Observable);
-
- Dropdown.prototype.render = function () {
- var $dropdown = $(
- '' +
- ' ' +
- ' '
- );
-
- $dropdown.attr('dir', this.options.get('dir'));
-
- this.$dropdown = $dropdown;
-
- return $dropdown;
- };
-
- Dropdown.prototype.bind = function () {
- // Should be implemented in subclasses
- };
-
- Dropdown.prototype.position = function ($dropdown, $container) {
- // Should be implemented in subclasses
- };
-
- Dropdown.prototype.destroy = function () {
- // Remove the dropdown from the DOM
- this.$dropdown.remove();
- };
-
- return Dropdown;
-});
-
-S2.define('select2/dropdown/search',[
- 'jquery',
- '../utils'
-], function ($, Utils) {
- function Search () { }
-
- Search.prototype.render = function (decorated) {
- var $rendered = decorated.call(this);
-
- var $search = $(
- '' +
- ' ' +
- ' '
- );
-
- this.$searchContainer = $search;
- this.$search = $search.find('input');
-
- $rendered.prepend($search);
-
- return $rendered;
- };
-
- Search.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- this.$search.on('keydown', function (evt) {
- self.trigger('keypress', evt);
-
- self._keyUpPrevented = evt.isDefaultPrevented();
- });
-
- // Workaround for browsers which do not support the `input` event
- // This will prevent double-triggering of events for browsers which support
- // both the `keyup` and `input` events.
- this.$search.on('input', function (evt) {
- // Unbind the duplicated `keyup` event
- $(this).off('keyup');
- });
-
- this.$search.on('keyup input', function (evt) {
- self.handleSearch(evt);
- });
-
- container.on('open', function () {
- self.$search.attr('tabindex', 0);
-
- self.$search.focus();
-
- window.setTimeout(function () {
- self.$search.focus();
- }, 0);
- });
-
- container.on('close', function () {
- self.$search.attr('tabindex', -1);
-
- self.$search.val('');
- self.$search.blur();
- });
-
- container.on('focus', function () {
- if (!container.isOpen()) {
- self.$search.focus();
- }
- });
-
- container.on('results:all', function (params) {
- if (params.query.term == null || params.query.term === '') {
- var showSearch = self.showSearch(params);
-
- if (showSearch) {
- self.$searchContainer.removeClass('select2-search--hide');
- } else {
- self.$searchContainer.addClass('select2-search--hide');
- }
- }
- });
- };
-
- Search.prototype.handleSearch = function (evt) {
- if (!this._keyUpPrevented) {
- var input = this.$search.val();
-
- this.trigger('query', {
- term: input
- });
- }
-
- this._keyUpPrevented = false;
- };
-
- Search.prototype.showSearch = function (_, params) {
- return true;
- };
-
- return Search;
-});
-
-S2.define('select2/dropdown/hidePlaceholder',[
-
-], function () {
- function HidePlaceholder (decorated, $element, options, dataAdapter) {
- this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
-
- decorated.call(this, $element, options, dataAdapter);
- }
-
- HidePlaceholder.prototype.append = function (decorated, data) {
- data.results = this.removePlaceholder(data.results);
-
- decorated.call(this, data);
- };
-
- HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
- if (typeof placeholder === 'string') {
- placeholder = {
- id: '',
- text: placeholder
- };
- }
-
- return placeholder;
- };
-
- HidePlaceholder.prototype.removePlaceholder = function (_, data) {
- var modifiedData = data.slice(0);
-
- for (var d = data.length - 1; d >= 0; d--) {
- var item = data[d];
-
- if (this.placeholder.id === item.id) {
- modifiedData.splice(d, 1);
- }
- }
-
- return modifiedData;
- };
-
- return HidePlaceholder;
-});
-
-S2.define('select2/dropdown/infiniteScroll',[
- 'jquery'
-], function ($) {
- function InfiniteScroll (decorated, $element, options, dataAdapter) {
- this.lastParams = {};
-
- decorated.call(this, $element, options, dataAdapter);
-
- this.$loadingMore = this.createLoadingMore();
- this.loading = false;
- }
-
- InfiniteScroll.prototype.append = function (decorated, data) {
- this.$loadingMore.remove();
- this.loading = false;
-
- decorated.call(this, data);
-
- if (this.showLoadingMore(data)) {
- this.$results.append(this.$loadingMore);
- }
- };
-
- InfiniteScroll.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('query', function (params) {
- self.lastParams = params;
- self.loading = true;
- });
-
- container.on('query:append', function (params) {
- self.lastParams = params;
- self.loading = true;
- });
-
- this.$results.on('scroll', function () {
- var isLoadMoreVisible = $.contains(
- document.documentElement,
- self.$loadingMore[0]
- );
-
- if (self.loading || !isLoadMoreVisible) {
- return;
- }
-
- var currentOffset = self.$results.offset().top +
- self.$results.outerHeight(false);
- var loadingMoreOffset = self.$loadingMore.offset().top +
- self.$loadingMore.outerHeight(false);
-
- if (currentOffset + 50 >= loadingMoreOffset) {
- self.loadMore();
- }
- });
- };
-
- InfiniteScroll.prototype.loadMore = function () {
- this.loading = true;
-
- var params = $.extend({}, {page: 1}, this.lastParams);
-
- params.page++;
-
- this.trigger('query:append', params);
- };
-
- InfiniteScroll.prototype.showLoadingMore = function (_, data) {
- return data.pagination && data.pagination.more;
- };
-
- InfiniteScroll.prototype.createLoadingMore = function () {
- var $option = $(
- ' '
- );
-
- var message = this.options.get('translations').get('loadingMore');
-
- $option.html(message(this.lastParams));
-
- return $option;
- };
-
- return InfiniteScroll;
-});
-
-S2.define('select2/dropdown/attachBody',[
- 'jquery',
- '../utils'
-], function ($, Utils) {
- function AttachBody (decorated, $element, options) {
- this.$dropdownParent = options.get('dropdownParent') || $(document.body);
-
- decorated.call(this, $element, options);
- }
-
- AttachBody.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- var setupResultsEvents = false;
-
- decorated.call(this, container, $container);
-
- container.on('open', function () {
- self._showDropdown();
- self._attachPositioningHandler(container);
-
- if (!setupResultsEvents) {
- setupResultsEvents = true;
-
- container.on('results:all', function () {
- self._positionDropdown();
- self._resizeDropdown();
- });
-
- container.on('results:append', function () {
- self._positionDropdown();
- self._resizeDropdown();
- });
- }
- });
-
- container.on('close', function () {
- self._hideDropdown();
- self._detachPositioningHandler(container);
- });
-
- this.$dropdownContainer.on('mousedown', function (evt) {
- evt.stopPropagation();
- });
- };
-
- AttachBody.prototype.destroy = function (decorated) {
- decorated.call(this);
-
- this.$dropdownContainer.remove();
- };
-
- AttachBody.prototype.position = function (decorated, $dropdown, $container) {
- // Clone all of the container classes
- $dropdown.attr('class', $container.attr('class'));
-
- $dropdown.removeClass('select2');
- $dropdown.addClass('select2-container--open');
-
- $dropdown.css({
- position: 'absolute',
- top: -999999
- });
-
- this.$container = $container;
- };
-
- AttachBody.prototype.render = function (decorated) {
- var $container = $(' ');
-
- var $dropdown = decorated.call(this);
- $container.append($dropdown);
-
- this.$dropdownContainer = $container;
-
- return $container;
- };
-
- AttachBody.prototype._hideDropdown = function (decorated) {
- this.$dropdownContainer.detach();
- };
-
- AttachBody.prototype._attachPositioningHandler =
- function (decorated, container) {
- var self = this;
-
- var scrollEvent = 'scroll.select2.' + container.id;
- var resizeEvent = 'resize.select2.' + container.id;
- var orientationEvent = 'orientationchange.select2.' + container.id;
-
- var $watchers = this.$container.parents().filter(Utils.hasScroll);
- $watchers.each(function () {
- Utils.StoreData(this, 'select2-scroll-position', {
- x: $(this).scrollLeft(),
- y: $(this).scrollTop()
- });
- });
-
- $watchers.on(scrollEvent, function (ev) {
- var position = Utils.GetData(this, 'select2-scroll-position');
- $(this).scrollTop(position.y);
- });
-
- $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
- function (e) {
- self._positionDropdown();
- self._resizeDropdown();
- });
- };
-
- AttachBody.prototype._detachPositioningHandler =
- function (decorated, container) {
- var scrollEvent = 'scroll.select2.' + container.id;
- var resizeEvent = 'resize.select2.' + container.id;
- var orientationEvent = 'orientationchange.select2.' + container.id;
-
- var $watchers = this.$container.parents().filter(Utils.hasScroll);
- $watchers.off(scrollEvent);
-
- $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
- };
-
- AttachBody.prototype._positionDropdown = function () {
- var $window = $(window);
-
- var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
- var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
-
- var newDirection = null;
-
- var offset = this.$container.offset();
-
- offset.bottom = offset.top + this.$container.outerHeight(false);
-
- var container = {
- height: this.$container.outerHeight(false)
- };
-
- container.top = offset.top;
- container.bottom = offset.top + container.height;
-
- var dropdown = {
- height: this.$dropdown.outerHeight(false)
- };
-
- var viewport = {
- top: $window.scrollTop(),
- bottom: $window.scrollTop() + $window.height()
- };
-
- var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
- var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
-
- var css = {
- left: offset.left,
- top: container.bottom
- };
-
- // Determine what the parent element is to use for calculating the offset
- var $offsetParent = this.$dropdownParent;
-
- // For statically positioned elements, we need to get the element
- // that is determining the offset
- if ($offsetParent.css('position') === 'static') {
- $offsetParent = $offsetParent.offsetParent();
- }
-
- var parentOffset = $offsetParent.offset();
-
- css.top -= parentOffset.top;
- css.left -= parentOffset.left;
-
- if (!isCurrentlyAbove && !isCurrentlyBelow) {
- newDirection = 'below';
- }
-
- if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
- newDirection = 'above';
- } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
- newDirection = 'below';
- }
-
- if (newDirection == 'above' ||
- (isCurrentlyAbove && newDirection !== 'below')) {
- css.top = container.top - parentOffset.top - dropdown.height;
- }
-
- if (newDirection != null) {
- this.$dropdown
- .removeClass('select2-dropdown--below select2-dropdown--above')
- .addClass('select2-dropdown--' + newDirection);
- this.$container
- .removeClass('select2-container--below select2-container--above')
- .addClass('select2-container--' + newDirection);
- }
-
- this.$dropdownContainer.css(css);
- };
-
- AttachBody.prototype._resizeDropdown = function () {
- var css = {
- width: this.$container.outerWidth(false) + 'px'
- };
-
- if (this.options.get('dropdownAutoWidth')) {
- css.minWidth = css.width;
- css.position = 'relative';
- css.width = 'auto';
- }
-
- this.$dropdown.css(css);
- };
-
- AttachBody.prototype._showDropdown = function (decorated) {
- this.$dropdownContainer.appendTo(this.$dropdownParent);
-
- this._positionDropdown();
- this._resizeDropdown();
- };
-
- return AttachBody;
-});
-
-S2.define('select2/dropdown/minimumResultsForSearch',[
-
-], function () {
- function countResults (data) {
- var count = 0;
-
- for (var d = 0; d < data.length; d++) {
- var item = data[d];
-
- if (item.children) {
- count += countResults(item.children);
- } else {
- count++;
- }
- }
-
- return count;
- }
-
- function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
- this.minimumResultsForSearch = options.get('minimumResultsForSearch');
-
- if (this.minimumResultsForSearch < 0) {
- this.minimumResultsForSearch = Infinity;
- }
-
- decorated.call(this, $element, options, dataAdapter);
- }
-
- MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
- if (countResults(params.data.results) < this.minimumResultsForSearch) {
- return false;
- }
-
- return decorated.call(this, params);
- };
-
- return MinimumResultsForSearch;
-});
-
-S2.define('select2/dropdown/selectOnClose',[
- '../utils'
-], function (Utils) {
- function SelectOnClose () { }
-
- SelectOnClose.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('close', function (params) {
- self._handleSelectOnClose(params);
- });
- };
-
- SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
- if (params && params.originalSelect2Event != null) {
- var event = params.originalSelect2Event;
-
- // Don't select an item if the close event was triggered from a select or
- // unselect event
- if (event._type === 'select' || event._type === 'unselect') {
- return;
- }
- }
-
- var $highlightedResults = this.getHighlightedResults();
-
- // Only select highlighted results
- if ($highlightedResults.length < 1) {
- return;
- }
-
- var data = Utils.GetData($highlightedResults[0], 'data');
-
- // Don't re-select already selected resulte
- if (
- (data.element != null && data.element.selected) ||
- (data.element == null && data.selected)
- ) {
- return;
- }
-
- this.trigger('select', {
- data: data
- });
- };
-
- return SelectOnClose;
-});
-
-S2.define('select2/dropdown/closeOnSelect',[
-
-], function () {
- function CloseOnSelect () { }
-
- CloseOnSelect.prototype.bind = function (decorated, container, $container) {
- var self = this;
-
- decorated.call(this, container, $container);
-
- container.on('select', function (evt) {
- self._selectTriggered(evt);
- });
-
- container.on('unselect', function (evt) {
- self._selectTriggered(evt);
- });
- };
-
- CloseOnSelect.prototype._selectTriggered = function (_, evt) {
- var originalEvent = evt.originalEvent;
-
- // Don't close if the control key is being held
- if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {
- return;
- }
-
- this.trigger('close', {
- originalEvent: originalEvent,
- originalSelect2Event: evt
- });
- };
-
- return CloseOnSelect;
-});
-
-S2.define('select2/i18n/en',[],function () {
- // English
- return {
- errorLoading: function () {
- return 'The results could not be loaded.';
- },
- inputTooLong: function (args) {
- var overChars = args.input.length - args.maximum;
-
- var message = 'Please delete ' + overChars + ' character';
-
- if (overChars != 1) {
- message += 's';
- }
-
- return message;
- },
- inputTooShort: function (args) {
- var remainingChars = args.minimum - args.input.length;
-
- var message = 'Please enter ' + remainingChars + ' or more characters';
-
- return message;
- },
- loadingMore: function () {
- return 'Loading more results…';
- },
- maximumSelected: function (args) {
- var message = 'You can only select ' + args.maximum + ' item';
-
- if (args.maximum != 1) {
- message += 's';
- }
-
- return message;
- },
- noResults: function () {
- return 'No results found';
- },
- searching: function () {
- return 'Searching…';
- },
- removeAllItems: function () {
- return 'Remove all items';
- }
- };
-});
-
-S2.define('select2/defaults',[
- 'jquery',
- 'require',
-
- './results',
-
- './selection/single',
- './selection/multiple',
- './selection/placeholder',
- './selection/allowClear',
- './selection/search',
- './selection/eventRelay',
-
- './utils',
- './translation',
- './diacritics',
-
- './data/select',
- './data/array',
- './data/ajax',
- './data/tags',
- './data/tokenizer',
- './data/minimumInputLength',
- './data/maximumInputLength',
- './data/maximumSelectionLength',
-
- './dropdown',
- './dropdown/search',
- './dropdown/hidePlaceholder',
- './dropdown/infiniteScroll',
- './dropdown/attachBody',
- './dropdown/minimumResultsForSearch',
- './dropdown/selectOnClose',
- './dropdown/closeOnSelect',
-
- './i18n/en'
-], function ($, require,
-
- ResultsList,
-
- SingleSelection, MultipleSelection, Placeholder, AllowClear,
- SelectionSearch, EventRelay,
-
- Utils, Translation, DIACRITICS,
-
- SelectData, ArrayData, AjaxData, Tags, Tokenizer,
- MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
-
- Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
- AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
-
- EnglishTranslation) {
- function Defaults () {
- this.reset();
- }
-
- Defaults.prototype.apply = function (options) {
- options = $.extend(true, {}, this.defaults, options);
-
- if (options.dataAdapter == null) {
- if (options.ajax != null) {
- options.dataAdapter = AjaxData;
- } else if (options.data != null) {
- options.dataAdapter = ArrayData;
- } else {
- options.dataAdapter = SelectData;
- }
-
- if (options.minimumInputLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MinimumInputLength
- );
- }
-
- if (options.maximumInputLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MaximumInputLength
- );
- }
-
- if (options.maximumSelectionLength > 0) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- MaximumSelectionLength
- );
- }
-
- if (options.tags) {
- options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
- }
-
- if (options.tokenSeparators != null || options.tokenizer != null) {
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- Tokenizer
- );
- }
-
- if (options.query != null) {
- var Query = require(options.amdBase + 'compat/query');
-
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- Query
- );
- }
-
- if (options.initSelection != null) {
- var InitSelection = require(options.amdBase + 'compat/initSelection');
-
- options.dataAdapter = Utils.Decorate(
- options.dataAdapter,
- InitSelection
- );
- }
- }
-
- if (options.resultsAdapter == null) {
- options.resultsAdapter = ResultsList;
-
- if (options.ajax != null) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- InfiniteScroll
- );
- }
-
- if (options.placeholder != null) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- HidePlaceholder
- );
- }
-
- if (options.selectOnClose) {
- options.resultsAdapter = Utils.Decorate(
- options.resultsAdapter,
- SelectOnClose
- );
- }
- }
-
- if (options.dropdownAdapter == null) {
- if (options.multiple) {
- options.dropdownAdapter = Dropdown;
- } else {
- var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
-
- options.dropdownAdapter = SearchableDropdown;
- }
-
- if (options.minimumResultsForSearch !== 0) {
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- MinimumResultsForSearch
- );
- }
-
- if (options.closeOnSelect) {
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- CloseOnSelect
- );
- }
-
- if (
- options.dropdownCssClass != null ||
- options.dropdownCss != null ||
- options.adaptDropdownCssClass != null
- ) {
- var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
-
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- DropdownCSS
- );
- }
-
- options.dropdownAdapter = Utils.Decorate(
- options.dropdownAdapter,
- AttachBody
- );
- }
-
- if (options.selectionAdapter == null) {
- if (options.multiple) {
- options.selectionAdapter = MultipleSelection;
- } else {
- options.selectionAdapter = SingleSelection;
- }
-
- // Add the placeholder mixin if a placeholder was specified
- if (options.placeholder != null) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- Placeholder
- );
- }
-
- if (options.allowClear) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- AllowClear
- );
- }
-
- if (options.multiple) {
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- SelectionSearch
- );
- }
-
- if (
- options.containerCssClass != null ||
- options.containerCss != null ||
- options.adaptContainerCssClass != null
- ) {
- var ContainerCSS = require(options.amdBase + 'compat/containerCss');
-
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- ContainerCSS
- );
- }
-
- options.selectionAdapter = Utils.Decorate(
- options.selectionAdapter,
- EventRelay
- );
- }
-
- if (typeof options.language === 'string') {
- // Check if the language is specified with a region
- if (options.language.indexOf('-') > 0) {
- // Extract the region information if it is included
- var languageParts = options.language.split('-');
- var baseLanguage = languageParts[0];
-
- options.language = [options.language, baseLanguage];
- } else {
- options.language = [options.language];
- }
- }
-
- if ($.isArray(options.language)) {
- var languages = new Translation();
- options.language.push('en');
-
- var languageNames = options.language;
-
- for (var l = 0; l < languageNames.length; l++) {
- var name = languageNames[l];
- var language = {};
-
- try {
- // Try to load it with the original name
- language = Translation.loadPath(name);
- } catch (e) {
- try {
- // If we couldn't load it, check if it wasn't the full path
- name = this.defaults.amdLanguageBase + name;
- language = Translation.loadPath(name);
- } catch (ex) {
- // The translation could not be loaded at all. Sometimes this is
- // because of a configuration problem, other times this can be
- // because of how Select2 helps load all possible translation files.
- if (options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The language file for "' + name + '" could not be ' +
- 'automatically loaded. A fallback will be used instead.'
- );
- }
-
- continue;
- }
- }
-
- languages.extend(language);
- }
-
- options.translations = languages;
- } else {
- var baseTranslation = Translation.loadPath(
- this.defaults.amdLanguageBase + 'en'
- );
- var customTranslation = new Translation(options.language);
-
- customTranslation.extend(baseTranslation);
-
- options.translations = customTranslation;
- }
-
- return options;
- };
-
- Defaults.prototype.reset = function () {
- function stripDiacritics (text) {
- // Used 'uni range + named function' from http://jsperf.com/diacritics/18
- function match(a) {
- return DIACRITICS[a] || a;
- }
-
- return text.replace(/[^\u0000-\u007E]/g, match);
- }
-
- function matcher (params, data) {
- // Always return the object if there is nothing to compare
- if ($.trim(params.term) === '') {
- return data;
- }
-
- // Do a recursive check for options with children
- if (data.children && data.children.length > 0) {
- // Clone the data object if there are children
- // This is required as we modify the object to remove any non-matches
- var match = $.extend(true, {}, data);
-
- // Check each child of the option
- for (var c = data.children.length - 1; c >= 0; c--) {
- var child = data.children[c];
-
- var matches = matcher(params, child);
-
- // If there wasn't a match, remove the object in the array
- if (matches == null) {
- match.children.splice(c, 1);
- }
- }
-
- // If any children matched, return the new object
- if (match.children.length > 0) {
- return match;
- }
-
- // If there were no matching children, check just the plain object
- return matcher(params, match);
- }
-
- var original = stripDiacritics(data.text).toUpperCase();
- var term = stripDiacritics(params.term).toUpperCase();
-
- // Check if the text contains the term
- if (original.indexOf(term) > -1) {
- return data;
- }
-
- // If it doesn't contain the term, don't return anything
- return null;
- }
-
- this.defaults = {
- amdBase: './',
- amdLanguageBase: './i18n/',
- closeOnSelect: true,
- debug: false,
- dropdownAutoWidth: false,
- escapeMarkup: Utils.escapeMarkup,
- language: EnglishTranslation,
- matcher: matcher,
- minimumInputLength: 0,
- maximumInputLength: 0,
- maximumSelectionLength: 0,
- minimumResultsForSearch: 0,
- selectOnClose: false,
- scrollAfterSelect: false,
- sorter: function (data) {
- return data;
- },
- templateResult: function (result) {
- return result.text;
- },
- templateSelection: function (selection) {
- return selection.text;
- },
- theme: 'default',
- width: 'resolve'
- };
- };
-
- Defaults.prototype.set = function (key, value) {
- var camelKey = $.camelCase(key);
-
- var data = {};
- data[camelKey] = value;
-
- var convertedData = Utils._convertData(data);
-
- $.extend(true, this.defaults, convertedData);
- };
-
- var defaults = new Defaults();
-
- return defaults;
-});
-
-S2.define('select2/options',[
- 'require',
- 'jquery',
- './defaults',
- './utils'
-], function (require, $, Defaults, Utils) {
- function Options (options, $element) {
- this.options = options;
-
- if ($element != null) {
- this.fromElement($element);
- }
-
- this.options = Defaults.apply(this.options);
-
- if ($element && $element.is('input')) {
- var InputCompat = require(this.get('amdBase') + 'compat/inputData');
-
- this.options.dataAdapter = Utils.Decorate(
- this.options.dataAdapter,
- InputCompat
- );
- }
- }
-
- Options.prototype.fromElement = function ($e) {
- var excludedData = ['select2'];
-
- if (this.options.multiple == null) {
- this.options.multiple = $e.prop('multiple');
- }
-
- if (this.options.disabled == null) {
- this.options.disabled = $e.prop('disabled');
- }
-
- if (this.options.language == null) {
- if ($e.prop('lang')) {
- this.options.language = $e.prop('lang').toLowerCase();
- } else if ($e.closest('[lang]').prop('lang')) {
- this.options.language = $e.closest('[lang]').prop('lang');
- }
- }
-
- if (this.options.dir == null) {
- if ($e.prop('dir')) {
- this.options.dir = $e.prop('dir');
- } else if ($e.closest('[dir]').prop('dir')) {
- this.options.dir = $e.closest('[dir]').prop('dir');
- } else {
- this.options.dir = 'ltr';
- }
- }
-
- $e.prop('disabled', this.options.disabled);
- $e.prop('multiple', this.options.multiple);
-
- if (Utils.GetData($e[0], 'select2Tags')) {
- if (this.options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The `data-select2-tags` attribute has been changed to ' +
- 'use the `data-data` and `data-tags="true"` attributes and will be ' +
- 'removed in future versions of Select2.'
- );
- }
-
- Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));
- Utils.StoreData($e[0], 'tags', true);
- }
-
- if (Utils.GetData($e[0], 'ajaxUrl')) {
- if (this.options.debug && window.console && console.warn) {
- console.warn(
- 'Select2: The `data-ajax-url` attribute has been changed to ' +
- '`data-ajax--url` and support for the old attribute will be removed' +
- ' in future versions of Select2.'
- );
- }
-
- $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));
- Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));
- }
-
- var dataset = {};
-
- function upperCaseLetter(_, letter) {
- return letter.toUpperCase();
- }
-
- // Pre-load all of the attributes which are prefixed with `data-`
- for (var attr = 0; attr < $e[0].attributes.length; attr++) {
- var attributeName = $e[0].attributes[attr].name;
- var prefix = 'data-';
-
- if (attributeName.substr(0, prefix.length) == prefix) {
- // Get the contents of the attribute after `data-`
- var dataName = attributeName.substring(prefix.length);
-
- // Get the data contents from the consistent source
- // This is more than likely the jQuery data helper
- var dataValue = Utils.GetData($e[0], dataName);
-
- // camelCase the attribute name to match the spec
- var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);
-
- // Store the data attribute contents into the dataset since
- dataset[camelDataName] = dataValue;
- }
- }
-
- // Prefer the element's `dataset` attribute if it exists
- // jQuery 1.x does not correctly handle data attributes with multiple dashes
- if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
- dataset = $.extend(true, {}, $e[0].dataset, dataset);
- }
-
- // Prefer our internal data cache if it exists
- var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);
-
- data = Utils._convertData(data);
-
- for (var key in data) {
- if ($.inArray(key, excludedData) > -1) {
- continue;
- }
-
- if ($.isPlainObject(this.options[key])) {
- $.extend(this.options[key], data[key]);
- } else {
- this.options[key] = data[key];
- }
- }
-
- return this;
- };
-
- Options.prototype.get = function (key) {
- return this.options[key];
- };
-
- Options.prototype.set = function (key, val) {
- this.options[key] = val;
- };
-
- return Options;
-});
-
-S2.define('select2/core',[
- 'jquery',
- './options',
- './utils',
- './keys'
-], function ($, Options, Utils, KEYS) {
- var Select2 = function ($element, options) {
- if (Utils.GetData($element[0], 'select2') != null) {
- Utils.GetData($element[0], 'select2').destroy();
- }
-
- this.$element = $element;
-
- this.id = this._generateId($element);
-
- options = options || {};
-
- this.options = new Options(options, $element);
-
- Select2.__super__.constructor.call(this);
-
- // Set up the tabindex
-
- var tabindex = $element.attr('tabindex') || 0;
- Utils.StoreData($element[0], 'old-tabindex', tabindex);
- $element.attr('tabindex', '-1');
-
- // Set up containers and adapters
-
- var DataAdapter = this.options.get('dataAdapter');
- this.dataAdapter = new DataAdapter($element, this.options);
-
- var $container = this.render();
-
- this._placeContainer($container);
-
- var SelectionAdapter = this.options.get('selectionAdapter');
- this.selection = new SelectionAdapter($element, this.options);
- this.$selection = this.selection.render();
-
- this.selection.position(this.$selection, $container);
-
- var DropdownAdapter = this.options.get('dropdownAdapter');
- this.dropdown = new DropdownAdapter($element, this.options);
- this.$dropdown = this.dropdown.render();
-
- this.dropdown.position(this.$dropdown, $container);
-
- var ResultsAdapter = this.options.get('resultsAdapter');
- this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
- this.$results = this.results.render();
-
- this.results.position(this.$results, this.$dropdown);
-
- // Bind events
-
- var self = this;
-
- // Bind the container to all of the adapters
- this._bindAdapters();
-
- // Register any DOM event handlers
- this._registerDomEvents();
-
- // Register any internal event handlers
- this._registerDataEvents();
- this._registerSelectionEvents();
- this._registerDropdownEvents();
- this._registerResultsEvents();
- this._registerEvents();
-
- // Set the initial state
- this.dataAdapter.current(function (initialData) {
- self.trigger('selection:update', {
- data: initialData
- });
- });
-
- // Hide the original select
- $element.addClass('select2-hidden-accessible');
- $element.attr('aria-hidden', 'true');
-
- // Synchronize any monitored attributes
- this._syncAttributes();
-
- Utils.StoreData($element[0], 'select2', this);
-
- // Ensure backwards compatibility with $element.data('select2').
- $element.data('select2', this);
- };
-
- Utils.Extend(Select2, Utils.Observable);
-
- Select2.prototype._generateId = function ($element) {
- var id = '';
-
- if ($element.attr('id') != null) {
- id = $element.attr('id');
- } else if ($element.attr('name') != null) {
- id = $element.attr('name') + '-' + Utils.generateChars(2);
- } else {
- id = Utils.generateChars(4);
- }
-
- id = id.replace(/(:|\.|\[|\]|,)/g, '');
- id = 'select2-' + id;
-
- return id;
- };
-
- Select2.prototype._placeContainer = function ($container) {
- $container.insertAfter(this.$element);
-
- var width = this._resolveWidth(this.$element, this.options.get('width'));
-
- if (width != null) {
- $container.css('width', width);
- }
- };
-
- Select2.prototype._resolveWidth = function ($element, method) {
- var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
-
- if (method == 'resolve') {
- var styleWidth = this._resolveWidth($element, 'style');
-
- if (styleWidth != null) {
- return styleWidth;
- }
-
- return this._resolveWidth($element, 'element');
- }
-
- if (method == 'element') {
- var elementWidth = $element.outerWidth(false);
-
- if (elementWidth <= 0) {
- return 'auto';
- }
-
- return elementWidth + 'px';
- }
-
- if (method == 'style') {
- var style = $element.attr('style');
-
- if (typeof(style) !== 'string') {
- return null;
- }
-
- var attrs = style.split(';');
-
- for (var i = 0, l = attrs.length; i < l; i = i + 1) {
- var attr = attrs[i].replace(/\s/g, '');
- var matches = attr.match(WIDTH);
-
- if (matches !== null && matches.length >= 1) {
- return matches[1];
- }
- }
-
- return null;
- }
-
- return method;
- };
-
- Select2.prototype._bindAdapters = function () {
- this.dataAdapter.bind(this, this.$container);
- this.selection.bind(this, this.$container);
-
- this.dropdown.bind(this, this.$container);
- this.results.bind(this, this.$container);
- };
-
- Select2.prototype._registerDomEvents = function () {
- var self = this;
-
- this.$element.on('change.select2', function () {
- self.dataAdapter.current(function (data) {
- self.trigger('selection:update', {
- data: data
- });
- });
- });
-
- this.$element.on('focus.select2', function (evt) {
- self.trigger('focus', evt);
- });
-
- this._syncA = Utils.bind(this._syncAttributes, this);
- this._syncS = Utils.bind(this._syncSubtree, this);
-
- if (this.$element[0].attachEvent) {
- this.$element[0].attachEvent('onpropertychange', this._syncA);
- }
-
- var observer = window.MutationObserver ||
- window.WebKitMutationObserver ||
- window.MozMutationObserver
- ;
-
- if (observer != null) {
- this._observer = new observer(function (mutations) {
- $.each(mutations, self._syncA);
- $.each(mutations, self._syncS);
- });
- this._observer.observe(this.$element[0], {
- attributes: true,
- childList: true,
- subtree: false
- });
- } else if (this.$element[0].addEventListener) {
- this.$element[0].addEventListener(
- 'DOMAttrModified',
- self._syncA,
- false
- );
- this.$element[0].addEventListener(
- 'DOMNodeInserted',
- self._syncS,
- false
- );
- this.$element[0].addEventListener(
- 'DOMNodeRemoved',
- self._syncS,
- false
- );
- }
- };
-
- Select2.prototype._registerDataEvents = function () {
- var self = this;
-
- this.dataAdapter.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerSelectionEvents = function () {
- var self = this;
- var nonRelayEvents = ['toggle', 'focus'];
-
- this.selection.on('toggle', function () {
- self.toggleDropdown();
- });
-
- this.selection.on('focus', function (params) {
- self.focus(params);
- });
-
- this.selection.on('*', function (name, params) {
- if ($.inArray(name, nonRelayEvents) !== -1) {
- return;
- }
-
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerDropdownEvents = function () {
- var self = this;
-
- this.dropdown.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerResultsEvents = function () {
- var self = this;
-
- this.results.on('*', function (name, params) {
- self.trigger(name, params);
- });
- };
-
- Select2.prototype._registerEvents = function () {
- var self = this;
-
- this.on('open', function () {
- self.$container.addClass('select2-container--open');
- });
-
- this.on('close', function () {
- self.$container.removeClass('select2-container--open');
- });
-
- this.on('enable', function () {
- self.$container.removeClass('select2-container--disabled');
- });
-
- this.on('disable', function () {
- self.$container.addClass('select2-container--disabled');
- });
-
- this.on('blur', function () {
- self.$container.removeClass('select2-container--focus');
- });
-
- this.on('query', function (params) {
- if (!self.isOpen()) {
- self.trigger('open', {});
- }
-
- this.dataAdapter.query(params, function (data) {
- self.trigger('results:all', {
- data: data,
- query: params
- });
- });
- });
-
- this.on('query:append', function (params) {
- this.dataAdapter.query(params, function (data) {
- self.trigger('results:append', {
- data: data,
- query: params
- });
- });
- });
-
- this.on('keypress', function (evt) {
- var key = evt.which;
-
- if (self.isOpen()) {
- if (key === KEYS.ESC || key === KEYS.TAB ||
- (key === KEYS.UP && evt.altKey)) {
- self.close();
-
- evt.preventDefault();
- } else if (key === KEYS.ENTER) {
- self.trigger('results:select', {});
-
- evt.preventDefault();
- } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
- self.trigger('results:toggle', {});
-
- evt.preventDefault();
- } else if (key === KEYS.UP) {
- self.trigger('results:previous', {});
-
- evt.preventDefault();
- } else if (key === KEYS.DOWN) {
- self.trigger('results:next', {});
-
- evt.preventDefault();
- }
- } else {
- if (key === KEYS.ENTER || key === KEYS.SPACE ||
- (key === KEYS.DOWN && evt.altKey)) {
- self.open();
-
- evt.preventDefault();
- }
- }
- });
- };
-
- Select2.prototype._syncAttributes = function () {
- this.options.set('disabled', this.$element.prop('disabled'));
-
- if (this.options.get('disabled')) {
- if (this.isOpen()) {
- this.close();
- }
-
- this.trigger('disable', {});
- } else {
- this.trigger('enable', {});
- }
- };
-
- Select2.prototype._syncSubtree = function (evt, mutations) {
- var changed = false;
- var self = this;
-
- // Ignore any mutation events raised for elements that aren't options or
- // optgroups. This handles the case when the select element is destroyed
- if (
- evt && evt.target && (
- evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
- )
- ) {
- return;
- }
-
- if (!mutations) {
- // If mutation events aren't supported, then we can only assume that the
- // change affected the selections
- changed = true;
- } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
- for (var n = 0; n < mutations.addedNodes.length; n++) {
- var node = mutations.addedNodes[n];
-
- if (node.selected) {
- changed = true;
- }
- }
- } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
- changed = true;
- }
-
- // Only re-pull the data if we think there is a change
- if (changed) {
- this.dataAdapter.current(function (currentData) {
- self.trigger('selection:update', {
- data: currentData
- });
- });
- }
- };
-
- /**
- * Override the trigger method to automatically trigger pre-events when
- * there are events that can be prevented.
- */
- Select2.prototype.trigger = function (name, args) {
- var actualTrigger = Select2.__super__.trigger;
- var preTriggerMap = {
- 'open': 'opening',
- 'close': 'closing',
- 'select': 'selecting',
- 'unselect': 'unselecting',
- 'clear': 'clearing'
- };
-
- if (args === undefined) {
- args = {};
- }
-
- if (name in preTriggerMap) {
- var preTriggerName = preTriggerMap[name];
- var preTriggerArgs = {
- prevented: false,
- name: name,
- args: args
- };
-
- actualTrigger.call(this, preTriggerName, preTriggerArgs);
-
- if (preTriggerArgs.prevented) {
- args.prevented = true;
-
- return;
- }
- }
-
- actualTrigger.call(this, name, args);
- };
-
- Select2.prototype.toggleDropdown = function () {
- if (this.options.get('disabled')) {
- return;
- }
-
- if (this.isOpen()) {
- this.close();
- } else {
- this.open();
- }
- };
-
- Select2.prototype.open = function () {
- if (this.isOpen()) {
- return;
- }
-
- this.trigger('query', {});
- };
-
- Select2.prototype.close = function () {
- if (!this.isOpen()) {
- return;
- }
-
- this.trigger('close', {});
- };
-
- Select2.prototype.isOpen = function () {
- return this.$container.hasClass('select2-container--open');
- };
-
- Select2.prototype.hasFocus = function () {
- return this.$container.hasClass('select2-container--focus');
- };
-
- Select2.prototype.focus = function (data) {
- // No need to re-trigger focus events if we are already focused
- if (this.hasFocus()) {
- return;
- }
-
- this.$container.addClass('select2-container--focus');
- this.trigger('focus', {});
- };
-
- Select2.prototype.enable = function (args) {
- if (this.options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `select2("enable")` method has been deprecated and will' +
- ' be removed in later Select2 versions. Use $element.prop("disabled")' +
- ' instead.'
- );
- }
-
- if (args == null || args.length === 0) {
- args = [true];
- }
-
- var disabled = !args[0];
-
- this.$element.prop('disabled', disabled);
- };
-
- Select2.prototype.data = function () {
- if (this.options.get('debug') &&
- arguments.length > 0 && window.console && console.warn) {
- console.warn(
- 'Select2: Data can no longer be set using `select2("data")`. You ' +
- 'should consider setting the value instead using `$element.val()`.'
- );
- }
-
- var data = [];
-
- this.dataAdapter.current(function (currentData) {
- data = currentData;
- });
-
- return data;
- };
-
- Select2.prototype.val = function (args) {
- if (this.options.get('debug') && window.console && console.warn) {
- console.warn(
- 'Select2: The `select2("val")` method has been deprecated and will be' +
- ' removed in later Select2 versions. Use $element.val() instead.'
- );
- }
-
- if (args == null || args.length === 0) {
- return this.$element.val();
- }
-
- var newVal = args[0];
-
- if ($.isArray(newVal)) {
- newVal = $.map(newVal, function (obj) {
- return obj.toString();
- });
- }
-
- this.$element.val(newVal).trigger('change');
- };
-
- Select2.prototype.destroy = function () {
- this.$container.remove();
-
- if (this.$element[0].detachEvent) {
- this.$element[0].detachEvent('onpropertychange', this._syncA);
- }
-
- if (this._observer != null) {
- this._observer.disconnect();
- this._observer = null;
- } else if (this.$element[0].removeEventListener) {
- this.$element[0]
- .removeEventListener('DOMAttrModified', this._syncA, false);
- this.$element[0]
- .removeEventListener('DOMNodeInserted', this._syncS, false);
- this.$element[0]
- .removeEventListener('DOMNodeRemoved', this._syncS, false);
- }
-
- this._syncA = null;
- this._syncS = null;
-
- this.$element.off('.select2');
- this.$element.attr('tabindex',
- Utils.GetData(this.$element[0], 'old-tabindex'));
-
- this.$element.removeClass('select2-hidden-accessible');
- this.$element.attr('aria-hidden', 'false');
- Utils.RemoveData(this.$element[0]);
- this.$element.removeData('select2');
-
- this.dataAdapter.destroy();
- this.selection.destroy();
- this.dropdown.destroy();
- this.results.destroy();
-
- this.dataAdapter = null;
- this.selection = null;
- this.dropdown = null;
- this.results = null;
- };
-
- Select2.prototype.render = function () {
- var $container = $(
- '' +
- ' ' +
- ' ' +
- ' '
- );
-
- $container.attr('dir', this.options.get('dir'));
-
- this.$container = $container;
-
- this.$container.addClass('select2-container--' + this.options.get('theme'));
-
- Utils.StoreData($container[0], 'element', this.$element);
-
- return $container;
- };
-
- return Select2;
-});
-
-S2.define('jquery-mousewheel',[
- 'jquery'
-], function ($) {
- // Used to shim jQuery.mousewheel for non-full builds.
- return $;
-});
-
-S2.define('jquery.select2',[
- 'jquery',
- 'jquery-mousewheel',
-
- './select2/core',
- './select2/defaults',
- './select2/utils'
-], function ($, _, Select2, Defaults, Utils) {
- if ($.fn.pp_select2 == null) {
- // All methods that should return the element
- var thisMethods = ['open', 'close', 'destroy'];
-
- $.fn.pp_select2 = function (options) {
- options = options || {};
-
- if (typeof options === 'object') {
- this.each(function () {
- var instanceOptions = $.extend(true, {}, options);
-
- var instance = new Select2($(this), instanceOptions);
- });
-
- return this;
- } else if (typeof options === 'string') {
- var ret;
- var args = Array.prototype.slice.call(arguments, 1);
-
- this.each(function () {
- var instance = Utils.GetData(this, 'select2');
-
- if (instance == null && window.console && console.error) {
- console.error(
- 'The select2(\'' + options + '\') method was called on an ' +
- 'element that is not using Select2.'
- );
- }
-
- ret = instance[options].apply(instance, args);
- });
-
- // Check if we should be returning `this`
- if ($.inArray(options, thisMethods) > -1) {
- return this;
- }
-
- return ret;
- } else {
- throw new Error('Invalid arguments for Select2: ' + options);
- }
- };
- }
-
- if ($.fn.pp_select2.defaults == null) {
- $.fn.pp_select2.defaults = Defaults;
- }
-
- return Select2;
-});
-
- // Return the AMD loader configuration so it can be used outside of this file
- return {
- define: S2.define,
- require: S2.require
- };
-}());
-
- // Autoload the jQuery bindings
- // We know that all of the modules exist above this, so we're safe
- var select2 = S2.require('jquery.select2');
-
- // Hold the AMD module references on the jQuery function that was just loaded
- // This allows Select2 to use the internal loader outside of this file, such
- // as in the language files.
- jQuery.fn.pp_select2.amd = S2;
-
- // Return the Select2 instance for anyone who is importing it.
- return select2;
-}));
diff --git a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.min.js b/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.min.js
deleted file mode 100644
index fd5707470..000000000
--- a/public/wp-content/plugins/publishpress/common/libs/select2/js/select2.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
- * Select2 4.0.7 - modified by OSTraining.
- * https://select2.github.io
- *
- * Released under the MIT license
- * https://github.com/select2/select2/blob/master/LICENSE.md
- *
- * Changelog:
- *
- * [2019-06-24] - Refactored jQuery.fn.select2 to jQuery.fn.pp_select2 to avoid conflict with 3rd party plugins that load legacy versions of this library;
- */
-!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.pp_select2&&u.fn.pp_select2.amd)var e=u.fn.pp_select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,w;function b(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t]},i}),e.define("select2/results",["jquery","./utils"],function(p,h){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return h.Extend(r,h.Observable),r.prototype.render=function(){var e=p('');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=p(' '),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});d.append(a),o.append(s),o.append(d)}else this.template(e,t);return h.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=h.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):p(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n(' ');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=(e.id,e.id+"-results");this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),window.setTimeout(function(){n.$selection.focus()},0),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex)}),e.on("disable",function(){n.$selection.attr("tabindex","-1")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){n(this);this!=t[0]&&r.GetData(this,"element").pp_select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(' '),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.focus()})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e(" ")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r),n.attr("title",t.title||t.text)}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,a){function n(e,t){n.__super__.constructor.apply(this,arguments)}return a.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html(''),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.options.get("disabled")){var t=i(this).parent(),n=a.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('× ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,s,a){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r(' ');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){r.$search.attr("aria-activedescendant",e.id)}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===a.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.query=function(n,r,i){var o=this;this.current(function(e){var t=null!=e?e.length:0;0=o.maximumSelectionLength?o.trigger("results:message",{message:"maximumSelected",args:{maximum:o.maximumSelectionLength}}):n.call(o,r,i)})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t(' ');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(i,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=i(' ');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){i(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.focus(),window.setTimeout(function(){r.$search.focus()},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.val(""),r.$search.blur()}),t.on("focus",function(){t.isOpen()||r.$search.focus()}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(i){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&this.$results.append(this.$loadingMore)},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",function(){var e=i.contains(document.documentElement,r.$loadingMore[0]);if(!r.loading&&e){var t=r.$results.offset().top+r.$results.outerHeight(!1);r.$loadingMore.offset().top+r.$loadingMore.outerHeight(!1)<=t+50&&r.loadMore()}})},e.prototype.loadMore=function(){this.loading=!0;var e=i.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=i(' '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=n.get("dropdownParent")||f(document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this,i=!1;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),i||(i=!0,t.on("results:all",function(){r._positionDropdown(),r._resizeDropdown()}),t.on("results:append",function(){r._positionDropdown(),r._resizeDropdown()}))}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(" "),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h=p.offset();d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r ');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.pp_select2){var a=["open","close","destroy"];i.fn.pp_select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1
+
+
+
+ Adding a Timepicker to jQuery UI Datepicker
+
+
+
+
+
+
+
+
+
+
+
+
Adding a Timepicker to jQuery UI Datepicker
+
+
The timepicker addon adds a timepicker to jQuery UI Datepicker, thus the datepicker and slider components (jQueryUI) are required for using any of these. In addition all datepicker options are still available through the timepicker addon.
+
+
If you are interested in contributing to Timepicker Addon please check it out on GitHub . If you do make additions please keep in mind I enjoy tabs over spaces,.. But contributions are welcome in any form.
+
+
Back to Blog or Follow on Twitter
+
+
Donation
+
Has this Timepicker Addon been helpful to you?
+
+
+
+
+
+
+
+
+
Getting Started
+
+
Highly Recommended
+
+
Handling Time eBook
+
+
Check out the Handling Time eBook to learn from the basic setup to advanced i18n usage, and from client's javascript to the server's database.
+
+
buy eBook + Example code
+
buy eBook
+
+
+
+
Subscribe to Blog and Twitter
+
Subscribe to my blog via email and follow @PracticalWeb on Twitter. I post for nearly every new version, so you know about updates.
+
+
+
+
Download
+
Download Timepicker Addon and the required CSS .
+
+
Download/Contribute on GitHub (Need the entire repo? Find a bug? See if its fixed here)
+
+
If you prefer a hosted CDN there are a couple available: CDNJS , jsDelivr .
+
+
+
Requirements
+
You also need to include jQuery and jQuery UI with datepicker and slider wigits. You should include them in your page in the following order:
+
+ jQuery
+ jQueryUI (with datepicker and slider wigits)
+ Timepicker
+
+
+
+
Version
+
Version 1.6.3
+
+
Last updated on 2016-04-20
+
jQuery Timepicker Addon is currently available for use in all personal or commercial projects under the MIT license.
+
MIT License
+
+
+
+
+
+
+
Options
+
+
The timepicker does inherit all options from datepicker. However, there are many options that are shared by them both, and many timepicker only options:
+
+
Localization Options
+
+ currentText
+ Default: "Now", A Localization Setting - Text for the Now button.
+
+ closeText
+ Default: "Done", A Localization Setting - Text for the Close button.
+
+ amNames
+ Default: ['AM', 'A'], A Localization Setting - Array of strings to try and parse against to determine AM.
+
+ pmNames
+ Default: ['PM', 'P'], A Localization Setting - Array of strings to try and parse against to determine PM.
+
+ timeFormat
+ Default: "HH:mm", A Localization Setting - String of format tokens to be replaced with the time. See Formatting .
+
+ timeSuffix
+ Default: "", A Localization Setting - String to place after the formatted time.
+
+ timeOnlyTitle
+ Default: "Choose Time", A Localization Setting - Title of the wigit when using only timepicker.
+
+ timeText
+ Default: "Time", A Localization Setting - Label used within timepicker for the formatted time.
+
+ hourText
+ Default: "Hour", A Localization Setting - Label used to identify the hour slider.
+
+ minuteText
+ Default: "Minute", A Localization Setting - Label used to identify the minute slider.
+
+ secondText
+ Default: "Second", A Localization Setting - Label used to identify the second slider.
+
+ millisecText
+ Default: "Millisecond", A Localization Setting - Label used to identify the millisecond slider.
+
+ microsecText
+ Default: "Microsecond", A Localization Setting - Label used to identify the microsecond slider.
+
+ timezoneText
+ Default: "Timezone", A Localization Setting - Label used to identify the timezone slider.
+
+ isRTL
+ Default: false, A Localization Setting - Right to Left support.
+
+
+
Alt Field Options
+
+
+ altFieldTimeOnly
+ Default: true - When altField is used from datepicker altField will only receive the formatted time and the original field only receives date.
+
+ altSeparator
+ Default: (separator option) - String placed between formatted date and formatted time in the altField.
+
+ altTimeSuffix
+ Default: (timeSuffix option) - String always placed after the formatted time in the altField.
+
+ altTimeFormat
+ Default: (timeFormat option) - The time format to use with the altField.
+
+ altRedirectFocus
+ Default: true - Whether to immediately focus the main field whenever the altField receives focus. Effective at construction time only, changing it later has no effect.
+
+
+
Timezone Options
+
+
+ timezoneList
+ Default: [generated timezones] - An array of timezones used to populate the timezone select. Can be an array of values or an array of objects: { label: "EDT", value: -240 }. The value should be the offset number in minutes. So "-0400" which is the format "-hhmm", would equate to -240 minutes.
+
+
+
Time Field Options
+
+
+ controlType
+ Default: 'slider' - Whether to use 'slider' or 'select'. If 'slider' is unavailable through jQueryUI, 'select' will be used. For advanced usage you may pass an object which implements "create", "options", "value" methods to use controls other than sliders or selects. See the _controls property in the source code for more details.
+{
+ create: function(tp_inst, obj, unit, val, min, max, step){
+ // generate whatever controls you want here, just return obj
+ },
+ options: function(tp_inst, obj, unit, opts, val){
+ // if val==undefined return the value, else return obj
+ },
+ value: function(tp_inst, obj, unit, val){
+ // if val==undefined return the value, else return obj
+ }
+}
+
+
+ showHour
+ Default: null - Whether to show the hour control. The default of null will use detection from timeFormat.
+
+ showMinute
+ Default: null - Whether to show the minute control. The default of null will use detection from timeFormat.
+
+ showSecond
+ Default: null - Whether to show the second control. The default of null will use detection from timeFormat.
+
+ showMillisec
+ Default: null - Whether to show the millisecond control. The default of null will use detection from timeFormat.
+
+ showMicrosec
+ Default: null - Whether to show the microsecond control. The default of null will use detection from timeFormat.
+
+ showTimezone
+ Default: null - Whether to show the timezone select.
+
+ showTime
+ Default: true - Whether to show the time selected within the datetimepicker.
+
+ stepHour
+ Default: 1 - Hours per step the slider makes.
+
+ stepMinute
+ Default: 1 - Minutes per step the slider makes.
+
+ stepSecond
+ Default: 1 - Seconds per step the slider makes.
+
+ stepMillisec
+ Default: 1 - Milliseconds per step the slider makes.
+
+ stepMicrosec
+ Default: 1 - Microseconds per step the slider makes.
+
+ hour
+ Default: 0 - Initial hour set.
+
+ minute
+ Default: 0 - Initial minute set.
+
+ second
+ Default: 0 - Initial second set.
+
+ millisec
+ Default: 0 - Initial millisecond set.
+
+ microsec
+ Default: 0 - Initial microsecond set. Note: Javascript's native Date object does not natively support microseconds. Timepicker adds ability to simply Date.setMicroseconds(m) and Date.getMicroseconds(). Date comparisons will not acknowledge microseconds. Use this only for display purposes.
+
+ timezone
+ Default: null - Initial timezone set. This is the offset in minutes. If null the browser's local timezone will be used. If you're timezone is "-0400" you would use -240. For backwards compatibility you may pass "-0400", however the timezone is stored in minutes and more reliable.
+
+ hourMin
+ Default: 0 - The minimum hour allowed for all dates.
+
+ minuteMin
+ Default: 0 - The minimum minute allowed for all dates.
+
+ secondMin
+ Default: 0 - The minimum second allowed for all dates.
+
+ millisecMin
+ Default: 0 - The minimum millisecond allowed for all dates.
+
+ microsecMin
+ Default: 0 - The minimum microsecond allowed for all dates.
+
+ hourMax
+ Default: 23 - The maximum hour allowed for all dates.
+
+ minuteMax
+ Default: 59 - The maximum minute allowed for all dates.
+
+ secondMax
+ Default: 59 - The maximum second allowed for all dates.
+
+ millisecMax
+ Default: 999 - The maximum millisecond allowed for all dates.
+
+ microsecMax
+ Default: 999 - The maximum microsecond allowed for all dates.
+
+ hourGrid
+ Default: 0 - When greater than 0 a label grid will be generated under the slider. This number represents the units (in hours) between labels.
+
+ minuteGrid
+ Default: 0 - When greater than 0 a label grid will be generated under the slider. This number represents the units (in minutes) between labels.
+
+ secondGrid
+ Default: 0 - When greater than 0 a label grid will be genereated under the slider. This number represents the units (in seconds) between labels.
+
+ millisecGrid
+ Default: 0 - When greater than 0 a label grid will be genereated under the slider. This number represents the units (in milliseconds) between labels.
+
+ microsecGrid
+ Default: 0 - When greater than 0 a label grid will be genereated under the slider. This number represents the units (in microseconds) between labels.
+
+
+
Other Options
+
+ showButtonPanel
+ Default: true - Whether to show the button panel at the bottom. This is generally needed.
+
+ timeInput
+ Default: false - Allows direct input in time field
+
+ timeOnly
+ Default: false - Hide the datepicker and only provide a time interface.
+
+ timeOnlyShowDate
+ Default: false - Show the date and time in the input, but only allow the timepicker.
+
+ afterInject
+ Default: null - Function to be called when the timepicker or selection control is injected or re-rendered. Called in the context of the timepicker instance.
+
+ onSelect
+ Default: null - Function to be called when a date is chosen or time has changed (parameters: datetimeText, datepickerInstance).
+
+ alwaysSetTime
+ Default: true - Always have a time set internally, even before user has chosen one.
+
+ separator
+ Default: " " - When formatting the time this string is placed between the formatted date and formatted time.
+
+ pickerTimeFormat
+ Default: (timeFormat option) - How to format the time displayed within the timepicker.
+
+ pickerTimeSuffix
+ Default: (timeSuffix option) - String to place after the formatted time within the timepicker.
+
+ showTimepicker
+ Default: true - Whether to show the timepicker within the datepicker.
+
+ oneLine
+ Default: false - Try to show the time dropdowns all on one line. This should be used with controlType 'select' and as few units as possible.
+
+ addSliderAccess
+ Default: false - Adds the sliderAccess plugin to sliders within timepicker
+
+ sliderAccessArgs
+ Default: null - Object to pass to sliderAccess when used.
+
+ defaultValue
+ Default: null - String of the default time value placed in the input on focus when the input is empty.
+
+ minDateTime
+ Default: null - Date object of the minimum datetime allowed. Also available as minDate.
+
+ maxDateTime
+ Default: null - Date object of the maximum datetime allowed. Also Available as maxDate.
+
+ minTime
+ Default: null - String of the minimum time allowed. '8:00 am' will restrict to times after 8am
+
+ maxTime
+ Default: null - String of the maximum time allowed. '8:00 pm' will restrict to times before 8pm
+
+ parse
+ Default: 'strict' - How to parse the time string. Two methods are provided: 'strict' which must match the timeFormat exactly, and 'loose' which uses javascript's new Date(timeString) to guess the time. You may also pass in a function(timeFormat, timeString, options) to handle the parsing yourself, returning a simple object:
+{
+ hour: 19,
+ minute: 10,
+ second: 23,
+ millisec: 45,
+ microsec: 23,
+ timezone: '-0400'
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Working with Localizations
+
+
Timepicker comes with many translations and localizations, thanks to all the contributors. They can be found in the i18n folder in the git repo.
+
+
The quick and cheap way to use localizations is to pass in options to a timepicker instance:
+
+
$('#example123').timepicker({
+ timeOnlyTitle: 'Выберите время',
+ timeText: 'Время',
+ hourText: 'Часы',
+ minuteText: 'Минуты',
+ secondText: 'Секунды',
+ currentText: 'Сейчас',
+ closeText: 'Закрыть'
+});
+
+
However, if you plan to use timepicker extensively you will need to include (build your own) localization. It is simply assigning those same variables to an object.
+
As you see in the example below we maintain a separate object for timepicker. This way we aren't bound to any future changes within datepicker.
+
+
$.datepicker.regional['ru'] = {
+ closeText: 'Закрыть',
+ prevText: '<Пред',
+ nextText: 'След>',
+ currentText: 'Сегодня',
+ monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
+ 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
+ monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
+ 'Июл','Авг','Сен','Окт','Ноя','Дек'],
+ dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
+ dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
+ dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
+ weekHeader: 'Не',
+ dateFormat: 'dd.mm.yy',
+ firstDay: 1,
+ isRTL: false,
+ showMonthAfterYear: false,
+ yearSuffix: ''
+};
+$.datepicker.setDefaults($.datepicker.regional['ru']);
+
+
+$.timepicker.regional['ru'] = {
+ timeOnlyTitle: 'Выберите время',
+ timeText: 'Время',
+ hourText: 'Часы',
+ minuteText: 'Минуты',
+ secondText: 'Секунды',
+ millisecText: 'Миллисекунды',
+ timezoneText: 'Часовой пояс',
+ currentText: 'Сейчас',
+ closeText: 'Закрыть',
+ timeFormat: 'HH:mm',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ isRTL: false
+};
+$.timepicker.setDefaults($.timepicker.regional['ru']);
+
+
+
Now all you have to do is call timepicker and the Russian localization is used. Generally you only need to include the localization file, it will setDefaults() for you.
+
As of version 1.4.5 a combined file of all localizations available is included. This file DOES NOT call setDefaults(), so you will need to pass, or merge with your options.
+
+
$('#example123').timepicker($.timepicker.regional['ru']);
+
+
+
Localization files for datepicker are typically available in your jQueryUI downloads.
+
+
+
+
+
+
Examples
+
+
+
+
Basic Initializations
+
+
+
+
Add a simple datetimepicker to jQuery UI's datepicker
+
+
+
+
+$('#basic_example_1').datetimepicker();
+
+
+
+
+
+
+
Add only a timepicker:
+
+
+
+
+$('#basic_example_2').timepicker();
+
+
+
+
+
+
Format the time:
+
+
+
+
+$('#basic_example_3').datetimepicker({
+ timeFormat: "hh:mm tt"
+});
+
+
+
+
+
+
+
Timepicker comes with a collection of localization files and one combined file with all available localizations. $.timepicker.regional["your localization code here"] is a simple object with preset options:
+
+
+
+
+$('#basic_example_4').timepicker(
+ $.timepicker.regional['es']
+);
+
+
+
+
Using Timezones
+
+
+
+
Simplest timezone usage:
+
+
+
+
+$('#timezone_example_1').datetimepicker({
+ timeFormat: 'hh:mm tt z'
+});
+
+
+
+
+
+
Define your own timezone options:
+
+
+
+
+$('#timezone_example_2').datetimepicker({
+ timeFormat: 'HH:mm z',
+ timezoneList: [
+ { value: -300, label: 'Eastern'},
+ { value: -360, label: 'Central' },
+ { value: -420, label: 'Mountain' },
+ { value: -480, label: 'Pacific' }
+ ]
+});
+
+
+
+
Slider Modifications
+
+
+
+
Add a grid to each slider:
+
+
+
+
+$('#slider_example_1').timepicker({
+ hourGrid: 4,
+ minuteGrid: 10,
+ timeFormat: 'hh:mm tt'
+});
+
+
+
+
+
+
Set the interval step of sliders:
+
+
+
+
+$('#slider_example_2').datetimepicker({
+ timeFormat: 'HH:mm:ss',
+ stepHour: 2,
+ stepMinute: 10,
+ stepSecond: 10
+});
+
+
+
+
+
+
Add sliderAccess plugin for touch devices:
+
+
+
+
+$('#slider_example_3').datetimepicker({
+ addSliderAccess: true,
+ sliderAccessArgs: { touchonly: false }
+});
+
+
+
+
+
Use dropdowns instead of sliders. By default if slider is not available dropdowns will be used.
+
+
+
+
+$('#slider_example_4').datetimepicker({
+ controlType: 'select',
+ timeFormat: 'hh:mm tt'
+});
+
+
+
+
+
Uses one line dropdowns instead of sliders.
+
+
+
+
+$('#slider_example_4andHalf').datetimepicker({
+ controlType: 'select',
+ oneLine: true,
+ timeFormat: 'hh:mm tt'
+});
+
+
+
+
+
Create your own control by implementing the create, options, and value methods. If you want to use your new control for all instances use the $.timepicker.setDefaults({controlType:myControl}). Here we implement jQueryUI's spinner control (jQueryUI 1.9+).
+
+
+
+
var myControl= {
+ create: function(tp_inst, obj, unit, val, min, max, step){
+ $('<input class="ui-timepicker-input" value="'+val+'" style="width:50%">')
+ .appendTo(obj)
+ .spinner({
+ min: min,
+ max: max,
+ step: step,
+ change: function(e,ui){ // key events
+ // don't call if api was used and not key press
+ if(e.originalEvent !== undefined)
+ tp_inst._onTimeChange();
+ tp_inst._onSelectHandler();
+ },
+ spin: function(e,ui){ // spin events
+ tp_inst.control.value(tp_inst, obj, unit, ui.value);
+ tp_inst._onTimeChange();
+ tp_inst._onSelectHandler();
+ }
+ });
+ return obj;
+ },
+ options: function(tp_inst, obj, unit, opts, val){
+ if(typeof(opts) == 'string' && val !== undefined)
+ return obj.find('.ui-timepicker-input').spinner(opts, val);
+ return obj.find('.ui-timepicker-input').spinner(opts);
+ },
+ value: function(tp_inst, obj, unit, val){
+ if(val !== undefined)
+ return obj.find('.ui-timepicker-input').spinner('value', val);
+ return obj.find('.ui-timepicker-input').spinner('value');
+ }
+};
+
+$('#slider_example_5').datetimepicker({
+ controlType: myControl
+});
+
+
+
Alternate Fields
+
+
+
+
Alt field in the simplest form:
+
+
+
+
+
+$('#alt_example_1').datetimepicker({
+ altField: "#alt_example_1_alt"
+});
+
+
+
+
+
+
With datetime in both:
+
+
+
+
+
+$('#alt_example_2').datetimepicker({
+ altField: "#alt_example_2_alt",
+ altFieldTimeOnly: false
+});
+
+
+
+
+
+
Format the altField differently:
+
+
+
+
+
+$('#alt_example_3').datetimepicker({
+ altField: "#alt_example_3_alt",
+ altFieldTimeOnly: false,
+ altFormat: "yy-mm-dd",
+ altTimeFormat: "h:m t",
+ altSeparator: " @ "
+});
+
+
+
+
+
+
With inline mode using altField:
+
+
+
+
+
+$('#alt_example_4').datetimepicker({
+ altField: "#alt_example_4_alt",
+ altFieldTimeOnly: false
+});
+
+
+
+
+
+
+
+
Allows time displayed inside the picker to allow being typed in.
+
+
+
+
+$('#input_example_1').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt"
+});
+
+
+
+
+
+
Don't show any sliders, only the time input.
+
+
+
+
+$('#input_example_2').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt",
+ showHour: false,
+ showMinute: false
+});
+
+
+
+
Time Restraints
+
+
+
+
Set the min/max hour of every date:
+
+
+
+
+$('#rest_example_1').timepicker({
+ hourMin: 8,
+ hourMax: 16
+});
+
+
+
+
+
+
Set the min/max date numerically:
+
+
+
+
+$('#rest_example_2').datetimepicker({
+ numberOfMonths: 2,
+ minDate: 0,
+ maxDate: 30
+});
+
+
+
+
+
+
Set the min/max date and time with a Date object:
+
+
+
+
+$('#rest_example_3').datetimepicker({
+ minDate: new Date(2010, 11, 20, 8, 30),
+ maxDate: new Date(2010, 11, 31, 17, 30)
+});
+
+
+
+
+
Time Ranges
+
+
+
+
Restrict a start and end date by using onSelect and onClose events for more control over functionality:
+
For more examples and advanced usage grab the Handling Time eBook .
+
+
+
+
+
+var startDateTextBox = $('#range_example_1_start');
+var endDateTextBox = $('#range_example_1_end');
+
+startDateTextBox.datetimepicker({
+ timeFormat: 'HH:mm z',
+ onClose: function(dateText, inst) {
+ if (endDateTextBox.val() != '') {
+ var testStartDate = startDateTextBox.datetimepicker('getDate');
+ var testEndDate = endDateTextBox.datetimepicker('getDate');
+ if (testStartDate > testEndDate)
+ endDateTextBox.datetimepicker('setDate', testStartDate);
+ }
+ else {
+ endDateTextBox.val(dateText);
+ }
+ },
+ onSelect: function (selectedDateTime){
+ endDateTextBox.datetimepicker('option', 'minDate', startDateTextBox.datetimepicker('getDate') );
+ }
+});
+endDateTextBox.datetimepicker({
+ timeFormat: 'HH:mm z',
+ onClose: function(dateText, inst) {
+ if (startDateTextBox.val() != '') {
+ var testStartDate = startDateTextBox.datetimepicker('getDate');
+ var testEndDate = endDateTextBox.datetimepicker('getDate');
+ if (testStartDate > testEndDate)
+ startDateTextBox.datetimepicker('setDate', testEndDate);
+ }
+ else {
+ startDateTextBox.val(dateText);
+ }
+ },
+ onSelect: function (selectedDateTime){
+ startDateTextBox.datetimepicker('option', 'maxDate', endDateTextBox.datetimepicker('getDate') );
+ }
+});
+
+
+
+
+
+
Timepicker also includes some shortcut methods for ranges:
+
+
+
+
+
+var startDateTextBox = $('#range_example_2_start');
+var endDateTextBox = $('#range_example_2_end');
+
+$.timepicker.datetimeRange(
+ startDateTextBox,
+ endDateTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ dateFormat: 'dd M yy',
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
+
To use only times for a time range use $.timepicker.timeRange():
+
+
+
+
+
+var startTimeTextBox = $('#range_example_3_start');
+var endTimeTextBox = $('#range_example_3_end');
+
+$.timepicker.timeRange(
+ startTimeTextBox,
+ endTimeTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
+
Even though this plugin focuses on datetime, it also provides a dateRange function:
+
+
+
+
+
+var startDateTextBox = $('#range_example_4_start');
+var endDateTextBox = $('#range_example_4_end');
+
+$.timepicker.dateRange(
+ startDateTextBox,
+ endDateTextBox,
+ {
+ minInterval: (1000*60*60*24*4), // 4 days
+ maxInterval: (1000*60*60*24*8), // 8 days
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
Utilities
+
+
+
+
Get and Set Datetime with the getDate and setDate methods. This example uses timezone to demonstrate the timepicker regonizes the timezones and computes the offsets when getting and setting.
+
+
+ Set Datetime
+ Get Datetime
+
+
+
+var ex13 = $('#utility_example_1');
+
+ex13.datetimepicker({
+ timeFormat: 'hh:mm tt z',
+ separator: ' @ ',
+ showTimezone: true
+});
+
+$('#utility_example_1_setdt').click(function(){
+ ex13.datetimepicker('setDate', (new Date()) );
+});
+
+$('#utility_example_1_getdt').click(function(){
+ alert(ex13.datetimepicker('getDate'));
+});
+
+
+
+
+
+
Use the utility function to format your own time. $.datepicker.formatTime(format, time, options)
+
+ format required - string represenation of the time format to use
+ time required - hash: { hour, minute, second, millisecond, timezone }
+ options optional - hash of any options in regional translation (ampm, amNames, pmNames..)
+
+
Returns a time string in the specified format.
+
+
+
+$('#utility_example_2').text(
+ $.datepicker.formatTime('HH:mm z', { hour: 14, minute: 36, timezone: '+2000' }, {})
+);
+
+
+
+
+
+
Use the utility function to parses a formatted time. $.datepicker.parseTime(format, timeString, options)
+
+ format required - string represenation of the time format to use
+ time required - time string matching the format given in parameter 1
+ options optional - hash of any options in regional translation (ampm, amNames, pmNames..)
+
+
Returns an object with hours, minutes, seconds, milliseconds, timezone.
+
+
+
+$('#utility_example_3').text(JSON.stringify(
+ $.datepicker.parseTime('HH:mm:ss:l z', "14:36:21:765 +2000", {})
+));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-sliderAccess.js b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-sliderAccess.js
new file mode 100644
index 000000000..b075c6698
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-sliderAccess.js
@@ -0,0 +1,91 @@
+/*
+ * jQuery UI Slider Access
+ * By: Trent Richardson [http://trentrichardson.com]
+ * Version 0.3
+ * Last Modified: 10/20/2012
+ *
+ * Copyright 2011 Trent Richardson
+ * Dual licensed under the MIT and GPL licenses.
+ * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
+ * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
+ *
+ */
+ (function($){
+
+ $.fn.extend({
+ sliderAccess: function(options){
+ options = options || {};
+ options.touchonly = options.touchonly !== undefined? options.touchonly : true; // by default only show it if touch device
+
+ if(options.touchonly === true && !("ontouchend" in document)){
+ return $(this);
+ }
+
+ return $(this).each(function(i,obj){
+ var $t = $(this),
+ o = $.extend({},{
+ where: 'after',
+ step: $t.slider('option','step'),
+ upIcon: 'ui-icon-plus',
+ downIcon: 'ui-icon-minus',
+ text: false,
+ upText: '+',
+ downText: '-',
+ buttonset: true,
+ buttonsetTag: 'span',
+ isRTL: false
+ }, options),
+ $buttons = $('<'+ o.buttonsetTag +' class="ui-slider-access">'+
+ '
'+ o.downText +' '+
+ '
'+ o.upText +' '+
+ ''+ o.buttonsetTag +'>');
+
+ $buttons.children('button').each(function(j, jobj){
+ var $jt = $(this);
+ $jt.button({
+ text: o.text,
+ icons: { primary: $jt.data('icon') }
+ })
+ .click(function(e){
+ var step = $jt.data('step'),
+ curr = $t.slider('value'),
+ newval = curr += step*1,
+ minval = $t.slider('option','min'),
+ maxval = $t.slider('option','max'),
+ slidee = $t.slider("option", "slide") || function(){},
+ stope = $t.slider("option", "stop") || function(){};
+
+ e.preventDefault();
+
+ if(newval < minval || newval > maxval){
+ return;
+ }
+
+ $t.slider('value', newval);
+
+ slidee.call($t, null, { value: newval });
+ stope.call($t, null, { value: newval });
+ });
+ });
+
+ // before or after
+ $t[o.where]($buttons);
+
+ if(o.buttonset){
+ $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset();
+ $buttons.eq(0).addClass('ui-corner-left');
+ $buttons.eq(1).addClass('ui-corner-right');
+ }
+
+ // adjust the width so we don't break the original layout
+ var bOuterWidth = $buttons.css({
+ marginLeft: ((o.where === 'after' && !o.isRTL) || (o.where === 'before' && o.isRTL)? 10:0),
+ marginRight: ((o.where === 'before' && !o.isRTL) || (o.where === 'after' && o.isRTL)? 10:0)
+ }).outerWidth(true) + 5;
+ var tOuterWidth = $t.outerWidth(true);
+ $t.css('display','inline-block').width(tOuterWidth-bOuterWidth);
+ });
+ }
+ });
+
+})(jQuery);
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.css b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.css
new file mode 100644
index 000000000..586a7f04d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.css
@@ -0,0 +1,30 @@
+.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
+.ui-timepicker-div dl { text-align: left; }
+.ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
+.ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
+.ui-timepicker-div td { font-size: 90%; }
+.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
+.ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }
+
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input { background: none; color: inherit; border: none; outline: none; border-bottom: solid 1px #555; width: 95%; }
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus { border-bottom-color: #aaa; }
+
+.ui-timepicker-rtl{ direction: rtl; }
+.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
+.ui-timepicker-rtl dl dt{ float: right; clear: right; }
+.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
+
+/* Shortened version style */
+.ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
+.ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.js b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.js
new file mode 100644
index 000000000..397a5e450
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.js
@@ -0,0 +1,2290 @@
+/*! jQuery Timepicker Addon - v1.6.3.1 - 2021-01-07
+* Modified by PublishPress for fixing warnings about jQuery deprecated.
+* http://trentrichardson.com/examples/timepicker
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery', 'jquery-ui'], factory);
+ } else {
+ factory(jQuery);
+ }
+}(function ($) {
+
+ /*
+ * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
+ */
+ $.ui.timepicker = $.ui.timepicker || {};
+ if ($.ui.timepicker.version) {
+ return;
+ }
+
+ /*
+ * Extend jQueryUI, get it started with our version number
+ */
+ $.extend($.ui, {
+ timepicker: {
+ version: "1.6.3"
+ }
+ });
+
+ /*
+ * Timepicker manager.
+ * Use the singleton instance of this class, $.timepicker, to interact with the time picker.
+ * Settings for (groups of) time pickers are maintained in an instance object,
+ * allowing multiple different settings on the same page.
+ */
+ var Timepicker = function () {
+ this.regional = []; // Available regional settings, indexed by language code
+ this.regional[''] = { // Default regional settings
+ currentText: 'Now',
+ closeText: 'Done',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ timeOnlyTitle: 'Choose Time',
+ timeText: 'Time',
+ hourText: 'Hour',
+ minuteText: 'Minute',
+ secondText: 'Second',
+ millisecText: 'Millisecond',
+ microsecText: 'Microsecond',
+ timezoneText: 'Time Zone',
+ isRTL: false
+ };
+ this._defaults = { // Global defaults for all the datetime picker instances
+ showButtonPanel: true,
+ timeOnly: false,
+ timeOnlyShowDate: false,
+ showHour: null,
+ showMinute: null,
+ showSecond: null,
+ showMillisec: null,
+ showMicrosec: null,
+ showTimezone: null,
+ showTime: true,
+ stepHour: 1,
+ stepMinute: 1,
+ stepSecond: 1,
+ stepMillisec: 1,
+ stepMicrosec: 1,
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisec: 0,
+ microsec: 0,
+ timezone: null,
+ hourMin: 0,
+ minuteMin: 0,
+ secondMin: 0,
+ millisecMin: 0,
+ microsecMin: 0,
+ hourMax: 23,
+ minuteMax: 59,
+ secondMax: 59,
+ millisecMax: 999,
+ microsecMax: 999,
+ minDateTime: null,
+ maxDateTime: null,
+ maxTime: null,
+ minTime: null,
+ onSelect: null,
+ hourGrid: 0,
+ minuteGrid: 0,
+ secondGrid: 0,
+ millisecGrid: 0,
+ microsecGrid: 0,
+ alwaysSetTime: true,
+ separator: ' ',
+ altFieldTimeOnly: true,
+ altTimeFormat: null,
+ altSeparator: null,
+ altTimeSuffix: null,
+ altRedirectFocus: true,
+ pickerTimeFormat: null,
+ pickerTimeSuffix: null,
+ showTimepicker: true,
+ timezoneList: null,
+ addSliderAccess: false,
+ sliderAccessArgs: null,
+ controlType: 'slider',
+ oneLine: false,
+ defaultValue: null,
+ parse: 'strict',
+ afterInject: null
+ };
+ $.extend(this._defaults, this.regional['']);
+ };
+
+ $.extend(Timepicker.prototype, {
+ $input: null,
+ $altInput: null,
+ $timeObj: null,
+ inst: null,
+ hour_slider: null,
+ minute_slider: null,
+ second_slider: null,
+ millisec_slider: null,
+ microsec_slider: null,
+ timezone_select: null,
+ maxTime: null,
+ minTime: null,
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisec: 0,
+ microsec: 0,
+ timezone: null,
+ hourMinOriginal: null,
+ minuteMinOriginal: null,
+ secondMinOriginal: null,
+ millisecMinOriginal: null,
+ microsecMinOriginal: null,
+ hourMaxOriginal: null,
+ minuteMaxOriginal: null,
+ secondMaxOriginal: null,
+ millisecMaxOriginal: null,
+ microsecMaxOriginal: null,
+ ampm: '',
+ formattedDate: '',
+ formattedTime: '',
+ formattedDateTime: '',
+ timezoneList: null,
+ units: ['hour', 'minute', 'second', 'millisec', 'microsec'],
+ support: {},
+ control: null,
+
+ /*
+ * Override the default settings for all instances of the time picker.
+ * @param {Object} settings object - the new settings to use as defaults (anonymous object)
+ * @return {Object} the manager object
+ */
+ setDefaults: function (settings) {
+ extendRemove(this._defaults, settings || {});
+ return this;
+ },
+
+ /*
+ * Create a new Timepicker instance
+ */
+ _newInst: function ($input, opts) {
+ var tp_inst = new Timepicker(),
+ inlineSettings = {},
+ fns = {},
+ overrides, i;
+
+ for (var attrName in this._defaults) {
+ if (this._defaults.hasOwnProperty(attrName)) {
+ var attrValue = $input.attr('time:' + attrName);
+ if (attrValue) {
+ try {
+ inlineSettings[attrName] = eval(attrValue);
+ } catch (err) {
+ inlineSettings[attrName] = attrValue;
+ }
+ }
+ }
+ }
+
+ overrides = {
+ beforeShow: function (input, dp_inst) {
+ if ($.isFunction(tp_inst._defaults.evnts.beforeShow)) {
+ return tp_inst._defaults.evnts.beforeShow.call($input[0], input, dp_inst, tp_inst);
+ }
+ },
+ onChangeMonthYear: function (year, month, dp_inst) {
+ // Update the time as well : this prevents the time from disappearing from the $input field.
+ // tp_inst._updateDateTime(dp_inst);
+ if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
+ tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
+ }
+ },
+ onClose: function (dateText, dp_inst) {
+ if (tp_inst.timeDefined === true && $input.val() !== '') {
+ tp_inst._updateDateTime(dp_inst);
+ }
+ if ($.isFunction(tp_inst._defaults.evnts.onClose)) {
+ tp_inst._defaults.evnts.onClose.call($input[0], dateText, dp_inst, tp_inst);
+ }
+ }
+ };
+ for (i in overrides) {
+ if (overrides.hasOwnProperty(i)) {
+ fns[i] = opts[i] || this._defaults[i] || null;
+ }
+ }
+
+ tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, opts, overrides, {
+ evnts: fns,
+ timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
+ });
+ tp_inst.amNames = $.map(tp_inst._defaults.amNames, function (val) {
+ return val.toUpperCase();
+ });
+ tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function (val) {
+ return val.toUpperCase();
+ });
+
+ // detect which units are supported
+ tp_inst.support = detectSupport(
+ tp_inst._defaults.timeFormat +
+ (tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
+ (tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
+
+ // controlType is string - key to our this._controls
+ if (typeof(tp_inst._defaults.controlType) === 'string') {
+ if (tp_inst._defaults.controlType === 'slider' && typeof($.ui.slider) === 'undefined') {
+ tp_inst._defaults.controlType = 'select';
+ }
+ tp_inst.control = tp_inst._controls[tp_inst._defaults.controlType];
+ }
+ // controlType is an object and must implement create, options, value methods
+ else {
+ tp_inst.control = tp_inst._defaults.controlType;
+ }
+
+ // prep the timezone options
+ var timezoneList = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60,
+ 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];
+ if (tp_inst._defaults.timezoneList !== null) {
+ timezoneList = tp_inst._defaults.timezoneList;
+ }
+ var tzl = timezoneList.length, tzi = 0, tzv = null;
+ if (tzl > 0 && typeof timezoneList[0] !== 'object') {
+ for (; tzi < tzl; tzi++) {
+ tzv = timezoneList[tzi];
+ timezoneList[tzi] = { value: tzv, label: $.timepicker.timezoneOffsetString(tzv, tp_inst.support.iso8601) };
+ }
+ }
+ tp_inst._defaults.timezoneList = timezoneList;
+
+ // set the default units
+ tp_inst.timezone = tp_inst._defaults.timezone !== null ? $.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone) :
+ ((new Date()).getTimezoneOffset() * -1);
+ tp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin :
+ tp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour;
+ tp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin :
+ tp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute;
+ tp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin :
+ tp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second;
+ tp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin :
+ tp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec;
+ tp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin :
+ tp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec;
+ tp_inst.ampm = '';
+ tp_inst.$input = $input;
+
+ if (tp_inst._defaults.altField) {
+ tp_inst.$altInput = $(tp_inst._defaults.altField);
+ if (tp_inst._defaults.altRedirectFocus === true) {
+ tp_inst.$altInput.css({
+ cursor: 'pointer'
+ }).on('focus', function () {
+ $input.trigger("focus");
+ });
+ }
+ }
+
+ if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) {
+ tp_inst._defaults.minDate = new Date();
+ }
+ if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) {
+ tp_inst._defaults.maxDate = new Date();
+ }
+
+ // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..
+ if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {
+ tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());
+ }
+ if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {
+ tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
+ }
+ if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {
+ tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());
+ }
+ if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {
+ tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
+ }
+ tp_inst.$input.on('focus', function () {
+ tp_inst._onFocus();
+ });
+
+ return tp_inst;
+ },
+
+ /*
+ * add our sliders to the calendar
+ */
+ _addTimePicker: function (dp_inst) {
+ var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());
+
+ this.timeDefined = this._parseTime(currDT);
+ this._limitMinMaxDateTime(dp_inst, false);
+ this._injectTimePicker();
+ this._afterInject();
+ },
+
+ /*
+ * parse the time string from input value or _setTime
+ */
+ _parseTime: function (timeString, withDate) {
+ if (!this.inst) {
+ this.inst = $.datepicker._getInst(this.$input[0]);
+ }
+
+ if (withDate || !this._defaults.timeOnly) {
+ var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');
+ try {
+ var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults);
+ if (!parseRes.timeObj) {
+ return false;
+ }
+ $.extend(this, parseRes.timeObj);
+ } catch (err) {
+ $.timepicker.log("Error parsing the date/time string: " + err +
+ "\ndate/time string = " + timeString +
+ "\ntimeFormat = " + this._defaults.timeFormat +
+ "\ndateFormat = " + dp_dateFormat);
+ return false;
+ }
+ return true;
+ } else {
+ var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults);
+ if (!timeObj) {
+ return false;
+ }
+ $.extend(this, timeObj);
+ return true;
+ }
+ },
+
+ /*
+ * Handle callback option after injecting timepicker
+ */
+ _afterInject: function() {
+ var o = this.inst.settings;
+ if ($.isFunction(o.afterInject)) {
+ o.afterInject.call(this);
+ }
+ },
+
+ /*
+ * generate and inject html for timepicker into ui datepicker
+ */
+ _injectTimePicker: function () {
+ var $dp = this.inst.dpDiv,
+ o = this.inst.settings,
+ tp_inst = this,
+ litem = '',
+ uitem = '',
+ show = null,
+ max = {},
+ gridSize = {},
+ size = null,
+ i = 0,
+ l = 0;
+
+ // Prevent displaying twice
+ if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
+ var noDisplay = ' ui_tpicker_unit_hide',
+ html = '
';
+ var $tp = $(html);
+
+ // if we only want time picker...
+ if (o.timeOnly === true) {
+ $tp.prepend('');
+ $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
+ }
+
+ // add sliders, adjust grids, add events
+ for (i = 0, l = tp_inst.units.length; i < l; i++) {
+ litem = tp_inst.units[i];
+ uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);
+ show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];
+
+ // add the slider
+ tp_inst[litem + '_slider'] = tp_inst.control.create(tp_inst, $tp.find('.ui_tpicker_' + litem + '_slider'), litem, tp_inst[litem], o[litem + 'Min'], max[litem], o['step' + uitem]);
+
+ // adjust the grid and add click event
+ if (show && o[litem + 'Grid'] > 0) {
+ size = 100 * gridSize[litem] * o[litem + 'Grid'] / (max[litem] - o[litem + 'Min']);
+ $tp.find('.ui_tpicker_' + litem + ' table').css({
+ width: size + "%",
+ marginLeft: o.isRTL ? '0' : ((size / (-2 * gridSize[litem])) + "%"),
+ marginRight: o.isRTL ? ((size / (-2 * gridSize[litem])) + "%") : '0',
+ borderCollapse: 'collapse'
+ }).find("td").click(function (e) {
+ var $t = $(this),
+ h = $t.html(),
+ n = parseInt(h.replace(/[^0-9]/g), 10),
+ ap = h.replace(/[^apm]/ig),
+ f = $t.data('for'); // loses scope, so we use data-for
+
+ if (f === 'hour') {
+ if (ap.indexOf('p') !== -1 && n < 12) {
+ n += 12;
+ }
+ else {
+ if (ap.indexOf('a') !== -1 && n === 12) {
+ n = 0;
+ }
+ }
+ }
+
+ tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
+
+ tp_inst._onTimeChange();
+ tp_inst._onSelectHandler();
+ }).css({
+ cursor: 'pointer',
+ width: (100 / gridSize[litem]) + '%',
+ textAlign: 'center',
+ overflow: 'hidden'
+ });
+ }
+ }
+
+ // Add timezone options
+ this.timezone_select = $tp.find('.ui_tpicker_timezone').append('
').find("select");
+ $.fn.append.apply(this.timezone_select,
+ $.map(o.timezoneList, function (val, idx) {
+ return $("
").val(typeof val === "object" ? val.value : val).text(typeof val === "object" ? val.label : val);
+ }));
+ if (typeof(this.timezone) !== "undefined" && this.timezone !== null && this.timezone !== "") {
+ var local_timezone = (new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12)).getTimezoneOffset() * -1;
+ if (local_timezone === this.timezone) {
+ selectLocalTimezone(tp_inst);
+ } else {
+ this.timezone_select.val(this.timezone);
+ }
+ } else {
+ if (typeof(this.hour) !== "undefined" && this.hour !== null && this.hour !== "") {
+ this.timezone_select.val(o.timezone);
+ } else {
+ selectLocalTimezone(tp_inst);
+ }
+ }
+ this.timezone_select.change(function () {
+ tp_inst._onTimeChange();
+ tp_inst._onSelectHandler();
+ tp_inst._afterInject();
+ });
+
+ // inject timepicker into datepicker
+ var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
+ if ($buttonPanel.length) {
+ $buttonPanel.before($tp);
+ } else {
+ $dp.append($tp);
+ }
+
+ this.$timeObj = $tp.find('.ui_tpicker_time_input');
+ this.$timeObj.change(function () {
+ var timeFormat = tp_inst.inst.settings.timeFormat;
+ var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
+ var update = new Date();
+ if (parsedTime) {
+ update.setHours(parsedTime.hour);
+ update.setMinutes(parsedTime.minute);
+ update.setSeconds(parsedTime.second);
+ $.datepicker._setTime(tp_inst.inst, update);
+ } else {
+ this.value = tp_inst.formattedTime;
+ this.blur();
+ }
+ });
+
+ if (this.inst !== null) {
+ var timeDefined = this.timeDefined;
+ this._onTimeChange();
+ this.timeDefined = timeDefined;
+ }
+
+ // slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/
+ if (this._defaults.addSliderAccess) {
+ var sliderAccessArgs = this._defaults.sliderAccessArgs,
+ rtl = this._defaults.isRTL;
+ sliderAccessArgs.isRTL = rtl;
+
+ setTimeout(function () { // fix for inline mode
+ if ($tp.find('.ui-slider-access').length === 0) {
+ $tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
+
+ // fix any grids since sliders are shorter
+ var sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true);
+ if (sliderAccessWidth) {
+ $tp.find('table:visible').each(function () {
+ var $g = $(this),
+ oldWidth = $g.outerWidth(),
+ oldMarginLeft = $g.css(rtl ? 'marginRight' : 'marginLeft').toString().replace('%', ''),
+ newWidth = oldWidth - sliderAccessWidth,
+ newMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%',
+ css = { width: newWidth, marginRight: 0, marginLeft: 0 };
+ css[rtl ? 'marginRight' : 'marginLeft'] = newMarginLeft;
+ $g.css(css);
+ });
+ }
+ }
+ }, 10);
+ }
+
+ tp_inst._limitMinMaxDateTime(this.inst, true);
+ }
+ },
+
+ /*
+ * This function tries to limit the ability to go outside the
+ * min/max date range
+ */
+ _limitMinMaxDateTime: function (dp_inst, adjustSliders) {
+ var o = this._defaults,
+ dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);
+
+ if (!this._defaults.showTimepicker) {
+ return;
+ } // No time so nothing to check here
+
+ if ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) {
+ var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),
+ minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);
+
+ if (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null || this.microsecMinOriginal === null) {
+ this.hourMinOriginal = o.hourMin;
+ this.minuteMinOriginal = o.minuteMin;
+ this.secondMinOriginal = o.secondMin;
+ this.millisecMinOriginal = o.millisecMin;
+ this.microsecMinOriginal = o.microsecMin;
+ }
+
+ if (dp_inst.settings.timeOnly || minDateTimeDate.getTime() === dp_date.getTime()) {
+ this._defaults.hourMin = minDateTime.getHours();
+ if (this.hour <= this._defaults.hourMin) {
+ this.hour = this._defaults.hourMin;
+ this._defaults.minuteMin = minDateTime.getMinutes();
+ if (this.minute <= this._defaults.minuteMin) {
+ this.minute = this._defaults.minuteMin;
+ this._defaults.secondMin = minDateTime.getSeconds();
+ if (this.second <= this._defaults.secondMin) {
+ this.second = this._defaults.secondMin;
+ this._defaults.millisecMin = minDateTime.getMilliseconds();
+ if (this.millisec <= this._defaults.millisecMin) {
+ this.millisec = this._defaults.millisecMin;
+ this._defaults.microsecMin = minDateTime.getMicroseconds();
+ } else {
+ if (this.microsec < this._defaults.microsecMin) {
+ this.microsec = this._defaults.microsecMin;
+ }
+ this._defaults.microsecMin = this.microsecMinOriginal;
+ }
+ } else {
+ this._defaults.millisecMin = this.millisecMinOriginal;
+ this._defaults.microsecMin = this.microsecMinOriginal;
+ }
+ } else {
+ this._defaults.secondMin = this.secondMinOriginal;
+ this._defaults.millisecMin = this.millisecMinOriginal;
+ this._defaults.microsecMin = this.microsecMinOriginal;
+ }
+ } else {
+ this._defaults.minuteMin = this.minuteMinOriginal;
+ this._defaults.secondMin = this.secondMinOriginal;
+ this._defaults.millisecMin = this.millisecMinOriginal;
+ this._defaults.microsecMin = this.microsecMinOriginal;
+ }
+ } else {
+ this._defaults.hourMin = this.hourMinOriginal;
+ this._defaults.minuteMin = this.minuteMinOriginal;
+ this._defaults.secondMin = this.secondMinOriginal;
+ this._defaults.millisecMin = this.millisecMinOriginal;
+ this._defaults.microsecMin = this.microsecMinOriginal;
+ }
+ }
+
+ if ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) {
+ var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),
+ maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);
+
+ if (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null || this.millisecMaxOriginal === null) {
+ this.hourMaxOriginal = o.hourMax;
+ this.minuteMaxOriginal = o.minuteMax;
+ this.secondMaxOriginal = o.secondMax;
+ this.millisecMaxOriginal = o.millisecMax;
+ this.microsecMaxOriginal = o.microsecMax;
+ }
+
+ if (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() === dp_date.getTime()) {
+ this._defaults.hourMax = maxDateTime.getHours();
+ if (this.hour >= this._defaults.hourMax) {
+ this.hour = this._defaults.hourMax;
+ this._defaults.minuteMax = maxDateTime.getMinutes();
+ if (this.minute >= this._defaults.minuteMax) {
+ this.minute = this._defaults.minuteMax;
+ this._defaults.secondMax = maxDateTime.getSeconds();
+ if (this.second >= this._defaults.secondMax) {
+ this.second = this._defaults.secondMax;
+ this._defaults.millisecMax = maxDateTime.getMilliseconds();
+ if (this.millisec >= this._defaults.millisecMax) {
+ this.millisec = this._defaults.millisecMax;
+ this._defaults.microsecMax = maxDateTime.getMicroseconds();
+ } else {
+ if (this.microsec > this._defaults.microsecMax) {
+ this.microsec = this._defaults.microsecMax;
+ }
+ this._defaults.microsecMax = this.microsecMaxOriginal;
+ }
+ } else {
+ this._defaults.millisecMax = this.millisecMaxOriginal;
+ this._defaults.microsecMax = this.microsecMaxOriginal;
+ }
+ } else {
+ this._defaults.secondMax = this.secondMaxOriginal;
+ this._defaults.millisecMax = this.millisecMaxOriginal;
+ this._defaults.microsecMax = this.microsecMaxOriginal;
+ }
+ } else {
+ this._defaults.minuteMax = this.minuteMaxOriginal;
+ this._defaults.secondMax = this.secondMaxOriginal;
+ this._defaults.millisecMax = this.millisecMaxOriginal;
+ this._defaults.microsecMax = this.microsecMaxOriginal;
+ }
+ } else {
+ this._defaults.hourMax = this.hourMaxOriginal;
+ this._defaults.minuteMax = this.minuteMaxOriginal;
+ this._defaults.secondMax = this.secondMaxOriginal;
+ this._defaults.millisecMax = this.millisecMaxOriginal;
+ this._defaults.microsecMax = this.microsecMaxOriginal;
+ }
+ }
+
+ if (dp_inst.settings.minTime!==null) {
+ var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
+ if (this.hour
tempMaxTime.getHours()) {
+ this.hour=this._defaults.hourMax=tempMaxTime.getHours();
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else {
+ if (this._defaults.hourMax>tempMaxTime.getHours()) {
+ this._defaults.hourMax=tempMaxTime.getHours();
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else {
+ this._defaults.minuteMax=59;
+ }
+ }
+ }
+
+ if (adjustSliders !== undefined && adjustSliders === true) {
+ var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
+ minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
+ secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10),
+ millisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10),
+ microsecMax = parseInt((this._defaults.microsecMax - ((this._defaults.microsecMax - this._defaults.microsecMin) % this._defaults.stepMicrosec)), 10);
+
+ if (this.hour_slider) {
+ this.control.options(this, this.hour_slider, 'hour', { min: this._defaults.hourMin, max: hourMax, step: this._defaults.stepHour });
+ this.control.value(this, this.hour_slider, 'hour', this.hour - (this.hour % this._defaults.stepHour));
+ }
+ if (this.minute_slider) {
+ this.control.options(this, this.minute_slider, 'minute', { min: this._defaults.minuteMin, max: minMax, step: this._defaults.stepMinute });
+ this.control.value(this, this.minute_slider, 'minute', this.minute - (this.minute % this._defaults.stepMinute));
+ }
+ if (this.second_slider) {
+ this.control.options(this, this.second_slider, 'second', { min: this._defaults.secondMin, max: secMax, step: this._defaults.stepSecond });
+ this.control.value(this, this.second_slider, 'second', this.second - (this.second % this._defaults.stepSecond));
+ }
+ if (this.millisec_slider) {
+ this.control.options(this, this.millisec_slider, 'millisec', { min: this._defaults.millisecMin, max: millisecMax, step: this._defaults.stepMillisec });
+ this.control.value(this, this.millisec_slider, 'millisec', this.millisec - (this.millisec % this._defaults.stepMillisec));
+ }
+ if (this.microsec_slider) {
+ this.control.options(this, this.microsec_slider, 'microsec', { min: this._defaults.microsecMin, max: microsecMax, step: this._defaults.stepMicrosec });
+ this.control.value(this, this.microsec_slider, 'microsec', this.microsec - (this.microsec % this._defaults.stepMicrosec));
+ }
+ }
+
+ },
+
+ /*
+ * when a slider moves, set the internal time...
+ * on time change is also called when the time is updated in the text field
+ */
+ _onTimeChange: function () {
+ if (!this._defaults.showTimepicker) {
+ return;
+ }
+ var hour = (this.hour_slider) ? this.control.value(this, this.hour_slider, 'hour') : false,
+ minute = (this.minute_slider) ? this.control.value(this, this.minute_slider, 'minute') : false,
+ second = (this.second_slider) ? this.control.value(this, this.second_slider, 'second') : false,
+ millisec = (this.millisec_slider) ? this.control.value(this, this.millisec_slider, 'millisec') : false,
+ microsec = (this.microsec_slider) ? this.control.value(this, this.microsec_slider, 'microsec') : false,
+ timezone = (this.timezone_select) ? this.timezone_select.val() : false,
+ o = this._defaults,
+ pickerTimeFormat = o.pickerTimeFormat || o.timeFormat,
+ pickerTimeSuffix = o.pickerTimeSuffix || o.timeSuffix;
+
+ if (typeof(hour) === 'object') {
+ hour = false;
+ }
+ if (typeof(minute) === 'object') {
+ minute = false;
+ }
+ if (typeof(second) === 'object') {
+ second = false;
+ }
+ if (typeof(millisec) === 'object') {
+ millisec = false;
+ }
+ if (typeof(microsec) === 'object') {
+ microsec = false;
+ }
+ if (typeof(timezone) === 'object') {
+ timezone = false;
+ }
+
+ if (hour !== false) {
+ hour = parseInt(hour, 10);
+ }
+ if (minute !== false) {
+ minute = parseInt(minute, 10);
+ }
+ if (second !== false) {
+ second = parseInt(second, 10);
+ }
+ if (millisec !== false) {
+ millisec = parseInt(millisec, 10);
+ }
+ if (microsec !== false) {
+ microsec = parseInt(microsec, 10);
+ }
+ if (timezone !== false) {
+ timezone = timezone.toString();
+ }
+
+ var ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0];
+
+ // If the update was done in the input field, the input field should not be updated.
+ // If the update was done using the sliders, update the input field.
+ var hasChanged = (
+ hour !== parseInt(this.hour,10) || // sliders should all be numeric
+ minute !== parseInt(this.minute,10) ||
+ second !== parseInt(this.second,10) ||
+ millisec !== parseInt(this.millisec,10) ||
+ microsec !== parseInt(this.microsec,10) ||
+ (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
+ (this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
+ );
+
+ if (hasChanged) {
+
+ if (hour !== false) {
+ this.hour = hour;
+ }
+ if (minute !== false) {
+ this.minute = minute;
+ }
+ if (second !== false) {
+ this.second = second;
+ }
+ if (millisec !== false) {
+ this.millisec = millisec;
+ }
+ if (microsec !== false) {
+ this.microsec = microsec;
+ }
+ if (timezone !== false) {
+ this.timezone = timezone;
+ }
+
+ if (!this.inst) {
+ this.inst = $.datepicker._getInst(this.$input[0]);
+ }
+
+ this._limitMinMaxDateTime(this.inst, true);
+ }
+ if (this.support.ampm) {
+ this.ampm = ampm;
+ }
+
+ // Updates the time within the timepicker
+ this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
+ if (this.$timeObj) {
+ if (pickerTimeFormat === o.timeFormat) {
+ this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
+ }
+ else {
+ this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
+ }
+ if (this.$timeObj[0].setSelectionRange) {
+ var sPos = this.$timeObj[0].selectionStart;
+ var ePos = this.$timeObj[0].selectionEnd;
+ this.$timeObj[0].setSelectionRange(sPos, ePos);
+ }
+ }
+
+ this.timeDefined = true;
+ if (hasChanged) {
+ this._updateDateTime();
+ //this.$input.focus(); // may automatically open the picker on setDate
+ }
+ },
+
+ /*
+ * call custom onSelect.
+ * bind to sliders slidestop, and grid click.
+ */
+ _onSelectHandler: function () {
+ var onSelect = this._defaults.onSelect || this.inst.settings.onSelect;
+ var inputEl = this.$input ? this.$input[0] : null;
+ if (onSelect && inputEl) {
+ onSelect.apply(inputEl, [this.formattedDateTime, this]);
+ }
+ },
+
+ /*
+ * update our input with the new date time..
+ */
+ _updateDateTime: function (dp_inst) {
+ dp_inst = this.inst || dp_inst;
+ var dtTmp = (dp_inst.currentYear > 0?
+ new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
+ new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
+ dt = $.datepicker._daylightSavingAdjust(dtTmp),
+ //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
+ //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay)),
+ dateFmt = $.datepicker._get(dp_inst, 'dateFormat'),
+ formatCfg = $.datepicker._getFormatConfig(dp_inst),
+ timeAvailable = dt !== null && this.timeDefined;
+ this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
+ var formattedDateTime = this.formattedDate;
+
+ // if a slider was changed but datepicker doesn't have a value yet, set it
+ if (dp_inst.lastVal === "") {
+ dp_inst.currentYear = dp_inst.selectedYear;
+ dp_inst.currentMonth = dp_inst.selectedMonth;
+ dp_inst.currentDay = dp_inst.selectedDay;
+ }
+
+ /*
+ * remove following lines to force every changes in date picker to change the input value
+ * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
+ * If the user manually empty the value in the input field, the date picker will never change selected value.
+ */
+ //if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
+ // return;
+ //}
+
+ if (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === false) {
+ formattedDateTime = this.formattedTime;
+ } else if ((this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) || (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === true)) {
+ formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;
+ }
+
+ this.formattedDateTime = formattedDateTime;
+
+ if (!this._defaults.showTimepicker) {
+ this.$input.val(this.formattedDate);
+ } else if (this.$altInput && this._defaults.timeOnly === false && this._defaults.altFieldTimeOnly === true) {
+ this.$altInput.val(this.formattedTime);
+ this.$input.val(this.formattedDate);
+ } else if (this.$altInput) {
+ this.$input.val(formattedDateTime);
+ var altFormattedDateTime = '',
+ altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
+ altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
+
+ if (!this._defaults.timeOnly) {
+ if (this._defaults.altFormat) {
+ altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
+ }
+ else {
+ altFormattedDateTime = this.formattedDate;
+ }
+
+ if (altFormattedDateTime) {
+ altFormattedDateTime += altSeparator;
+ }
+ }
+
+ if (this._defaults.altTimeFormat !== null) {
+ altFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix;
+ }
+ else {
+ altFormattedDateTime += this.formattedTime + altTimeSuffix;
+ }
+ this.$altInput.val(altFormattedDateTime);
+ } else {
+ this.$input.val(formattedDateTime);
+ }
+
+ this.$input.trigger("change");
+ },
+
+ _onFocus: function () {
+ if (!this.$input.val() && this._defaults.defaultValue) {
+ this.$input.val(this._defaults.defaultValue);
+ var inst = $.datepicker._getInst(this.$input.get(0)),
+ tp_inst = $.datepicker._get(inst, 'timepicker');
+ if (tp_inst) {
+ if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
+ try {
+ $.datepicker._updateDatepicker(inst);
+ } catch (err) {
+ $.timepicker.log(err);
+ }
+ }
+ }
+ }
+ },
+
+ /*
+ * Small abstraction to control types
+ * We can add more, just be sure to follow the pattern: create, options, value
+ */
+ _controls: {
+ // slider methods
+ slider: {
+ create: function (tp_inst, obj, unit, val, min, max, step) {
+ var rtl = tp_inst._defaults.isRTL; // if rtl go -60->0 instead of 0->60
+ return obj.prop('slide', null).slider({
+ orientation: "horizontal",
+ value: rtl ? val * -1 : val,
+ min: rtl ? max * -1 : min,
+ max: rtl ? min * -1 : max,
+ step: step,
+ slide: function (event, ui) {
+ tp_inst.control.value(tp_inst, $(this), unit, rtl ? ui.value * -1 : ui.value);
+ tp_inst._onTimeChange();
+ },
+ stop: function (event, ui) {
+ tp_inst._onSelectHandler();
+ }
+ });
+ },
+ options: function (tp_inst, obj, unit, opts, val) {
+ if (tp_inst._defaults.isRTL) {
+ if (typeof(opts) === 'string') {
+ if (opts === 'min' || opts === 'max') {
+ if (val !== undefined) {
+ return obj.slider(opts, val * -1);
+ }
+ return Math.abs(obj.slider(opts));
+ }
+ return obj.slider(opts);
+ }
+ var min = opts.min,
+ max = opts.max;
+ opts.min = opts.max = null;
+ if (min !== undefined) {
+ opts.max = min * -1;
+ }
+ if (max !== undefined) {
+ opts.min = max * -1;
+ }
+ return obj.slider(opts);
+ }
+ if (typeof(opts) === 'string' && val !== undefined) {
+ return obj.slider(opts, val);
+ }
+ return obj.slider(opts);
+ },
+ value: function (tp_inst, obj, unit, val) {
+ if (tp_inst._defaults.isRTL) {
+ if (val !== undefined) {
+ return obj.slider('value', val * -1);
+ }
+ return Math.abs(obj.slider('value'));
+ }
+ if (val !== undefined) {
+ return obj.slider('value', val);
+ }
+ return obj.slider('value');
+ }
+ },
+ // select methods
+ select: {
+ create: function (tp_inst, obj, unit, val, min, max, step) {
+ var sel = '',
+ format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
+
+ for (var i = min; i <= max; i += step) {
+ sel += '';
+ if (unit === 'hour') {
+ sel += $.datepicker.formatTime($.trim(format.replace(/[^ht ]/ig, '')), {hour: i}, tp_inst._defaults);
+ }
+ else if (unit === 'millisec' || unit === 'microsec' || i >= 10) { sel += i; }
+ else {sel += '0' + i.toString(); }
+ sel += ' ';
+ }
+ sel += ' ';
+
+ obj.children('select').remove();
+
+ $(sel).appendTo(obj).change(function (e) {
+ tp_inst._onTimeChange();
+ tp_inst._onSelectHandler();
+ tp_inst._afterInject();
+ });
+
+ return obj;
+ },
+ options: function (tp_inst, obj, unit, opts, val) {
+ var o = {},
+ $t = obj.children('select');
+ if (typeof(opts) === 'string') {
+ if (val === undefined) {
+ return $t.data(opts);
+ }
+ o[opts] = val;
+ }
+ else { o = opts; }
+ return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
+ },
+ value: function (tp_inst, obj, unit, val) {
+ var $t = obj.children('select');
+ if (val !== undefined) {
+ return $t.val(val);
+ }
+ return $t.val();
+ }
+ }
+ }
+
+ });
+
+ $.fn.extend({
+ /*
+ * shorthand just to use timepicker.
+ */
+ timepicker: function (o) {
+ o = o || {};
+ var tmp_args = Array.prototype.slice.call(arguments);
+
+ if (typeof o === 'object') {
+ tmp_args[0] = $.extend(o, {
+ timeOnly: true
+ });
+ }
+
+ return $(this).each(function () {
+ $.fn.datetimepicker.apply($(this), tmp_args);
+ });
+ },
+
+ /*
+ * extend timepicker to datepicker
+ */
+ datetimepicker: function (o) {
+ o = o || {};
+ var tmp_args = arguments;
+
+ if (typeof(o) === 'string') {
+ if (o === 'getDate' || (o === 'option' && tmp_args.length === 2 && typeof (tmp_args[1]) === 'string')) {
+ return $.fn.datepicker.apply($(this[0]), tmp_args);
+ } else {
+ return this.each(function () {
+ var $t = $(this);
+ $t.datepicker.apply($t, tmp_args);
+ });
+ }
+ } else {
+ return this.each(function () {
+ var $t = $(this);
+ $t.datepicker($.timepicker._newInst($t, o)._defaults);
+ });
+ }
+ }
+ });
+
+ /*
+ * Public Utility to parse date and time
+ */
+ $.datepicker.parseDateTime = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
+ var parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings);
+ if (parseRes.timeObj) {
+ var t = parseRes.timeObj;
+ parseRes.date.setHours(t.hour, t.minute, t.second, t.millisec);
+ parseRes.date.setMicroseconds(t.microsec);
+ }
+
+ return parseRes.date;
+ };
+
+ /*
+ * Public utility to parse time
+ */
+ $.datepicker.parseTime = function (timeFormat, timeString, options) {
+ var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}),
+ iso8601 = (timeFormat.replace(/\'.*?\'/g, '').indexOf('Z') !== -1);
+
+ // Strict parse requires the timeString to match the timeFormat exactly
+ var strictParse = function (f, s, o) {
+
+ // pattern for standard and localized AM/PM markers
+ var getPatternAmpm = function (amNames, pmNames) {
+ var markers = [];
+ if (amNames) {
+ $.merge(markers, amNames);
+ }
+ if (pmNames) {
+ $.merge(markers, pmNames);
+ }
+ markers = $.map(markers, function (val) {
+ return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&');
+ });
+ return '(' + markers.join('|') + ')?';
+ };
+
+ // figure out position of time elements.. cause js cant do named captures
+ var getFormatPositions = function (timeFormat) {
+ var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),
+ orders = {
+ h: -1,
+ m: -1,
+ s: -1,
+ l: -1,
+ c: -1,
+ t: -1,
+ z: -1
+ };
+
+ if (finds) {
+ for (var i = 0; i < finds.length; i++) {
+ if (orders[finds[i].toString().charAt(0)] === -1) {
+ orders[finds[i].toString().charAt(0)] = i + 1;
+ }
+ }
+ }
+ return orders;
+ };
+
+ var regstr = '^' + f.toString()
+ .replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
+ var ml = match.length;
+ switch (match.charAt(0).toLowerCase()) {
+ case 'h':
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
+ case 'm':
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
+ case 's':
+ return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
+ case 'l':
+ return '(\\d?\\d?\\d)';
+ case 'c':
+ return '(\\d?\\d?\\d)';
+ case 'z':
+ return '(z|[-+]\\d\\d:?\\d\\d|\\S+)?';
+ case 't':
+ return getPatternAmpm(o.amNames, o.pmNames);
+ default: // literal escaped in quotes
+ return '(' + match.replace(/\'/g, "").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g, function (m) { return "\\" + m; }) + ')?';
+ }
+ })
+ .replace(/\s/g, '\\s?') +
+ o.timeSuffix + '$',
+ order = getFormatPositions(f),
+ ampm = '',
+ treg;
+
+ treg = s.match(new RegExp(regstr, 'i'));
+
+ var resTime = {
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisec: 0,
+ microsec: 0
+ };
+
+ if (treg) {
+ if (order.t !== -1) {
+ if (treg[order.t] === undefined || treg[order.t].length === 0) {
+ ampm = '';
+ resTime.ampm = '';
+ } else {
+ ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
+ resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
+ }
+ }
+
+ if (order.h !== -1) {
+ if (ampm === 'AM' && treg[order.h] === '12') {
+ resTime.hour = 0; // 12am = 0 hour
+ } else {
+ if (ampm === 'PM' && treg[order.h] !== '12') {
+ resTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12
+ } else {
+ resTime.hour = Number(treg[order.h]);
+ }
+ }
+ }
+
+ if (order.m !== -1) {
+ resTime.minute = Number(treg[order.m]);
+ }
+ if (order.s !== -1) {
+ resTime.second = Number(treg[order.s]);
+ }
+ if (order.l !== -1) {
+ resTime.millisec = Number(treg[order.l]);
+ }
+ if (order.c !== -1) {
+ resTime.microsec = Number(treg[order.c]);
+ }
+ if (order.z !== -1 && treg[order.z] !== undefined) {
+ resTime.timezone = $.timepicker.timezoneOffsetNumber(treg[order.z]);
+ }
+
+
+ return resTime;
+ }
+ return false;
+ };
+
+ // First try JS Date, if that fails, use strictParse
+ var looseParse = function (f, s, o) {
+ try {
+ var d = new Date('2012-01-01 ' + s);
+ if (isNaN(d.getTime())) {
+ d = new Date('2012-01-01T' + s);
+ if (isNaN(d.getTime())) {
+ d = new Date('01/01/2012 ' + s);
+ if (isNaN(d.getTime())) {
+ throw "Unable to parse time with native Date: " + s;
+ }
+ }
+ }
+
+ return {
+ hour: d.getHours(),
+ minute: d.getMinutes(),
+ second: d.getSeconds(),
+ millisec: d.getMilliseconds(),
+ microsec: d.getMicroseconds(),
+ timezone: d.getTimezoneOffset() * -1
+ };
+ }
+ catch (err) {
+ try {
+ return strictParse(f, s, o);
+ }
+ catch (err2) {
+ $.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
+ }
+ }
+ return false;
+ };
+
+ if (typeof o.parse === "function") {
+ return o.parse(timeFormat, timeString, o);
+ }
+ if (o.parse === 'loose') {
+ return looseParse(timeFormat, timeString, o);
+ }
+ return strictParse(timeFormat, timeString, o);
+ };
+
+ /**
+ * Public utility to format the time
+ * @param {string} format format of the time
+ * @param {Object} time Object not a Date for timezones
+ * @param {Object} [options] essentially the regional[].. amNames, pmNames, ampm
+ * @returns {string} the formatted time
+ */
+ $.datepicker.formatTime = function (format, time, options) {
+ options = options || {};
+ options = $.extend({}, $.timepicker._defaults, options);
+ time = $.extend({
+ hour: 0,
+ minute: 0,
+ second: 0,
+ millisec: 0,
+ microsec: 0,
+ timezone: null
+ }, time);
+
+ var tmptime = format,
+ ampmName = options.amNames[0],
+ hour = parseInt(time.hour, 10);
+
+ if (hour > 11) {
+ ampmName = options.pmNames[0];
+ }
+
+ tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
+ switch (match) {
+ case 'HH':
+ return ('0' + hour).slice(-2);
+ case 'H':
+ return hour;
+ case 'hh':
+ return ('0' + convert24to12(hour)).slice(-2);
+ case 'h':
+ return convert24to12(hour);
+ case 'mm':
+ return ('0' + time.minute).slice(-2);
+ case 'm':
+ return time.minute;
+ case 'ss':
+ return ('0' + time.second).slice(-2);
+ case 's':
+ return time.second;
+ case 'l':
+ return ('00' + time.millisec).slice(-3);
+ case 'c':
+ return ('00' + time.microsec).slice(-3);
+ case 'z':
+ return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, false);
+ case 'Z':
+ return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, true);
+ case 'T':
+ return ampmName.charAt(0).toUpperCase();
+ case 'TT':
+ return ampmName.toUpperCase();
+ case 't':
+ return ampmName.charAt(0).toLowerCase();
+ case 'tt':
+ return ampmName.toLowerCase();
+ default:
+ return match.replace(/'/g, "");
+ }
+ });
+
+ return tmptime;
+ };
+
+ /*
+ * the bad hack :/ override datepicker so it doesn't close on select
+ // inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
+ */
+ $.datepicker._base_selectDate = $.datepicker._selectDate;
+ $.datepicker._selectDate = function (id, dateStr) {
+ var inst = this._getInst($(id)[0]),
+ tp_inst = this._get(inst, 'timepicker'),
+ was_inline;
+
+ if (tp_inst && inst.settings.showTimepicker) {
+ tp_inst._limitMinMaxDateTime(inst, true);
+ was_inline = inst.inline;
+ inst.inline = inst.stay_open = true;
+ //This way the onSelect handler called from calendarpicker get the full dateTime
+ this._base_selectDate(id, dateStr);
+ inst.inline = was_inline;
+ inst.stay_open = false;
+ this._notifyChange(inst);
+ this._updateDatepicker(inst);
+ } else {
+ this._base_selectDate(id, dateStr);
+ }
+ };
+
+ /*
+ * second bad hack :/ override datepicker so it triggers an event when changing the input field
+ * and does not redraw the datepicker on every selectDate event
+ */
+ $.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;
+ $.datepicker._updateDatepicker = function (inst) {
+
+ // don't popup the datepicker if there is another instance already opened
+ var input = inst.input[0];
+ if ($.datepicker._curInst && $.datepicker._curInst !== inst && $.datepicker._datepickerShowing && $.datepicker._lastInput !== input) {
+ return;
+ }
+
+ if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {
+
+ this._base_updateDatepicker(inst);
+
+ // Reload the time control when changing something in the input text field.
+ var tp_inst = this._get(inst, 'timepicker');
+ if (tp_inst) {
+ tp_inst._addTimePicker(inst);
+ }
+ }
+ };
+
+ /*
+ * third bad hack :/ override datepicker so it allows spaces and colon in the input field
+ */
+ $.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
+ $.datepicker._doKeyPress = function (event) {
+ var inst = $.datepicker._getInst(event.target),
+ tp_inst = $.datepicker._get(inst, 'timepicker');
+
+ if (tp_inst) {
+ if ($.datepicker._get(inst, 'constrainInput')) {
+ var ampm = tp_inst.support.ampm,
+ tz = tp_inst._defaults.showTimezone !== null ? tp_inst._defaults.showTimezone : tp_inst.support.timezone,
+ dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),
+ datetimeChars = tp_inst._defaults.timeFormat.toString()
+ .replace(/[hms]/g, '')
+ .replace(/TT/g, ampm ? 'APM' : '')
+ .replace(/Tt/g, ampm ? 'AaPpMm' : '')
+ .replace(/tT/g, ampm ? 'AaPpMm' : '')
+ .replace(/T/g, ampm ? 'AP' : '')
+ .replace(/tt/g, ampm ? 'apm' : '')
+ .replace(/t/g, ampm ? 'ap' : '') +
+ " " + tp_inst._defaults.separator +
+ tp_inst._defaults.timeSuffix +
+ (tz ? tp_inst._defaults.timezoneList.join('') : '') +
+ (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
+ dateChars,
+ chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
+ return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
+ }
+ }
+
+ return $.datepicker._base_doKeyPress(event);
+ };
+
+ /*
+ * Fourth bad hack :/ override _updateAlternate function used in inline mode to init altField
+ * Update any alternate field to synchronise with the main field.
+ */
+ $.datepicker._base_updateAlternate = $.datepicker._updateAlternate;
+ $.datepicker._updateAlternate = function (inst) {
+ var tp_inst = this._get(inst, 'timepicker');
+ if (tp_inst) {
+ var altField = tp_inst._defaults.altField;
+ if (altField) { // update alternate field too
+ var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
+ date = this._getDate(inst),
+ formatCfg = $.datepicker._getFormatConfig(inst),
+ altFormattedDateTime = '',
+ altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
+ altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
+ altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
+
+ altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
+ if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
+ if (tp_inst._defaults.altFormat) {
+ altFormattedDateTime = $.datepicker.formatDate(tp_inst._defaults.altFormat, date, formatCfg) + altSeparator + altFormattedDateTime;
+ }
+ else {
+ altFormattedDateTime = tp_inst.formattedDate + altSeparator + altFormattedDateTime;
+ }
+ }
+ $(altField).val( inst.input.val() ? altFormattedDateTime : "");
+ }
+ }
+ else {
+ $.datepicker._base_updateAlternate(inst);
+ }
+ };
+
+ /*
+ * Override key up event to sync manual input changes.
+ */
+ $.datepicker._base_doKeyUp = $.datepicker._doKeyUp;
+ $.datepicker._doKeyUp = function (event) {
+ var inst = $.datepicker._getInst(event.target),
+ tp_inst = $.datepicker._get(inst, 'timepicker');
+
+ if (tp_inst) {
+ if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
+ try {
+ $.datepicker._updateDatepicker(inst);
+ } catch (err) {
+ $.timepicker.log(err);
+ }
+ }
+ }
+
+ return $.datepicker._base_doKeyUp(event);
+ };
+
+ /*
+ * override "Today" button to also grab the time and set it to input field.
+ */
+ $.datepicker._base_gotoToday = $.datepicker._gotoToday;
+ $.datepicker._gotoToday = function (id) {
+ var inst = this._getInst($(id)[0]);
+ this._base_gotoToday(id);
+ var tp_inst = this._get(inst, 'timepicker');
+ if (!tp_inst) {
+ return;
+ }
+
+ var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
+ var now = new Date();
+ now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
+ this._setTime(inst, now);
+ this._setDate(inst, now);
+ tp_inst._onSelectHandler();
+ };
+
+ /*
+ * Disable & enable the Time in the datetimepicker
+ */
+ $.datepicker._disableTimepickerDatepicker = function (target) {
+ var inst = this._getInst(target);
+ if (!inst) {
+ return;
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+ $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
+ if (tp_inst) {
+ inst.settings.showTimepicker = false;
+ tp_inst._defaults.showTimepicker = false;
+ tp_inst._updateDateTime(inst);
+ }
+ };
+
+ $.datepicker._enableTimepickerDatepicker = function (target) {
+ var inst = this._getInst(target);
+ if (!inst) {
+ return;
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+ $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
+ if (tp_inst) {
+ inst.settings.showTimepicker = true;
+ tp_inst._defaults.showTimepicker = true;
+ tp_inst._addTimePicker(inst); // Could be disabled on page load
+ tp_inst._updateDateTime(inst);
+ }
+ };
+
+ /*
+ * Create our own set time function
+ */
+ $.datepicker._setTime = function (inst, date) {
+ var tp_inst = this._get(inst, 'timepicker');
+ if (tp_inst) {
+ var defaults = tp_inst._defaults;
+
+ // calling _setTime with no date sets time to defaults
+ tp_inst.hour = date ? date.getHours() : defaults.hour;
+ tp_inst.minute = date ? date.getMinutes() : defaults.minute;
+ tp_inst.second = date ? date.getSeconds() : defaults.second;
+ tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
+ tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
+
+ //check if within min/max times..
+ tp_inst._limitMinMaxDateTime(inst, true);
+
+ tp_inst._onTimeChange();
+ tp_inst._updateDateTime(inst);
+ }
+ };
+
+ /*
+ * Create new public method to set only time, callable as $().datepicker('setTime', date)
+ */
+ $.datepicker._setTimeDatepicker = function (target, date, withDate) {
+ var inst = this._getInst(target);
+ if (!inst) {
+ return;
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+
+ if (tp_inst) {
+ this._setDateFromField(inst);
+ var tp_date;
+ if (date) {
+ if (typeof date === "string") {
+ tp_inst._parseTime(date, withDate);
+ tp_date = new Date();
+ tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
+ tp_date.setMicroseconds(tp_inst.microsec);
+ } else {
+ tp_date = new Date(date.getTime());
+ tp_date.setMicroseconds(date.getMicroseconds());
+ }
+ if (tp_date.toString() === 'Invalid Date') {
+ tp_date = undefined;
+ }
+ this._setTime(inst, tp_date);
+ }
+ }
+
+ };
+
+ /*
+ * override setDate() to allow setting time too within Date object
+ */
+ $.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;
+ $.datepicker._setDateDatepicker = function (target, _date) {
+ var inst = this._getInst(target);
+ var date = _date;
+ if (!inst) {
+ return;
+ }
+
+ if (typeof(_date) === 'string') {
+ date = new Date(_date);
+ if (!date.getTime()) {
+ this._base_setDateDatepicker.apply(this, arguments);
+ date = $(target).datepicker('getDate');
+ }
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+ var tp_date;
+ if (date instanceof Date) {
+ tp_date = new Date(date.getTime());
+ tp_date.setMicroseconds(date.getMicroseconds());
+ } else {
+ tp_date = date;
+ }
+
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
+ // adjust it accordingly. If not using timezone option this won't matter..
+ // If a timezone is different in tp, keep the timezone as is
+ if (tp_inst && tp_date) {
+ // look out for DST if tz wasn't specified
+ if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
+ tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
+ }
+ date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
+ tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
+ }
+
+ this._updateDatepicker(inst);
+ this._base_setDateDatepicker.apply(this, arguments);
+ this._setTimeDatepicker(target, tp_date, true);
+ };
+
+ /*
+ * override getDate() to allow getting time too within Date object
+ */
+ $.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;
+ $.datepicker._getDateDatepicker = function (target, noDefault) {
+ var inst = this._getInst(target);
+ if (!inst) {
+ return;
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+
+ if (tp_inst) {
+ // if it hasn't yet been defined, grab from field
+ if (inst.lastVal === undefined) {
+ this._setDateFromField(inst, noDefault);
+ }
+
+ var date = this._getDate(inst);
+
+ var currDT = null;
+
+ if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
+ currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
+ }
+ else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
+ /**
+ * in case the datetimepicker has been applied to a non-input tag for inline UI,
+ * and the user has not configured the plugin to display only time in altInput,
+ * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
+ *
+ * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
+ */
+ currDT = tp_inst.$altInput.val();
+ }
+ else {
+ currDT = tp_inst.$input.val();
+ }
+
+ if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
+ date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
+ date.setMicroseconds(tp_inst.microsec);
+
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
+ // adjust it accordingly. If not using timezone option this won't matter..
+ if (tp_inst.timezone != null) {
+ // look out for DST if tz wasn't specified
+ if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
+ tp_inst.timezone = date.getTimezoneOffset() * -1;
+ }
+ date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
+ }
+ }
+ return date;
+ }
+ return this._base_getDateDatepicker(target, noDefault);
+ };
+
+ /*
+ * override parseDate() because UI 1.8.14 throws an error about "Extra characters"
+ * An option in datapicker to ignore extra format characters would be nicer.
+ */
+ $.datepicker._base_parseDate = $.datepicker.parseDate;
+ $.datepicker.parseDate = function (format, value, settings) {
+ var date;
+ try {
+ date = this._base_parseDate(format, value, settings);
+ } catch (err) {
+ // Hack! The error message ends with a colon, a space, and
+ // the "extra" characters. We rely on that instead of
+ // attempting to perfectly reproduce the parsing algorithm.
+ if (err.indexOf(":") >= 0) {
+ date = this._base_parseDate(format, value.substring(0, value.length - (err.length - err.indexOf(':') - 2)), settings);
+ $.timepicker.log("Error parsing the date string: " + err + "\ndate string = " + value + "\ndate format = " + format);
+ } else {
+ throw err;
+ }
+ }
+ return date;
+ };
+
+ /*
+ * override formatDate to set date with time to the input
+ */
+ $.datepicker._base_formatDate = $.datepicker._formatDate;
+ $.datepicker._formatDate = function (inst, day, month, year) {
+ var tp_inst = this._get(inst, 'timepicker');
+ if (tp_inst) {
+ tp_inst._updateDateTime(inst);
+ return tp_inst.$input.val();
+ }
+ return this._base_formatDate(inst);
+ };
+
+ /*
+ * override options setter to add time to maxDate(Time) and minDate(Time). MaxDate
+ */
+ $.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;
+ $.datepicker._optionDatepicker = function (target, name, value) {
+ var inst = this._getInst(target),
+ name_clone;
+ if (!inst) {
+ return null;
+ }
+
+ var tp_inst = this._get(inst, 'timepicker');
+ if (tp_inst) {
+ var min = null,
+ max = null,
+ onselect = null,
+ overrides = tp_inst._defaults.evnts,
+ fns = {},
+ prop,
+ ret,
+ oldVal,
+ $target;
+ if (typeof name === 'string') { // if min/max was set with the string
+ if (name === 'minDate' || name === 'minDateTime') {
+ min = value;
+ } else if (name === 'maxDate' || name === 'maxDateTime') {
+ max = value;
+ } else if (name === 'onSelect') {
+ onselect = value;
+ } else if (overrides.hasOwnProperty(name)) {
+ if (typeof (value) === 'undefined') {
+ return overrides[name];
+ }
+ fns[name] = value;
+ name_clone = {}; //empty results in exiting function after overrides updated
+ }
+ } else if (typeof name === 'object') { //if min/max was set with the JSON
+ if (name.minDate) {
+ min = name.minDate;
+ } else if (name.minDateTime) {
+ min = name.minDateTime;
+ } else if (name.maxDate) {
+ max = name.maxDate;
+ } else if (name.maxDateTime) {
+ max = name.maxDateTime;
+ }
+ for (prop in overrides) {
+ if (overrides.hasOwnProperty(prop) && name[prop]) {
+ fns[prop] = name[prop];
+ }
+ }
+ }
+ for (prop in fns) {
+ if (fns.hasOwnProperty(prop)) {
+ overrides[prop] = fns[prop];
+ if (!name_clone) { name_clone = $.extend({}, name); }
+ delete name_clone[prop];
+ }
+ }
+ if (name_clone && isEmptyObject(name_clone)) { return; }
+ if (min) { //if min was set
+ if (min === 0) {
+ min = new Date();
+ } else {
+ min = new Date(min);
+ }
+ tp_inst._defaults.minDate = min;
+ tp_inst._defaults.minDateTime = min;
+ } else if (max) { //if max was set
+ if (max === 0) {
+ max = new Date();
+ } else {
+ max = new Date(max);
+ }
+ tp_inst._defaults.maxDate = max;
+ tp_inst._defaults.maxDateTime = max;
+ } else if (onselect) {
+ tp_inst._defaults.onSelect = onselect;
+ }
+
+ // Datepicker will override our date when we call _base_optionDatepicker when
+ // calling minDate/maxDate, so we will first grab the value, call
+ // _base_optionDatepicker, then set our value back.
+ if(min || max){
+ $target = $(target);
+ oldVal = $target.datetimepicker('getDate');
+ ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
+ $target.datetimepicker('setDate', oldVal);
+ return ret;
+ }
+ }
+ if (value === undefined) {
+ return this._base_optionDatepicker.call($.datepicker, target, name);
+ }
+ return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
+ };
+
+ /*
+ * jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
+ * it will return false for all objects
+ */
+ var isEmptyObject = function (obj) {
+ var prop;
+ for (prop in obj) {
+ if (obj.hasOwnProperty(prop)) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ /*
+ * jQuery extend now ignores nulls!
+ */
+ var extendRemove = function (target, props) {
+ $.extend(target, props);
+ for (var name in props) {
+ if (props[name] === null || props[name] === undefined) {
+ target[name] = props[name];
+ }
+ }
+ return target;
+ };
+
+ /*
+ * Determine by the time format which units are supported
+ * Returns an object of booleans for each unit
+ */
+ var detectSupport = function (timeFormat) {
+ var tf = timeFormat.replace(/'.*?'/g, '').toLowerCase(), // removes literals
+ isIn = function (f, t) { // does the format contain the token?
+ return f.indexOf(t) !== -1 ? true : false;
+ };
+ return {
+ hour: isIn(tf, 'h'),
+ minute: isIn(tf, 'm'),
+ second: isIn(tf, 's'),
+ millisec: isIn(tf, 'l'),
+ microsec: isIn(tf, 'c'),
+ timezone: isIn(tf, 'z'),
+ ampm: isIn(tf, 't') && isIn(timeFormat, 'h'),
+ iso8601: isIn(timeFormat, 'Z')
+ };
+ };
+
+ /*
+ * Converts 24 hour format into 12 hour
+ * Returns 12 hour without leading 0
+ */
+ var convert24to12 = function (hour) {
+ hour %= 12;
+
+ if (hour === 0) {
+ hour = 12;
+ }
+
+ return String(hour);
+ };
+
+ var computeEffectiveSetting = function (settings, property) {
+ return settings && settings[property] ? settings[property] : $.timepicker._defaults[property];
+ };
+
+ /*
+ * Splits datetime string into date and time substrings.
+ * Throws exception when date can't be parsed
+ * Returns {dateString: dateString, timeString: timeString}
+ */
+ var splitDateTime = function (dateTimeString, timeSettings) {
+ // The idea is to get the number separator occurrences in datetime and the time format requested (since time has
+ // fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split.
+ var separator = computeEffectiveSetting(timeSettings, 'separator'),
+ format = computeEffectiveSetting(timeSettings, 'timeFormat'),
+ timeParts = format.split(separator), // how many occurrences of separator may be in our format?
+ timePartsLen = timeParts.length,
+ allParts = dateTimeString.split(separator),
+ allPartsLen = allParts.length;
+
+ if (allPartsLen > 1) {
+ return {
+ dateString: allParts.splice(0, allPartsLen - timePartsLen).join(separator),
+ timeString: allParts.splice(0, timePartsLen).join(separator)
+ };
+ }
+
+ return {
+ dateString: dateTimeString,
+ timeString: ''
+ };
+ };
+
+ /*
+ * Internal function to parse datetime interval
+ * Returns: {date: Date, timeObj: Object}, where
+ * date - parsed date without time (type Date)
+ * timeObj = {hour: , minute: , second: , millisec: , microsec: } - parsed time. Optional
+ */
+ var parseDateTimeInternal = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
+ var date,
+ parts,
+ parsedTime;
+
+ parts = splitDateTime(dateTimeString, timeSettings);
+ date = $.datepicker._base_parseDate(dateFormat, parts.dateString, dateSettings);
+
+ if (parts.timeString === '') {
+ return {
+ date: date
+ };
+ }
+
+ parsedTime = $.datepicker.parseTime(timeFormat, parts.timeString, timeSettings);
+
+ if (!parsedTime) {
+ throw 'Wrong time format';
+ }
+
+ return {
+ date: date,
+ timeObj: parsedTime
+ };
+ };
+
+ /*
+ * Internal function to set timezone_select to the local timezone
+ */
+ var selectLocalTimezone = function (tp_inst, date) {
+ if (tp_inst && tp_inst.timezone_select) {
+ var now = date || new Date();
+ tp_inst.timezone_select.val(-now.getTimezoneOffset());
+ }
+ };
+
+ /*
+ * Create a Singleton Instance
+ */
+ $.timepicker = new Timepicker();
+
+ /**
+ * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)
+ * @param {number} tzMinutes if not a number, less than -720 (-1200), or greater than 840 (+1400) this value is returned
+ * @param {boolean} iso8601 if true formats in accordance to iso8601 "+12:45"
+ * @return {string}
+ */
+ $.timepicker.timezoneOffsetString = function (tzMinutes, iso8601) {
+ if (isNaN(tzMinutes) || tzMinutes > 840 || tzMinutes < -720) {
+ return tzMinutes;
+ }
+
+ var off = tzMinutes,
+ minutes = off % 60,
+ hours = (off - minutes) / 60,
+ iso = iso8601 ? ':' : '',
+ tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
+
+ if (tz === '+00:00') {
+ return 'Z';
+ }
+ return tz;
+ };
+
+ /**
+ * Get the number in minutes that represents a timezone string
+ * @param {string} tzString formatted like "+0500", "-1245", "Z"
+ * @return {number} the offset minutes or the original string if it doesn't match expectations
+ */
+ $.timepicker.timezoneOffsetNumber = function (tzString) {
+ var normalized = tzString.toString().replace(':', ''); // excuse any iso8601, end up with "+1245"
+
+ if (normalized.toUpperCase() === 'Z') { // if iso8601 with Z, its 0 minute offset
+ return 0;
+ }
+
+ if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
+ return parseInt(tzString, 10);
+ }
+
+ return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
+ ((parseInt(normalized.substr(1, 2), 10) * 60) + // hours (converted to minutes)
+ parseInt(normalized.substr(3, 2), 10))); // minutes
+ };
+
+ /**
+ * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
+ * @param {Date} date
+ * @param {string} fromTimezone formatted like "+0500", "-1245"
+ * @param {string} toTimezone formatted like "+0500", "-1245"
+ * @return {Date}
+ */
+ $.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
+ var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
+ var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
+ if (!isNaN(toTz)) {
+ date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
+ }
+ return date;
+ };
+
+ /**
+ * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
+ * enforce date range limits.
+ * n.b. The input value must be correctly formatted (reformatting is not supported)
+ * @param {Element} startTime
+ * @param {Element} endTime
+ * @param {Object} options Options for the timepicker() call
+ * @return {jQuery}
+ */
+ $.timepicker.timeRange = function (startTime, endTime, options) {
+ return $.timepicker.handleRange('timepicker', startTime, endTime, options);
+ };
+
+ /**
+ * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to
+ * enforce date range limits.
+ * @param {Element} startTime
+ * @param {Element} endTime
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
+ * @param {string} method Can be used to specify the type of picker to be added
+ * @return {jQuery}
+ */
+ $.timepicker.datetimeRange = function (startTime, endTime, options) {
+ $.timepicker.handleRange('datetimepicker', startTime, endTime, options);
+ };
+
+ /**
+ * Calls `datepicker` on the `startTime` and `endTime` elements, and configures them to
+ * enforce date range limits.
+ * @param {Element} startTime
+ * @param {Element} endTime
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
+ * @return {jQuery}
+ */
+ $.timepicker.dateRange = function (startTime, endTime, options) {
+ $.timepicker.handleRange('datepicker', startTime, endTime, options);
+ };
+
+ /**
+ * Calls `method` on the `startTime` and `endTime` elements, and configures them to
+ * enforce date range limits.
+ * @param {string} method Can be used to specify the type of picker to be added
+ * @param {Element} startTime
+ * @param {Element} endTime
+ * @param {Object} options Options for the `timepicker()` call. Also supports `reformat`,
+ * a boolean value that can be used to reformat the input values to the `dateFormat`.
+ * @return {jQuery}
+ */
+ $.timepicker.handleRange = function (method, startTime, endTime, options) {
+ options = $.extend({}, {
+ minInterval: 0, // min allowed interval in milliseconds
+ maxInterval: 0, // max allowed interval in milliseconds
+ start: {}, // options for start picker
+ end: {} // options for end picker
+ }, options);
+
+ // for the mean time this fixes an issue with calling getDate with timepicker()
+ var timeOnly = false;
+ if(method === 'timepicker'){
+ timeOnly = true;
+ method = 'datetimepicker';
+ }
+
+ function checkDates(changed, other) {
+ var startdt = startTime[method]('getDate'),
+ enddt = endTime[method]('getDate'),
+ changeddt = changed[method]('getDate');
+
+ if (startdt !== null) {
+ var minDate = new Date(startdt.getTime()),
+ maxDate = new Date(startdt.getTime());
+
+ minDate.setMilliseconds(minDate.getMilliseconds() + options.minInterval);
+ maxDate.setMilliseconds(maxDate.getMilliseconds() + options.maxInterval);
+
+ if (options.minInterval > 0 && minDate > enddt) { // minInterval check
+ endTime[method]('setDate', minDate);
+ }
+ else if (options.maxInterval > 0 && maxDate < enddt) { // max interval check
+ endTime[method]('setDate', maxDate);
+ }
+ else if (startdt > enddt) {
+ other[method]('setDate', changeddt);
+ }
+ }
+ }
+
+ function selected(changed, other, option) {
+ if (!changed.val()) {
+ return;
+ }
+ var date = changed[method].call(changed, 'getDate');
+ if (date !== null && options.minInterval > 0) {
+ if (option === 'minDate') {
+ date.setMilliseconds(date.getMilliseconds() + options.minInterval);
+ }
+ if (option === 'maxDate') {
+ date.setMilliseconds(date.getMilliseconds() - options.minInterval);
+ }
+ }
+
+ if (date.getTime) {
+ other[method].call(other, 'option', option, date);
+ }
+ }
+
+ $.fn[method].call(startTime, $.extend({
+ timeOnly: timeOnly,
+ onClose: function (dateText, inst) {
+ checkDates($(this), endTime);
+ },
+ onSelect: function (selectedDateTime) {
+ selected($(this), endTime, 'minDate');
+ }
+ }, options, options.start));
+ $.fn[method].call(endTime, $.extend({
+ timeOnly: timeOnly,
+ onClose: function (dateText, inst) {
+ checkDates($(this), startTime);
+ },
+ onSelect: function (selectedDateTime) {
+ selected($(this), startTime, 'maxDate');
+ }
+ }, options, options.end));
+
+ checkDates(startTime, endTime);
+
+ selected(startTime, endTime, 'minDate');
+ selected(endTime, startTime, 'maxDate');
+
+ return $([startTime.get(0), endTime.get(0)]);
+ };
+
+ /**
+ * Log error or data to the console during error or debugging
+ * @param {Object} err pass any type object to log to the console during error or debugging
+ * @return {void}
+ */
+ $.timepicker.log = function () {
+ // Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
+ if (window.console && window.console.log && window.console.log.apply) {
+ window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
+ }
+ };
+
+ /*
+ * Add util object to allow access to private methods for testability.
+ */
+ $.timepicker._util = {
+ _extendRemove: extendRemove,
+ _isEmptyObject: isEmptyObject,
+ _convert24to12: convert24to12,
+ _detectSupport: detectSupport,
+ _selectLocalTimezone: selectLocalTimezone,
+ _computeEffectiveSetting: computeEffectiveSetting,
+ _splitDateTime: splitDateTime,
+ _parseDateTimeInternal: parseDateTimeInternal
+ };
+
+ /*
+ * Microsecond support
+ */
+ if (!Date.prototype.getMicroseconds) {
+ Date.prototype.microseconds = 0;
+ Date.prototype.getMicroseconds = function () { return this.microseconds; };
+ Date.prototype.setMicroseconds = function (m) {
+ this.setMilliseconds(this.getMilliseconds() + Math.floor(m / 1000));
+ this.microseconds = m % 1000;
+ return this;
+ };
+ }
+
+ /*
+ * Keep up with the version
+ */
+ $.timepicker.version = "1.6.3";
+
+}));
diff --git a/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.css b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.css
new file mode 100644
index 000000000..7581fea2c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.css
@@ -0,0 +1,5 @@
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
+* http://trentrichardson.com/examples/timepicker
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+
+.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:0;margin:0;padding:0}.ui-timepicker-div .ui_tpicker_unit_hide{display:none}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input{background:0 0;color:inherit;border:0;outline:0;border-bottom:solid 1px #555;width:95%}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus{border-bottom-color:#aaa}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}.ui-timepicker-div.ui-timepicker-oneLine{padding-right:2px}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,.ui-timepicker-div.ui-timepicker-oneLine dt{display:none}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label{display:block;padding-top:2px}.ui-timepicker-div.ui-timepicker-oneLine dl{text-align:right}.ui-timepicker-div.ui-timepicker-oneLine dl dd,.ui-timepicker-div.ui-timepicker-oneLine dl dd>div{display:inline-block;margin:0}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before{content:':';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before{content:'.';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{display:none}
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.js b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.js
new file mode 100644
index 000000000..c25e16a9a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.js
@@ -0,0 +1,6 @@
+/*! jQuery Timepicker Addon - v1.6.3.1 - 2021-01-07
+* Modified by PublishPress for fixing warnings about jQuery deprecated.
+* http://trentrichardson.com/examples/timepicker
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","jquery-ui"],a):a(jQuery)}(function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"1.6.3"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",oneLine:!1,defaultValue:null,parse:"strict",afterInject:null},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(a,b){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],a,b,tp_inst):void 0},onChangeMonthYear:function(a,b,c){$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],a,b,c,tp_inst)},onClose:function(a,b){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(b),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],a,b,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||this._defaults[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(a){return a.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(a){return a.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&"undefined"==typeof $.ui.slider&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hourtp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minutetp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.secondtp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisectp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsectp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField),tp_inst._defaults.altRedirectFocus===!0&&tp_inst.$altInput.css({cursor:"pointer"}).on('focus', function(){$input.trigger("focus")})),(0===tp_inst._defaults.minDate||0===tp_inst._defaults.minDateTime)&&(tp_inst._defaults.minDate=new Date),(0===tp_inst._defaults.maxDate||0===tp_inst._defaults.maxDateTime)&&(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.on("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(a){var b=$.trim(this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val());this.timeDefined=this._parseTime(b),this._limitMinMaxDateTime(a,!1),this._injectTimePicker(),this._afterInject()},_parseTime:function(a,b){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),b||!this._defaults.timeOnly){var c=$.datepicker._get(this.inst,"dateFormat");try{var d=parseDateTimeInternal(c,this._defaults.timeFormat,a,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;$.extend(this,d.timeObj)}catch(e){return $.timepicker.log("Error parsing the date/time string: "+e+"\ndate/time string = "+a+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+c),!1}return!0}var f=$.datepicker.parseTime(this._defaults.timeFormat,a,this._defaults);return f?($.extend(this,f),!0):!1},_afterInject:function(){var a=this.inst.settings;$.isFunction(a.afterInject)&&a.afterInject.call(this)},_injectTimePicker:function(){var a=this.inst.dpDiv,b=this.inst.settings,c=this,d="",e="",f=null,g={},h={},i=null,j=0,k=0;if(0===a.find("div.ui-timepicker-div").length&&b.showTimepicker){var l=" ui_tpicker_unit_hide",m=''+b.timeText+' ";for(j=0,k=this.units.length;k>j;j++){if(d=this.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],g[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+e],10),h[d]=0,m+=''+b[d+"Text"]+'
',f&&b[d+"Grid"]>0){if(m+='',"hour"===d)for(var n=b[d+"Min"];n<=g[d];n+=parseInt(b[d+"Grid"],10)){h[d]++;var o=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:n},b);m+=''+o+" "}else for(var p=b[d+"Min"];p<=g[d];p+=parseInt(b[d+"Grid"],10))h[d]++,m+=''+(10>p?"0":"")+p+" ";m+="
"}m+=" "}var q=null!==b.showTimezone?b.showTimezone:this.support.timezone;m+=''+b.timezoneText+" ",m+=' ',m+=" ";var r=$(m);for(b.timeOnly===!0&&(r.prepend('"),a.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),j=0,k=c.units.length;k>j;j++)d=c.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],c[d+"_slider"]=c.control.create(c,r.find(".ui_tpicker_"+d+"_slider"),d,c[d],b[d+"Min"],g[d],b["step"+e]),f&&b[d+"Grid"]>0&&(i=100*h[d]*b[d+"Grid"]/(g[d]-b[d+"Min"]),r.find(".ui_tpicker_"+d+" table").css({width:i+"%",marginLeft:b.isRTL?"0":i/(-2*h[d])+"%",marginRight:b.isRTL?i/(-2*h[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(a){var b=$(this),e=b.html(),f=parseInt(e.replace(/[^0-9]/g),10),g=e.replace(/[^apm]/gi),h=b.data("for");"hour"===h&&(-1!==g.indexOf("p")&&12>f?f+=12:-1!==g.indexOf("a")&&12===f&&(f=0)),c.control.value(c,c[h+"_slider"],d,f),c._onTimeChange(),c._onSelectHandler()}).css({cursor:"pointer",width:100/h[d]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=r.find(".ui_tpicker_timezone").append(" ").find("select"),$.fn.append.apply(this.timezone_select,$.map(b.timezoneList,function(a,b){return $(" ").val("object"==typeof a?a.value:a).text("object"==typeof a?a.label:a)})),"undefined"!=typeof this.timezone&&null!==this.timezone&&""!==this.timezone){var s=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();s===this.timezone?selectLocalTimezone(c):this.timezone_select.val(this.timezone)}else"undefined"!=typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.timezone):selectLocalTimezone(c);this.timezone_select.change(function(){c._onTimeChange(),c._onSelectHandler(),c._afterInject()});var t=a.find(".ui-datepicker-buttonpane");if(t.length?t.before(r):a.append(r),this.$timeObj=r.find(".ui_tpicker_time_input"),this.$timeObj.change(function(){var a=c.inst.settings.timeFormat,b=$.datepicker.parseTime(a,this.value),d=new Date;b?(d.setHours(b.hour),d.setMinutes(b.minute),d.setSeconds(b.second),$.datepicker._setTime(c.inst,d)):(this.value=c.formattedTime,this.blur())}),null!==this.inst){var u=this.timeDefined;this._onTimeChange(),this.timeDefined=u}if(this._defaults.addSliderAccess){var v=this._defaults.sliderAccessArgs,w=this._defaults.isRTL;v.isRTL=w,setTimeout(function(){if(0===r.find(".ui-slider-access").length){r.find(".ui-slider:visible").sliderAccess(v);var a=r.find(".ui-slider-access:eq(0)").outerWidth(!0);a&&r.find("table:visible").each(function(){var b=$(this),c=b.outerWidth(),d=b.css(w?"marginRight":"marginLeft").toString().replace("%",""),e=c-a,f=d*e/c+"%",g={width:e,marginRight:0,marginLeft:0};g[w?"marginRight":"marginLeft"]=f,b.css(g)})}},10)}c._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(a,b){var c=this._defaults,d=new Date(a.selectedYear,a.selectedMonth,a.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(a,"minDateTime")&&void 0!==$.datepicker._get(a,"minDateTime")&&d){var e=$.datepicker._get(a,"minDateTime"),f=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0);(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)&&(this.hourMinOriginal=c.hourMin,this.minuteMinOriginal=c.minuteMin,this.secondMinOriginal=c.secondMin,this.millisecMinOriginal=c.millisecMin,this.microsecMinOriginal=c.microsecMin),a.settings.timeOnly||f.getTime()===d.getTime()?(this._defaults.hourMin=e.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=e.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=e.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=e.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=e.getMicroseconds()):(this.microsec=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=g.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=g.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=g.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=g.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(null!==a.settings.minTime){var i=new Date("01/01/1970 "+a.settings.minTime);this.hourj.getHours()?(this.hour=this._defaults.hourMax=j.getHours(),this.minute=this._defaults.minuteMax=j.getMinutes()):this.hour===j.getHours()&&this.minute>j.getMinutes()?this.minute=this._defaults.minuteMax=j.getMinutes():this._defaults.hourMax>j.getHours()?(this._defaults.hourMax=j.getHours(),this._defaults.minuteMax=j.getMinutes()):this._defaults.hourMax===j.getHours()===this.hour&&this._defaults.minuteMax>j.getMinutes()?this._defaults.minuteMax=j.getMinutes():this._defaults.minuteMax=59}if(void 0!==b&&b===!0){var k=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),l=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),m=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),n=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),o=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:k,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:l,step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:m,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:n,step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:o,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var a=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,b=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,c=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,d=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,e=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,f=this.timezone_select?this.timezone_select.val():!1,g=this._defaults,h=g.pickerTimeFormat||g.timeFormat,i=g.pickerTimeSuffix||g.timeSuffix;"object"==typeof a&&(a=!1),"object"==typeof b&&(b=!1),"object"==typeof c&&(c=!1),"object"==typeof d&&(d=!1),"object"==typeof e&&(e=!1),"object"==typeof f&&(f=!1),a!==!1&&(a=parseInt(a,10)),b!==!1&&(b=parseInt(b,10)),c!==!1&&(c=parseInt(c,10)),d!==!1&&(d=parseInt(d,10)),e!==!1&&(e=parseInt(e,10)),f!==!1&&(f=f.toString());var j=g[12>a?"amNames":"pmNames"][0],k=a!==parseInt(this.hour,10)||b!==parseInt(this.minute,10)||c!==parseInt(this.second,10)||d!==parseInt(this.millisec,10)||e!==parseInt(this.microsec,10)||this.ampm.length>0&&12>a!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&f!==this.timezone.toString();if(k&&(a!==!1&&(this.hour=a),b!==!1&&(this.minute=b),c!==!1&&(this.second=c),d!==!1&&(this.millisec=d),e!==!1&&(this.microsec=e),f!==!1&&(this.timezone=f),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=j),this.formattedTime=$.datepicker.formatTime(g.timeFormat,this,g),this.$timeObj&&(this.$timeObj.val(h===g.timeFormat?this.formattedTime+i:$.datepicker.formatTime(h,this,g)+i),this.$timeObj[0].setSelectionRange)){var l=this.$timeObj[0].selectionStart,m=this.$timeObj[0].selectionEnd;this.$timeObj[0].setSelectionRange(l,m)}this.timeDefined=!0,k&&this._updateDateTime()}},_onSelectHandler:function(){var a=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;a&&b&&a.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(a){a=this.inst||a;var b=a.currentYear>0?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(a.selectedYear,a.selectedMonth,a.selectedDay),c=$.datepicker._daylightSavingAdjust(b),d=$.datepicker._get(a,"dateFormat"),e=$.datepicker._getFormatConfig(a),f=null!==c&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(d,null===c?new Date:c,e);var g=this.formattedDate;if(""===a.lastVal&&(a.currentYear=a.selectedYear,a.currentMonth=a.selectedMonth,a.currentDay=a.selectedDay),this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!1?g=this.formattedTime:(this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||f)||this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!0)&&(g+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=g,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(g);var h="",i=null!==this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,j=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(h=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===c?new Date:c,e):this.formattedDate,h&&(h+=i)),h+=null!==this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+j:this.formattedTime+j,this.$altInput.val(h)}else this.$input.val(g);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var a=$.datepicker._getInst(this.$input.get(0)),b=$.datepicker._get(a,"timepicker");if(b&&b._defaults.timeOnly&&a.input.val()!==a.lastVal)try{$.datepicker._updateDatepicker(a)}catch(c){$.timepicker.log(c)}}},_controls:{slider:{create:function(a,b,c,d,e,f,g){var h=a._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:h?-1*d:d,min:h?-1*f:e,max:h?-1*e:f,step:g,slide:function(b,d){a.control.value(a,$(this),c,h?-1*d.value:d.value),a._onTimeChange()},stop:function(b,c){a._onSelectHandler()}})},options:function(a,b,c,d,e){if(a._defaults.isRTL){if("string"==typeof d)return"min"===d||"max"===d?void 0!==e?b.slider(d,-1*e):Math.abs(b.slider(d)):b.slider(d);var f=d.min,g=d.max;return d.min=d.max=null,void 0!==f&&(d.max=-1*f),void 0!==g&&(d.min=-1*g),b.slider(d)}return"string"==typeof d&&void 0!==e?b.slider(d,e):b.slider(d)},value:function(a,b,c,d){return a._defaults.isRTL?void 0!==d?b.slider("value",-1*d):Math.abs(b.slider("value")):void 0!==d?b.slider("value",d):b.slider("value")}},select:{create:function(a,b,c,d,e,f,g){for(var h='',i=a._defaults.pickerTimeFormat||a._defaults.timeFormat,j=e;f>=j;j+=g)h+='",h+="hour"===c?$.datepicker.formatTime($.trim(i.replace(/[^ht ]/gi,"")),{hour:j},a._defaults):"millisec"===c||"microsec"===c||j>=10?j:"0"+j.toString(),h+=" ";return h+=" ",b.children("select").remove(),$(h).appendTo(b).change(function(b){a._onTimeChange(),a._onSelectHandler(),a._afterInject()}),b},options:function(a,b,c,d,e){var f={},g=b.children("select");if("string"==typeof d){if(void 0===e)return g.data(d);f[d]=e}else f=d;return a.control.create(a,b,g.data("unit"),g.val(),f.min>=0?f.min:g.data("min"),f.max||g.data("max"),f.step||g.data("step"))},value:function(a,b,c,d){var e=b.children("select");return void 0!==d?e.val(d):e.val()}}}}),$.fn.extend({timepicker:function(a){a=a||{};var b=Array.prototype.slice.call(arguments);return"object"==typeof a&&(b[0]=$.extend(a,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),b)})},datetimepicker:function(a){a=a||{};var b=arguments;return"string"==typeof a?"getDate"===a||"option"===a&&2===b.length&&"string"==typeof b[1]?$.fn.datepicker.apply($(this[0]),b):this.each(function(){var a=$(this);a.datepicker.apply(a,b)}):this.each(function(){var b=$(this);b.datepicker($.timepicker._newInst(b,a)._defaults)})}}),$.datepicker.parseDateTime=function(a,b,c,d,e){var f=parseDateTimeInternal(a,b,c,d,e);if(f.timeObj){var g=f.timeObj;f.date.setHours(g.hour,g.minute,g.second,g.millisec),f.date.setMicroseconds(g.microsec)}return f.date},$.datepicker.parseTime=function(a,b,c){var d=extendRemove(extendRemove({},$.timepicker._defaults),c||{}),e=(-1!==a.replace(/\'.*?\'/g,"").indexOf("Z"),function(a,b,c){var d,e=function(a,b){var c=[];return a&&$.merge(c,a),b&&$.merge(c,b),c=$.map(c,function(a){return a.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+c.join("|")+")?"},f=function(a){var b=a.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),c={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(b)for(var d=0;d11&&(e=c.pmNames[0]),d=d.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){switch(a){case"HH":return("0"+f).slice(-2);case"H":return f;case"hh":return("0"+convert24to12(f)).slice(-2);case"h":return convert24to12(f);case"mm":return("0"+b.minute).slice(-2);case"m":return b.minute;case"ss":return("0"+b.second).slice(-2);case"s":return b.second;case"l":return("00"+b.millisec).slice(-3);case"c":return("00"+b.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!0);case"T":return e.charAt(0).toUpperCase();case"TT":return e.toUpperCase();case"t":return e.charAt(0).toLowerCase();case"tt":return e.toLowerCase();default:return a.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(a,b){var c,d=this._getInst($(a)[0]),e=this._get(d,"timepicker");e&&d.settings.showTimepicker?(e._limitMinMaxDateTime(d,!0),c=d.inline,d.inline=d.stay_open=!0,this._base_selectDate(a,b),d.inline=c,d.stay_open=!1,this._notifyChange(d),this._updateDatepicker(d)):this._base_selectDate(a,b)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(a){var b=a.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==a&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==b||"boolean"==typeof a.stay_open&&a.stay_open!==!1)){this._base_updateDatepicker(a);var c=this._get(a,"timepicker");c&&c._addTimePicker(a)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");if(c&&$.datepicker._get(b,"constrainInput")){var d=c.support.ampm,e=null!==c._defaults.showTimezone?c._defaults.showTimezone:c.support.timezone,f=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),g=c._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+c._defaults.separator+c._defaults.timeSuffix+(e?c._defaults.timezoneList.join(""):"")+c._defaults.amNames.join("")+c._defaults.pmNames.join("")+f,h=String.fromCharCode(void 0===a.charCode?a.keyCode:a.charCode);return a.ctrlKey||" ">h||!f||g.indexOf(h)>-1}return $.datepicker._base_doKeyPress(a)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(a){var b=this._get(a,"timepicker");if(b){var c=b._defaults.altField;if(c){var d=(b._defaults.altFormat||b._defaults.dateFormat,this._getDate(a)),e=$.datepicker._getFormatConfig(a),f="",g=b._defaults.altSeparator?b._defaults.altSeparator:b._defaults.separator,h=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix,i=null!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat;f+=$.datepicker.formatTime(i,b,b._defaults)+h,b._defaults.timeOnly||b._defaults.altFieldTimeOnly||null===d||(f=b._defaults.altFormat?$.datepicker.formatDate(b._defaults.altFormat,d,e)+g+f:b.formattedDate+g+f),$(c).val(a.input.val()?f:"")}}else $.datepicker._base_updateAlternate(a)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");
+if(c&&c._defaults.timeOnly&&b.input.val()!==b.lastVal)try{$.datepicker._updateDatepicker(b)}catch(d){$.timepicker.log(d)}return $.datepicker._base_doKeyUp(a)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(a){var b=this._getInst($(a)[0]);this._base_gotoToday(a);var c=this._get(b,"timepicker");if(c){var d=$.timepicker.timezoneOffsetNumber(c.timezone),e=new Date;e.setMinutes(e.getMinutes()+e.getTimezoneOffset()+parseInt(d,10)),this._setTime(b,e),this._setDate(b,e),c._onSelectHandler()}},$.datepicker._disableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!1,c._defaults.showTimepicker=!1,c._updateDateTime(b))}},$.datepicker._enableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!0,c._defaults.showTimepicker=!0,c._addTimePicker(b),c._updateDateTime(b))}},$.datepicker._setTime=function(a,b){var c=this._get(a,"timepicker");if(c){var d=c._defaults;c.hour=b?b.getHours():d.hour,c.minute=b?b.getMinutes():d.minute,c.second=b?b.getSeconds():d.second,c.millisec=b?b.getMilliseconds():d.millisec,c.microsec=b?b.getMicroseconds():d.microsec,c._limitMinMaxDateTime(a,!0),c._onTimeChange(),c._updateDateTime(a)}},$.datepicker._setTimeDatepicker=function(a,b,c){var d=this._getInst(a);if(d){var e=this._get(d,"timepicker");if(e){this._setDateFromField(d);var f;b&&("string"==typeof b?(e._parseTime(b,c),f=new Date,f.setHours(e.hour,e.minute,e.second,e.millisec),f.setMicroseconds(e.microsec)):(f=new Date(b.getTime()),f.setMicroseconds(b.getMicroseconds())),"Invalid Date"===f.toString()&&(f=void 0),this._setTime(d,f))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(a,b){var c=this._getInst(a),d=b;if(c){"string"==typeof b&&(d=new Date(b),d.getTime()||(this._base_setDateDatepicker.apply(this,arguments),d=$(a).datepicker("getDate")));var e,f=this._get(c,"timepicker");d instanceof Date?(e=new Date(d.getTime()),e.setMicroseconds(d.getMicroseconds())):e=d,f&&e&&(f.support.timezone||null!==f._defaults.timezone||(f.timezone=-1*e.getTimezoneOffset()),d=$.timepicker.timezoneAdjust(d,$.timepicker.timezoneOffsetString(-d.getTimezoneOffset()),f.timezone),e=$.timepicker.timezoneAdjust(e,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset()),f.timezone)),this._updateDatepicker(c),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(a,e,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(a,b){var c=this._getInst(a);if(c){var d=this._get(c,"timepicker");if(d){void 0===c.lastVal&&this._setDateFromField(c,b);var e=this._getDate(c),f=null;return f=d.$altInput&&d._defaults.altFieldTimeOnly?d.$input.val()+" "+d.$altInput.val():"INPUT"!==d.$input.get(0).tagName&&d.$altInput?d.$altInput.val():d.$input.val(),e&&d._parseTime(f,!c.settings.timeOnly)&&(e.setHours(d.hour,d.minute,d.second,d.millisec),e.setMicroseconds(d.microsec),null!=d.timezone&&(d.support.timezone||null!==d._defaults.timezone||(d.timezone=-1*e.getTimezoneOffset()),e=$.timepicker.timezoneAdjust(e,d.timezone,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset())))),e}return this._base_getDateDatepicker(a,b)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(a,b,c){var d;try{d=this._base_parseDate(a,b,c)}catch(e){if(!(e.indexOf(":")>=0))throw e;d=this._base_parseDate(a,b.substring(0,b.length-(e.length-e.indexOf(":")-2)),c),$.timepicker.log("Error parsing the date string: "+e+"\ndate string = "+b+"\ndate format = "+a)}return d},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(a,b,c,d){var e=this._get(a,"timepicker");return e?(e._updateDateTime(a),e.$input.val()):this._base_formatDate(a)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(a,b,c){var d,e=this._getInst(a);if(!e)return null;var f=this._get(e,"timepicker");if(f){var g,h,i,j,k=null,l=null,m=null,n=f._defaults.evnts,o={};if("string"==typeof b){if("minDate"===b||"minDateTime"===b)k=c;else if("maxDate"===b||"maxDateTime"===b)l=c;else if("onSelect"===b)m=c;else if(n.hasOwnProperty(b)){if("undefined"==typeof c)return n[b];o[b]=c,d={}}}else if("object"==typeof b){b.minDate?k=b.minDate:b.minDateTime?k=b.minDateTime:b.maxDate?l=b.maxDate:b.maxDateTime&&(l=b.maxDateTime);for(g in n)n.hasOwnProperty(g)&&b[g]&&(o[g]=b[g])}for(g in o)o.hasOwnProperty(g)&&(n[g]=o[g],d||(d=$.extend({},b)),delete d[g]);if(d&&isEmptyObject(d))return;if(k?(k=0===k?new Date:new Date(k),f._defaults.minDate=k,f._defaults.minDateTime=k):l?(l=0===l?new Date:new Date(l),f._defaults.maxDate=l,f._defaults.maxDateTime=l):m&&(f._defaults.onSelect=m),k||l)return j=$(a),i=j.datetimepicker("getDate"),h=this._base_optionDatepicker.call($.datepicker,a,d||b,c),j.datetimepicker("setDate",i),h}return void 0===c?this._base_optionDatepicker.call($.datepicker,a,b):this._base_optionDatepicker.call($.datepicker,a,d||b,c)};var isEmptyObject=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0},extendRemove=function(a,b){$.extend(a,b);for(var c in b)(null===b[c]||void 0===b[c])&&(a[c]=b[c]);return a},detectSupport=function(a){var b=a.replace(/'.*?'/g,"").toLowerCase(),c=function(a,b){return-1!==a.indexOf(b)?!0:!1};return{hour:c(b,"h"),minute:c(b,"m"),second:c(b,"s"),millisec:c(b,"l"),microsec:c(b,"c"),timezone:c(b,"z"),ampm:c(b,"t")&&c(a,"h"),iso8601:c(a,"Z")}},convert24to12=function(a){return a%=12,0===a&&(a=12),String(a)},computeEffectiveSetting=function(a,b){return a&&a[b]?a[b]:$.timepicker._defaults[b]},splitDateTime=function(a,b){var c=computeEffectiveSetting(b,"separator"),d=computeEffectiveSetting(b,"timeFormat"),e=d.split(c),f=e.length,g=a.split(c),h=g.length;return h>1?{dateString:g.splice(0,h-f).join(c),timeString:g.splice(0,f).join(c)}:{dateString:a,timeString:""}},parseDateTimeInternal=function(a,b,c,d,e){var f,g,h;if(g=splitDateTime(c,e),f=$.datepicker._base_parseDate(a,g.dateString,d),""===g.timeString)return{date:f};if(h=$.datepicker.parseTime(b,g.timeString,e),!h)throw"Wrong time format";return{date:f,timeObj:h}},selectLocalTimezone=function(a,b){if(a&&a.timezone_select){var c=b||new Date;a.timezone_select.val(-c.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(a,b){if(isNaN(a)||a>840||-720>a)return a;var c=a,d=c%60,e=(c-d)/60,f=b?":":"",g=(c>=0?"+":"-")+("0"+Math.abs(e)).slice(-2)+f+("0"+Math.abs(d)).slice(-2);return"+00:00"===g?"Z":g},$.timepicker.timezoneOffsetNumber=function(a){var b=a.toString().replace(":","");return"Z"===b.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(b)?("-"===b.substr(0,1)?-1:1)*(60*parseInt(b.substr(1,2),10)+parseInt(b.substr(3,2),10)):parseInt(a,10)},$.timepicker.timezoneAdjust=function(a,b,c){var d=$.timepicker.timezoneOffsetNumber(b),e=$.timepicker.timezoneOffsetNumber(c);return isNaN(e)||a.setMinutes(a.getMinutes()+-d- -e),a},$.timepicker.timeRange=function(a,b,c){return $.timepicker.handleRange("timepicker",a,b,c)},$.timepicker.datetimeRange=function(a,b,c){$.timepicker.handleRange("datetimepicker",a,b,c)},$.timepicker.dateRange=function(a,b,c){$.timepicker.handleRange("datepicker",a,b,c)},$.timepicker.handleRange=function(a,b,c,d){function e(e,f){var g=b[a]("getDate"),h=c[a]("getDate"),i=e[a]("getDate");if(null!==g){var j=new Date(g.getTime()),k=new Date(g.getTime());j.setMilliseconds(j.getMilliseconds()+d.minInterval),k.setMilliseconds(k.getMilliseconds()+d.maxInterval),d.minInterval>0&&j>h?c[a]("setDate",j):d.maxInterval>0&&h>k?c[a]("setDate",k):g>h&&f[a]("setDate",i)}}function f(b,c,e){if(b.val()){var f=b[a].call(b,"getDate");null!==f&&d.minInterval>0&&("minDate"===e&&f.setMilliseconds(f.getMilliseconds()+d.minInterval),"maxDate"===e&&f.setMilliseconds(f.getMilliseconds()-d.minInterval)),f.getTime&&c[a].call(c,"option",e,f)}}d=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},d);var g=!1;return"timepicker"===a&&(g=!0,a="datetimepicker"),$.fn[a].call(b,$.extend({timeOnly:g,onClose:function(a,b){e($(this),c)},onSelect:function(a){f($(this),c,"minDate")}},d,d.start)),$.fn[a].call(c,$.extend({timeOnly:g,onClose:function(a,c){e($(this),b)},onSelect:function(a){f($(this),b,"maxDate")}},d,d.end)),e(b,c),f(b,c,"minDate"),f(c,b,"maxDate"),$([b.get(0),c.get(0)])},$.timepicker.log=function(){window.console&&window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,Array.prototype.slice.call(arguments))},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(a){return this.setMilliseconds(this.getMilliseconds()+Math.floor(a/1e3)),this.microseconds=a%1e3,this}),$.timepicker.version="1.6.3"}});
diff --git a/public/wp-content/plugins/publishpress/common/php/class-module.php b/public/wp-content/plugins/publishpress/common/php/class-module.php
index e31d4ce4f..65e5b8680 100644
--- a/public/wp-content/plugins/publishpress/common/php/class-module.php
+++ b/public/wp-content/plugins/publishpress/common/php/class-module.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
@@ -28,13 +28,16 @@
* along with PublishPress. If not, see .
*/
-if ( ! class_exists('PP_Module')) {
+if (!class_exists('PP_Module')) {
/**
* PP_Module
*/
class PP_Module
{
- protected $twig;
+ /**
+ * @var \PublishPress\Core\ViewInterface
+ */
+ protected $view;
protected $debug = false;
@@ -46,18 +49,17 @@ class PP_Module
'private',
];
- protected $twigPath;
+ protected $viewsPath;
public function __construct()
{
- if ( ! empty($this->twigPath)) {
- $loader = new Twig_Loader_Filesystem($this->twigPath);
- $this->twig = new Twig_Environment($loader, [
- 'debug' => $this->debug,
- ]);
+ if (!empty($this->viewsPath)) {
+ $this->view = new \PublishPress\Core\View();
+ }
- if ($this->debug) {
- $this->twig->addExtension(new Twig_Extension_Debug());
+ foreach(get_post_stati(['public' => true, 'private' => true], 'names', 'OR') as $status) {
+ if (!in_array($status, $this->published_statuses)) {
+ $this->published_statuses []= $status;
}
}
}
@@ -75,6 +77,10 @@ public function module_enabled($slug)
{
global $publishpress;
+ if ('custom_status' == $slug) {
+ return class_exists('PublishPress_Statuses');
+ }
+
return isset($publishpress->$slug) && $publishpress->$slug->module->options->enabled == 'on';
}
@@ -83,13 +89,18 @@ public function module_enabled($slug)
*
* @return array post-type-slug => post-type-label
*/
- public function get_all_post_types()
+ public function get_all_post_types($module = null)
{
$allowed_post_types = [
'post' => __('Post'),
'page' => __('Page'),
];
- $custom_post_types = $this->get_supported_post_types_for_module();
+
+ if (is_null($module)) {
+ $module = $this;
+ }
+
+ $custom_post_types = $this->get_supported_post_types_for_module($module);
foreach ($custom_post_types as $custom_post_type => $args) {
$allowed_post_types[$custom_post_type] = $args->label;
@@ -103,7 +114,7 @@ public function get_all_post_types()
* For every post type that doesn't explicitly have the 'on' value, turn it 'off'
* If add_post_type_support() has been used anywhere (legacy support), inherit the state
*
- * @param array $module_post_types Current state of post type options for the module
+ * @param array $module_post_types Current state of post type options for the module
* @param string $post_type_support What the feature is called for post_type_support (e.g. 'pp_calendar')
*
* @return array $normalized_post_type_options The setting for each post type, normalized based on rules
@@ -115,8 +126,10 @@ public function clean_post_type_options($module_post_types = [], $post_type_supp
$normalized_post_type_options = [];
$all_post_types = array_keys($this->get_all_post_types());
foreach ($all_post_types as $post_type) {
- if ((isset($module_post_types[$post_type]) && $module_post_types[$post_type] == 'on') || post_type_supports($post_type,
- $post_type_support)) {
+ if ((isset($module_post_types[$post_type]) && $module_post_types[$post_type] == 'on') || post_type_supports(
+ $post_type,
+ $post_type_support
+ )) {
$normalized_post_type_options[$post_type] = 'on';
} else {
$normalized_post_type_options[$post_type] = 'off';
@@ -139,7 +152,7 @@ public function get_supported_post_types_for_module($module = null)
{
$pt_args = [
'_builtin' => false,
- 'public' => true,
+ 'show_ui' => true,
];
$pt_args = apply_filters('publishpress_supported_module_post_types_args', $pt_args, $module);
@@ -147,6 +160,11 @@ public function get_supported_post_types_for_module($module = null)
$postTypes = apply_filters('publishpress_supported_module_post_types', $postTypes);
+ // Hide notification workflows from the list
+ if (isset($postTypes['psppnotif_workflow'])) {
+ unset($postTypes['psppnotif_workflow']);
+ }
+
return $postTypes;
}
@@ -166,7 +184,6 @@ public function get_post_types_for_module($module)
/**
* Get all of the currently available post statuses
- * This should be used in favor of calling $publishpress->custom_status->get_custom_statuses() directly
*
* @return array $post_statuses All of the post statuses that aren't a published state
*
@@ -176,11 +193,74 @@ public function get_post_statuses()
{
global $publishpress;
- if ($this->module_enabled('custom_status')) {
- return $publishpress->custom_status->get_custom_statuses();
+ return apply_filters('publishpress_calendar_post_statuses', $publishpress->getPostStatuses());
+ }
+
+ /**
+ * Returns the CSS class name and color for the given custom status.
+ * It reutrns an array with the following keys:
+ * - icon
+ * - color
+ *
+ * @param string $post_status
+ *
+ * @return array
+ */
+ public function get_post_status_options($post_status)
+ {
+ global $publishpress;
+
+ // Check if we have a custom icon for this post_status
+ $term = $publishpress->getPostStatusBy('slug', $post_status);
+
+ // Icon
+ $icon = null;
+ if (! empty($term->icon)) {
+ $icon = $term->icon;
} else {
- return $this->get_core_post_statuses();
+ // Add an icon for the items
+ $default_icons = [
+ 'publish' => 'dashicons-yes',
+ 'future' => 'dashicons-calendar-alt',
+ 'private' => 'dashicons-lock',
+ 'draft' => 'dashicons-media-default',
+ 'pending' => 'dashicons-clock',
+ 'auto-draft' => 'dashicons-edit',
+ ];
+
+ $icon = isset($default_icons[$post_status]) ? $default_icons[$post_status] : 'dashicons-edit';
}
+
+ // Color
+ if (! empty($term->color)) {
+ $color = $term->color;
+ } else {
+ $default_status_colors = [
+ 'pitch' => '#887618',
+ 'assigned' => '#009ba0',
+ 'in-progress' => '#8c5400',
+ 'draft' => '#767676',
+ 'pending' => '#b95c00',
+ 'private' => '#b40000',
+ 'future' => '#8440f0',
+ 'publish' => '#207720',
+
+ 'draft-revision' => '#767676',
+ 'pending-revision' => '#b95c00',
+ 'future-revision' => '#8440f0',
+ ];
+
+ if (isset($default_status_colors[$post_status])) {
+ $color = $default_status_colors[$post_status];
+ } else {
+ $color = (class_exists('PublishPress_Statuses')) ? \PublishPress_Statuses::DEFAULT_COLOR : '#78645a';
+ }
+ }
+
+ return [
+ 'color' => $color,
+ 'icon' => $icon,
+ ];
}
/**
@@ -192,51 +272,28 @@ public function get_post_statuses()
*/
protected function get_core_post_statuses()
{
- return [
- (object)[
- 'name' => __('Draft'),
- 'description' => '',
- 'slug' => 'draft',
- 'position' => 1,
- ],
- (object)[
- 'name' => __('Pending Review'),
- 'description' => '',
- 'slug' => 'pending',
- 'position' => 2,
- ],
- (object)[
- 'name' => __('Published'),
- 'description' => '',
- 'slug' => 'publish',
- 'position' => 3,
- ],
- ];
+ global $publishpress;
+
+ return $publishpress->getCorePostStatuses();
}
/**
- * Gets the name of the default custom status. If custom statuses are disabled,
- * returns 'draft'.
+ * Back compat for existing code calling $publishpress->custom_status->get_custom_status_by()
*
- * @return str Name of the status
+ * @return object
+ *
+ * @since 4.0
*/
- public function get_default_post_status()
- {
-
- // Check if custom status module is enabled
- $custom_status_module = PublishPress()->custom_status->module->options;
+ public function get_custom_status_by($field, $value) {
+ global $publishpress;
- if ($custom_status_module->enabled == 'on') {
- return $custom_status_module->default_status;
- } else {
- return 'draft';
- }
+ return $publishpress->getPostStatusBy($field, $value);
}
/**
* Filter to all posts with a given post status (can be a custom status or a built-in status) and optional custom post type.
*
- * @param string $slug The slug for the post status to which to filter
+ * @param string $slug The slug for the post status to which to filter
* @param string $post_type Optional post type to which to filter
*
* @return an edit.php link to all posts with the given post status and, optionally, the given post type
@@ -262,10 +319,12 @@ public function filter_posts_link($slug, $post_type = 'post')
* @since 0.7
*
*/
- public function get_post_status_friendly_name($status)
+ public function get_post_status_friendly_name($status, $post = false)
{
global $publishpress;
+ $status = ($post && function_exists('rvy_in_revision_workflow') && rvy_in_revision_workflow($post)) ? $post->post_mime_type : $status;
+
$status_friendly_name = '';
$builtin_stati = [
@@ -278,11 +337,11 @@ public function get_post_status_friendly_name($status)
];
// Custom statuses only handles workflow statuses
- if ($this->module_enabled('custom_status')
- && ! in_array($status, ['publish', 'future', 'private', 'trash'])) {
- $status_object = $publishpress->custom_status->get_custom_status_by('slug', $status);
- if ($status_object && ! is_wp_error($status_object)) {
- $status_friendly_name = $status_object->name;
+ if (!in_array($status, ['publish', 'future', 'private', 'trash'])) {
+ $status_object = $publishpress->getPostStatusBy('slug', $status);
+
+ if ($status_object && !is_wp_error($status_object)) {
+ $status_friendly_name = $status_object->label;
}
} elseif (array_key_exists($status, $builtin_stati)) {
$status_friendly_name = $builtin_stati[$status];
@@ -298,29 +357,55 @@ public function get_post_status_friendly_name($status)
*/
public function enqueue_datepicker_resources()
{
- // Add the first day of the week as an available variable to wp_head
- echo '';
-
// Datepicker is available WordPress 3.3. We have to register it ourselves for previous versions of WordPress
wp_enqueue_script('jquery-ui-datepicker');
// Timepicker needs to come after jquery-ui-datepicker and jquery
- wp_enqueue_script('publishpress-timepicker', PUBLISHPRESS_URL . 'common/js/jquery-ui-timepicker-addon.js',
- ['jquery', 'jquery-ui-datepicker'], PUBLISHPRESS_VERSION, true);
- wp_enqueue_script('publishpress-date_picker', PUBLISHPRESS_URL . 'common/js/pp_date.js',
- ['jquery', 'jquery-ui-datepicker', 'publishpress-timepicker'], PUBLISHPRESS_VERSION, true);
+ wp_enqueue_script(
+ 'publishpress-timepicker',
+ PUBLISHPRESS_URL . 'common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.js',
+ ['jquery', 'jquery-ui-datepicker'],
+ PUBLISHPRESS_VERSION,
+ true
+ );
+
+ wp_enqueue_script(
+ 'publishpress-date_picker',
+ PUBLISHPRESS_URL . 'common/js/pp_date.js',
+ ['jquery', 'jquery-ui-datepicker', 'publishpress-timepicker'],
+ PUBLISHPRESS_VERSION,
+ true
+ );
// Now styles
- wp_enqueue_style('jquery-ui-datepicker', PUBLISHPRESS_URL . 'common/css/jquery.ui.datepicker.css',
- ['wp-jquery-ui-dialog'], PUBLISHPRESS_VERSION, 'screen');
- wp_enqueue_style('jquery-ui-theme', PUBLISHPRESS_URL . 'common/css/jquery.ui.theme.css', false,
- PUBLISHPRESS_VERSION, 'screen');
+ wp_enqueue_style(
+ 'publishpress-timepicker',
+ PUBLISHPRESS_URL . 'common/libs/timepicker-v1.6.3.1/jquery-ui-timepicker-addon.min.css',
+ ['wp-jquery-ui-dialog'],
+ PUBLISHPRESS_VERSION,
+ 'screen'
+ );
+ wp_enqueue_style(
+ 'jquery-ui-datepicker',
+ PUBLISHPRESS_URL . 'common/css/jquery.ui.datepicker.css',
+ ['wp-jquery-ui-dialog'],
+ PUBLISHPRESS_VERSION,
+ 'screen'
+ );
+ wp_enqueue_style(
+ 'jquery-ui-theme',
+ PUBLISHPRESS_URL . 'common/css/jquery.ui.theme.css',
+ false,
+ PUBLISHPRESS_VERSION,
+ 'screen'
+ );
wp_localize_script(
'publishpress-date_picker',
'objectL10ndate',
[
'date_format' => pp_convert_date_format_to_jqueryui_datepicker(get_option('date_format')),
+ 'week_first_day' => esc_js(get_option('start_of_week')),
]
);
}
@@ -339,9 +424,9 @@ public function get_current_post_type()
/**
* Wrapper for the get_user_meta() function so we can replace it if we need to
*
- * @param int $user_id Unique ID for the user
- * @param string $key Key to search against
- * @param bool $single Whether or not to return just one value
+ * @param int $user_id Unique ID for the user
+ * @param string $key Key to search against
+ * @param bool $single Whether or not to return just one value
*
* @return string|bool|array $value Whatever the stored value was
* @since 0.7
@@ -351,7 +436,7 @@ public function get_user_meta($user_id, $key, $string = true)
{
$response = null;
$response = apply_filters('pp_get_user_meta', $response, $user_id, $key, $string);
- if ( ! is_null($response)) {
+ if (!is_null($response)) {
return $response;
}
@@ -361,9 +446,9 @@ public function get_user_meta($user_id, $key, $string = true)
/**
* Wrapper for the update_user_meta() function so we can replace it if we need to
*
- * @param int $user_id Unique ID for the user
- * @param string $key Key to search against
- * @param string|bool|array $value Whether or not to return just one value
+ * @param int $user_id Unique ID for the user
+ * @param string $key Key to search against
+ * @param string|bool|array $value Whether or not to return just one value
* @param string|bool|array $previous (optional) Previous value to replace
*
* @return bool $success Whether we were successful in saving
@@ -374,7 +459,7 @@ public function update_user_meta($user_id, $key, $value, $previous = null)
{
$response = null;
$response = apply_filters('pp_update_user_meta', $response, $user_id, $key, $value, $previous);
- if ( ! is_null($response)) {
+ if (!is_null($response)) {
return $response;
}
@@ -386,7 +471,7 @@ public function update_user_meta($user_id, $key, $value, $previous = null)
*
* @param string $status Whether it was a 'success' or an 'error'
* @param string $message
- * @param array $data
+ * @param array $data
*
* @since 0.7
*
@@ -400,7 +485,7 @@ public function print_ajax_response($status, $message = '', $data = null)
'message' => $message,
];
- if ( ! is_null($data)) {
+ if (!is_null($data)) {
$result['data'] = $data;
}
@@ -419,10 +504,15 @@ public function print_ajax_response($status, $message = '', $data = null)
* @todo Think of a creative way to make this work
*
*/
- public function is_whitelisted_functional_view($module_name = null)
+ protected function is_whitelisted_functional_view($module_name = null)
{
- // @todo complete this method
- return true;
+ $whitelisted_pages = ['pp-calendar', 'pp-content-overview', 'pp-content-board', 'pp-notif-log', 'pp-modules-settings'];
+
+ if (isset($_GET['page']) && in_array($_GET['page'], $whitelisted_pages)) {
+ return true;
+ }
+
+ return false;
}
/**
@@ -441,23 +531,24 @@ public function is_whitelisted_settings_view($module_name = null)
global $pagenow, $publishpress;
// All of the settings views are based on admin.php and a $_GET['page'] parameter
- if ($pagenow != 'admin.php' || ! isset($_GET['page'])) {
+ if ($pagenow != 'admin.php' || !isset($_GET['page'])) {
return false;
}
- if (isset($_GET['page']) && $_GET['page'] === 'pp-modules-settings') {
+ if (isset($_GET['page']) && ($_GET['page'] === 'pp-modules-settings' || $_GET['page'] === 'pp-editorial-metadata')) {
+
if (empty($module_name)) {
return true;
}
- if ( ! isset($_GET['module']) || $_GET['module'] === 'pp-modules-settings-settings') {
- if (in_array($module_name, ['editorial_comments', 'notifications', 'dashboard'])) {
+ if (!isset($_GET['settings_module']) || $_GET['settings_module'] === 'pp-modules-settings-settings') {
+ if (in_array($module_name, ['editorial_comments', 'notifications', 'dashboard', 'editorial_metadata'])) {
return true;
}
}
$slug = str_replace('_', '-', $module_name);
- if (isset($_GET['module']) && $_GET['module'] === 'pp-' . $slug . '-settings') {
+ if (isset($_GET['settings_module']) && $_GET['settings_module'] === 'pp-' . $slug . '-settings') {
return true;
}
}
@@ -465,52 +556,6 @@ public function is_whitelisted_settings_view($module_name = null)
return false;
}
- /**
- * Remove term(s) associated with a given object(s). Core doesn't have this as of 3.2
- *
- * @see http://core.trac.wordpress.org/ticket/15475
- *
- * @author ericmann
- * @compat 3.3?
- *
- * @param int|array $object_ids The ID(s) of the object(s) to retrieve.
- * @param int|array $terms The ids of the terms to remove.
- * @param string|array $taxonomies The taxonomies to retrieve terms from.
- *
- * @return bool|WP_Error Affected Term IDs
- */
- public function remove_object_terms($object_id, $terms, $taxonomy)
- {
- global $wpdb;
-
- if ( ! taxonomy_exists($taxonomy)) {
- return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
- }
-
- if ( ! is_array($object_id)) {
- $object_id = [$object_id];
- }
-
- if ( ! is_array($terms)) {
- $terms = [$terms];
- }
-
- $delete_objects = array_map('intval', $object_id);
- $delete_terms = array_map('intval', $terms);
-
- if ($delete_terms) {
- $in_delete_terms = "'" . implode("', '", $delete_terms) . "'";
- $in_delete_objects = "'" . implode("', '", $delete_objects) . "'";
- $return = $wpdb->query($wpdb->prepare("DELETE FROM $wpdb->term_relationships WHERE object_id IN ($in_delete_objects) AND term_taxonomy_id IN ($in_delete_terms)",
- $object_id));
- wp_update_term_count($delete_terms, $taxonomy);
-
- return true;
- }
-
- return false;
- }
-
/**
* Encode all of the given arguments as a serialized array, and then base64_encode
* Used to store extra data in a term's description field.
@@ -541,6 +586,29 @@ public function get_unencoded_description($string_to_unencode)
return maybe_unserialize(base64_decode($string_to_unencode));
}
+ public function get_path_base()
+ {
+ return PUBLISHPRESS_BASE_PATH;
+ }
+
+ public function get_publishpress_url()
+ {
+ return PUBLISHPRESS_URL;
+ }
+
+ /**
+ * This method looks redundant but it is just an abstraction needed to make it possible to
+ * test Windows paths on a *unix machine. If not used and overridden in stubs on the tests
+ * it always return "." because Windows paths are not valid on *unix machines.
+ *
+ * @param $file
+ * @return string
+ */
+ public function dirname($file)
+ {
+ return dirname($file);
+ }
+
/**
* Get the publicly accessible URL for the module based on the filename
*
@@ -552,9 +620,10 @@ public function get_unencoded_description($string_to_unencode)
*/
public function get_module_url($file)
{
- $module_url = plugins_url('/', $file);
+ $file = str_replace($this->get_path_base(), '', $this->dirname($file));
+ $module_url = untrailingslashit($this->get_publishpress_url()) . $file;
- return trailingslashit($module_url);
+ return str_replace('\\', '/', trailingslashit($module_url));
}
/**
@@ -580,7 +649,7 @@ public function timesince($original)
$today = time(); /* Current unix time */
$since = $today - $original;
- if ($since > $chunks[2][0]) {
+ if ($since > $chunks[2][0] || $original > $today) {
$dateFormat = get_option('date_format', 'Y-m-d');
$print = date($dateFormat, $original);
@@ -603,7 +672,7 @@ public function timesince($original)
}
}
- return sprintf(_n("1 $name ago", "$count ${name}s ago", $count), $count);
+ return sprintf(_n("1 $name ago", "$count {$name}s ago", $count), $count);
}
/**
@@ -628,7 +697,6 @@ public function users_select_form($selected = null, $args = null)
extract($parsed_args, EXTR_SKIP);
$args = [
- 'who' => 'authors',
'fields' => [
'ID',
'display_name',
@@ -642,18 +710,18 @@ public function users_select_form($selected = null, $args = null)
* Filters the list of users available for notification.
*
* @param array $users
- * @param int $post_id
+ * @param int $post_id
*/
$post_id = isset($_GET['post']) ? (int)$_GET['post'] : null;
- $users = apply_filters('publishpress_notification_users_meta_box', get_users($args), $post_id);
+ $users = apply_filters('publishpress_notification_users_meta_box', get_users($args), $post_id);
- if ( ! is_array($selected)) {
+ if (!is_array($selected)) {
$selected = [];
}
// Extract emails from the selected list, if there is any.
$emails = [];
- if ( ! empty($selected)) {
+ if (!empty($selected)) {
foreach ($selected as $item) {
if (strpos($item, '@') > 0) {
$emails[] = $item;
@@ -665,40 +733,63 @@ public function users_select_form($selected = null, $args = null)
* Filters the list of roles available for notification.
*
* @param array $roles
- * @param int $post_id
+ * @param int $post_id
*/
$roles = apply_filters('publishpress_notification_roles_meta_box', get_editable_roles(), $post_id);
+
+ $groups = [];
+
+ if (class_exists('PublishPress\Permissions\API')) {
+ $groups = \PublishPress\Permissions\API::getGroups('pp_group', ['include_metagroups' => false]);
+ }
?>
-
-
-
+
+
+
$data) : ?>
- >:
+ >:
+
+
+
+
+
+ $group) : ?>
+
+ >: name; ?>
-
+
ID, $selected)) ? 'selected="selected"' : ''; ?>
- >display_name; ?>
+ >display_name; ?>
-
+
- >
+ >
-
+
id != 'publishpress_page_' . $this->module->settings_slug) {
+ if ($screen->id != 'planner_page_' . $this->module->settings_slug) {
return;
}
@@ -769,7 +860,7 @@ public function upgrade_074_term_descriptions($taxonomy)
if (is_array($unencoded_array)) {
foreach ($unencoded_array as $key => $value) {
// html_entity_decode only works on strings but sometimes we store nested arrays
- if ( ! is_array($value)) {
+ if (!is_array($value)) {
$description_args[$key] = html_entity_decode($value, ENT_QUOTES);
} else {
$description_args[$key] = $value;
@@ -781,9 +872,13 @@ public function upgrade_074_term_descriptions($taxonomy)
}
$new_description = $this->get_encoded_description($description_args);
- wp_update_term($term->term_id, $taxonomy, [
- 'description' => $new_description,
- ]);
+ wp_update_term(
+ $term->term_id,
+ $taxonomy,
+ [
+ 'description' => $new_description,
+ ]
+ );
}
}
@@ -794,5 +889,460 @@ public static function isPublishPressModuleEnabled($module_slug)
return isset($publishpress->{$module_slug})
&& $publishpress->{$module_slug}->module->options->enabled === 'on';
}
+
+ public function getUserAuthorizedPostStatusOptions($postType, $post = false)
+ {
+ global $pp_post_type_status_options;
+
+ if (!is_array($pp_post_type_status_options)) {
+ $pp_post_type_status_options = [];
+ }
+
+ if (isset($pp_post_type_status_options[$postType])) {
+ return apply_filters('publishpress_user_post_status_options', $pp_post_type_status_options[$postType], $postType, $post);
+ }
+
+ $postStatuses = $this->getPostStatusOptions($postType, $post);
+
+ foreach ($postStatuses as $index => $status) {
+ // Filter publishing posts if the post type is set
+ if (in_array($status['value'], ['publish', 'future', 'private'])) {
+ $postTypeObj = get_post_type_object($postType);
+ if (! current_user_can($postTypeObj->cap->publish_posts)) {
+ unset($postStatuses[$index]);
+ }
+ }
+ }
+
+ $pp_post_type_status_options[$postType] = $postStatuses;
+
+ return apply_filters('publishpress_user_post_status_options', $postStatuses, $postType, $post);
+ }
+
+ public function getPostStatusOptions($postType = '', $post = false)
+ {
+ if (!$defined_statuses = apply_filters('publishpress_defined_post_statuses', [], $postType, $post)) {
+ $postStatuses = [];
+ $post_statuses_terms = get_terms('post_status', ['hide_empty' => false]);
+ $post_statuses_terms_slugs = (!is_wp_error($post_statuses_terms)) ? array_column($post_statuses_terms, 'slug') : [];
+ $defined_statuses = $this->get_post_statuses();
+ }
+
+ foreach ($defined_statuses as $status) {
+ //add support for capabilities custom statuses
+ if (defined('PUBLISHPRESS_CAPS_PRO_VERSION')
+ && !empty(get_option('cme_custom_status_control'))
+ && in_array($status->slug, $post_statuses_terms_slugs)
+ && !current_user_can('status_change_' . $status->slug)
+ ) {
+ continue;
+ }
+ $postStatuses[] = [
+ 'value' => esc_attr($status->slug),
+ 'text' => esc_html($status->label),
+ ];
+ }
+
+ return apply_filters('publishpress_post_status_options', $postStatuses, $postType, $post);
+ }
+
+ /**
+ * Retrieve wordpress registered taxonomy
+ *
+ * Private taxonomy are excluded
+ *
+ * @since 3.7.0
+ */
+ public function get_all_taxonomies()
+ {
+
+ //category and post tag are not included in public taxonomy
+ $category = get_taxonomies(['name' => 'category'], 'objects');
+ $post_tag = get_taxonomies(['name' => 'post_tag'], 'objects');
+
+ $public = get_taxonomies(['_builtin' => false, 'public' => true], 'objects');
+
+ $taxonomies = array_merge($category, $post_tag, $public);
+
+ return $taxonomies;
+ }
+
+ /**
+ * Retrieve post types taxonomies
+ *
+ * @param array $post_types
+ *
+ * @return array
+ */
+ public function get_post_types_taxonomies($post_types)
+ {
+ $taxonomies = array_map(
+ function ( $post_type ) {
+ return get_object_taxonomies( $post_type, 'objects' );
+ },
+ $post_types
+ );
+
+ // Make sure there's no duplicate
+ $taxonomies = call_user_func_array( 'array_merge', $taxonomies );
+
+ // Keep only those where show_ui is not empty.
+ $taxonomies = array_filter( $taxonomies, function( $taxonomy ) {
+ return ! empty( $taxonomy->show_ui );
+ });
+
+ return $taxonomies;
+ }
+
+ /**
+ *
+ * @param string $param The parameter to look for in $_GET
+ *
+ * @return mixed null if the parameter is not set in $_GET, empty string if the parameter is empty in $_GET,
+ * or a sanitized version of the parameter from $_GET if set and not empty
+ */
+ public function filter_get_param($param, $request_filter = false)
+ {
+ if (!$request_filter) {
+ $request_filter = $_GET;
+ }
+
+ // Sure, this could be done in one line. But we're cooler than that: let's make it more readable!
+ if (! isset($request_filter[$param])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ return null;
+ } elseif (empty($request_filter[$param])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ return '';
+ }
+
+ return sanitize_key($request_filter[$param]); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ }
+
+ /**
+ * This function is an alternative to filter_get_param() that's stripping out date characters
+ *
+ * @param string $param The parameter to look for in $_GET
+ *
+ * @return mixed null if the parameter is not set in $_GET, empty string if the parameter is empty in $_GET,
+ * or a sanitized version of the parameter from $_GET if set and not empty
+ */
+ public function filter_get_param_text($param, $request_filter = false)
+ {
+ if (!$request_filter) {
+ $request_filter = $_GET;
+ }
+
+ // Sure, this could be done in one line. But we're cooler than that: let's make it more readable!
+ if (! isset($request_filter[$param])) {
+ return null;
+ } elseif ($request_filter[$param] == '0') {
+ return 0;
+ } elseif (empty($request_filter[$param])) {
+ return '';
+ }
+
+ return sanitize_text_field($request_filter[$param]);
+ }
+
+ public function meta_query_operator_label($operator = false) {
+ $operators = [
+ 'equals' => 'Equals (=)',
+ 'not_equals' => 'Does not equal (!=)',
+ 'greater_than' => 'Greater than (>)',
+ 'greater_than_or_equals' => 'Greater than or equals (>=)',
+ 'less_than' => 'Less than (<)',
+ 'less_than_or_equals' => 'Less than or equals (<=)',
+ 'like' => 'Like/Contains',
+ 'not_like' => 'Not Like',
+ 'not_exists' => 'Not Exists/Empty',
+ ];
+
+ if ($operator) {
+ $return = array_key_exists($operator, $operators) ? $operators[$operator] : $operator;
+ } else {
+ $return = $operators;
+ }
+
+ return $return;
+ }
+
+ public function meta_query_operator_symbol($operator = false) {
+
+ return self::meta_query_operator_symbol($operator = false);
+ }
+
+ public static function static_meta_query_operator_symbol($operator = false) {
+ $operators = [
+ 'equals' => '=',
+ 'not_equals' => '!=',
+ 'greater_than' => '>',
+ 'greater_than_or_equals' => '>=',
+ 'less_than' => '<',
+ 'less_than_or_equals' => '<=',
+ 'like' => 'LIKE',
+ 'not_like' => 'NOT LIKE',
+ 'not_exists' => 'NOT EXISTS',
+ ];
+
+ if ($operator) {
+ $return = array_key_exists($operator, $operators) ? $operators[$operator] : $operator;
+ } else {
+ $return = $operators;
+ }
+
+ return $return;
+ }
+
+ public function localize_post_data($localized_post_data, $post, $can_edit_post) {
+ global $publishpress;
+
+ // add taxonomies
+ $taxonomies = get_object_taxonomies($post->post_type, 'object');
+ foreach ($taxonomies as $taxonomy => $tax_object ) {
+ if (!empty($tax_object->public)
+ && !in_array($taxonomy, ['author', 'post_format', 'post_status', 'post_status_core_wp_pp', 'post_visibility_pp', 'pp_revision_status'])) {
+ $terms = get_the_terms($post->ID, $taxonomy);
+ //add post content to localized data
+ $localized_post_data['taxonomies'][$post->ID][$taxonomy] = [
+ 'post_id' => $post->ID,
+ 'taxonomy' => $taxonomy,
+ 'taxonomy_label' => $tax_object->label,
+ 'taxonomy_placeholder' => sprintf(esc_attr__('Select %s', 'publishpress'), esc_html($tax_object->label)),
+ 'terms' => (!empty($terms) && !is_wp_error($terms)) ? $terms : []
+ ];
+ }
+ }
+
+ $post_title = _draft_or_post_title($post->ID);
+
+ //add post content to localized data
+ $localized_post_data['posts'][] = [
+ 'post_id' => $post->ID,
+ 'post_title' => $post_title,
+ 'raw_title' => $post->post_title,
+ 'filtered_title' => isset($post->filtered_title) ? $post->filtered_title : $post->post_title,
+ 'post_status' => (function_exists('rvy_in_revision_workflow') && rvy_in_revision_workflow($post->ID)) ? $post->post_mime_type : $post->post_status,
+ 'status_label' => $this->get_post_status_friendly_name($post->post_status),
+ 'status_options' => $this->getUserAuthorizedPostStatusOptions($post->post_type, $post),
+ 'status_field_label' => (function_exists('rvy_in_revision_workflow') && rvy_in_revision_workflow($post->ID)) ? esc_html__('Revision Status', 'publishpress') : esc_html__('Post Status', 'publishpress'),
+ 'can_edit_post' => $can_edit_post ? 1 : 0,
+ 'date_markup' => $can_edit_post ? $this->get_date_markup($post) : get_the_time(get_option("date_format"), $post->ID) . " " . get_the_time(get_option("time_format"), $post->ID),
+ 'action_links' => $this->get_post_action_links($post, $can_edit_post),
+ 'author_markup' => $this->get_author_markup($post, $can_edit_post),
+ 'post_content' => apply_filters('the_content', $post->post_content)
+ ];
+
+ return $localized_post_data;
+ }
+
+ public function get_date_markup($post) {
+ $date_name = 'content_board_post_date';
+ $date_markup =
+ sprintf(
+ ' ',
+ esc_attr($date_name),
+ esc_attr(date_i18n('F j, Y H:i', strtotime($post->post_date))),
+ esc_attr(pp_convert_date_format_to_jqueryui_datepicker('Y-m-d H:i:s')),
+ ''
+ );
+ $date_markup .= sprintf(
+ ' ',
+ esc_attr($date_name),
+ esc_attr($date_name),
+ esc_attr(date_i18n('Y-m-d H:i:s', strtotime($post->post_date)))
+ );
+
+ return $date_markup;
+ }
+
+ public function get_post_action_links($post, $can_edit_post) {
+
+ $post_type_object = get_post_type_object($post->post_type);
+
+ $item_actions = [
+ 'edit' => '',
+ 'trash' => '',
+ 'view' => '',
+ 'previewpost' => '',
+ ];
+
+ if ($can_edit_post) {
+ $item_actions["edit"] = esc_url(get_edit_post_link($post->ID));
+ }
+
+ if (EMPTY_TRASH_DAYS > 0 && current_user_can($post_type_object->cap->delete_post, $post->ID)) {
+ $item_actions["trash"] = esc_url(get_delete_post_link($post->ID));
+ }
+
+ if (in_array($post->post_status, ["publish"])) {
+ $item_actions["view"] = esc_url(get_permalink($post->ID));
+ } elseif ($can_edit_post) {
+ $item_actions["previewpost"] = esc_url(
+ apply_filters(
+ "preview_post_link",
+ add_query_arg("preview", "true", get_permalink($post->ID)),
+ $post
+ )
+ );
+ }
+
+ return apply_filters('publishpress_item_action_links', $item_actions, $post, $can_edit_post);
+ }
+
+ public function get_author_markup($post, $can_edit_post) {
+
+ if ($can_edit_post) {
+ ob_start();
+ $authorId = (int) $post->post_author;
+ if (function_exists('get_post_authors')) {
+ $authors = get_post_authors($post);
+ $multiple = 'multiple';
+ } else {
+ $authors = [$authorId];
+ $multiple = '';
+ }
+ ?>
+ >
+ ID) . '" selected="selected">' . esc_html(
+ $author->display_name
+ ) . '';
+ }
+
+ $option = apply_filters('publishpress_author_filter_selected_option', $option, $authorId);
+
+ echo $option; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+ }
+ ?>
+
+ post_author);
+ $author_name = is_object($post_author) ? $post_author->display_name : '';
+ $author_name = apply_filters('the_author', $author_name);
+
+ $author_name = apply_filters('publishpress_content_overview_author_column', $author_name, $post);
+ return $author_name;
+ }
+ }
+
+ public function get_publish_date_markup() {
+ ob_start();
+ ?>
+
+
+ touch_time(); ?>
+
+
+ 0 ) {
+ $tab_index_attribute = " tabindex=\"$tab_index\"";
+ }
+
+ $jj = current_time( 'd' );
+ $mm = current_time( 'm' );
+ $aa = current_time( 'Y' );
+ $hh = current_time( 'H' );
+ $mn = current_time( 'i' );
+ $ss = current_time( 's' );
+
+ $cur_jj = current_time( 'd' );
+ $cur_mm = current_time( 'm' );
+ $cur_aa = current_time( 'Y' );
+ $cur_hh = current_time( 'H' );
+ $cur_mn = current_time( 'i' );
+
+ $month = '' .
+ /* translators: Hidden accessibility text. */
+ __( 'Month' ) .
+ ' \n";
+ for ( $i = 1; $i < 13; $i = $i + 1 ) {
+ $monthnum = zeroise( $i, 2 );
+ $monthtext = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );
+ $month .= "\t\t\t" . '';
+ /* translators: 1: Month number (01, 02, etc.), 2: Month abbreviation. */
+ $month .= sprintf( __( '%1$s-%2$s' ), $monthnum, $monthtext ) . " \n";
+ }
+ $month .= ' ';
+
+ $day = '' .
+ /* translators: Hidden accessibility text. */
+ __( 'Day' ) .
+ ' ';
+ $year = '' .
+ /* translators: Hidden accessibility text. */
+ __( 'Year' ) .
+ ' ';
+ $hour = '' .
+ /* translators: Hidden accessibility text. */
+ __( 'Hour' ) .
+ ' ';
+ $minute = '' .
+ /* translators: Hidden accessibility text. */
+ __( 'Minute' ) .
+ ' ';
+
+ echo '';
+ /* translators: 1: Month, 2: Day, 3: Year, 4: Hour, 5: Minute. */
+ printf( __( '%1$s %2$s, %3$s at %4$s:%5$s' ), $month, $day, $year, $hour, $minute );
+
+ echo '
';
+
+ if ( $multi ) {
+ return;
+ }
+
+ echo "\n\n";
+
+ $map = array(
+ 'mm' => array( $mm, $cur_mm ),
+ 'jj' => array( $jj, $cur_jj ),
+ 'aa' => array( $aa, $cur_aa ),
+ 'hh' => array( $hh, $cur_hh ),
+ 'mn' => array( $mn, $cur_mn ),
+ );
+
+ foreach ( $map as $timeunit => $value ) {
+ list( $unit, $curr ) = $value;
+
+ echo ' ' . "\n";
+ $cur_timeunit = 'cur_' . $timeunit;
+ echo ' ' . "\n";
+ }
+ ?>
+ page_panels[$page_id])) {
+ if (!isset($this->page_panels[$page_id])) {
$this->page_panels[$page_id] = [];
}
$this->page_panels[$page_id][] = $id;
@@ -114,12 +114,12 @@ public function add_screen_options_panel(
/**
* Convert a page hook name to a screen ID.
*
- * @uses convert_to_screen()
- * @access private
- *
* @param string $page
*
* @return string
+ * @uses convert_to_screen()
+ * @access private
+ *
*/
public function page_to_screen_id($page)
{
@@ -151,7 +151,7 @@ public function append_screen_settings($current, $screen)
global $hook_suffix;
// Sanity check
- if ( ! isset($screen->id)) {
+ if (!isset($screen->id)) {
return $current;
}
@@ -166,7 +166,7 @@ public function append_screen_settings($current, $screen)
$panel = $this->registered_panels[$panel_id];
// Add panel title
- if ( ! empty($panel['title'])) {
+ if (!empty($panel['title'])) {
$current .= "\n" . $panel['title'] . " \n";
}
// Generate panel contents
@@ -209,13 +209,13 @@ public function ajax_save_callback()
}
// The 'action' argument is in the form "save_settings-panel_id"
- $id = end(explode('-', $_POST['action'], 2));
+ $id = end(explode('-', sanitize_text_field($_POST['action']), 2));
// Basic security check.
check_ajax_referer('save_settings-' . $id, '_wpnonce-' . $id);
// Hand the request to the registered callback, if any
- if ( ! isset($this->registered_panels[$id])) {
+ if (!isset($this->registered_panels[$id])) {
exit('0');
}
$panel = $this->registered_panels[$id];
@@ -265,20 +265,20 @@ public function add_autosave_script()
* Get custom panels registered for a particular screen and/or page.
*
* @param string $screen_id Screen ID.
- * @param string $page Optional. Page filename or hook name.
+ * @param string $page Optional. Page filename or hook name.
*
* @return array Array of custom panels.
*/
public function get_panels_for_screen($screen_id, $page = '')
{
- if (isset($this->page_panels[$screen_id]) && ! empty($this->page_panels[$screen_id])) {
+ if (isset($this->page_panels[$screen_id]) && !empty($this->page_panels[$screen_id])) {
$panels = $this->page_panels[$screen_id];
} else {
$panels = [];
}
- if ( ! empty($page)) {
+ if (!empty($page)) {
$page_as_screen = $this->page_to_screen_id($page);
- if (isset($this->page_panels[$page_as_screen]) && ! empty($this->page_panels[$page_as_screen])) {
+ if (isset($this->page_panels[$page_as_screen]) && !empty($this->page_panels[$page_as_screen])) {
$panels = array_merge($panels, $this->page_panels[$page_as_screen]);
}
}
@@ -290,28 +290,27 @@ public function get_panels_for_screen($screen_id, $page = '')
// All versions of the class are stored in a global array
// and only the latest version is actually used.
global $ws_screen_options_versions;
- if ( ! isset($ws_screen_options_versions)) {
+ if (!isset($ws_screen_options_versions)) {
$ws_screen_options_versions = [];
}
$ws_screen_options_versions['1.0'] = 'wsScreenOptions10';
endif;
-if ( ! function_exists('add_screen_options_panel')) {
-
+if (!function_exists('add_screen_options_panel')) {
/**
* Add a new settings panel to the "Screen Options" box.
*
- * @see wsScreenOptions10::add_screen_options_panel()
- *
- * @param string $id String to use in the 'id' attribute of the settings panel. Should be unique.
- * @param string $title Title of the settings panel. Set to an empty string to omit title.
- * @param callback $callback Function that fills the panel with the desired content. Should return its output.
- * @param string|array $page The page(s) on which to show the panel (similar to add_meta_box()).
- * @param callback $save_callback Optional. Function that saves the settings contained in the panel.
- * @param bool $autosave Optional. If set, settings will be automatically saved (via AJAX) when the value of any input element in the panel changes. Defaults to false.
+ * @param string $id String to use in the 'id' attribute of the settings panel. Should be unique.
+ * @param string $title Title of the settings panel. Set to an empty string to omit title.
+ * @param callback $callback Function that fills the panel with the desired content. Should return its output.
+ * @param string|array $page The page(s) on which to show the panel (similar to add_meta_box()).
+ * @param callback $save_callback Optional. Function that saves the settings contained in the panel.
+ * @param bool $autosave Optional. If set, settings will be automatically saved (via AJAX) when the value of any input element in the panel changes. Defaults to false.
*
* @return void
+ * @see wsScreenOptions10::add_screen_options_panel()
+ *
*/
function add_screen_options_panel($id, $title, $callback, $page, $save_callback = null, $autosave = false)
{
diff --git a/public/wp-content/plugins/publishpress/common/php/util.php b/public/wp-content/plugins/publishpress/common/php/util.php
index 47fcc240a..909382fe3 100644
--- a/public/wp-content/plugins/publishpress/common/php/util.php
+++ b/public/wp-content/plugins/publishpress/common/php/util.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
@@ -28,7 +28,7 @@
* along with PublishPress. If not, see .
*/
-if ( ! function_exists('pp_draft_or_post_title')) {
+if (!function_exists('pp_draft_or_post_title')) {
/**
* Copy of core's _draft_or_post_title without the filters
*
@@ -43,29 +43,29 @@ function pp_draft_or_post_title($post_id = 0)
{
$post = get_post($post_id);
- return ! empty($post->post_title) ? $post->post_title : __('(no title)', 'publishpress');
+ return !empty($post->post_title) ? $post->post_title : __('(no title)', 'publishpress');
}
}
-if ( ! function_exists('pp_convert_date_format_to_jqueryui_datepicker')) {
+if (!function_exists('pp_convert_date_format_to_jqueryui_datepicker')) {
/**
* Converts a given WordPress date format to jQuery UI Datepicker format.
*
+ * @param string $date_format_original
+ *
+ * @return string
+ * @throws InvalidArgumentException
+ *
* @author Denison Martins
*
* @see https://codex.wordpress.org/Formatting_Date_and_Time
* @see http://api.jqueryui.com/datepicker
*
- * @throws InvalidArgumentException
- *
- * @param string $date_format_original
- *
- * @return string
*/
function pp_convert_date_format_to_jqueryui_datepicker($date_format_original)
{
if (!is_string($date_format_original)) {
- throw new \InvalidArgumentException('The supplied parameter must be a string.');
+ throw new InvalidArgumentException('The supplied parameter must be a string.');
}
if (!preg_match_all('/([\w])/', $date_format_original, $current_date_format_terms)) {
@@ -85,7 +85,7 @@ function pp_convert_date_format_to_jqueryui_datepicker($date_format_original)
return array_reduce(
array_unique($current_date_format_terms[0]),
- function($new_format, $format_term_needle) use ($format_terms_map) {
+ function ($new_format, $format_term_needle) use ($format_terms_map) {
if (!isset($format_terms_map[$format_term_needle])) {
return $new_format;
}
@@ -97,7 +97,7 @@ function($new_format, $format_term_needle) use ($format_terms_map) {
}
}
-if ( ! function_exists('pp_get_users_with_author_permissions')) {
+if (!function_exists('pp_get_users_with_author_permissions')) {
function pp_get_users_with_author_permissions()
{
$author_permissions = [
@@ -107,13 +107,53 @@ function pp_get_users_with_author_permissions()
'contributor',
];
- $authors = (array)get_users([
- 'role__in' => $author_permissions,
- 'fields' => ['ID', 'display_name'],
- 'orderby' => 'display_name',
- 'order' => 'ASC'
- ]);
+ $authors = (array)get_users(
+ [
+ 'role__in' => $author_permissions,
+ 'fields' => ['ID', 'display_name'],
+ 'orderby' => 'display_name',
+ 'order' => 'ASC'
+ ]
+ );
return apply_filters('pp_get_users_eligible_to_be_authors', $authors);
}
}
+
+if (!function_exists('pp_planner_admin_notice')) {
+ /**
+ * Show admin notices function for use with admin_notices hook.
+ *
+ * Constructs admin notice HTML.
+ *
+ * @param string $message Message to use in admin notice. Optional. Default empty string.
+ * @param bool $success Whether or not a success. Optional. Default true.
+ * @return mixed
+ */
+ function pp_planner_admin_notice($message = '', $success = true)
+ {
+
+ $class = [];
+ $class[] = $success ? 'updated' : 'error';
+ $class[] = 'notice is-dismissible';
+
+ $messagewrapstart = '';
+
+ $messagewrapend = '
';
+
+ $action = '';
+
+ /**
+ * Filters the custom admin notice for ppma.
+ *
+ *
+ * @param string $value Complete HTML output for notice.
+ * @param string $action Action whose message is being generated.
+ * @param string $message The message to be displayed.
+ * @param string $messagewrapstart Beginning wrap HTML.
+ * @param string $messagewrapend Ending wrap HTML.
+ */
+ return apply_filters('ppch_admin_notice', $messagewrapstart . $message . $messagewrapend, $action, $message,
+ $messagewrapstart, $messagewrapend);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/core/Ajax.php b/public/wp-content/plugins/publishpress/core/Ajax.php
new file mode 100644
index 000000000..663b620c8
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/Ajax.php
@@ -0,0 +1,119 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+/**
+ * @package PublishPress\Core
+ */
+class Ajax
+{
+ const HTTP_STATUS_UNAUTHORIZED = 401;
+
+ const HTTP_STATUS_FORBIDDEN = 403;
+
+ /**
+ * @var Ajax
+ */
+ private static $instance;
+
+ /**
+ * @var Error
+ */
+ private $errorDefinitions;
+
+ /**
+ * @var array
+ */
+ private $statusByErrorCodes;
+
+ public function __construct()
+ {
+ $this->errorDefinitions = Error::getInstance();
+ $this->setStatusByErrorCodes();
+ }
+
+ public static function getInstance()
+ {
+ if (! isset(self::$instance)) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * @param string $errorCode
+ * @param int $statusCode
+ * @param int $options
+ * @return void
+ */
+ public function sendJsonError($errorCode, $statusCode = null, $options = 0)
+ {
+ if (empty($statusCode) && isset($this->statusByErrorCodes[$errorCode])) {
+ $statusCode = $this->statusByErrorCodes[$errorCode];
+ }
+
+ wp_send_json_error($this->errorDefinitions->getWpError($errorCode), $statusCode, $options);
+ }
+
+ /**
+ * @param mixed $response
+ * @param int $statusCode
+ * @param int $options
+ * @return void
+ */
+ public function sendJson($response, $statusCode = null, $options = 0)
+ {
+ wp_send_json($response, $statusCode, $options);
+ }
+
+ /**
+ * @param mixed $response
+ * @param int $statusCode
+ * @param int $options
+ * @return void
+ */
+ public function sendJsonSuccess($response, $statusCode = null, $options = 0)
+ {
+ wp_send_json_success($response, $statusCode, $options);
+ }
+
+ /**
+ * @return void
+ */
+ private function setStatusByErrorCodes()
+ {
+ $this->statusByErrorCodes = [
+ Error::ERROR_CODE_INVALID_NONCE => 401,
+ Error::ERROR_CODE_ACCESS_DENIED => 403,
+ ];
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/core/Error.php b/public/wp-content/plugins/publishpress/core/Error.php
new file mode 100644
index 000000000..1705f3bb1
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/Error.php
@@ -0,0 +1,150 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+use WP_Error;
+
+/**
+ * @package PublishPress\Core
+ */
+class Error implements ErrorHandlerInterface
+{
+ const ERROR_CODE_UNDEFINED = 'PPE_0';
+
+ const ERROR_CODE_INVALID_NONCE = 'PPE_1';
+
+ const ERROR_CODE_ACCESS_DENIED = 'PPE_2';
+
+ /**
+ * @var Error
+ */
+ private static $instance;
+
+ /**
+ * @var array
+ */
+ private $errorMessages;
+
+ public function __construct()
+ {
+ $this->registerErrors($this->getGlobalErrors());
+ }
+
+ /**
+ * @return Error
+ */
+ public static function getInstance()
+ {
+ if (! isset(self::$instance)) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * @return array
+ */
+ private function getGlobalErrors()
+ {
+ return [
+ self::ERROR_CODE_UNDEFINED => __('Undefined error found', 'publishpress'),
+ self::ERROR_CODE_INVALID_NONCE => __('Invalid nonce', 'publishpress'),
+ self::ERROR_CODE_ACCESS_DENIED => __('Access denied', 'publishpress'),
+ ];
+ }
+
+ /**
+ * @param array $errors
+ *
+ * @return void
+ */
+ private function registerErrors($errors)
+ {
+ foreach ($errors as $errorCode => $errorMessage)
+ {
+ $this->errorMessages[$errorCode] = $errorMessage;
+ }
+ }
+
+ /**
+ * @param string $code
+ * @return WP_Error
+ */
+ public function getWpError($code)
+ {
+ return new WP_Error($code, esc_html($this->getErrorMessage($code)));
+ }
+
+ /**
+ * @param $code
+ * @return string
+ */
+ private function getErrorMessage($code)
+ {
+ if (! isset($this->errorMessages[$code])) {
+ $code = self::ERROR_CODE_UNDEFINED;
+ }
+
+ return $this->errorMessages[$code];
+ }
+
+ /**
+ * @param ModuleErrorsInterface $instance
+ * @return void
+ */
+ public function registerModuleErrors($instance)
+ {
+ $this->registerErrors($instance->getErrors());
+ }
+
+ /**
+ * @param $code
+ * @return string
+ */
+ public function getErrorHtml($code)
+ {
+ return sprintf(
+ '%s %s
',
+ $code,
+ $this->getErrorMessage($code)
+ );
+ }
+
+ /**
+ * @param $code
+ * @return void
+ */
+ public function wpDie($code)
+ {
+ wp_die($this->getWpError($code), $code);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/core/ErrorHandlerInterface.php b/public/wp-content/plugins/publishpress/core/ErrorHandlerInterface.php
new file mode 100644
index 000000000..9a5a36fe9
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/ErrorHandlerInterface.php
@@ -0,0 +1,64 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+use WP_Error;
+
+/**
+ * @package PublishPress\Core
+ */
+interface ErrorHandlerInterface
+{
+ public static function getInstance();
+
+ /**
+ * @param int $code
+ * @return false|WP_Error
+ */
+ public function getWpError($code);
+
+ /**
+ * @param $instance
+ */
+ public function registerModuleErrors($instance);
+
+ /**
+ * @param $code
+ * @return string
+ */
+ public function getErrorHtml($code);
+
+ /**
+ * @param $code
+ * @return void
+ */
+ public function wpDie($code);
+}
diff --git a/public/wp-content/plugins/publishpress/core/ModuleErrorsInterface.php b/public/wp-content/plugins/publishpress/core/ModuleErrorsInterface.php
new file mode 100644
index 000000000..a061ae2d8
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/ModuleErrorsInterface.php
@@ -0,0 +1,42 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+/**
+ * @package PublishPress\Core
+ */
+interface ModuleErrorsInterface
+{
+ /**
+ * @return array
+ */
+ public function getErrors();
+}
diff --git a/public/wp-content/plugins/publishpress/core/Modules/AbstractModule.php b/public/wp-content/plugins/publishpress/core/Modules/AbstractModule.php
index f2b036a7f..51e733de1 100644
--- a/public/wp-content/plugins/publishpress/core/Modules/AbstractModule.php
+++ b/public/wp-content/plugins/publishpress/core/Modules/AbstractModule.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
@@ -30,11 +30,13 @@
namespace PublishPress\Core\Modules;
+use PP_Module;
+
/**
* Base class for building PublishPress modules.
*
* @package PublishPress\Core\Modules
*/
-abstract class AbstractModule extends \PP_Module
+abstract class AbstractModule extends PP_Module
{
}
diff --git a/public/wp-content/plugins/publishpress/core/Modules/ModuleInterface.php b/public/wp-content/plugins/publishpress/core/Modules/ModuleInterface.php
index 874c0a2a3..7e3453b72 100644
--- a/public/wp-content/plugins/publishpress/core/Modules/ModuleInterface.php
+++ b/public/wp-content/plugins/publishpress/core/Modules/ModuleInterface.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
diff --git a/public/wp-content/plugins/publishpress/core/View.php b/public/wp-content/plugins/publishpress/core/View.php
new file mode 100644
index 000000000..5dcc83d5b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/View.php
@@ -0,0 +1,71 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+use Exception;
+
+/**
+ * @package PublishPress\Core
+ */
+class View
+{
+ const FILE_EXTENSION = '.html.php';
+
+ /**
+ * @throws Exception
+ */
+ public function render($view, $context = [], $views_path = null)
+ {
+ $view = preg_replace('/[^a-zA-Z0-9_\-\.]/', '', $view);
+
+ if (is_null($views_path)) {
+ $views_path = PUBLISHPRESS_VIEWS_PATH;
+ }
+
+ $view_path = $this->get_view_path($view, $views_path);
+
+ if (! is_readable($view_path)) {
+ error_log('PublishPress: View is not readable: ' . $view);
+
+ return '';
+ }
+
+ ob_start();
+ include $view_path;
+
+ return ob_get_clean();
+ }
+
+ protected function get_view_path($view, $views_path)
+ {
+ return $views_path . '/' . $view . self::FILE_EXTENSION;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/core/ViewInterface.php b/public/wp-content/plugins/publishpress/core/ViewInterface.php
new file mode 100644
index 000000000..e49262d6a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/core/ViewInterface.php
@@ -0,0 +1,39 @@
+.
+ */
+
+namespace PublishPress\Core;
+
+/**
+ * @package PublishPress\Core
+ */
+interface ViewInterface
+{
+ public function render($view, $context = []);
+}
diff --git a/public/wp-content/plugins/publishpress/defines-free-plugin-path.php b/public/wp-content/plugins/publishpress/defines-free-plugin-path.php
new file mode 100644
index 000000000..994192dbe
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/defines-free-plugin-path.php
@@ -0,0 +1,39 @@
+.
+ */
+
+if (! defined('PUBLISHPRESS_FREE_PLUGIN_PATH')) {
+ /*
+ * This constant is used by the Pro plugin to know where the Free plugin is installed.
+ * This file should be automatically loaded by Composer. We use this file instead of
+ * the includes.php file because we want to avoid loading all that file before it is
+ * really needed.
+ */
+ define('PUBLISHPRESS_FREE_PLUGIN_PATH', __DIR__);
+}
diff --git a/public/wp-content/plugins/publishpress/deprecated.php b/public/wp-content/plugins/publishpress/deprecated.php
index c8e0be68e..29e1898da 100644
--- a/public/wp-content/plugins/publishpress/deprecated.php
+++ b/public/wp-content/plugins/publishpress/deprecated.php
@@ -1,55 +1,60 @@
-.
- */
-
-namespace PublishPress;
-
-/**
- * Deprecated classes, for temporary backward compatibility.
- */
-
-/**
- * Class Util. Use PublishPress\Legacy\Util instead.
- *
- * @package PublishPress
- * @deprecated
- */
-class Util extends \PublishPress\Legacy\Util
-{
-}
-
-/**
- * Class Auto_loader. Use PublishPress\Legacy\Auto_loader instead.
- *
- * @package PublishPress
- * @deprecated
- */
-class Auto_loader extends \PublishPress\Legacy\Auto_loader
-{
-}
+.
+ */
+
+namespace PublishPress;
+
+/**
+ * Deprecated classes, for temporary backward compatibility.
+ */
+
+/**
+ * Class Util. Use PublishPress\Legacy\Util instead.
+ *
+ * @package PublishPress
+ * @deprecated
+ */
+class Util extends Legacy\Util
+{
+}
+
+/**
+ * Class Auto_loader. Use PublishPress\Legacy\Auto_loader instead.
+ *
+ * @package PublishPress
+ * @deprecated
+ */
+class Auto_loader extends Legacy\Auto_loader
+{
+}
+
+class_alias(
+ 'PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_StatusTransition',
+ 'PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_Save'
+);
diff --git a/public/wp-content/plugins/publishpress/includes.php b/public/wp-content/plugins/publishpress/includes.php
index bacc775bd..0e54150e7 100644
--- a/public/wp-content/plugins/publishpress/includes.php
+++ b/public/wp-content/plugins/publishpress/includes.php
@@ -1,80 +1,176 @@
-.
- */
-
-use PublishPress\Legacy\Auto_loader;
-
-if ( ! defined('PP_LOADED')) {
- $settingsPage = add_query_arg(
- [
- 'page' => 'pp-modules-settings',
- 'module' => 'pp-modules-settings-settings',
- ],
- get_admin_url(null, 'admin.php')
- );
-
- // Define contants
- define('PUBLISHPRESS_VERSION', '1.21.2');
- define('PUBLISHPRESS_BASE_PATH', __DIR__);
- define('PUBLISHPRESS_FILE_PATH', PUBLISHPRESS_BASE_PATH . '/publishpress.php');
- define('PUBLISHPRESS_URL', plugins_url('/', __FILE__));
- define('PUBLISHPRESS_SETTINGS_PAGE', $settingsPage);
- define('PUBLISHPRESS_LIBRARIES_PATH', PUBLISHPRESS_BASE_PATH . '/libraries');
- define('PUBLISHPRESS_BASENAME', plugin_basename(PUBLISHPRESS_FILE_PATH));
-
- /**
- * Use PUBLISHPRESS_BASE_PATH instead.
- *
- * @deprecated
- */
- define('PUBLISHPRESS_ROOT', PUBLISHPRESS_BASE_PATH);
-
- // Define the Priority for the notification/notification_status_change method
- // Added to allow users select a custom priority
- if ( ! defined('PP_NOTIFICATION_PRIORITY_STATUS_CHANGE')) {
- define('PP_NOTIFICATION_PRIORITY_STATUS_CHANGE', 10);
- }
-
- if (file_exists(PUBLISHPRESS_BASE_PATH . '/vendor/autoload.php')) {
- require_once PUBLISHPRESS_BASE_PATH . '/vendor/autoload.php';
- }
-
- // Register the autoloader
- if ( ! class_exists('\\PublishPress\\Legacy\\Auto_loader')) {
- require_once PUBLISHPRESS_LIBRARIES_PATH . '/Legacy/Auto_loader.php';
- }
-
- // Register the library
- Auto_loader::register('\\PublishPress\\Legacy\\', PUBLISHPRESS_LIBRARIES_PATH . '/Legacy');
- Auto_loader::register('\\PublishPress\\Notifications\\', PUBLISHPRESS_LIBRARIES_PATH . '/Notifications');
-
- require_once PUBLISHPRESS_BASE_PATH . '/deprecated.php';
-
- define('PP_LOADED', 1);
-}
+.
+ */
+
+use PPVersionNotices\Module\MenuLink\Module;
+use PublishPress\Legacy\Auto_loader;
+
+if (! defined('PP_LOADED')) {
+ if (! defined('PUBLISHPRESS_VERSION')) {
+ // Define constants
+ define('PUBLISHPRESS_VERSION', '4.7.2');
+ define('PUBLISHPRESS_BASE_PATH', __DIR__);
+ define('PUBLISHPRESS_VIEWS_PATH', __DIR__ . '/views');
+ define('PUBLISHPRESS_FILE_PATH', PUBLISHPRESS_BASE_PATH . '/publishpress.php');
+ define('PUBLISHPRESS_LIBRARIES_PATH', PUBLISHPRESS_BASE_PATH . '/lib');
+
+
+ if (! defined('PUBLISHPRESS_INTERNAL_VENDORPATH')) {
+ /**
+ * @deprecated 3.12.0 Use PP_LIB_VENDOR_PATH instead.
+ */
+ define('PUBLISHPRESS_INTERNAL_VENDORPATH', PP_LIB_VENDOR_PATH);
+ }
+
+ if (! defined('PUBLISHPRESS_ACTION_PRIORITY_INIT')) {
+ define('PUBLISHPRESS_ACTION_PRIORITY_INIT', 10);
+ }
+
+ if (! defined('PUBLISHPRESS_ACTION_PRIORITY_INIT_LATE')) {
+ define('PUBLISHPRESS_ACTION_PRIORITY_INIT_LATE', 1100);
+ }
+
+ if (! defined('PUBLISHPRESS_ACTION_PRIORITY_INIT_ADMIN')) {
+ define('PUBLISHPRESS_ACTION_PRIORITY_INIT_ADMIN', 1010);
+ }
+
+ $relativePath = PUBLISHPRESS_BASE_PATH;
+
+ if (defined('PUBLISHPRESS_CUSTOM_VENDOR_PATH') && defined('PUBLISHPRESS_CUSTOM_VENDOR_URL')) {
+ $relativePath = str_replace(PUBLISHPRESS_CUSTOM_VENDOR_PATH, '', $relativePath);
+ define('PUBLISHPRESS_URL', PUBLISHPRESS_CUSTOM_VENDOR_URL . $relativePath . '/');
+ } else {
+ define('PUBLISHPRESS_URL', plugins_url('/', __FILE__));
+ }
+
+ $settingsPage = add_query_arg(
+ [
+ 'page' => 'pp-modules-settings',
+ 'settings_module' => 'pp-modules-settings-settings',
+ ],
+ get_admin_url(null, 'admin.php')
+ );
+ define('PUBLISHPRESS_SETTINGS_PAGE', $settingsPage);
+
+ /**
+ * Use PUBLISHPRESS_BASE_PATH instead.
+ *
+ * @deprecated
+ */
+ define('PUBLISHPRESS_ROOT', PUBLISHPRESS_BASE_PATH);
+
+ // Define the Priority for the notification/notification_status_change method
+ // Added to allow users select a custom priority
+ if (! defined('PP_NOTIFICATION_PRIORITY_STATUS_CHANGE')) {
+ define('PP_NOTIFICATION_PRIORITY_STATUS_CHANGE', 10);
+ }
+
+ define('PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW', 'psppnotif_workflow');
+ }
+
+ // Register the legacy autoloader
+ if (! class_exists('\\PublishPress\\Legacy\\Auto_loader')) {
+ require_once PUBLISHPRESS_LIBRARIES_PATH . '/Legacy/Auto_loader.php';
+ }
+
+
+ Auto_loader::register('PublishPress\\Core\\', __DIR__ . '/core/');
+ Auto_loader::register('PublishPress\\Legacy\\', __DIR__ . '/lib/Legacy');
+ Auto_loader::register('PublishPress\\Notifications\\', __DIR__ . '/lib/Notifications');
+ Auto_loader::register('PublishPress\\Utility\\', __DIR__ . '/lib/Utility');
+
+ require_once PUBLISHPRESS_BASE_PATH . '/deprecated.php';
+
+
+ if (! defined('PUBLISHPRESS_NOTIF_LOADED')) {
+ define('PUBLISHPRESS_NOTIF_MODULE_PATH', __DIR__ . '/modules/improved-notifications');
+ define('PUBLISHPRESS_NOTIF_VIEWS_PATH', PUBLISHPRESS_BASE_PATH . '/views');
+ define('PUBLISHPRESS_NOTIF_LOADED', 1);
+ }
+
+ // Load the improved notifications
+ $plugin = new PublishPress\Notifications\Plugin();
+ $plugin->init();
+
+ if (is_admin() && ! defined('PUBLISHPRESS_SKIP_VERSION_NOTICES')) {
+ if (current_user_can('install_plugins')) {
+ add_filter(
+ \PPVersionNotices\Module\TopNotice\Module::SETTINGS_FILTER,
+ function ($settings) {
+ $settings['publishpress'] = [
+ 'message' => __('You\'re using PublishPress Planner Free. The Pro version has more features and support. %sUpgrade to Pro%s', 'publishpress'),
+ 'link' => 'https://publishpress.com/links/publishpress-banner',
+ 'screens' => [
+ ['base' => 'planner_page_pp-modules-settings'],
+ ['base' => 'planner_page_pp-manage-roles'],
+ ['base' => 'planner_page_pp-editorial-metadata'],
+ ['base' => 'planner_page_pp-editorial-comments'],
+ ['base' => 'planner_page_publishpress_debug_log'],
+ ['base' => 'admin_page_pp-notif-log'],
+ ['base' => 'edit', 'id' => 'edit-psppnotif_workflow'],
+ ['base' => 'post', 'id' => 'psppnotif_workflow'],
+ ['base' => 'planner_page_pp-content-overview'],
+ ['base' => 'planner_page_pp-content-board'],
+ ['base' => 'toplevel_page_pp-calendar', 'id' => 'toplevel_page_pp-calendar'],
+ ]
+ ];
+
+ return $settings;
+ }
+ );
+
+ add_filter(
+ Module::SETTINGS_FILTER,
+ function ($settings) {
+ $settings['publishpress'] = [
+ 'parent' => [
+ 'pp-calendar',
+ 'pp-content-overview',
+ 'pp-content-board',
+ 'edit.php?post_type=psppnotif_workflow',
+ 'pp-notif-log',
+ 'pp-manage-roles',
+ 'pp-modules-settings',
+ ],
+ 'label' => __('Upgrade to Pro', 'publishpress'),
+ 'link' => 'https://publishpress.com/links/publishpress-menu',
+ ];
+
+ return $settings;
+ }
+ );
+ }
+ }
+
+ if (is_admin() && !defined('PUBLISHPRESS_STATUSES_VERSION')) {
+ require_once PUBLISHPRESS_BASE_PATH . '/statuses-intro.php';
+ }
+
+ define('PP_LOADED', 1);
+}
diff --git a/public/wp-content/plugins/publishpress/includes_notifications.php b/public/wp-content/plugins/publishpress/includes_notifications.php
deleted file mode 100644
index d75c6de61..000000000
--- a/public/wp-content/plugins/publishpress/includes_notifications.php
+++ /dev/null
@@ -1,20 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-defined('ABSPATH') or die('No direct script access allowed.');
-
-if ( ! defined('PUBLISHPRESS_NOTIF_LOADED')) {
- define('PUBLISHPRESS_NOTIF_MODULE_PATH', __DIR__ . '/modules/improved-notifications');
- define('PUBLISHPRESS_NOTIF_TWIG_PATH', PUBLISHPRESS_BASE_PATH . '/twig');
- define('PUBLISHPRESS_NOTIF_LOADED', 1);
-
- define('PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW', 'psppnotif_workflow');
-}
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.mo b/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.mo
index 017c5c10c..875227d1f 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.po b/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.po
index cad4715a0..aae6b2748 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-de_DE.po
@@ -1,2994 +1,3091 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: 0.7.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:16-0300\n"
-"Last-Translator: Stefan Willuda \n"
-"Language-Team: Language IT \n"
-"Language: de_DE\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
-"X-Poedit-Basepath: .\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SearchPath-0: .\n"
-
-#: common/php/class-module.php:92
-#| msgid "Posts"
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-#| msgid "Pages"
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-#| msgid "Filter"
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-#| msgid "Notifications"
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-#| msgid "Notifications"
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-#| msgid "Notifications"
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-#| msgid "Notifications"
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-#| msgid "Notifications"
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-#| msgid "Notifications"
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-#| msgid "Please select a valid metadata type."
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-#| msgid "View"
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-#| msgid "== Actions =="
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-#| msgid "First Draft Date"
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-#| msgid "Preview"
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "%1$s => %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-#| msgid "Show %1$s more "
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-#| msgid "No user groups found."
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-#| msgid "Filter"
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-#| msgid "Editorial Comments"
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-#| msgid "No user groups found."
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-#| msgid "Content Overview"
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-#| msgid "Add editorial comment: %s"
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-#| msgid "Default post status has been changed."
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-#| msgid "Add New Status"
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-#| msgid "View all categories"
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-#| msgid "Post Type"
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-#| msgid "Post Type"
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-#| msgid "Author"
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-#| msgid "User"
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-#| msgid "Back to PublishPress"
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-#| msgid "Content Overview"
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-#| msgid "Disable"
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-#| msgid "Notifications"
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "Back %d weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "Back %d weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-#| msgid "Click to toggle"
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-#| msgid "Show %1$s more "
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-#| msgid "Edit this item"
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-#| msgid "View “%s”"
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-#| msgid "Post date updated."
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-#| msgid "(no title)"
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-#| msgid "Post status created."
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-#| msgid "Please select a valid metadata type."
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-#| msgid "Metadata term updated."
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-#| msgid "View all statuses"
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-#| msgid "Back %d weeks"
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-#| msgid "Published"
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#| msgid "Today"
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-#| msgid "The name is used to identify the user group."
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-#| msgid "The name is used to identify the user group."
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-#| msgid "Dashboard"
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-#| msgid "This post was last updated on"
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-#| msgid "Update Status"
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-#| msgid "Add editorial comment: %s"
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-#| msgid "Editorial Comments"
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-#| msgid ""
-#| "For more information:
Metadata Documentation"
-#| "a>
PublishPress on Github
"
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-#| msgid "Metadata"
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-#| msgid "Metadata"
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-#| msgid "Metadata"
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-#| msgid "Unpublished"
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-#| msgid "Notifications"
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-#| msgid "Add editorial comment: %s"
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-#| msgid "Settings updated."
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-#| msgid "Editorial Comments"
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-#| msgid "Disable"
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-#| msgid "Notifications"
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-#| msgid "Change"
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-#| msgid "Enabled"
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-#| msgid "Notifications"
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-#| msgid ""
-#| "Select the users and user groups that should receive notifications when "
-#| "the status of this post is updated or when an editorial comment is added."
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-#| msgid "Use on these post types:"
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-#| msgid "%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s"
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-#| msgid "Author: %1$s (%2$s)"
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No user groups found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-#| msgid "User group created. Feel free to add users to the usergroup."
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-#| msgid "Post does not exist"
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-#| msgid "User group deleted."
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-#| msgid ""
-#| "User group name cannot exceed 40 characters. Please try a shorter name."
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-#| msgid "Error adding term."
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-#| msgid "Error adding term."
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-#| msgid "Could not delete the status: "
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-#| msgid "PublishPress"
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-#| msgid "Notifications"
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-#| msgid "Notifications"
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-#| msgid ""
-#| "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#, fuzzy
-#~| msgid "Notifications"
-#~ msgid "Notification"
-#~ msgstr "Benachrichtigungen"
-
-#, fuzzy
-#~| msgid "User Groups"
-#~ msgid "%d Group"
-#~ msgid_plural "%d Groups"
-#~ msgstr[0] "Benutzergruppen"
-#~ msgstr[1] "Benutzergruppen"
-
-#~ msgid "The calendar lets you see your posts over a customizable date range."
-#~ msgstr "Zeige eingeplante Beiträge in einem anpassparen Kalender."
-
-#, fuzzy
-#~| msgid ""
-#~| "PublishPress’s calendar lets you see your posts over a customizable date "
-#~| "range. Filter by status or click on the post title to see its details. "
-#~| "Drag and drop posts between days to change their publication date date."
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date."
-#~ msgstr ""
-#~ "Der Kalender von PublishPress ermöglicht dir die Ansicht deiner Beiträge "
-#~ "in einer anpassbaren Zeitspanne. Flitere die Beiträge anhand des Status "
-#~ "oder zeige mit einem Klick auf den Beitragstitel Details an. Per drag and "
-#~ "drop kannst du Beiträge auf ihren geplanten Veröffentlichungstermin "
-#~ "verschieben."
-
-#~ msgid ""
-#~ "Click here for a single screen that shows the publication status of all "
-#~ "your content."
-#~ msgstr "Betrachte alle Status deiner Beiträge auf einen Blick."
-
-#~ msgid ""
-#~ "Use the content overview to see how content on your site is progressing. "
-#~ "Filter by specific categories or date ranges to see details about each "
-#~ "post in progress."
-#~ msgstr ""
-#~ "In der Ansicht des Beitrags Vorrat kannst du sehen wie sich deine "
-#~ "Beiträge entwickeln. Filtere nach Kategorie oder Datum und sieh die "
-#~ "Beitragsdetails ein."
-
-#~ msgid ""
-#~ "Create custom post statuses to define the stages of your publishing "
-#~ "workflow."
-#~ msgstr ""
-#~ "Erstelle benutzerdefinierte Status um Etappen deines Workflows zu "
-#~ "definieren"
-
-#~ msgid ""
-#~ "Create your own post statuses to add structure your publishing workflow. "
-#~ "You can change existing or add new ones anytime, and drag and drop to "
-#~ "change their order."
-#~ msgstr ""
-#~ "Erstelle deine eigenen Betragsstatus um deinem Veröffentlichungs-Workflow "
-#~ "Struktur zu zu geben. Du kannst bestehende Status überarbeiten, jederzeit "
-#~ "neue ergänzen und ihre Reihenfolge per Drag and Drop ändern."
-
-#~ msgid "Track your content from the WordPress dashboard."
-#~ msgstr "Verfolge deine Beiträge über das WordPress Dashboard."
-
-#~ msgid ""
-#~ "Enable dashboard widgets to quickly get an overview of what state your "
-#~ "content is in."
-#~ msgstr ""
-#~ "Mit den Dashboard Widgets bekommst du schnell einen Überblick über die "
-#~ "Status deiner Beiträge."
-
-#~ msgid "Edit Custom Statuses"
-#~ msgstr "Bearbeite die benutzerdefinierten Status"
-
-#~ msgid "Share internal notes with your team."
-#~ msgstr "Teile interne Notizen mit deinem Team."
-
-#~ msgid ""
-#~ "Use editorial comments to hold a private discussion about a post. "
-#~ "Communicate directly with your writers or editors about what works and "
-#~ "what needs to be improved for each piece."
-#~ msgstr ""
-#~ "Verwende redaktionelle Kommentare für nicht öffentliche Diskussionen zu "
-#~ "einem Beitrag. Stimme dich direkt mit den Autoren darüber ab was gelungen "
-#~ "ist und wo noch etwas Feinschliff fehlt."
-
-#~ msgid ""
-#~ "With Metadata you can customize the extra data that’s tracked for your "
-#~ "content."
-#~ msgstr "Ergänze Metadaten zu deinem Freigabeprozess."
-
-#~ msgid "Name conflicts with slug for another term. Please choose again."
-#~ msgstr ""
-#~ "Es trat ein Namenskonflikt mit dem Slug auf. Bitte versuche es erneut."
-
-#~ msgid "Could not update the term: %s "
-#~ msgstr "Der Begriff konnte nicht aktualisiert werden: %s "
-
-#~ msgid "Quick Edit"
-#~ msgstr "Schnell bearbeiten"
-
-#~ msgid "Quick Edit"
-#~ msgstr "Schnellbearbeitung"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved notifications for PublishPress"
-#~ msgstr "Zurück zu PublishPress"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved Notifications for PublishPress"
-#~ msgstr "Zurück zu PublishPress"
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with your content."
-#~ msgstr "Informiere dein Team über wichtige Änderungen an deinen Beiträgen."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with a given content. Each status change or editorial comment sends out a "
-#~ "message to users subscribed to a post. User groups can be used to manage "
-#~ "who receives notifications on what."
-#~ msgstr ""
-#~ "E-Mail Benachrichtigungen unterstützen dich dabei dein Team über "
-#~ "Änderungen an Seiten und Beiträgen zu informieren. Jeder Statusänderung "
-#~ "und jeder redaktionelle Kommentar löst eine E-Mail aus, die alle Benutzer "
-#~ "informiert, die ein Abo auf Änderungen festgelegt haben. Du kannst "
-#~ "Benutzergruppen festlegen, um zu steuern wer wann welche "
-#~ "Benachrichtigungen erhält."
-
-#, fuzzy
-#~| msgid "My Content Notifications"
-#~ msgid "Following"
-#~ msgstr "Beiträge denen ich folge"
-
-#, fuzzy
-#~| msgid "Respond to this post"
-#~ msgid "Follow updates to this post"
-#~ msgstr "internen Kommentar verfassen"
-
-#~ msgid ""
-#~ "Organize your users into groups who can take different roles in your "
-#~ "publishing workflow."
-#~ msgstr ""
-#~ "Organisiere die Benutzer in Gruppen, um deine Organisationsstruktur "
-#~ "abzubilden."
-
-#~ msgid ""
-#~ "Configure user groups to organize all of the users on your site. Each "
-#~ "user can be in many user groups and you can change them at any time."
-#~ msgstr ""
-#~ "Definiere Benutzergruppen, um die Benutzer deiner Website zu "
-#~ "organisieren. Benutzer können unterschiedlichen Benutzergruppen "
-#~ "zugeordnet werden. Änderungen sind jederzeit möglich."
-
-#~ msgid "Are you sure you want to delete the user group?"
-#~ msgstr "Bist du dir sicher, dass du die Benutzergruppe löschen möchtest?"
-
-#~ msgid "Error adding usergroup."
-#~ msgstr "Fehler beim Hinzufügen der Benutzergruppe."
-
-#~ msgid "Error updating user group."
-#~ msgstr "Bei der Aktualisierung ist ein Fehler aufgetreten."
-
-#~ msgid "Error deleting user group."
-#~ msgstr "Beim Löschen der Benutzergruppe ist ein Fehler aufgetreten."
-
-#~ msgid "The name is used to identify the user group."
-#~ msgstr "Diese Bezeichnung dient der Identifikation der Benutzergruppe."
-
-#~ msgid ""
-#~ "The description is primarily for administrative use, to give you some "
-#~ "context on what the user group is to be used for."
-#~ msgstr ""
-#~ "Diese Beschreibung hilft dem Admin zu verstehen wozu diese Benutzergruppe "
-#~ "benötigt wird."
-
-#~ msgid "Update User Group"
-#~ msgstr "Aktualisiere die Benutzergruppe"
-
-#~ msgid "Add New User Group"
-#~ msgstr "Füge eine Benutzergruppe hinzu"
-
-#~ msgid "Usergroups"
-#~ msgstr "Benutzergruppen"
-
-#~ msgid "Select the user groups that you would like to be a part of:"
-#~ msgstr "Wähle eine zuzuweisende Benutzergruppe aus:"
-
-#~ msgid "Select the user groups that this user should be a part of:"
-#~ msgstr "Wähle die Benutzergruppe zu der der Benutzer gehören soll: "
-
-#~ msgid "No user groups were found."
-#~ msgstr "Keine Benutzergruppen gefunden."
-
-#~ msgid "Add a new user group. Opens new window."
-#~ msgstr "Erstelle eine neue Benutzergruppe. Öffnet ein neues Fenster."
-
-#~ msgid "Add a User Group"
-#~ msgstr "Füge eine Benutzergruppe hinzu"
-
-#~ msgid "Unpublished"
-#~ msgstr "Unveröffentlicht"
-
-#~ msgid "Please enter a name for the status."
-#~ msgstr "Bitte wähle einen gültigen Namen für den Status."
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Die Statusbezeichnung ist reserviert. Bitte wähle eine andere."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr ""
-#~ "Diese Statusbezeichnung existiert bereits. Bitte wähle eine andere. "
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Der Status konnte nicht aktualisiert werden: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "internen Kommentar verfassen"
-
-#~ msgid "Submit Response"
-#~ msgstr "Kommentar abschicken"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Benachrichtige immer auch den Blog Admin"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr ""
-#~ "Die Benutzergruppe %s konnte nicht aktualisiert werden."
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "PublishPress definiert deinen WordPress Veröffentlichungsworkflow neu."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Optionen"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Anzahl der Wochen: "
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Anzuzeigende Anzahl der Wochen"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "Wenn dieser Beitragsstatus gelöscht wird, dann erhalten alle Beiträge mit "
-#~ "diesem Status den Standard Status."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "internen Kommentar abschicken"
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Es wurde geprüft, ob dieser Beitrag ein Foto benötigt."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Benötigte Beitragslänge in Worten."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Kein registriertes PublishPress Modul"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Das Modul ist nicht aktiviert. Bitte aktiviere es auf der PublishPress Einstellungsseite ."
-
-#~ msgid "Enable"
-#~ msgstr "Aktivieren"
+msgid ""
+msgstr ""
+"Project-Id-Version: 0.7.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-05-14 13:02-0300\n"
+"PO-Revision-Date: 2023-01-16 13:15+0000\n"
+"Last-Translator: Stefan Willuda \n"
+"Language-Team: German\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, php-format
+#| msgid "%1$s => %2$s"
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+#| msgid "This post was last updated on"
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, php-format
+#| msgid "User"
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+#| msgid "Back %d weeks"
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr ""
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr ""
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr ""
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+#| msgid ""
+#| "For more information:
Metadata "
+#| "Documentation
PublishPress on Github
"
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:93
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+
+#: modules/notifications/notifications.php:2063
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+#| msgid "Add editorial comment: %s"
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+#| msgid "Editorial Comments"
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr ""
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr ""
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/calendar.php:825
+#| msgid "View all categories"
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr ""
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+#| msgid "View all statuses"
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+#| msgid "View all types"
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr ""
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+#| msgid "Notifications"
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+#, fuzzy
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+#| msgid "Author: %1$s (%2$s)"
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+#| msgid "Author"
+msgid "Authors"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:944
+#| msgid "Disable"
+msgid "Available fields"
+msgstr ""
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr ""
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr ""
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr ""
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+#| msgid "View all categories"
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+#, fuzzy
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+#| msgid "Change"
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr ""
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/calendar.php:1425
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr ""
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+#| msgid "Content Overview"
+msgid "Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+#| msgid "Dashboard"
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr ""
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:933
+#| msgid "Editorial Comments"
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+#| msgid "Notifications"
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1640
+msgid "Email from:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:218
+#| msgid "Enabled"
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/calendar.php:1360
+msgid "End date"
+msgstr ""
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr ""
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr ""
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+#| msgid "Filter"
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1352
+msgid "Five months ago"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr ""
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1350
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1371
+#| msgid "Forward %d weeks"
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr ""
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr ""
+
+#: modules/calendar/calendar.php:1493
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr ""
+
+#: modules/calendar/calendar.php:3146
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1497
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr ""
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "May"
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+#| msgid "Add New Status"
+msgid "New status"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:704
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3660
+#| msgid "Post date updated."
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3157
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr ""
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+#| msgid "No user groups found."
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:305
+#| msgid "Add editorial comment: %s"
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr ""
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr ""
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/calendar.php:1377
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1365
+#| msgid "Back %d weeks"
+msgid "One week"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr ""
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr ""
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:188
+#| msgid "Please select a valid metadata type."
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+#| msgid "Posts"
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3801
+#| msgid "Post status created."
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/calendar.php:3794
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr ""
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+#| msgid "Post Type"
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+#| msgid "Post Type"
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr ""
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+#| msgid "PublishPress"
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr ""
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/calendar.php:811
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+#| msgid "View “%s”"
+msgid "Save “%s”"
+msgstr ""
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr ""
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+#| msgid "Settings updated."
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr ""
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+#| msgid "Use on these post types:"
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+msgid "Start date"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+#| msgid "Metadata"
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+#| msgid "Metadata"
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+#| msgid "The name is used to identify the user group."
+msgid "The color is used to identify the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+#| msgid "The name is used to identify the user group."
+msgid "The icon is used to visually represent the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/calendar.php:3671
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1348
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr ""
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr ""
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1346
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1367
+#| msgid "Back %d weeks"
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+#| msgid "(no title)"
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+#| msgid "Update Status"
+msgid "Update Note"
+msgstr ""
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr ""
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr ""
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr ""
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+#| msgid "Add editorial comment: %s"
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+#| msgid "Default post status has been changed."
+msgid "When the status is changed"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:738
+#| msgid "Settings updated."
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.mo b/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.mo
index 3b11682e5..d4a6e6086 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.po b/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.po
index decea4307..b93556fc4 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-es_ES.po
@@ -1,3965 +1,3879 @@
-# Copyright (C) 2013
-# This file is distributed under the same license as the package.
-msgid ""
-msgstr ""
-"Project-Id-Version: PublishPress Spanish\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:16-0300\n"
-"Last-Translator: jelena kovacevic \n"
-"Language-Team: m0uch0 \n"
-"Language: es_ES\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.7\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Bookmarks: 280,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-#: common/php/class-module.php:92
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#, fuzzy
-#| msgid "Edit %s"
-msgid "Edit Role"
-msgstr "Editar %s"
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#, fuzzy
-#| msgid "Please enter a name for the status."
-msgid "Please enter a name for the role."
-msgstr "Por favor introduzca un nombre para el estado."
-
-#: modules/roles/roles.php:850
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#, fuzzy
-#| msgid "Please enter a name for the status."
-msgid "Please enter a display name for the role."
-msgstr "Por favor introduzca un nombre para el estado."
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-#, fuzzy
-#| msgid ""
-#| "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr "PublishPress redefine tu flujo de trabajo de publicación en WordPress."
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#~ msgid "Featured"
-#~ msgstr "Intressanta"
-
-#~ msgid ""
-#~ "For more information:
Calendar Documentation
PublishPress "
-#~ "Forum
PublishPress on Github
"
-#~ msgstr ""
-#~ "För mer information:
Inläggskalenderns dokumentation"
-#~ "a>
PublishPress på Github
"
-
-#~ msgid "Custom Statuses"
-#~ msgstr "Anpassad Status"
-
-#~ msgid "Followers"
-#~ msgstr "Följare"
-
-#~ msgid "404: Page Not Found"
-#~ msgstr "404: Sidan hittas ej"
-
-#~ msgid "The page you are looking for is not here!"
-#~ msgstr "Sidan du söker finns ej här"
-
-#~ msgid "Please try top navigation for what you are looking for!"
-#~ msgstr ""
-#~ "Beklagar att sidan inte finns. Försök gärna med navigationsmenyn ovanför!"
-
-#, fuzzy
-#~ msgid "SAVE ALL CHANGES"
-#~ msgstr "Alla"
-
-#~ msgid "RESET"
-#~ msgstr "Nollställ"
-
-#~ msgid "Upload Image"
-#~ msgstr "Ladda upp bild"
-
-#~ msgid "Remove"
-#~ msgstr "Ta bort"
-
-#~ msgid "Header"
-#~ msgstr "Header"
-
-#~ msgid "Logo"
-#~ msgstr "Logo"
-
-#, fuzzy
-#~ msgid "Upload logo for your Website."
-#~ msgstr "Har ditt företag en hemsida?"
-
-#~ msgid "Favicon"
-#~ msgstr "Favicon"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload a 16px by 16px PNG image that will represent your website favicon."
-#~ msgstr ""
-#~ "Upload a 16px by 16px PNG image that will represent your website favicon."
-
-#~ msgid "Address Text"
-#~ msgstr "Adresstext"
-
-#, fuzzy
-#~ msgid "Provide header address text."
-#~ msgstr "Adresstext"
-
-#~ msgid "Las Angeles, AV 123456 - 123.456.7800"
-#~ msgstr "Las Angeles, AV 123456 - 123.456.7800"
-
-#, fuzzy
-#~ msgid "Reservation Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide header reservation text."
-#~ msgstr "Provide header reservation text."
-
-#~ msgid "Call 023 7526 8539 or Make Online Reservation"
-#~ msgstr "Ring 08-667 25 00 eller boka online"
-
-#, fuzzy
-#~ msgid "Reservation Button Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide header reservation button text."
-#~ msgstr "Provide header reservation button text."
-
-#, fuzzy
-#~ msgid "MAKE RESERVATION NOW"
-#~ msgstr "MAKE RESERVATION NOW"
-
-#, fuzzy
-#~ msgid "Reservation Button Target Link"
-#~ msgstr "Reservation Button Target Link"
-
-#, fuzzy
-#~ msgid "Provide header reservation button target link."
-#~ msgstr "Provide header reservation button target link."
-
-#~ msgid "#"
-#~ msgstr "#"
-
-#~ msgid "Tracking Code"
-#~ msgstr "Tracking-kod"
-
-#, fuzzy
-#~ msgid "Paste Google Analytics (or other) tracking code here."
-#~ msgstr "Paste Google Analytics (or other) tracking code here."
-
-#~ msgid "Slider"
-#~ msgstr "Slider"
-
-#~ msgid "Slide Image Size"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "1st Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 1st slide image for homepage slider."
-#~ msgstr "Upload 1st slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "1st Slide Target Link"
-#~ msgstr "1st Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 1st slide target link."
-#~ msgstr "Provide 1st slide target link."
-
-#, fuzzy
-#~ msgid "2nd Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 2nd slide image for homepage slider."
-#~ msgstr "Upload 2nd slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "2nd Slide Target Link"
-#~ msgstr "2nd Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 2nd slide target link."
-#~ msgstr "Provide 2nd slide target link."
-
-#, fuzzy
-#~ msgid "3rd Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 3rd slide image for homepage slider."
-#~ msgstr "Upload 3rd slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "3rd Slide Target Link"
-#~ msgstr "3rd Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 3rd slide target link."
-#~ msgstr "Provide 3rd slide target link."
-
-#, fuzzy
-#~ msgid "4th Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 4th slide image for homepage slider."
-#~ msgstr "Upload 4th slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "4th Slide Target Link"
-#~ msgstr "4th Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 4th slide target link."
-#~ msgstr "Provide 4th slide target link."
-
-#, fuzzy
-#~ msgid "5th Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 5th slide image for homepage slider."
-#~ msgstr "Upload 5th slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "5th Slide Target Link"
-#~ msgstr "5th Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 5th slide target link."
-#~ msgstr "Provide 5th slide target link."
-
-#~ msgid "Home"
-#~ msgstr "Hem"
-
-#, fuzzy
-#~ msgid "Do you want to display three columns section on homepage ?"
-#~ msgstr "Do you want to display three columns section on homepage ?"
-
-#, fuzzy
-#~ msgid "1st Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Heading Text."
-#~ msgstr "Provide 1st Column Heading Text."
-
-#~ msgid "About Elegantia"
-#~ msgstr "Om Elegantia"
-
-#, fuzzy
-#~ msgid "1st Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 1st column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 1st column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "1st Column Sub Heading"
-#~ msgstr "1st Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Sub Heading Text."
-#~ msgstr "Provide 1st Column Sub Heading Text."
-
-#~ msgid "Elegantia Introduction"
-#~ msgstr "Elegantia Introduktion"
-
-#, fuzzy
-#~ msgid "1st Column Text Content"
-#~ msgstr "1st Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Text Content."
-#~ msgstr "Provide 1st Column Text Content."
-
-#, fuzzy
-#~ msgid "1st Column Read More Text"
-#~ msgstr "1st Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Read More Text."
-#~ msgstr "Provide 1st Column Read More Text."
-
-#~ msgid "READ MORE"
-#~ msgstr "LÄS MER"
-
-#, fuzzy
-#~ msgid "1st Column Read More Link"
-#~ msgstr "1st Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Read More link."
-#~ msgstr "Provide 1st Column Read More link."
-
-#, fuzzy
-#~ msgid "2nd Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Heading Text."
-#~ msgstr "Provide 2nd Column Heading Text."
-
-#, fuzzy
-#~ msgid "Our Menu"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "2nd Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 2nd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 2nd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "2nd Column Sub Heading"
-#~ msgstr "2nd Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Sub Heading Text."
-#~ msgstr "Provide 2nd Column Sub Heading Text."
-
-#~ msgid "Elegantia Food"
-#~ msgstr "Elegantia Mat"
-
-#, fuzzy
-#~ msgid "2nd Column Text Content"
-#~ msgstr "2nd Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Text Content."
-#~ msgstr "Provide 2nd Column Text Content."
-
-#, fuzzy
-#~ msgid "2nd Column Read More Text"
-#~ msgstr "2nd Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Read More Text."
-#~ msgstr "Provide 2nd Column Read More Text."
-
-#, fuzzy
-#~ msgid "2nd Column Read More Link"
-#~ msgstr "2nd Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Read More link."
-#~ msgstr "Provide 2nd Column Read More link."
-
-#, fuzzy
-#~ msgid "3rd Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Heading Text."
-#~ msgstr "Provide 3rd Column Heading Text."
-
-#, fuzzy
-#~ msgid "Special Events"
-#~ msgstr "Händelser"
-
-#, fuzzy
-#~ msgid "3rd Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 3rd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 3rd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "3rd Column Sub Heading"
-#~ msgstr "3rd Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Sub Heading Text."
-#~ msgstr "Provide 3rd Column Sub Heading Text."
-
-#, fuzzy
-#~ msgid "Elegantia Events"
-#~ msgstr "Elegantia: Kommande Event"
-
-#, fuzzy
-#~ msgid "3rd Column Text Content"
-#~ msgstr "3rd Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Text Content."
-#~ msgstr "Provide 3rd Column Text Content."
-
-#, fuzzy
-#~ msgid "3rd Column Read More Text"
-#~ msgstr "3rd Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Read More Text."
-#~ msgstr "Provide 3rd Column Read More Text."
-
-#, fuzzy
-#~ msgid "3rd Column Read More Link"
-#~ msgstr "3rd Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Read More link."
-#~ msgstr "Provide 3rd Column Read More link."
-
-#, fuzzy
-#~ msgid "Do you want to display featured menu items on homepage ?"
-#~ msgstr "Do you want to display featured menu items on homepage ?"
-
-#, fuzzy
-#~ msgid "Testimonial Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide testimonial text here."
-#~ msgstr "Skriv Copyright-text för Footer här"
-
-#, fuzzy
-#~ msgid "Testimonial Author"
-#~ msgstr "Författarnamn"
-
-#, fuzzy
-#~ msgid "Provide testimonial author name here."
-#~ msgstr "Provide testimonial author name here."
-
-#~ msgid "Styling"
-#~ msgstr "Styling"
-
-#, fuzzy
-#~ msgid "Body Background"
-#~ msgstr "Body Background"
-
-#, fuzzy
-#~ msgid "Body Text Color"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Choose a Body Text Color. Base Theme Color is #909090"
-#~ msgstr "Choose a Body Text Color. Base Theme Color is #909090"
-
-#~ msgid "Headings Color"
-#~ msgstr "Headings Color"
-
-#, fuzzy
-#~ msgid ""
-#~ "Choose a Color for h1, h2, h3, h4, h5 and h6 tags. Base Theme Color is "
-#~ "#824328"
-#~ msgstr ""
-#~ "Choose a Color for h1, h2, h3, h4, h5 and h6 tags. Base Theme Color is "
-#~ "#824328"
-
-#, fuzzy
-#~ msgid "Selection Background Color"
-#~ msgstr "Headings Color"
-
-#, fuzzy
-#~ msgid "Choose a Background Selection Color. Base Theme Color is #f8dda8"
-#~ msgstr "Choose a Background Selection Color. Base Theme Color is #f8dda8"
-
-#, fuzzy
-#~ msgid "Choose a Link Color. Base Theme Color is #d3af80"
-#~ msgstr "Choose a Link Color. Base Theme Color is #d3af80"
-
-#, fuzzy
-#~ msgid "Link Hover Color"
-#~ msgstr "Länkfärg"
-
-#, fuzzy
-#~ msgid "Choose a Link Hover Color. Base Theme Color is #824328"
-#~ msgstr "Choose a Link Hover Color. Base Theme Color is #824328"
-
-#, fuzzy
-#~ msgid ""
-#~ "Just want to do some quick CSS changes? Enter them here, they will be "
-#~ "applied to the theme. If you need to change major portions of the theme "
-#~ "please use the custom.css file."
-#~ msgstr ""
-#~ "Just want to do some quick CSS changes? Enter them here, they will be "
-#~ "applied to the theme. If you need to change major portions of the theme "
-#~ "please use the custom.css file."
-
-#~ msgid "Social Navigation"
-#~ msgstr "Social Navigation"
-
-#, fuzzy
-#~ msgid "Do you want to show social navigation ?"
-#~ msgstr "Do you want to show social navigation ?"
-
-#~ msgid "Facebook"
-#~ msgstr "Facebook"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Facebook link to display its icon in footer social navigation."
-#~ msgstr "Give Facebook link to display its icon in footer social navigation."
-
-#~ msgid "Twitter"
-#~ msgstr "Twitter"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Twitter link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#~ msgid "Email Address"
-#~ msgstr "Emailadress"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide your email address to display its icon in footer social "
-#~ "navigation."
-#~ msgstr ""
-#~ "Give your email address to display its icon in footer social navigation."
-
-#~ msgid "Google Plus"
-#~ msgstr "Google Plus"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Google Plus link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Linked In link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Pinterest link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Instagram link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid "Provide Yahoo link to display its icon in footer social navigation."
-#~ msgstr "Give Facebook link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid "Provide VK link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#~ msgid "RSS"
-#~ msgstr "RSS"
-
-#, fuzzy
-#~ msgid "Provide RSS link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#~ msgid "Blog"
-#~ msgstr "Blogg"
-
-#, fuzzy
-#~ msgid "Provide the heading words for blog page."
-#~ msgstr "Provide the heading words for blog page."
-
-#, fuzzy
-#~ msgid "Our News"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "Do you want to open blog post image in lightbox ?"
-#~ msgstr "Do you want to open blog post image in lightbox ?"
-
-#, fuzzy
-#~ msgid "Our Menu Title"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "Provide the heading text for Our Menu related pages."
-#~ msgstr "Provide the heading text for Our Menu related pages."
-
-#, fuzzy
-#~ msgid "Do you want to open Our Menu item image in lightbox ?"
-#~ msgstr "Do you want to open Our Menu item image in lightbox ?"
-
-#~ msgid "Events"
-#~ msgstr "Händelser"
-
-#~ msgid "Event Main Title"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Provide the heading text for Event related pages."
-#~ msgstr "Provide the heading text for Event related pages."
-
-#, fuzzy
-#~ msgid "Do you want to open Event image in lightbox ?"
-#~ msgstr "Do you want to open Event image in lightbox ?"
-
-#, fuzzy
-#~ msgid "Do you want to show Google Map on contact page template?"
-#~ msgstr "Do you want to show Google Map on contact page template?"
-
-#~ msgid "Google Map Latitude"
-#~ msgstr "Ange Google Map Latitude"
-
-#~ msgid "Enter Google Map Latitude"
-#~ msgstr "Ange Google Map Latitude"
-
-#~ msgid "Google Map Longitude"
-#~ msgstr "Google Map Longitude"
-
-#~ msgid "Enter Google Map Longitude"
-#~ msgstr "Ange Google Map Longitude"
-
-#~ msgid "Google Map Zoom"
-#~ msgstr "Google Map Zoom"
-
-#~ msgid "Enter Google Map Zoom Level. Example: 17"
-#~ msgstr "Ange Google Map Zoom Level. Exempel: 17"
-
-#~ msgid "Address"
-#~ msgstr "Adress"
-
-#, fuzzy
-#~ msgid "This address will appear above contact form section."
-#~ msgstr "This address will appear above contact form section."
-
-#~ msgid "Contact Form Heading"
-#~ msgstr "Kontaktsformulär Rubrik"
-
-#~ msgid "Enter heading for your contact form."
-#~ msgstr "Ange rubrik för ditt kontaktformulär"
-
-#~ msgid "Contact Us"
-#~ msgstr "Kontakta oss"
-
-#~ msgid "Contact Form Text Below Heading"
-#~ msgstr "Kontaktsformulär, text under rubrik"
-
-#, fuzzy
-#~ msgid "Enter text that will appear below heading and above contact form."
-#~ msgstr "Enter text that will appear below heading and above contact form."
-
-#, fuzzy
-#~ msgid ""
-#~ "Fill out the form below to send us a message and we will get back to you "
-#~ "ASAP."
-#~ msgstr ""
-#~ "Fill out the form below to send us a message and we will get back to you "
-#~ "ASAP."
-
-#~ msgid "Contact Email"
-#~ msgstr "Kontakt Email"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter target email address that will receive messages from contact form."
-#~ msgstr ""
-#~ "Enter target email address that will receive messages from contact form."
-
-#, fuzzy
-#~ msgid "Reservation Form Heading"
-#~ msgstr "Ange rubrik för ditt reservationsformulär"
-
-#~ msgid "Enter heading for your reservation form."
-#~ msgstr "Ange rubrik för ditt reservationsformulär"
-
-#, fuzzy
-#~ msgid "Make Reservation Now"
-#~ msgstr "Make Reservation Now"
-
-#, fuzzy
-#~ msgid "Reservation Form Text Below Heading"
-#~ msgstr "Kontaktsformulär, text under rubrik"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter text that will appear below heading and above reservation form."
-#~ msgstr ""
-#~ "Enter text that will appear below heading and above reservation form."
-
-#, fuzzy
-#~ msgid "Fill out the form below to make reservation"
-#~ msgstr "Fill out the form below to make reservation"
-
-#, fuzzy
-#~ msgid "Reservation Email"
-#~ msgstr "E-post:"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter target email address that will receive reservation requests from "
-#~ "customers."
-#~ msgstr ""
-#~ "Enter target email address that will receive reservation requests from "
-#~ "customers."
-
-#~ msgid "Footer"
-#~ msgstr "Sidfot"
-
-#, fuzzy
-#~ msgid "Footer Address Text"
-#~ msgstr "Adresstext"
-
-#, fuzzy
-#~ msgid "Enter text that will appear on the right side of footer."
-#~ msgstr "Enter text that will appear on the right side of footer."
-
-#~ msgid "Copyright Text"
-#~ msgstr "Copyright-text"
-
-#~ msgid "Enter Footer Copyright Text here."
-#~ msgstr "Skriv Copyright-text för Footer här"
-
-#~ msgid "All posts tagged "
-#~ msgstr "Alla poster märkta"
-
-#~ msgid "Archive for"
-#~ msgstr "Arkiv för"
-
-#~ msgid "All posts by"
-#~ msgstr "Alla poster av"
-
-#~ msgid "Blog Archives"
-#~ msgstr "Bloggarkiv"
-
-#~ msgid ""
-#~ "This post is password protected. Enter the password to view any comments."
-#~ msgstr ""
-#~ "Det här inlägget är lösenordsskyddat. Ange lösenordet för att se "
-#~ "eventuella kommentarer."
-
-#~ msgid "(%) Comments"
-#~ msgstr "(%) kommentarer"
-
-#~ msgid "Comments are closed."
-#~ msgstr "Kommentarer inaktiverade."
-
-#~ msgid "Wrong Code!"
-#~ msgstr "Fel kod!"
-
-#, fuzzy
-#~ msgid "You Have Received a Message From "
-#~ msgstr "You Have Received a Message From "
-
-#, fuzzy
-#~ msgid "You have Received a message from: "
-#~ msgstr "You Have Received a Message From "
-
-#, fuzzy
-#~ msgid "Their additional message is as follows."
-#~ msgstr "Meddelande:"
-
-#, fuzzy
-#~ msgid " via email, "
-#~ msgstr "E-post:"
-
-#~ msgid "Message Sent Successfully!"
-#~ msgstr "Sändning av meddelandet lyckades!"
-
-#, fuzzy
-#~ msgid "Server Error: WordPress mail method failed!"
-#~ msgstr "Server Error: WordPress mail method failed!"
-
-#~ msgid "Invalid Request !"
-#~ msgstr "Ogiltig förfrågan!"
-
-#, fuzzy
-#~ msgid "You Have Received an Reservation Request From : "
-#~ msgstr "You Have Received an Reservation Request From : "
-
-#, fuzzy
-#~ msgid "You have Received an Reservation Request From "
-#~ msgstr "You Have Received an Reservation Request From : "
-
-#~ msgid "Name: "
-#~ msgstr "Namn:"
-
-#~ msgid "Phone: "
-#~ msgstr "Telefon"
-
-#, fuzzy
-#~ msgid "Reservation Date: "
-#~ msgstr "Datum"
-
-#, fuzzy
-#~ msgid "Reservation Time: "
-#~ msgstr "Tid"
-
-#~ msgid " via email "
-#~ msgstr "via e-post:"
-
-#~ msgid " OR via phone "
-#~ msgstr "eller via telefon"
-
-#~ msgid "Pingback:"
-#~ msgstr "Pingback: "
-
-#~ msgid "%s"
-#~ msgstr "%s"
-
-#~ msgid "Your comment is awaiting moderation."
-#~ msgstr "Din kommentar inväntar granskning."
-
-#, fuzzy
-#~ msgid "Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Edit Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "New Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "View Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Search Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "No Events found in Trash"
-#~ msgstr "Inga poster återfanns i Trash"
-
-#, fuzzy
-#~ msgid "Event Time"
-#~ msgstr "Tid"
-
-#, fuzzy
-#~ msgid "Event Thumbnail"
-#~ msgstr "Miniatyrbild"
-
-#~ msgid "No Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid "Event Date and Time"
-#~ msgstr "Datum/Tid"
-
-#~ msgid "Use 24h format (7pm = 19:00)"
-#~ msgstr "Använd 24-timmarsformat (7pm = 19:00)"
-
-#~ msgid "End Time"
-#~ msgstr "Sluttid"
-
-#~ msgid "FAQs"
-#~ msgstr "FAQs"
-
-#~ msgid "FAQ"
-#~ msgstr "FAQ"
-
-#~ msgid "New FAQ"
-#~ msgstr "Nytt FAQ"
-
-#~ msgid "Search FAQ"
-#~ msgstr "Sök FAQ"
-
-#~ msgid "No FAQs found in Trash"
-#~ msgstr "Inga FAQs återfanns i Trash"
-
-#~ msgid "faq"
-#~ msgstr "faq"
-
-#~ msgid "Gallery Items"
-#~ msgstr "Galleriobjekt"
-
-#~ msgid "Gallery Item"
-#~ msgstr "Galleriobjekt"
-
-#~ msgid "Add New Gallery Item"
-#~ msgstr "Lägg till nytt galleriobjekt"
-
-#~ msgid "Edit Gallery Item"
-#~ msgstr "Redigera galleriobjekt"
-
-#~ msgid "New Gallery Item"
-#~ msgstr "Nytt galleriobjekt"
-
-#~ msgid "Search Gallery Items"
-#~ msgstr "Sök galleriobjekt"
-
-#~ msgid "No Gallery Item found"
-#~ msgstr "Inga galleriobjekt återfanns"
-
-#~ msgid "No Gallery Item found in Trash"
-#~ msgstr "Inga galleriobjekt funna i Trash"
-
-#~ msgid "gallery-item"
-#~ msgstr "galleriobjekt"
-
-#~ msgid "Gallery Item Types"
-#~ msgstr "Galleriobjektstyper"
-
-#~ msgid "Gallery Item Type"
-#~ msgstr "Galleriobjektstyp"
-
-#~ msgid "Search Gallery Item Types"
-#~ msgstr "Sök galleriobjektstyper"
-
-#~ msgid "Popular Gallery Item Types"
-#~ msgstr "Populära galleriobjektstyper"
-
-#~ msgid "All Gallery Item Types"
-#~ msgstr "Alla galleriobjektstyper"
-
-#, fuzzy
-#~ msgid "Parent Gallery Item Type"
-#~ msgstr "Galleriobjektstyp"
-
-#, fuzzy
-#~ msgid "Parent Gallery Item Type:"
-#~ msgstr "Galleriobjektstyp"
-
-#~ msgid "Edit Gallery Item Type"
-#~ msgstr "Redigera galleriobjektstyp"
-
-#~ msgid "Update Gallery Item Type"
-#~ msgstr "Uppdatera Galleriobjektstyp"
-
-#~ msgid "Add New Gallery Item Type"
-#~ msgstr "Lägg till ny typ av galleriobjekt"
-
-#~ msgid "New Gallery Item Type Name"
-#~ msgstr "Nytt galleriobjekttypnamn"
-
-#, fuzzy
-#~ msgid "Separate Gallery Item Types with commas"
-#~ msgstr "Galleriobjektstyper"
-
-#~ msgid "Add or Remove Gallery Item Types"
-#~ msgstr "Lägg till/ta bort galleriobjektstyp"
-
-#~ msgid "Choose from the most used Gallery Item Types"
-#~ msgstr "Välj från de mest använda Galleriobjektstyperna"
-
-#~ msgid "gallery-item-type"
-#~ msgstr "galleryobjektstyp"
-
-#~ msgid "Gallery Item Title"
-#~ msgstr "Galleriobjektets titel"
-
-#~ msgid "Thumbnail"
-#~ msgstr "Miniatyr"
-
-#~ msgid "No Thumbnail"
-#~ msgstr "Ingen miniatyrbild"
-
-#, fuzzy
-#~ msgid "Food Menu"
-#~ msgstr "Elegantia Mat"
-
-#~ msgid "Menu Item"
-#~ msgstr "Menypost"
-
-#, fuzzy
-#~ msgid "New Menu Item"
-#~ msgstr "Lägg till ny menyobjekt"
-
-#, fuzzy
-#~ msgid "View Menu Item"
-#~ msgstr "Se Galleriobjekt"
-
-#, fuzzy
-#~ msgid "Search Menu Items"
-#~ msgstr "Sök galleriobjekt"
-
-#, fuzzy
-#~ msgid "No Menu Item found in Trash"
-#~ msgstr "Inga galleriobjekt funna i Trash"
-
-#, fuzzy
-#~ msgid "menu-item"
-#~ msgstr "Menypost"
-
-#, fuzzy
-#~ msgid "Menu Item Types"
-#~ msgstr "Alla menyobjektstyper"
-
-#, fuzzy
-#~ msgid "Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Search Menu Item Types"
-#~ msgstr "Sök galleriobjektstyper"
-
-#, fuzzy
-#~ msgid "Popular Menu Item Types"
-#~ msgstr "Populära galleriobjektstyper"
-
-#~ msgid "All Menu Item Types"
-#~ msgstr "Alla menyobjektstyper"
-
-#, fuzzy
-#~ msgid "Parent Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Parent Menu Item Type:"
-#~ msgstr "Redigera menyobjektstyp"
-
-#~ msgid "Edit Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#~ msgid "Add New Menu Item Type"
-#~ msgstr "Lägg till ny typ av menyobjekt"
-
-#, fuzzy
-#~ msgid "New Menu Item Type Name"
-#~ msgstr "Lägg till ny typ av menyobjekt"
-
-#, fuzzy
-#~ msgid "Separate Menu Item Types with commas"
-#~ msgstr "Alla menyobjektstyper"
-
-#~ msgid "Add or Remove Menu Item Types"
-#~ msgstr "Lägg till/ta bort menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Choose from the most used Menu Item Types"
-#~ msgstr "Välj från de mest använda Galleriobjektstyperna"
-
-#, fuzzy
-#~ msgid "menu-item-type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Menu Item Title"
-#~ msgstr "Menypost"
-
-#~ msgid "Pic"
-#~ msgstr "Bild"
-
-#~ msgid "Price"
-#~ msgstr "Pris"
-
-#~ msgid "Additional Information"
-#~ msgstr "Ytterligare information"
-
-#, fuzzy
-#~ msgid "Menu Item Price"
-#~ msgstr "Pris"
-
-#, fuzzy
-#~ msgid ""
-#~ "Please add Menu Item price with related currency sign. Example: "
-#~ "15.50$ "
-#~ msgstr ""
-#~ "Please add Menu Item price with related currency sign. Example: "
-#~ "15.50$ "
-
-#, fuzzy
-#~ msgid ""
-#~ "Mark this Menu Item as Featured if you want to display it on homepage."
-#~ msgstr ""
-#~ "Mark this Menu Item as Featured if you want to display it on homepage."
-
-#, fuzzy
-#~ msgid "Provide Team Member Designation Here."
-#~ msgstr "Provide Team Member Designation Here."
-
-#~ msgid "Special"
-#~ msgstr "Special"
-
-#, fuzzy
-#~ msgid ""
-#~ "Mark this Team Member as Special if you want to display it on top of the "
-#~ "team page with big image."
-#~ msgstr ""
-#~ "Mark this Team Member as Special if you want to display it on top of the "
-#~ "team page with big image."
-
-#~ msgid "Testimonial Settings"
-#~ msgstr "Inställningar Vitsord"
-
-#~ msgid "Testimonial"
-#~ msgstr "Vitsord"
-
-#, fuzzy
-#~ msgid "Provide Testimonial Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide Name of Author"
-#~ msgstr "Författarnamn"
-
-#, fuzzy
-#~ msgid "Testimonial Author Link"
-#~ msgstr "Länk till vitsordet"
-
-#, fuzzy
-#~ msgid "Provide The URL to author website or page."
-#~ msgstr "Provide The URL to author website or page."
-
-#, fuzzy
-#~ msgid "Related Department"
-#~ msgstr "Related Department"
-
-#, fuzzy
-#~ msgid "Provide the name of related department."
-#~ msgstr "Provide the name of related department."
-
-#~ msgid "Team Members"
-#~ msgstr "Team-medlemmar"
-
-#~ msgid "Team Member"
-#~ msgstr "Team-medlem"
-
-#~ msgid "Add New Team Member"
-#~ msgstr "Skapa ny team-medlem"
-
-#~ msgid "Edit Team Member"
-#~ msgstr "Redigera team-medlem"
-
-#~ msgid "New Team Member"
-#~ msgstr "Ny team-medlem"
-
-#~ msgid "View Team Member"
-#~ msgstr "Granska team-medlem"
-
-#~ msgid "Search Team Member"
-#~ msgstr "Sök team-medlemmar"
-
-#~ msgid "No Team Member found"
-#~ msgstr "Ingen team-medlem återfanns"
-
-#~ msgid "No Team Member found in Trash"
-#~ msgstr "Inga team-medlemmar återfanns i Trash"
-
-#~ msgid "team-member"
-#~ msgstr "team-medlem"
-
-#~ msgid "Team Member Name"
-#~ msgstr "Team-medlem namn"
-
-#~ msgid "NA"
-#~ msgstr "NA"
-
-#~ msgid "Go to..."
-#~ msgstr "Gå till..."
-
-#~ msgid "Search results for"
-#~ msgstr "Sökresultat för"
-
-#~ msgid "No Posts Found, Please try another search term!"
-#~ msgstr "Inga poster återfanns. Testa en annan sökfras!"
-
-#~ msgid "Gallery Items with Type "
-#~ msgstr "Galleriobjekt med typ"
-
-#~ msgid "All"
-#~ msgstr "Alla"
-
-#~ msgid "View all Gallery Items filed under %s"
-#~ msgstr "Se alla galleriobjekt inom %s"
-
-#~ msgid "Dates:"
-#~ msgstr "Datum:"
-
-#~ msgid "Time:"
-#~ msgstr "Tid:"
-
-#~ msgid "Our Team"
-#~ msgstr "Vårt Team"
-
-#~ msgid "Posted in:"
-#~ msgstr "Postad i:"
-
-#~ msgid "Your Name"
-#~ msgstr "Ditt namn"
-
-#~ msgid "* Please enter your email address"
-#~ msgstr "* Skriv din emailadress"
-
-#~ msgid "Are you human?"
-#~ msgstr "Är du mänsklig?"
-
-#~ msgid "* Please enter the code characters displayed in image!"
-#~ msgstr "* Skriv bokstäverna som syns i bilden"
-
-#, fuzzy
-#~ msgid "Send Message"
-#~ msgstr "Skicka Test"
-
-#, fuzzy
-#~ msgid "No Event Found !"
-#~ msgstr "Event huvudrubrik"
-
-#~ msgid "* Please enter your Name"
-#~ msgstr "* Skriv ditt namn"
-
-#~ msgid "Phone"
-#~ msgstr "Telefon"
-
-#~ msgid "* Please enter your Email address"
-#~ msgstr "* Skriv din emailadress"
-
-#~ msgid "* Please choose Date"
-#~ msgstr "* Välj datum"
-
-#~ msgid "Time"
-#~ msgstr "Tid"
-
-#~ msgid "* Please specify Time"
-#~ msgstr "* Ange tid"
-
-#, fuzzy
-#~ msgid "Special Request"
-#~ msgstr "Ogiltig förfrågan!"
-
-#~ msgid "* Please enter the code characters displayed in image"
-#~ msgstr "* Skriv bokstäverna som syns i bilden"
-
-#, fuzzy
-#~ msgid "MAKE RESERVATION NOW"
-#~ msgstr "MAKE RESERVATION NOW"
-
-#~ msgid "Loading..."
-#~ msgstr "Laddar..."
-
-#, fuzzy
-#~ msgid "Displays list of featured menu items."
-#~ msgstr "Elegantia: Featured menyobjekt"
-
-#~ msgid "Elegantia: Featured Menu Items"
-#~ msgstr "Elegantia: Featured menyobjekt"
-
-#, fuzzy
-#~ msgid "Displays List of Menu Types with links to their archive pages."
-#~ msgstr "Displays List of Menu Types with links to their archive pages."
-
-#, fuzzy
-#~ msgid ""
-#~ "Show Recent or Popular or Random posts from your blog with thumbnails."
-#~ msgstr ""
-#~ "Show Recent or Popular or Random posts from your blog with thumbnails."
-
-#~ msgid "Elegantia: Recent Posts With Thumbnail"
-#~ msgstr "Elegantia: Senaste poster med småbilder"
-
-#, fuzzy
-#~ msgid "Sort them by"
-#~ msgstr "Sort them by"
-
-#~ msgid "Most Popular"
-#~ msgstr "Mest populära"
-
-#~ msgid "Most Recent"
-#~ msgstr "Senaste"
-
-#~ msgid "Random"
-#~ msgstr "Slumpvis"
-
-#, fuzzy
-#~ msgid "Displays list of Upcoming Events."
-#~ msgstr "Elegantia: Kommande Event"
-
-#~ msgid "Elegantia: Upcoming Events"
-#~ msgstr "Elegantia: Kommande Event"
-
-#, fuzzy
-#~ msgid "Number of Upcoming Events to display"
-#~ msgstr "Elegantia: Kommande Event"
-
-#~ msgid "Unpublished"
-#~ msgstr "Sin publicar"
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "El nombre del estado está restringido. Por favor elija otro nombre."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Ya existe el estado. Por favor, elija otro nombre."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "No se pudo actualizar el estado: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Responder a esta entrada"
-
-#~ msgid "Submit Response"
-#~ msgstr "Enviar Respuesta"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Notificar siempre al administrador del blog"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr ""
-#~ "No se ha podido actualizar el grupo de usuarios: %s "
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "PublishPress redefine tu flujo de trabajo de publicación en WordPress."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Opciones"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Número de Semanas:"
-
-#, fuzzy
-#~| msgid "%s Title"
-#~ msgctxt "post type name"
-#~ msgid "%s Title"
-#~ msgstr "%s Título"
-
-#, fuzzy
-#~| msgid "Edit %s"
-#~ msgctxt "post type name"
-#~ msgid "Edit %s"
-#~ msgstr "Editar %s"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Número de semanas para mostrar"
-
-#~ msgid "Post types to create directly from calendar"
-#~ msgstr "Tipo de entrada que se creará directamente desde el calendario"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "Eliminar un estado asignará todos sus entradas al estado predeterminado."
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Marcada si esta entrada necesita una foto."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Longitud requerida de la entrada en palabras."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "No es un módulo registrado para PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Módulo no habilitado. Por favor, actívelo desde la "
-#~ "página de configuración de PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Activar"
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Responder a esta Entrada"
-
-#, fuzzy
-#~| msgid "Edit %s"
-#~ msgid "(Edit)"
-#~ msgstr "Editar %s"
-
-#, fuzzy
-#~| msgid "Please enter a name for the status."
-#~ msgid "* Please enter your message"
-#~ msgstr "Por favor introduzca un nombre para el estado."
-
-#, fuzzy
-#~| msgid "Number of weeks to show"
-#~ msgid "Number of Menu Items to display"
-#~ msgstr "Número de semanas para mostrar"
-
-#, fuzzy
-#~| msgid "Number of weeks to show"
-#~ msgid "Number of posts to display"
-#~ msgstr "Número de semanas para mostrar"
-
-#~ msgid "Invalid post metadata type"
-#~ msgstr "Tipo de metadatos de la entrada no válido"
-
-#~ msgid "Error updating post author."
-#~ msgstr "Error durante la actualización del autor de la entrada."
+# Translation of Plugins - PublishPress Planner: Organize and Schedule Your WordPress Content - Stable (latest release) in Spanish (Spain)
+# This file is distributed under the same license as the Plugins - PublishPress Planner: Organize and Schedule Your WordPress Content - Stable (latest release) package.
+msgid ""
+msgstr ""
+"Project-Id-Version: Plugins - PublishPress Planner: Organize and Schedule "
+"Your WordPress Content - Stable (latest release)\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n"
+"POT-Creation-Date: 2025-03-13 09:56+0000\n"
+"PO-Revision-Date: 2025-03-18 12:18+0100\n"
+"Last-Translator: \n"
+"Language-Team: Spanish (Spain)\n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 3.4.4\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:263
+msgid " Scheduled"
+msgstr " Programado"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:261
+msgid " Scheduled, but late"
+msgstr " Programado, pero con retraso"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "«Avísame»"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2043
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr "%1$s #%2$s «%3$s» fue movida a la papelera por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2090
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr "%1$s #%2$s «%3$s» fue publicada por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2060
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%1$s #%2$s «%3$s» fue restaurada desde la papelera por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2107
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr "%1$s #%2$s «%3$s» fue despublicada por %4$s %5$s"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2206
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s (%2$s) dijo en %3$s a las %4$s:"
+
+#: modules/content-board/library/content-board-utilities.php:538
+#: modules/content-overview/library/content-overview-utilities.php:643
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to
%2$s"
+msgstr " %1$s a
%2$s"
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "%1$s => %2$s"
+msgstr "%1$s => %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1981
+#: modules/editorial-comments/library/EditorialCommentsTable.php:336
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s en %2$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr "%1$s actualizado por última vez el %2$s"
+
+#: modules/calendar/library/calendar-utilities.php:503
+#, php-format
+msgid "%1s weeks"
+msgstr "%1s semanas"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "%d perfil"
+msgstr[1] "%d perfiles"
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "%d usuario"
+msgstr[1] "%d usuarios"
+
+#: modules/calendar/library/calendar-methods.php:1241
+#: modules/calendar/library/calendar-utilities.php:513
+msgid "%d week"
+msgstr "%d semana"
+
+#: modules/calendar/library/calendar-methods.php:1242
+msgid "%d weeks"
+msgstr "%d semanas"
+
+#: modules/content-overview/content-overview.php:757
+#: modules/content-board/library/content-board-methods.php:253
+#, php-format
+msgid "%s could not be created"
+msgstr "%s no pudo ser creada"
+
+#: modules/content-overview/content-overview.php:754
+#: modules/content-board/library/content-board-methods.php:250
+#, php-format
+msgid "%s created successfully. Edit %s "
+msgstr ""
+"%s creado correctamente. Editar %s "
+
+#: modules/notifications-log/notifications-log.php:279
+#, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "%s aviso encontrado."
+msgstr[1] "%s avisos encontrados."
+
+#: modules/calendar/library/calendar-utilities.php:54
+#: modules/content-overview/library/content-overview-utilities.php:710
+msgid "(Hide all)"
+msgstr "(Ocultar todo)"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(sin título)"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "- cualquier estado -"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-select-handler.php:255
+#, php-format
+msgid "-- Select %s --"
+msgstr "-- Selecciona %s --"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-user-handler.php:79
+msgid "-- Select a user --"
+msgstr "-- Selecciona un usuario --"
+
+#: modules/calendar/calendar.php:265
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on Github"
+"a>
"
+msgstr ""
+" Para más información:
Documentación del calendario "
+"p>
PublishPress en "
+"Github
"
+
+#: modules/editorial-comments/editorial-comments.php:88
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+" Para más información:
Documentación de comentarios "
+"editoriales
PublishPress en Github
"
+
+#: modules/editorial-metadata/editorial-metadata.php:125
+msgid ""
+"For more information:
Editorial Fields "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Más información:
Documentación de campos editoriales "
+"p>
PublishPress en "
+"Github
"
+
+#: modules/notifications/notifications.php:102
+msgid ""
+"For more information:
Notifications Documentation "
+"p>
PublishPress on "
+"Github
"
+msgstr ""
+"Para más información:
Documentación de los avisos "
+"p>
PublishPress en "
+"Github
"
+
+#: modules/editorial-comments/editorial-comments.php:83
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"Los comentarios editoriales te ayudan a minificar la sobrecarga de "
+"correos electrónicos y a mantener la conversación cerca de donde importa: tu "
+"contenido. Los comentarios en hilos en la administración, similares a los "
+"que encuentras al final de una entrada de blog, permiten a los escritores y "
+"editores dejar valoraciones de manera privada y discutir lo que necesita "
+"cambiarse antes de publicar.
Cualquiera con acceso a ver la historia "
+"en progreso tendrá también la capacidad de comentar en ella. Si tienes los "
+"avisos activados, aquellos que sigan la publicación recibirán un correo "
+"electrónico cada vez que se deja un comentario.
"
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+msgid ""
+"Keep track of important details about your content with editorial fields. "
+"This feature allows you to create as many date, text, number, etc. fields as "
+"you like, and then use them to store information like contact details or the "
+"location of an interview.
Once you’ve set your fields up, editorial "
+"fields integrates with both the calendar and the content overview. Make an "
+"editorial fields item visible to have it appear to the rest of your team. "
+"Keep it hidden to restrict the information between the writer and their "
+"editor.
"
+msgstr ""
+"Haz un seguimiento de los detalles importantes sobre tu contenido con los "
+"campos editoriales. Esta característica te permite crear tantos campos de "
+"fecha, texto, número, etc, como quieras, y después utilizarlos para guardar "
+"información como detalles de contacto o la ubicación de una entrevista."
+"p>
Una vez has establecido tus campos, los campos editoriales se integran "
+"tanto con el calendario como con el resumen de contenido. Haz un elemento de "
+"campos editoriales visible para que aparezcan al resto de tu equipo. "
+"Mantenlo oculto para restringir la información entre el escritor y el editor."
+"
"
+
+#: modules/notifications/notifications.php:97
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"Los avisos te garantizan que te mantengas al día con el progreso de tu "
+"contenido más importante. Los usuarios pueden suscribirse a los avisos en "
+"una publicación una por una o seleccionando perfiles.
Cuando están "
+"activados, los avisos se pueden enviar cuando una publicación cambia de "
+"estado o un editor o escritor deja un comentario editorial.
"
+
+#: modules/calendar/calendar.php:260
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+"El calendario es una conveniente vista por semana o por mes de tu "
+"contenido. Mira rápidamente qué historias están en vías de ser publicadas a "
+"tiempo, y cuáles necesitarán un esfuerzo adicional.
"
+
+#: modules/notifications/notifications.php:2156
+#, php-format
+msgid "== %s Details =="
+msgstr "== %s detalles =="
+
+#: modules/notifications/notifications.php:2175
+#: modules/notifications/notifications.php:2228
+msgid "== Actions =="
+msgstr "== Acciones =="
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2083
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s Publicada: «%3$s»"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2053
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] %2$s Recuperada (de la papelera): «%3$s»"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2117
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$s estado cambiado para «%3$s»"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2036
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s Papelera: «%3$s»"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2100
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s Despublicada: «%3$s»"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2019
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] Nueva %2$s creada: «%3$s»"
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2192
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] Nuevo comentario editorial: «%2$s»"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2026
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr "Una nueva %1$s (# %2$s «%3$s») fue creada por %4$s %5$s"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2199
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr "Un nuevo comentario editorial fue añadido a %3$s #%1$s «%2$s»"
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr "Acerca de"
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr "Acceso denegado"
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr "Nonce de acción no encontrado."
+
+#: modules/notifications/notifications.php:663
+msgid "Active Notifications"
+msgstr "Avisos activos"
+
+#: modules/notifications/notifications.php:1874
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+"Añade una lista de slugs de taxonomías separadas por comas que no deberían "
+"cargarse mediante el filtro de contenido de taxonomías al añadir un nuevo "
+"flujo de trabajo de avisos."
+
+#: modules/editorial-comments/editorial-comments.php:561
+#: modules/editorial-comments/editorial-comments.php:565
+msgid "Add an editorial comment"
+msgstr "Añadir un comentario editorial"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:338
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:649
+msgid "Add Another Option"
+msgstr "Añadir otra opción"
+
+#: modules/content-overview/library/content-overview-utilities.php:61
+msgid "Add Column"
+msgstr "Añadir columna"
+
+#: modules/editorial-comments/editorial-comments.php:583
+msgid "Add Comment"
+msgstr "Añadir comentario"
+
+#: modules/calendar/library/calendar-methods.php:1213
+#, php-format
+msgid "Add content for %s"
+msgstr "Añadir contenido para %s"
+
+#: modules/notifications/notifications.php:2177
+#: modules/notifications/notifications.php:2234
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr "Añadir comentario editorial: %s"
+
+#: modules/calendar/library/calendar-utilities.php:618
+#: modules/content-board/library/content-board-utilities.php:399
+#: modules/content-overview/library/content-overview-utilities.php:207
+msgid "Add Filter"
+msgstr "Añadir filtro"
+
+#: modules/calendar/library/calendar-utilities.php:601
+#: modules/content-board/library/content-board-utilities.php:236
+#: modules/content-board/library/content-board-utilities.php:253
+#: modules/content-board/library/content-board-utilities.php:382
+#: modules/content-overview/library/content-overview-utilities.php:44
+#: modules/content-overview/library/content-overview-utilities.php:190
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:68
+msgid "Add New"
+msgstr "Añadir nuevo"
+
+#: modules/content-board/library/content-board-utilities.php:987
+#: modules/content-overview/library/content-overview-utilities.php:314
+#, php-format
+msgid "Add New %s"
+msgstr "Añadir nuevo %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:458
+msgid "Add New Editorial Fields"
+msgstr "Añadir nuevos campos editoriales"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:730
+msgid "Add New Editorial fields term"
+msgstr "Añadir nuevo término de campos editoriales"
+
+#: publishpress.php:1410
+msgid "Add New Notification"
+msgstr "Añadir nuevo aviso"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:370
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:682
+msgid "Add to post types"
+msgstr "Añadir a los tipos de contenido"
+
+#: modules/improved-notifications/improved-notifications.php:95
+msgid "Advanced Notifications"
+msgstr "Avisos avanzados"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:517
+msgid "All"
+msgstr "Todo"
+
+#: modules/calendar/library/calendar-utilities.php:90
+#: modules/calendar/library/calendar-utilities.php:93
+#: modules/content-board/library/content-board-utilities.php:624
+#: modules/content-board/library/content-board-utilities.php:627
+#: modules/content-overview/library/content-overview-utilities.php:746
+#: modules/content-overview/library/content-overview-utilities.php:749
+#, php-format
+msgid "All %s"
+msgstr "Todas %s"
+
+#: modules/notifications-log/notifications-log.php:213
+msgid "All Actions"
+msgstr "Todas las acciones"
+
+#: modules/calendar/library/calendar-methods.php:1239
+#: modules/calendar/library/calendar-utilities.php:117
+#: modules/calendar/library/calendar-utilities.php:120
+#: modules/content-board/library/content-board-utilities.php:649
+#: modules/content-board/library/content-board-utilities.php:652
+#: modules/content-overview/library/content-overview-utilities.php:771
+#: modules/content-overview/library/content-overview-utilities.php:774
+msgid "All authors"
+msgstr "Todos los autores"
+
+#: modules/calendar/library/calendar-methods.php:1237
+msgid "All categories"
+msgstr "Todas las categorías"
+
+#: modules/notifications-log/notifications-log.php:214
+msgid "All Channels"
+msgstr "Todos los canales"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:607
+msgid "All channels"
+msgstr "Todos los canales"
+
+#: modules/editorial-metadata/editorial-metadata.php:455
+msgid "All Editorial Fields"
+msgstr "Todos los campos editoriales"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:590
+msgid "All events"
+msgstr "Todos los eventos"
+
+#: modules/editorial-metadata/editorial-metadata.php:1243
+#: modules/editorial-metadata/editorial-metadata.php:1400
+msgid "All options value and labels are required."
+msgstr "Todas las opciones de valor y las etiquetas son obligatorios."
+
+#: modules/calendar/library/calendar-utilities.php:150
+#: modules/content-board/library/content-board-utilities.php:681
+#: modules/content-overview/library/content-overview-utilities.php:803
+msgid "All post types"
+msgstr "Todos los tipos de contenido"
+
+#: modules/editorial-comments/editorial-comments.php:219
+#: modules/notifications-log/notifications-log.php:211
+#: modules/editorial-comments/library/EditorialCommentsTable.php:181
+msgid "All Posts"
+msgstr "Todas las entradas"
+
+#: modules/calendar/library/calendar-methods.php:479
+msgid "All posts"
+msgstr "Todas las entradas"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+msgid "All Receivers"
+msgstr "Todos los destinatarios"
+
+#: modules/calendar/library/calendar-utilities.php:370
+#: modules/content-board/library/content-board-utilities.php:895
+#: modules/content-overview/library/content-overview-utilities.php:1023
+msgid "All status"
+msgstr "Todos los estados"
+
+#: modules/notifications-log/notifications-log.php:215
+msgid "All Statuses"
+msgstr "Todos los estados"
+
+#: modules/calendar/library/calendar-methods.php:1236
+#: modules/calendar/library/calendar-utilities.php:51
+#: modules/content-board/library/content-board-utilities.php:598
+#: modules/content-overview/library/content-overview-utilities.php:707
+msgid "All statuses"
+msgstr "Todos los estados"
+
+#: modules/calendar/library/calendar-methods.php:1238
+msgid "All tags"
+msgstr "Todas las etiquetas"
+
+#: modules/calendar/library/calendar-methods.php:1240
+msgid "All types"
+msgstr "Todos los tipos"
+
+#: modules/editorial-comments/editorial-comments.php:220
+#: modules/editorial-comments/library/EditorialCommentsTable.php:196
+msgid "All Users"
+msgstr "Todos los usuarios"
+
+#: modules/notifications-log/notifications-log.php:212
+msgid "All Workflows"
+msgstr "Todos los flujos de trabajo"
+
+#: modules/calendar/library/calendar-methods.php:111
+msgid "Allow public access to subscriptions in iCal or Google Calendar"
+msgstr ""
+"Permite el acceso público a las suscripciones en iCal o Google Calendar"
+
+#: modules/notifications/notifications.php:1738
+msgid "Always notify the author of the content:"
+msgstr "Avisar siempre al autor del contenido:"
+
+#: modules/notifications/notifications.php:1746
+msgid "Always notify users who have edited the content:"
+msgstr "Avisar siempre a los usuarios que han editado el contenido:"
+
+#: modules/calendar/library/calendar-methods.php:159
+msgid "Always show complete post titles"
+msgstr "Muestra siempre los títulos completos de las entradas"
+
+#: modules/content-board/content-board.php:847
+#: modules/content-board/library/content-board-methods.php:39
+#: modules/content-board/library/content-board-methods.php:107
+msgid "An error occured"
+msgstr "Ha ocurrido un error"
+
+#: modules/content-board/content-board.php:1059
+#: modules/calendar/library/calendar-utilities.php:198
+#: modules/calendar/library/calendar-utilities.php:309
+#: modules/calendar/library/calendar-utilities.php:347
+#: modules/calendar/library/calendar-utilities.php:433
+#: modules/content-board/library/content-board-utilities.php:548
+#: modules/content-board/library/content-board-utilities.php:558
+#: modules/content-board/library/content-board-utilities.php:729
+#: modules/content-board/library/content-board-utilities.php:840
+#: modules/content-board/library/content-board-utilities.php:878
+#: modules/content-board/library/content-board-utilities.php:958
+#: modules/content-overview/library/content-overview-utilities.php:653
+#: modules/content-overview/library/content-overview-utilities.php:663
+#: modules/content-overview/library/content-overview-utilities.php:851
+#: modules/content-overview/library/content-overview-utilities.php:962
+#: modules/content-overview/library/content-overview-utilities.php:1000
+#: modules/content-overview/library/content-overview-utilities.php:1086
+msgid "Apply"
+msgstr "Aplicar"
+
+#: modules/calendar/library/calendar-utilities.php:702
+#: modules/content-board/library/content-board-utilities.php:71
+#: modules/content-board/library/content-board-utilities.php:337
+#: modules/content-board/library/content-board-utilities.php:483
+#: modules/content-overview/library/content-overview-methods.php:302
+#: modules/content-overview/library/content-overview-utilities.php:145
+#: modules/content-overview/library/content-overview-utilities.php:291
+msgid "Apply Changes"
+msgstr "Aplicar los cambios"
+
+#: modules/calendar/library/calendar-methods.php:1227
+msgid "Apr"
+msgstr "Abr"
+
+#: modules/editorial-metadata/editorial-metadata.php:372
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+"¿Estás seguro de que quieres eliminar este término? Los metadatos para este "
+"término se mantendrán pero no serán visibles a no ser que este término sea "
+"añadido de nuevo."
+
+#: modules/editorial-metadata/editorial-metadata.php:220
+msgid "Assignment"
+msgstr "Asignación"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "Avisos asíncronos"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "asynchronous"
+msgstr "asíncrono"
+
+#: modules/calendar/library/calendar-methods.php:179
+msgid "At least one post type must be selected"
+msgstr "Se debe seleccionar por lo menos un tipo de contenido"
+
+#: modules/editorial-comments/editorial-comments.php:571
+msgid "Attach file"
+msgstr "Adjuntar archivo"
+
+#: modules/calendar/library/calendar-methods.php:1231
+msgid "Aug"
+msgstr "Ago"
+
+#: modules/calendar/calendar.php:988 modules/calendar/calendar.php:1210
+#: modules/content-board/content-board.php:699
+#: modules/content-board/content-board.php:710
+#: modules/content-board/content-board.php:753
+#: modules/content-board/content-board.php:812
+#: modules/content-overview/content-overview.php:835
+#: modules/content-overview/content-overview.php:849
+#: modules/content-overview/content-overview.php:894
+#: modules/content-overview/content-overview.php:956
+#: modules/content-overview/content-overview.php:1218
+#: modules/calendar/library/calendar-methods.php:875
+#: modules/calendar/library/calendar-methods.php:1255
+#: modules/calendar/library/calendar-utilities.php:115
+#: modules/calendar/library/calendar-utilities.php:1075
+#: modules/calendar/library/calendar-utilities.php:1191
+#: modules/content-board/library/content-board-utilities.php:647
+#: modules/content-board/library/content-board-utilities.php:1180
+#: modules/content-overview/library/content-overview-utilities.php:506
+#: modules/content-overview/library/content-overview-utilities.php:769
+#: modules/editorial-comments/library/EditorialCommentsTable.php:228
+msgid "Author"
+msgstr "Autor"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2161
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr "Autor: %1$s (%2$s )"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "Autores"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "Autores del contenido"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:26
+msgid "Authors of the parent page"
+msgstr "Autores de la página superior"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr "Borrador automático"
+
+#: modules/improved-notifications/improved-notifications.php:1110
+msgid "Available fields"
+msgstr "Campos disponibles"
+
+#: modules/notifications/notifications.php:1754
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "Taxonomías en la lista negra de avisos"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:163
+msgid "Blog ID: %d"
+msgstr "ID del blog: %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:383
+msgid "Blog: "
+msgstr "Blog: "
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr "Cuerpo"
+
+#: modules/editorial-comments/editorial-comments.php:587
+#: modules/content-board/library/content-board-utilities.php:554
+#: modules/content-overview/library/content-overview-utilities.php:659
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:425
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: modules/content-board/library/content-board-methods.php:150
+msgid "Card Data updated successfully."
+msgstr "Datos de la tarjeta actualizados correctamente."
+
+#: modules/calendar/library/calendar-methods.php:885
+#: modules/content-board/library/content-board-utilities.php:1190
+#: modules/content-overview/library/content-overview-utilities.php:516
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "Categorías"
+
+#: modules/calendar/library/calendar-utilities.php:1080
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Categoría"
+msgstr[1] "Categorías"
+
+#: modules/content-board/library/content-board-utilities.php:555
+#: modules/content-overview/library/content-overview-utilities.php:660
+msgid "Change"
+msgstr "Cambiar"
+
+#: modules/content-board/library/content-board-methods.php:95
+#: modules/content-board/library/content-board-methods.php:123
+msgid "Changes saved!"
+msgstr "¡Cambios guardado!"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:478
+#: modules/improved-notifications/improved-notifications.php:1282
+msgid "Channels"
+msgstr "Canales"
+
+#: publishpress.php:675
+msgid "Cheatin’ uh?"
+msgstr "¡Haciendo trampas! ¿eh?"
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Checkbox"
+msgstr "Casilla de verificación"
+
+#: modules/calendar/library/calendar-utilities.php:329
+#: modules/content-board/library/content-board-utilities.php:860
+#: modules/content-overview/library/content-overview-utilities.php:982
+msgid "Checked"
+msgstr "Seleccionado"
+
+#: modules/editorial-comments/editorial-comments.php:78
+msgid "Choose Post Types"
+msgstr "Elige el tipo de contenido"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:472
+#: modules/improved-notifications/improved-notifications.php:1276
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr "Elige los canales a los que cada flujo de trabajo enviará avisos:"
+
+#: modules/improved-notifications/improved-notifications.php:1112
+msgid "Click here to read more about shortcode options..."
+msgstr "Haz clic aquí para leer más acerca de las opciones de shortcode..."
+
+#: modules/calendar/library/calendar-utilities.php:1321
+msgid "Click here to subscribe in iCal or Google Calendar"
+msgstr "Haz clic aquí para suscribirte en iCal o Google Calendar"
+
+#: modules/content-board/content-board.php:744
+msgid "Click the \"Add New\" button to create new card data."
+msgstr ""
+"Haz clic en el botón «Añadir nuevo» para crear nuevos datos de tarjeta."
+
+#: modules/content-overview/content-overview.php:884
+msgid "Click the \"Add New\" button to create new columns."
+msgstr "Haz clic en el botón «Añadir nuevo» para crear nuevas columnas."
+
+#: modules/content-board/content-board.php:803
+#: modules/content-overview/content-overview.php:946
+#: modules/calendar/library/calendar-utilities.php:1181
+msgid "Click the \"Add New\" button to create new filters."
+msgstr "Haz clic en el botón «Añadir nuevo» para crear nuevos filtros."
+
+#: modules/calendar/library/calendar-methods.php:1204
+msgid "Click to add"
+msgstr "Haz clic para añadir"
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+"Haz clic para borrar el archivo de registro. Ten cuidado, esta operación no "
+"se puede deshacer. "
+
+#: modules/notifications/notifications.php:541
+#: modules/notifications/notifications.php:953
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+"Haz clic para empezar a ser avisado sobre actualizaciones de este contenido"
+
+#: modules/notifications/notifications.php:537
+#: modules/notifications/notifications.php:947
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+"Haz clic para dejar de ser avisado sobre actualizaciones de este contenido"
+
+#: modules/calendar/library/calendar-methods.php:1209
+msgid "Close"
+msgstr "Cerrar"
+
+#: modules/content-overview/library/content-overview-utilities.php:52
+msgid "Column Title"
+msgstr "Título de la columna"
+
+#: modules/content-overview/content-overview.php:654
+msgid "Column updated successfully."
+msgstr "Columna actualizada correctamente."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Comment"
+msgstr "Comentario"
+
+#: modules/editorial-comments/editorial-comments.php:1248
+msgid "Comment author name field:"
+msgstr "Campo del nombre del autor del comentario:"
+
+#: modules/editorial-comments/editorial-comments.php:1190
+msgid "Comment deleted successfully."
+msgstr "El commentario ha sido borrado con éxito."
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr "Comentario: %s (%d)"
+
+#: publishpress.php:671
+msgid "Configure"
+msgstr "Configurar"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr "Contacto"
+
+#: modules/improved-notifications/improved-notifications.php:1098
+#: modules/calendar/library/calendar-methods.php:902
+#: modules/content-board/library/content-board-utilities.php:1207
+#: modules/content-overview/library/content-overview-utilities.php:533
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr "Contenido"
+
+#: modules/content-board/content-board.php:142
+#: modules/content-board/content-board.php:379
+#: modules/content-board/content-board.php:396
+#: modules/content-board/content-board.php:397
+msgid "Content Board"
+msgstr "Tablón de contenidos"
+
+#: modules/calendar/calendar.php:216 modules/calendar/calendar.php:415
+#: modules/calendar/calendar.php:432 modules/calendar/calendar.php:433
+msgid "Content Calendar"
+msgstr "Calendario de contenidos"
+
+#: modules/content-overview/content-overview.php:156
+#: modules/content-overview/content-overview.php:376
+#: modules/content-overview/content-overview.php:393
+#: modules/content-overview/content-overview.php:394
+msgid "Content Overview"
+msgstr "Resumen del contenido"
+
+#: modules/notifications-log/notifications-log.php:832
+msgid "Content:"
+msgstr "Contenido:"
+
+#: modules/calendar/library/calendar-utilities.php:1315
+msgid "Copy to the clipboard"
+msgstr "Copiar al portapapeles"
+
+#: modules/content-board/library/content-board-utilities.php:1121
+#: modules/content-overview/library/content-overview-utilities.php:447
+#, php-format
+msgid "Create %s"
+msgstr "Crear %s"
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr "Creado el"
+
+#: modules/calendar/library/calendar-utilities.php:1238
+msgid "Current week"
+msgstr "Semana actual"
+
+#: modules/content-overview/content-overview.php:883
+msgid "Custom Columns"
+msgstr "Columnas personalizadas"
+
+#: modules/content-board/content-board.php:802
+#: modules/content-overview/content-overview.php:945
+#: modules/calendar/library/calendar-utilities.php:1180
+msgid "Custom filters"
+msgstr "Filtros personalizados"
+
+#: modules/content-board/content-board.php:743
+msgid "Custom Items"
+msgstr "Elementos personalizados"
+
+#: modules/content-board/library/content-board-utilities.php:32
+msgid "Customize Card Data"
+msgstr "Personalizar los datos de la tarjeta"
+
+#: modules/content-overview/library/content-overview-methods.php:263
+msgid "Customize Columns"
+msgstr "Personalizar columnas"
+
+#: modules/calendar/library/calendar-utilities.php:473
+#: modules/content-board/library/content-board-utilities.php:42
+#: modules/content-overview/library/content-overview-methods.php:273
+msgid "Customize Filters"
+msgstr "Personalizar filtros"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "Notas de escritorio"
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard Widgets"
+msgstr "Widgets de escritorio"
+
+#: modules/editorial-metadata/editorial-metadata.php:290
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/calendar/library/calendar-utilities.php:1064
+#: modules/content-board/library/content-board-utilities.php:116
+#: modules/content-overview/library/content-overview-methods.php:347
+#: modules/notifications-log/library/NotificationsLogTable.php:496
+msgid "Date"
+msgstr "Fecha"
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr "Depuración"
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr "Datos de depuración"
+
+#: modules/calendar/library/calendar-methods.php:1235
+msgid "Dec"
+msgstr "Dic"
+
+#: modules/content-board/content-board.php:1049
+#: modules/content-board/content-board.php:1066
+msgid "Default Date"
+msgstr "Fecha por defecto"
+
+#: modules/improved-notifications/improved-notifications.php:222
+msgid "Default notification channels:"
+msgstr "Canales de aviso por defecto:"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:300
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:330
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:611
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:641
+msgid "Default option"
+msgstr "Opción por defecto"
+
+#: modules/calendar/library/calendar-methods.php:135
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+"Hora de publicación por defecto para elementos creados en el calendario"
+
+#: modules/editorial-comments/editorial-comments.php:652
+#: modules/editorial-comments/library/EditorialCommentsTable.php:434
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:161
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:303
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:333
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:614
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:644
+#: modules/notifications-log/library/NotificationsLogTable.php:376
+#: modules/notifications-log/library/NotificationsLogTable.php:407
+msgid "Delete"
+msgstr "Borrar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:408
+msgid "Delete All"
+msgstr "Borrar todos"
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr "Borrar archivo"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:48
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:176
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:474
+msgid "Description"
+msgstr "Descripción"
+
+#: lib/Legacy/Util.php:239
+msgid "Detailed documentation is also available on the plugin website."
+msgstr "También hay disponible documentación detallada en la web del plugin."
+
+#: modules/dashboard/dashboard.php:368 modules/dashboard/dashboard.php:391
+#: modules/dashboard/dashboard.php:425
+#: modules/calendar/library/calendar-methods.php:527
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+"Desactivado porque add_post_type_support('%1$s', '%2$s') está incluido en un "
+"archivo cargado."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:291
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:322
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:602
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:633
+msgid "Display Label"
+msgstr "Muestra etiqueta"
+
+#: modules/editorial-comments/editorial-comments.php:1275
+msgid "Display Name"
+msgstr "Nombre a mostrar"
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr "Documentación"
+
+#: modules/calendar/library/calendar-utilities.php:1308
+msgid "Download .ics file"
+msgstr "Descargar archivo .ics"
+
+#: common/php/class-module.php:332
+msgid "Draft"
+msgstr "Borrador"
+
+#: modules/content-board/library/content-board-utilities.php:296
+msgid "Drag to change enabled card data order."
+msgstr "Arrastra para cambiar el orden de los datos de la tarjeta activada."
+
+#: modules/content-overview/library/content-overview-utilities.php:104
+msgid "Drag to change enabled columns order."
+msgstr "Arrastra para cambiar el orden de las columnas activadas."
+
+#: modules/calendar/library/calendar-utilities.php:661
+#: modules/content-board/library/content-board-utilities.php:442
+#: modules/content-overview/library/content-overview-utilities.php:250
+msgid "Drag to change enabled filters order."
+msgstr "Arrastra para cambiar el orden de los filtros activados."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:258
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:571
+msgid "Dropdown Option"
+msgstr "Opción del menú desplegable"
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "Dropdown Select"
+msgstr "Selección desplegable"
+
+#: modules/improved-notifications/improved-notifications.php:214
+msgid "Duplicated notification threshold:"
+msgstr "Umbral para los avisos duplicados:"
+
+#: common/php/class-module.php:782
+msgid "E-mails"
+msgstr "Correos electrónicos"
+
+#: modules/content-board/content-board.php:1178
+#: modules/content-board/content-board.php:1284
+#: modules/content-overview/content-overview.php:1220
+#: modules/content-overview/content-overview.php:1703
+#: modules/editorial-comments/editorial-comments.php:641
+#: modules/calendar/library/calendar-methods.php:1246
+#: modules/calendar/library/calendar-utilities.php:1097
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:159
+msgid "Edit"
+msgstr "Editar"
+
+#: modules/editorial-metadata/editorial-metadata.php:456
+msgid "Edit Editorial Fields"
+msgstr "Editar campos editoriales"
+
+#: modules/efmigration/efmigration.php:288
+msgid ""
+"Edit Flow should not be used alongside PublishPress Planner. If you want to "
+"use PublishPress Planner, please complete Edit Flow data migration and then "
+"deactivate Edit Flow."
+msgstr ""
+"Edit Flow no puede utilizarse junto con PublishPress Planner. Si quieres "
+"usar PublishPress Planner, primero completa la migración de los datos de "
+"Edit Flow y luego desactiva Edit Flow."
+
+#: publishpress.php:1411
+msgid "Edit Notification"
+msgstr "Editar aviso"
+
+#: modules/content-board/content-board.php:1174
+#: modules/content-overview/content-overview.php:1699
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr "Editar esta publicación"
+
+#: modules/notifications/notifications.php:2180
+#: modules/notifications/notifications.php:2237
+#, php-format
+msgid "Edit: %s"
+msgstr "Editar: %s"
+
+#: modules/improved-notifications/improved-notifications.php:1099
+msgid "Editorial Comment"
+msgstr "Comentario editorial"
+
+#: modules/editorial-comments/editorial-comments.php:63
+#: modules/editorial-comments/editorial-comments.php:244
+#: modules/editorial-comments/editorial-comments.php:245
+#: modules/editorial-comments/editorial-comments.php:466
+msgid "Editorial Comments"
+msgstr "Comentarios editoriales"
+
+#: modules/content-board/content-board.php:760
+#: modules/content-board/content-board.php:820
+#: modules/content-overview/content-overview.php:903
+#: modules/content-overview/content-overview.php:964
+#: modules/editorial-metadata/editorial-metadata.php:95
+#: modules/editorial-metadata/editorial-metadata.php:511
+#: modules/editorial-metadata/editorial-metadata.php:1719
+#: modules/editorial-metadata/editorial-metadata.php:1720
+#: modules/calendar/library/calendar-utilities.php:1199
+msgid "Editorial Fields"
+msgstr "Campos editoriales"
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Editorial fields order updated."
+msgstr "Orden de los campos editoriales actualizado."
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Editorial fields term added."
+msgstr "Término de campos editoriales añadido."
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Editorial fields term deleted."
+msgstr "Término de campos editoriales eliminado."
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Editorial fields term doesn't exist."
+msgstr "El término de campos editoriales no existe."
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Editorial fields term updated."
+msgstr "Término de campos editoriales actualizado."
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Editorial fields visibility changed."
+msgstr "Visibilidad de los campos editoriales cambiada."
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:471
+#: modules/improved-notifications/improved-notifications.php:1275
+msgid "Editorial Notifications"
+msgstr "Avisos editoriales"
+
+#: modules/calendar/library/calendar-utilities.php:1288
+msgid "Eight months"
+msgstr "Ocho meses"
+
+#: modules/calendar/library/calendar-utilities.php:1294
+msgid "Eleven months"
+msgstr "Once meses"
+
+#: modules/editorial-comments/editorial-comments.php:1278
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "correo electrónico"
+
+#: modules/notifications/notifications.php:1730
+msgid "Email from:"
+msgstr "Correo electrónico de:"
+
+#: modules/content-overview/library/content-overview-utilities.php:25
+msgid "Enable Columns"
+msgstr "Activar columnas"
+
+#: modules/calendar/library/calendar-utilities.php:582
+#: modules/content-board/library/content-board-utilities.php:363
+#: modules/content-overview/library/content-overview-utilities.php:171
+msgid "Enable Filters"
+msgstr "Activar filtros"
+
+#: modules/editorial-comments/editorial-comments.php:1241
+msgid "Enable for these post types:"
+msgstr "Activar para estos tipos de publicación:"
+
+#: modules/content-board/library/content-board-utilities.php:217
+msgid "Enable or Disable"
+msgstr "Activar o desactivar"
+
+#: modules/content-board/library/content-board-utilities.php:223
+msgid "Enable or Disable Content Board Card Data."
+msgstr ""
+"Activar o desactivar los datos de la tarjeta del «Tablón de contenidos»."
+
+#: modules/content-board/library/content-board-utilities.php:369
+msgid "Enable or Disable Content Board filter."
+msgstr "Activar o desactivar el filtro «Tablón de contenidos»."
+
+#: modules/calendar/library/calendar-utilities.php:588
+msgid "Enable or Disable Content calendar filter."
+msgstr "Activar o desactivar el filtro «Calendario de contenidos»."
+
+#: modules/content-overview/library/content-overview-utilities.php:177
+msgid "Enable or Disable Content Overview filter."
+msgstr "Activar o desactivar el filtro «Resumen de contenidos»."
+
+#: modules/content-overview/library/content-overview-utilities.php:31
+msgid "Enable or Disable Content Overview table column."
+msgstr "Activar o desactivar la columna de la tabla «Resumen de contenidos»."
+
+#: modules/calendar/library/calendar-methods.php:103
+msgid "Enable subscriptions in iCal or Google Calendar"
+msgstr "Activa las suscripciones en iCal o Google Calendar"
+
+#: modules/dashboard/dashboard.php:369 modules/dashboard/dashboard.php:392
+#: modules/dashboard/dashboard.php:426
+#: modules/calendar/library/calendar-methods.php:528
+msgid "Enabled"
+msgstr "Activado"
+
+#: modules/modules-settings/modules-settings.php:223
+msgid "Enabled features"
+msgstr "Características activadas"
+
+#: modules/calendar/library/calendar-utilities.php:1256
+msgid "End date"
+msgstr "Fecha de finalización"
+
+#: lib/Legacy/Util.php:203
+msgid "Enhance the power of PublishPress Planner with the Pro version:"
+msgstr "Mejora la potencia de PublishPress Planner con la versión Pro:"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:263
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:574
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+"Introduce el valor y la etiqueta de la opción del menú desplegable. Puedes "
+"deslizar las opciones para cambiar su orden."
+
+#: modules/notifications/notifications.php:606
+msgid ""
+"Enter users, roles, or email addresses that should receive notifications for "
+"this post."
+msgstr ""
+"Introduce los usuarios, perfiles o direcciones de correo electrónico que "
+"deberían recibir avisos de esta entrada."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+#: modules/notifications-log/library/NotificationsLogTable.php:533
+msgid "Error"
+msgstr "Error"
+
+#: modules/editorial-metadata/editorial-metadata.php:1331
+msgid "Error adding term."
+msgstr "Error añadiendo el término."
+
+#: modules/editorial-metadata/editorial-metadata.php:1590
+msgid "Error deleting term."
+msgstr "Error al borrar el término."
+
+#: modules/content-board/library/content-board-methods.php:53
+msgid "Error fetching post data."
+msgstr "Error al obtener los datos de la entrada."
+
+#: modules/editorial-metadata/editorial-metadata.php:1481
+#: modules/editorial-metadata/editorial-metadata.php:1524
+msgid "Error updating term."
+msgstr "Error al actualizar el término."
+
+#: modules/content-board/content-board.php:851
+#: modules/content-overview/content-overview.php:995
+#: modules/content-board/library/content-board-methods.php:43
+#: modules/content-board/library/content-board-methods.php:111
+msgid "Error validating nonce. Please reload this page and try again."
+msgstr ""
+"Error al validar el nonce. Por favor, recarga esta página e inténtalo de "
+"nuevo."
+
+#: modules/async-notifications/async-notifications.php:180
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+"Evento: %s, ID del flujo de trabajo: %s, ID de la entrada: %s, ID de "
+"usuario: %s"
+
+#: lib/Notifications/Table/Base.php:183
+msgid "Excerpt View"
+msgstr "Vista de extracto"
+
+#: modules/improved-notifications/improved-notifications.php:250
+msgid "Existing Post is updated"
+msgstr "La entrada existente ha sido actualizada"
+
+#: modules/calendar/library/calendar-utilities.php:374
+#: modules/content-board/library/content-board-utilities.php:899
+#: modules/content-overview/library/content-overview-utilities.php:1027
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+#: modules/notifications-log/library/NotificationsLogTable.php:293
+msgid "Failed"
+msgstr "Fallido"
+
+#: lib/Legacy/Util.php:213
+msgid "Fast, professional support"
+msgstr "Soporte rápido y profesional"
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr "Características"
+
+#: modules/calendar/library/calendar-methods.php:1225
+msgid "Feb"
+msgstr "Feb"
+
+#: modules/modules-settings/modules-settings.php:217
+msgid "Feel free to select only the features you need."
+msgstr "Siéntete libre de seleccionar solo las características que necesites."
+
+#: modules/improved-notifications/improved-notifications.php:1105
+msgid "field"
+msgstr "campo"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:47
+msgid "Field Type"
+msgstr "Tipo de campo"
+
+#: modules/calendar/library/calendar-methods.php:143
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+"Campo utilizado para clasificar los elementos del calendario en una celda "
+"del día"
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr "Información del archivo"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:210
+#: modules/notifications-log/library/NotificationsLogTable.php:646
+msgid "Filter"
+msgstr "Filtro"
+
+#: modules/calendar/calendar.php:919
+msgid "Filter reset successfully."
+msgstr "Filtro restablecido correctamente."
+
+#: lib/Notifications/Plugin.php:65
+msgid "Filter the content?"
+msgstr "¿Filtrar el contenido?"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:223
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:537
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+"Filtra la lista de usuarios en la meta editorial para los usuarios en los "
+"roles seleccionados."
+
+#: modules/calendar/library/calendar-utilities.php:609
+#: modules/content-board/library/content-board-utilities.php:390
+#: modules/content-overview/library/content-overview-utilities.php:198
+msgid "Filter Title"
+msgstr "Titulo del filtro"
+
+#: modules/calendar/calendar.php:912
+#: modules/content-overview/content-overview.php:668
+#: modules/content-board/library/content-board-methods.php:164
+msgid "Filter updated successfully."
+msgstr "Filtro actualizado correctamente."
+
+#: modules/editorial-metadata/editorial-metadata.php:212
+msgid "First Draft Date"
+msgstr "Fecha del primer borrador"
+
+#: modules/editorial-comments/editorial-comments.php:1276
+msgid "First Name"
+msgstr "Nombre"
+
+#: modules/calendar/library/calendar-utilities.php:1282
+msgid "Five months"
+msgstr "Cinco meses"
+
+#: modules/calendar/library/calendar-utilities.php:1248
+msgid "Five months ago"
+msgstr "Hace cinco meses"
+
+#: modules/calendar/library/calendar-methods.php:340
+#, php-format
+msgid "For custom Revision Statuses, upgrade to %sPublishPress Statuses Pro%s."
+msgstr ""
+"Para estados de revisión personalizados, actualiza a %sPublishPress Statuses "
+"Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:308
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions Pro%s."
+msgstr ""
+"Para la integración de revisiones en el calendario de contenidos, el resumen "
+"y el tablero de contenidos, por favor actualiza %sPublishPress Revisions "
+"Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:309
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions%s."
+msgstr ""
+"Para la integración de revisiones en el calendario de contenidos, el resumen "
+"y el tablero de contenidos, por favor actualiza %sPublishPress Revisions%s."
+
+#: modules/improved-notifications/improved-notifications.php:950
+#: modules/notifications-log/library/NotificationsLogTable.php:498
+msgid "For which content?"
+msgstr "¿Para qué contenido?"
+
+#: modules/improved-notifications/improved-notifications.php:1102
+msgid "Format"
+msgstr "Formato"
+
+#: modules/calendar/library/calendar-utilities.php:1280
+msgid "Four months"
+msgstr "Cuatro meses"
+
+#: modules/calendar/library/calendar-utilities.php:1246
+msgid "Four months ago"
+msgstr "Hace cuatro meses"
+
+#: modules/calendar/library/calendar-utilities.php:1267
+msgid "Four weeks"
+msgstr "Cuatro semanas"
+
+#: modules/calendar/library/calendar-methods.php:1222
+msgid "Fri"
+msgstr "Vie"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "From date"
+msgstr "Fecha inicial"
+
+#: common/php/class-module.php:764
+msgid "Group"
+msgstr "Grupo"
+
+#: common/php/class-module.php:761
+msgid "Groups"
+msgstr "Grupos"
+
+#: modules/improved-notifications/improved-notifications.php:920
+msgid "Help"
+msgstr "Ayuda"
+
+#: modules/calendar/library/calendar-methods.php:1206
+#, php-format
+msgid "Hide the %s last items"
+msgstr "Ocultar los últimos %s elementos"
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:251
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+"Clave secreta de iCal regenerada. Por favor, informa a todos los usuarios de "
+"que tendrán que volver a suscribirse."
+
+#: lib/Notifications/Table/Notifications.php:159
+#: lib/Notifications/Table/Workflows.php:143
+#: modules/calendar/library/calendar-utilities.php:1059
+msgid "ID"
+msgstr "ID"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:361
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:674
+msgid ""
+"If enabled, this field will be available when adding new posts on the "
+"Content Calendar and Overview screen."
+msgstr ""
+"Si se activa, esto campo estará disponible al añadir nuevas entradas en la "
+"pantalla de «Calendario de contenidos» y «Resumen de contenidos»."
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "Si te gusta %s por favor déjanos una valoración %s. ¡Gracias!"
+
+#: lib/Legacy/Util.php:228
+msgid "If you need help or have a new feature request, let us know."
+msgstr ""
+"Si necesitas ayuda o tienes una petición de nueva característica, háznoslo "
+"saber."
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"Si ves algún error o buscas información relativa a PubishPress, por favor, "
+"no dudes en contactar con el equipo de soporte. Envíanos un correo "
+"electrónico:"
+
+#: modules/content-board/content-board.php:750
+msgid "Inbuilt Card Data"
+msgstr "Datos de tarjeta integrados"
+
+#: modules/content-overview/content-overview.php:890
+msgid "Inbuilt Columns"
+msgstr "Columnas integradas"
+
+#: modules/content-board/content-board.php:809
+#: modules/content-overview/content-overview.php:952
+#: modules/calendar/library/calendar-utilities.php:1187
+msgid "Inbuilt filters"
+msgstr "Filtros integrados"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:251
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:566
+msgid "Indicate the select type."
+msgstr "Indica el tipo de selección."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:511
+msgid "Indicate the type of editorial fields."
+msgstr "Indicar el tipo de campos editoriales."
+
+#: modules/calendar/calendar.php:1159
+msgid "Initializing the calendar. Please wait..."
+msgstr "Iniciando el calendario. Por favor, espera…"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr "Integración con el plugin The Events Calendar"
+
+#: lib/Legacy/Util.php:211
+msgid "Integration with SEO plugins"
+msgstr "Integración con los plugins para SEO"
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr "Nonce de acción no válido."
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr "Canal no válido para el aviso"
+
+#: modules/editorial-comments/editorial-comments.php:764
+#: modules/editorial-comments/editorial-comments.php:905
+#: modules/editorial-comments/editorial-comments.php:1037
+#: modules/editorial-comments/editorial-comments.php:1153
+msgid "Invalid comment data"
+msgstr "Datos del comentario no válidos"
+
+#: modules/calendar/library/calendar-methods.php:808
+msgid "Invalid date"
+msgstr "Fecha no válida"
+
+#: modules/content-board/content-board.php:853
+#: modules/content-overview/content-overview.php:997
+#: modules/content-board/library/content-board-methods.php:45
+#: modules/content-board/library/content-board-methods.php:113
+msgid "Invalid form request."
+msgstr "Solicitud de formulario no válida."
+
+#: modules/calendar/library/calendar-methods.php:788
+msgid "Invalid input"
+msgstr "Entrada no válida"
+
+#: core/Error.php:80 modules/calendar/library/calendar-methods.php:779
+msgid "Invalid nonce"
+msgstr "Nonce no válido"
+
+#: modules/calendar/library/calendar-methods.php:1759
+msgid "Invalid Publish Date supplied."
+msgstr "Fecha de publicación facilitada no válida."
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr "Destinatario no válido para el aviso"
+
+#: modules/calendar/library/calendar-methods.php:1735
+msgid "Invalid Status supplied."
+msgstr "Estado facilitado no válido."
+
+#: modules/calendar/calendar.php:1163
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+"Parece que está tardando demasiado. Por favor, intenta recargar la página de "
+"nuevo y comprueba la consola del navegador en busca de errores."
+
+#: modules/calendar/library/calendar-methods.php:1224
+msgid "Jan"
+msgstr "Ene"
+
+#: modules/calendar/library/calendar-methods.php:1230
+msgid "Jul"
+msgstr "Jul"
+
+#: modules/calendar/library/calendar-methods.php:1229
+msgid "Jun"
+msgstr "Jun"
+
+#: modules/content-overview/content-overview.php:837
+#: modules/content-overview/content-overview.php:896
+msgid "Last Modified"
+msgstr "Última modificación"
+
+#: modules/editorial-comments/editorial-comments.php:1277
+msgid "Last Name"
+msgstr "Apellido"
+
+#: modules/calendar/library/calendar-methods.php:1203
+msgid "Loading item..."
+msgstr "Cargando el elemento…"
+
+#: modules/notifications-log/notifications-log.php:217
+#: modules/calendar/library/calendar-methods.php:1202
+msgid "Loading..."
+msgstr "Cargando…"
+
+#: modules/editorial-metadata/editorial-metadata.php:291
+msgid "Location"
+msgstr "Ubicación"
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr "Contenido del registro"
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr "Archivo de registro"
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr "Archivo de registro no encontrado."
+
+#: modules/calendar/library/calendar-methods.php:1226
+msgid "Mar"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-methods.php:151
+msgid "Max visible posts per date"
+msgstr "Máximo de entradas visibles por fecha"
+
+#: modules/content-board/library/content-board-utilities.php:63
+#: modules/content-overview/library/content-overview-methods.php:294
+msgid "Maximum number of posts to display"
+msgstr "Número máximo de entradas a mostrar"
+
+#: modules/calendar/library/calendar-methods.php:1228
+msgid "May"
+msgstr "May"
+
+#: modules/calendar/calendar.php:736
+#: modules/calendar/library/calendar-utilities.php:467
+#: modules/calendar/library/calendar-utilities.php:468
+#: modules/content-board/library/content-board-utilities.php:28
+#: modules/content-overview/library/content-overview-methods.php:259
+msgid "Me Mode"
+msgstr "Modo Me"
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "Mensaje"
+
+#: modules/improved-notifications/improved-notifications.php:1111
+msgid "Meta fields"
+msgstr "Campos meta"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:285
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:316
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:596
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:627
+msgid "Meta Value"
+msgstr "Valor meta"
+
+#: modules/editorial-metadata/editorial-metadata.php:1423
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+"El nombre de los metadatos entra en conflicto con otro término ya existente. "
+"Por favor, elige otro diferente."
+
+#: modules/improved-notifications/improved-notifications.php:421
+msgid "minutes"
+msgstr "minutos"
+
+#: lib/Legacy/Util.php:210
+msgid "Modals so you can edit posts without changing screen"
+msgstr "Modales para poder editar las entradas sin cambiar de pantalla"
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr "Modificado el"
+
+#: modules/calendar/library/calendar-methods.php:1218
+msgid "Mon"
+msgstr "Lun"
+
+#: modules/content-board/content-board.php:1026
+msgid "Move posts here to change their status"
+msgstr "Mover las entradas aquí para cambiar su estado"
+
+#: modules/content-board/content-board.php:1186
+#: modules/content-overview/content-overview.php:1711
+msgid "Move this item to the Trash"
+msgstr "Mover este elemento a la papelera"
+
+#: modules/calendar/library/calendar-methods.php:1205
+msgid "Moving the item..."
+msgstr "Moviendo el elemento…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:234
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:546
+msgid "Multiple Select"
+msgstr "Selección múltiple"
+
+#: modules/improved-notifications/improved-notifications.php:476
+#: modules/improved-notifications/improved-notifications.php:1263
+#: modules/improved-notifications/improved-notifications.php:1280
+msgid "Muted"
+msgstr "Silenciado"
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr "Mis avisos de contenido"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:45
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:443
+msgid "Name"
+msgstr "Nombre"
+
+#: modules/editorial-metadata/editorial-metadata.php:1272
+#: modules/editorial-metadata/editorial-metadata.php:1432
+msgid "Name already in use. Please choose another."
+msgstr "El nombre ya está en uso. Por favor, selecciona otro."
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+#: modules/editorial-metadata/editorial-metadata.php:1289
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+"El nombre no puede exceder los 200 caracteres. Por favor, prueba con un "
+"nombre más corto."
+
+#: modules/editorial-metadata/editorial-metadata.php:1265
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+"El nombre está en conflicto con un término ya existente. Por favor, "
+"selecciona otro."
+
+#: modules/editorial-metadata/editorial-metadata.php:1437
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+"El nombre del slug entra en conflicto con otro término. Por favor, elige "
+"otro diferente."
+
+#: lib/Legacy/Util.php:223
+msgid "Need PublishPress Planner Support?"
+msgstr "¿Necesitas soporte para PublishPress Planner?"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "Nueva"
+
+#: modules/editorial-metadata/editorial-metadata.php:459
+msgid "New Editorial Fields"
+msgstr "Nuevos campos editoriales"
+
+#: modules/content-board/library/content-board-utilities.php:84
+#: modules/content-overview/library/content-overview-methods.php:315
+msgid "New Post"
+msgstr "Nueva entrada"
+
+#: modules/improved-notifications/improved-notifications.php:292
+msgid "New Post is created in Draft status"
+msgstr "La nueva entrada se creará en estado borrador"
+
+#: modules/improved-notifications/improved-notifications.php:341
+msgid "New Post is Published"
+msgstr "La nueva entrada està publicada"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr "Nuevo estado de la entrada: %s"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "Nuevo estado"
+
+#: modules/content-board/content-board.php:1289
+#: modules/content-overview/content-overview.php:1225
+#: modules/calendar/library/calendar-methods.php:1251
+msgid "Next Post"
+msgstr "Entrada siguiente"
+
+#: modules/editorial-comments/editorial-comments.php:1273
+msgid "Nickname"
+msgstr "Alias"
+
+#: modules/calendar/library/calendar-utilities.php:1290
+msgid "Nine months"
+msgstr "Nueve meses"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:350
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:659
+msgid "No"
+msgstr "No"
+
+#: modules/notifications/notifications.php:698
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr "No se ha encontrado ningún aviso activo para esta %s."
+
+#: modules/calendar/library/calendar-methods.php:1694
+msgid "No date supplied."
+msgstr "No se proprocionó fecha."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:158
+msgid "No editorial comments."
+msgstr "Sin comentarios editoriales"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:135
+msgid "No editorial fields found."
+msgstr "No se encontraron campos editoriales."
+
+#: modules/calendar/library/calendar-methods.php:799
+msgid "No enough permissions"
+msgstr "No tienes los permisos necesarios"
+
+#: publishpress.php:1415 publishpress.php:1416
+msgid "No notification found"
+msgstr "No se ha encontrado ningún aviso"
+
+#: modules/notifications-log/notifications-log.php:291
+msgid "No notifications found."
+msgstr "No se ha encontrado ningún aviso."
+
+#: modules/content-board/content-board.php:1263
+#: modules/content-overview/content-overview.php:1194
+msgid "No results found"
+msgstr "No se han encontrado resultados"
+
+#: modules/calendar/library/calendar-methods.php:1244
+msgid "No terms"
+msgstr "No hay términos"
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "Ningún flujo de trabajo encontrado."
+
+#: modules/editorial-comments/editorial-comments.php:756
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+"Falló la comprobación del nonce. Por favor, asegúrate si deberías estar "
+"añadiendo comentarios editoriales."
+
+#: modules/editorial-comments/editorial-comments.php:894
+#: modules/editorial-comments/editorial-comments.php:1026
+#: modules/editorial-comments/editorial-comments.php:1143
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+"Ha fallado la comprobación del nonce. Por favor, asegúrate de que estás "
+"editando los comentarios editoriales."
+
+#: modules/content-board/content-board.php:1600
+#: modules/content-overview/content-overview.php:1579
+msgid "None"
+msgstr "Ninguno"
+
+#: lib/Notifications/Plugin.php:283
+msgid "Not filtered"
+msgstr "Sin filtrar"
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr "Cuaderno de notas"
+
+#: publishpress.php:1409 publishpress.php:1414
+#: modules/notifications-log/notifications-log.php:216
+msgid "Notification"
+msgstr "Aviso"
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+msgid "Notification Group"
+msgstr "Grupo de avisos"
+
+#: modules/notifications/notifications.php:336
+msgid "Notification Groups"
+msgstr "Grupos de avisos"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "No se ha encontrado el registro de los avisos"
+
+#: publishpress.php:1408 publishpress.php:1413
+#: modules/notifications/notifications.php:75
+#: modules/notifications/notifications.php:569
+msgid "Notifications"
+msgstr "Avisos"
+
+#: modules/improved-notifications/improved-notifications.php:868
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:270
+#: modules/notifications-log/notifications-log.php:496
+#: modules/notifications-log/notifications-log.php:497
+msgid "Notifications Log"
+msgstr "Registro de avisos"
+
+#: modules/notifications/notifications.php:350
+#: modules/notifications/notifications.php:353
+msgid "Notify Email"
+msgstr "Correo electrónico de aviso"
+
+#: modules/notifications/notifications.php:352
+msgid "Notify Emails"
+msgstr "Correos electrónicos de aviso"
+
+#: modules/notifications/notifications.php:542
+#: modules/notifications/notifications.php:952
+msgid "Notify me"
+msgstr "Avísame"
+
+#: modules/improved-notifications/improved-notifications.php:376
+msgid "Notify on editorial comments"
+msgstr "Avisos sobre comentarios editoriales"
+
+#: modules/notifications/notifications.php:318
+#: modules/notifications/notifications.php:321
+msgid "Notify Role"
+msgstr "Aviso de perfil"
+
+#: modules/notifications/notifications.php:320
+msgid "Notify Roles"
+msgstr "Avisos de perfiles"
+
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:306
+msgid "Notify User"
+msgstr "Aviso de usuario"
+
+#: modules/notifications/notifications.php:305
+msgid "Notify Users"
+msgstr "Avisos de usuarios"
+
+#: modules/calendar/library/calendar-methods.php:1234
+msgid "Nov"
+msgstr "Nov"
+
+#: modules/editorial-metadata/editorial-metadata.php:292
+msgid "Number"
+msgstr "Número"
+
+#: modules/calendar/library/calendar-methods.php:1233
+msgid "Oct"
+msgstr "Oct"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr "Estado anterior de la entrada: %s"
+
+#: modules/improved-notifications/improved-notifications.php:1106
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+"En cada shortcode, puedes seleccionar uno o más campos. Si hay más de uno, "
+"se mostrarán separados por «,»."
+
+#: modules/calendar/library/calendar-utilities.php:1273
+msgid "One month"
+msgstr "Un mes"
+
+#: modules/calendar/library/calendar-utilities.php:1240
+msgid "One month ago"
+msgstr "Hace un mes"
+
+#: modules/calendar/library/calendar-utilities.php:1261
+msgid "One week"
+msgstr "Una semana"
+
+#: modules/content-board/content-board.php:1100
+#: modules/content-board/content-board.php:1242
+msgid "Only editable posts will be moveable."
+msgstr "Solo las entradas editables serán movibles."
+
+#: modules/improved-notifications/improved-notifications.php:911
+msgid "Options"
+msgstr "Opciones"
+
+#: modules/calendar/calendar.php:259
+#: modules/editorial-comments/editorial-comments.php:82
+#: modules/editorial-metadata/editorial-metadata.php:119
+#: modules/notifications/notifications.php:96
+msgid "Overview"
+msgstr "Resumen"
+
+#: modules/editorial-metadata/editorial-metadata.php:293
+msgid "Paragraph"
+msgstr "Párrafo"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:106
+msgid "Parent Page Authors"
+msgstr "Autores de página superior"
+
+#: modules/calendar/library/calendar-utilities.php:373
+#: modules/content-board/library/content-board-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:1026
+msgid "Passed"
+msgstr "Aprobado"
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr "Ruta"
+
+#: common/php/class-module.php:335
+msgid "Pending Review"
+msgstr "Pendiente de revisión"
+
+#: modules/calendar/library/calendar-utilities.php:502
+#: modules/calendar/library/calendar-utilities.php:503
+msgid "Period"
+msgstr "Período"
+
+#: publishpress.php:590
+msgid "Planner"
+msgstr "Planificación"
+
+#: publishpress.php:674
+msgid "Please correct your form errors below and try again."
+msgstr ""
+"Por favor, corrige los errores del formulario de debajo e inténtalo de nuevo."
+
+#: modules/editorial-comments/editorial-comments.php:787
+#: modules/editorial-comments/editorial-comments.php:951
+msgid "Please enter a comment."
+msgstr "Por favor, introduce un comentario."
+
+#: modules/editorial-metadata/editorial-metadata.php:1409
+msgid "Please enter a name for the editorial fields"
+msgstr "Por favor, introduce un nombre para los campos editoriales"
+
+#: modules/editorial-metadata/editorial-metadata.php:1252
+msgid "Please enter a name for the editorial fields."
+msgstr "Por favor, introduce un nombre para los campos editoriales."
+
+#: modules/editorial-metadata/editorial-metadata.php:1259
+msgid "Please enter a slug for the editorial fields."
+msgstr "Por favor, introduce un slug para los campos editoriales."
+
+#: modules/editorial-metadata/editorial-metadata.php:1414
+msgid "Please enter a valid, non-numeric name for the editorial fields."
+msgstr ""
+"Por favor, introduce un nombre válido y no númerico para los campos "
+"editoriales."
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Please select a valid metadata type."
+msgstr "Por favor, selecciona un tipo de metadatos válido."
+
+#: lib/Notifications/Plugin.php:250
+msgid "Please select at least one event"
+msgstr "Por favor selecciona por lo menos un evento"
+
+#: modules/calendar/library/calendar-methods.php:1216
+#: modules/content-board/library/content-board-utilities.php:1130
+#: modules/content-overview/library/content-overview-utilities.php:456
+msgid "Please, wait! Loading the form fields..."
+msgstr "¡Por favor, espera! Cargando los campos del formulario..."
+
+#: modules/editorial-metadata/editorial-metadata.php:454
+msgid "Popular Editorial Fields"
+msgstr "Campos editoriales populares"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:44
+msgid "Position"
+msgstr "Posición"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:231
+msgid "Post"
+msgstr "Entrada"
+
+#: modules/calendar/library/calendar-methods.php:1835
+msgid "Post could not be created"
+msgstr "La publicación no pudo ser creada"
+
+#: modules/calendar/library/calendar-methods.php:1828
+msgid "Post created successfully"
+msgstr "Entrada creada correctamente"
+
+#: modules/content-board/content-board.php:1283
+#: modules/content-overview/content-overview.php:836
+#: modules/content-overview/content-overview.php:895
+#: modules/content-overview/content-overview.php:1219
+#: modules/calendar/library/calendar-methods.php:1245
+msgid "Post Date"
+msgstr "Fecha de publicación"
+
+#: modules/calendar/calendar.php:241
+msgid "Post date updated."
+msgstr "Fecha de publicación actualizada."
+
+#: publishpress.php:680
+msgid "Post does not exist"
+msgstr "La entrada no existe"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:160
+msgid "Post ID: %d"
+msgstr "ID de la entrada: %d"
+
+#: modules/calendar/library/calendar-methods.php:794
+msgid "Post not found"
+msgstr "Entrada no encontrada"
+
+#: common/php/class-module.php:1126 modules/content-board/content-board.php:811
+#: modules/content-board/content-board.php:1290
+#: modules/content-overview/content-overview.php:954
+#: modules/content-overview/content-overview.php:1226
+#: modules/calendar/library/calendar-methods.php:424
+#: modules/calendar/library/calendar-methods.php:858
+#: modules/calendar/library/calendar-methods.php:1252
+#: modules/calendar/library/calendar-utilities.php:47
+#: modules/calendar/library/calendar-utilities.php:1070
+#: modules/calendar/library/calendar-utilities.php:1189
+#: modules/content-board/library/content-board-utilities.php:594
+#: modules/content-board/library/content-board-utilities.php:1165
+#: modules/content-overview/library/content-overview-utilities.php:491
+#: modules/content-overview/library/content-overview-utilities.php:703
+msgid "Post Status"
+msgstr "Estado de la entrada"
+
+#: modules/calendar/calendar.php:242
+msgid "Post status updated."
+msgstr "Estado de la publicación actualizado."
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr "Widget de estado de publicación"
+
+#: modules/calendar/calendar.php:989 modules/calendar/calendar.php:1218
+#: modules/content-board/content-board.php:698
+#: modules/content-board/content-board.php:711
+#: modules/content-board/content-board.php:752
+#: modules/content-board/content-board.php:813
+#: modules/content-overview/content-overview.php:834
+#: modules/content-overview/content-overview.php:850
+#: modules/content-overview/content-overview.php:893
+#: modules/content-overview/content-overview.php:957
+#: modules/calendar/library/calendar-utilities.php:146
+#: modules/calendar/library/calendar-utilities.php:1054
+#: modules/calendar/library/calendar-utilities.php:1192
+#: modules/content-board/library/content-board-utilities.php:677
+#: modules/content-board/library/content-board-utilities.php:1153
+#: modules/content-overview/library/content-overview-utilities.php:479
+#: modules/content-overview/library/content-overview-utilities.php:799
+msgid "Post Type"
+msgstr "Tipo de contenido"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "Tipo de contenido"
+
+#: modules/calendar/library/calendar-methods.php:1214
+msgid "Post type not found"
+msgstr "No se ha encontrado el tipo de contenido"
+
+#: modules/calendar/library/calendar-methods.php:1215
+msgid "Post type:"
+msgstr "Tipo de contenido:"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+#, php-format
+msgid "Post type: %s"
+msgstr "Tipo de contenido: %s"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:46
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "Tipos de contenido"
+
+#: modules/calendar/library/calendar-methods.php:87
+msgid "Post types to show"
+msgstr "Tipos de contenidos a mostrar"
+
+#: modules/content-board/library/content-board-methods.php:444
+#: modules/content-overview/library/content-overview-methods.php:167
+msgid "Post types to show:"
+msgstr "Tipos de contenido a mostrar:"
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr "Publicaciones de un vistazo"
+
+#: modules/calendar/library/calendar-methods.php:127
+msgid "Posts publish time format"
+msgstr "Formato de hora de las entradas publicadas"
+
+#: modules/content-board/content-board.php:1219
+#: modules/content-board/content-board.php:1286
+#: modules/content-overview/content-overview.php:1222
+#: modules/content-overview/content-overview.php:1744
+#: modules/calendar/library/calendar-methods.php:1248
+#: modules/calendar/library/calendar-utilities.php:1114
+msgid "Preview"
+msgstr "Vista previa"
+
+#: modules/content-board/content-board.php:1216
+#: modules/content-overview/content-overview.php:1741
+#, php-format
+msgid "Preview “%s”"
+msgstr "Vista previa “%s”"
+
+#: modules/content-board/content-board.php:1288
+#: modules/content-overview/content-overview.php:1224
+#: modules/calendar/library/calendar-methods.php:1250
+msgid "Previous Post"
+msgstr "Entrada anterior"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "Estado anterior"
+
+#: modules/content-board/library/content-board-utilities.php:51
+#: modules/content-overview/library/content-overview-methods.php:282
+msgid "Print"
+msgstr "Imprimir"
+
+#: common/php/class-module.php:334 modules/content-board/content-board.php:989
+msgid "Private"
+msgstr "Privado"
+
+#: modules/content-board/library/content-board-utilities.php:1171
+#: modules/content-overview/library/content-overview-utilities.php:497
+msgid "Publish Date"
+msgstr "Fecha de publicación"
+
+#: modules/calendar/library/calendar-methods.php:864
+msgid "Publish Time"
+msgstr "Hora de publicación"
+
+#: common/php/class-module.php:331 modules/calendar/calendar.php:1231
+msgid "Published"
+msgstr "Publicado"
+
+#: modules/calendar/library/calendar-methods.php:423
+msgid "Publishing Time"
+msgstr "Hora de la publicación"
+
+#. Author of the plugin
+#: modules/settings/settings.php:61
+#: modules/calendar/library/calendar-utilities.php:1227
+msgid "PublishPress"
+msgstr "PublishPress"
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr "Registro de depuración de PublishPress"
+
+#. Name of the plugin
+#: modules/settings/settings.php:266
+msgid "PublishPress Planner"
+msgstr "PublishPress Planner"
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content inside WordPress. "
+"Features include a content calendar, kanban board, and notifications."
+msgstr ""
+"PublishPress Planner te ayuda a planificar y publicar contenidos con "
+"WordPress. Entre sus características se incluyen un calendario de "
+"contenidos, un tablero Kanban y avisos."
+
+#: publishpress.php:1456
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+
+#: lib/Legacy/Util.php:206
+msgid "PublishPress Revisions integration"
+msgstr "Integración de PublishPress Revisions"
+
+#: modules/settings/settings.php:141
+msgid "PublishPress Settings"
+msgstr "Ajustes de PublishPress"
+
+#: modules/improved-notifications/improved-notifications.php:1103
+msgid "Receiver"
+msgstr "Destinatario"
+
+#: modules/calendar/library/calendar-methods.php:546
+msgid "Regenerate calendar feed secret"
+msgstr "Regenerar clave secreta del feed del calendario"
+
+#: modules/editorial-metadata/editorial-metadata.php:1637
+msgid "Register editorial fields for these post types:"
+msgstr "Registrar los campos editoriales para estos tipos de entrada:"
+
+#: modules/editorial-comments/editorial-comments.php:218
+#: modules/editorial-comments/editorial-comments.php:728
+msgid "Remove"
+msgstr "Eliminar"
+
+#: lib/Legacy/Util.php:212
+msgid "Remove PublishPress ads and branding"
+msgstr "Eliminar los anuncios y la marca de PublishPress"
+
+#: modules/content-board/library/content-board-utilities.php:218
+msgid "Reorder"
+msgstr "Reordenar"
+
+#: modules/content-overview/library/content-overview-utilities.php:26
+msgid "Reorder Columns"
+msgstr "Reordenar columnas"
+
+#: modules/calendar/library/calendar-utilities.php:583
+#: modules/content-board/library/content-board-utilities.php:364
+#: modules/content-overview/library/content-overview-utilities.php:172
+msgid "Reorder Filters"
+msgstr "Reordenar filtros"
+
+#: modules/editorial-comments/editorial-comments.php:632
+msgid "Reply"
+msgstr "Responder"
+
+#: modules/editorial-comments/editorial-comments.php:629
+msgid "Reply to this comment"
+msgstr "Responder a este comentario"
+
+#: modules/notifications/notifications.php:2230
+#, php-format
+msgid "Reply: %s"
+msgstr "Responder a: %s"
+
+#: lib/Legacy/Util.php:230
+msgid "Request Support"
+msgstr "Solicitar soporte"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:361
+#: modules/notifications-log/library/NotificationsLogTable.php:406
+msgid "Reschedule"
+msgstr "Reprogramar"
+
+#: modules/calendar/library/calendar-utilities.php:554
+#: modules/content-board/library/content-board-utilities.php:153
+#: modules/content-board/library/content-board-utilities.php:551
+#: modules/content-overview/library/content-overview-methods.php:384
+#: modules/content-overview/library/content-overview-utilities.php:656
+msgid "Reset"
+msgstr "Restablecer"
+
+#: modules/calendar/library/calendar-utilities.php:553
+#: modules/content-board/library/content-board-utilities.php:152
+#: modules/content-overview/library/content-overview-methods.php:383
+msgid "Reset Filters"
+msgstr "Restablecer filtros"
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr "Reseñas"
+
+#: common/php/class-module.php:1126
+#: modules/content-overview/content-overview.php:833
+#: modules/content-overview/content-overview.php:848
+#: modules/content-overview/content-overview.php:955
+#: modules/calendar/library/calendar-utilities.php:1190
+msgid "Revision Status"
+msgstr "Estado de revisión"
+
+#: common/php/class-module.php:753
+msgid "Role"
+msgstr "Perfil"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#, php-format
+msgid "role:%s"
+msgstr "perfil: %s"
+
+#: common/php/class-module.php:750
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "Perfiles"
+
+#: modules/calendar/library/calendar-methods.php:1223
+msgid "Sat"
+msgstr "Sáb"
+
+#: modules/calendar/library/calendar-methods.php:1210
+msgid "Save"
+msgstr "Guardar"
+
+#: modules/calendar/library/calendar-methods.php:1212
+msgid "Save and edit"
+msgstr "Guardar y editar"
+
+#: modules/content-board/content-board.php:1291
+#: modules/content-overview/content-overview.php:1227
+#: modules/calendar/library/calendar-methods.php:1253
+msgid "Save Changes"
+msgstr "Guardar cambios"
+
+#: modules/calendar/library/calendar-methods.php:1211
+msgid "Saving..."
+msgstr "Guardando..."
+
+#: common/php/class-module.php:333 modules/calendar/calendar.php:1226
+#: modules/content-board/content-board.php:979
+#: modules/notifications-log/library/NotificationsLogTable.php:529
+msgid "Scheduled"
+msgstr "Programado"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:233
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr "Programado para %d destinatarios. Haz clic aquí para mostrarlos."
+
+#: modules/calendar/calendar.php:738
+#: modules/calendar/library/calendar-utilities.php:486
+#: modules/content-board/library/content-board-utilities.php:98
+#: modules/content-overview/library/content-overview-methods.php:329
+msgid "Search"
+msgstr "Buscar"
+
+#: modules/calendar/library/calendar-utilities.php:169
+#: modules/calendar/library/calendar-utilities.php:485
+#: modules/content-board/library/content-board-utilities.php:97
+#: modules/content-board/library/content-board-utilities.php:700
+#: modules/content-overview/library/content-overview-methods.php:328
+#: modules/content-overview/library/content-overview-utilities.php:822
+msgid "Search box"
+msgstr "Caja de búsqueda"
+
+#: modules/editorial-comments/editorial-comments.php:298
+msgid "Search Comments"
+msgstr "Buscar comentarios"
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "Search Editorial Fields"
+msgstr "Buscar campos editoriales"
+
+#: modules/calendar/library/calendar-utilities.php:613
+#: modules/content-board/library/content-board-utilities.php:248
+#: modules/content-overview/library/content-overview-utilities.php:56
+msgid "Search Metakey"
+msgstr "Buscar clave meta"
+
+#: publishpress.php:1412
+msgid "Search Notifications"
+msgstr "Buscar avisos"
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:285
+#, php-format
+msgid "Search results for “%s”"
+msgstr "Resultados de la búsqueda de «%s»"
+
+#: common/php/class-module.php:1109
+#, php-format
+msgid "Select %s"
+msgstr "Seleccionar %s"
+
+#: modules/improved-notifications/improved-notifications.php:1090
+msgid "Select at least one option for each section."
+msgstr "Selecciona al menos una opción para cada sección."
+
+#: modules/content-board/library/content-board-utilities.php:394
+#: modules/content-overview/library/content-overview-utilities.php:202
+msgid "Select Metakey"
+msgstr "Seleccionar Metakey"
+
+#: modules/calendar/library/calendar-utilities.php:211
+#: modules/content-board/library/content-board-utilities.php:742
+#: modules/content-overview/library/content-overview-utilities.php:864
+msgid "Select option..."
+msgstr "Seleccionar option…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:211
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:523
+msgid "Select roles..."
+msgstr "Seleccionar perfiles…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:229
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:542
+msgid "Select Type"
+msgstr "Seleccionar el tipo"
+
+#: lib/Legacy/Util.php:208
+msgid "Send reminder notifications"
+msgstr "Enviar avisos de recordatorio"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:288
+msgid "Sent"
+msgstr "Enviado"
+
+#: modules/calendar/library/calendar-methods.php:1232
+msgid "Sep"
+msgstr "Sep"
+
+#: modules/settings/settings.php:142
+msgid "Settings"
+msgstr "Ajustes"
+
+#: modules/settings/settings.php:124
+msgid "settings"
+msgstr "ajustes"
+
+#: modules/content-overview/content-overview.php:676
+#: modules/content-board/library/content-board-methods.php:172
+msgid "Settings updated successfully."
+msgstr "Los ajustes han sido guardado correctamente."
+
+#: modules/calendar/library/calendar-utilities.php:1286
+msgid "Seven months"
+msgstr "Siete meses"
+
+#: modules/improved-notifications/improved-notifications.php:1104
+msgid "shortcode"
+msgstr "shortcode"
+
+#: modules/calendar/library/calendar-methods.php:1207
+#, php-format
+msgid "Show %s more"
+msgstr "Mostrar %s más"
+
+#: modules/notifications/notifications.php:610
+msgid "Show active notifications"
+msgstr "Mostrar avisos activos"
+
+#: modules/content-board/library/content-board-utilities.php:509
+#: modules/content-overview/library/content-overview-utilities.php:614
+msgid "Show content from"
+msgstr "Mostrar contenido desde"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:346
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:656
+msgid "Show on Content Calendar and Overview form"
+msgstr ""
+"Mostrar en formulario «Calendario de contenidos» y «Resumen de contenidos»."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:394
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:704
+msgid "Show on Post Types screen"
+msgstr "Mostrar en la pantalla «Tipos de contenido»"
+
+#: modules/calendar/calendar.php:737
+msgid "Show Revision"
+msgstr "Mostrar la revisión"
+
+#: modules/notifications/notifications.php:1722
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+"Mostrar los enlaces «Avísame» y «Deja de avisarme» para estos tipos de "
+"contenidos:"
+
+#: modules/calendar/library/calendar-methods.php:95
+msgid "Show today's date in the first row"
+msgstr "Mostrar la fecha de hoy en la primera fila"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:233
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:545
+msgid "Single Select"
+msgstr "Selección individual"
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "Administrador del sitio"
+
+#: modules/calendar/library/calendar-utilities.php:1284
+msgid "Six months"
+msgstr "Seis meses"
+
+#: modules/calendar/library/calendar-utilities.php:1250
+msgid "Six months ago"
+msgstr "Hace seis meses"
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr "Tamaño"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr "Omitir el usuario actual"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr "Omitir el aviso para el usuario que ha desencadenado la acción"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:291
+#: modules/notifications-log/library/NotificationsLogTable.php:525
+msgid "Skipped"
+msgstr "Omitido"
+
+#: lib/Legacy/Util.php:207
+msgid "Slack integration for notifications"
+msgstr "Integración de Slack para avisos"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:163
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:457
+msgid "Slug"
+msgstr "Slug"
+
+#: modules/editorial-metadata/editorial-metadata.php:1276
+msgid "Slug already in use. Please choose another."
+msgstr "El slug ya está en uso. Por favor, selecciona otro."
+
+#: modules/notifications/notifications.php:1868
+msgid "slug1,slug2"
+msgstr "slug1,slug2"
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "¡Lo siento! ¡No estás suscrito a ninguna publicación!"
+
+#: modules/editorial-comments/editorial-comments.php:1089
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+"Lo siento, no puedes borrar este comentario editorial porque tiene algunas "
+"respuestas."
+
+#: modules/editorial-comments/editorial-comments.php:777
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Lo siento, no tienes privilegios para añadir comentarios editoriales. Por "
+"favor habla con tu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:1068
+#: modules/editorial-comments/editorial-comments.php:1172
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+"Lo siento, pero no tienes los privilegios para borrar este comentario "
+"editorial. Por favor, habla con tu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:920
+#: modules/editorial-comments/editorial-comments.php:1052
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Lo siento, pero no tienes los privilegios para editar estos comentarios "
+"editoriales. Por favor, habla con tu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:938
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+"Lo siento, pero no tienes los privilegios para editar este comentario "
+"editorial. Por favor, habla con tu administrador."
+
+#: modules/calendar/calendar.php:735
+msgid "Start Date"
+msgstr "Fecha de inicio"
+
+#: modules/calendar/library/calendar-utilities.php:1234
+msgid "Start date"
+msgstr "Fecha de inicio"
+
+#: modules/calendar/calendar.php:987
+#: modules/content-board/content-board.php:709
+#: modules/content-overview/content-overview.php:832
+#: modules/content-overview/content-overview.php:847
+#: modules/content-overview/content-overview.php:892
+#: modules/notifications-log/library/NotificationsLogTable.php:500
+msgid "Status"
+msgstr "Estado"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2124
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "El estado se cambió de %1$s #%2$s «%3$s» por %4$s %5$s"
+
+#: modules/calendar/library/calendar-methods.php:119
+msgid "Statuses to display publish time"
+msgstr "Estados para mostrar la hora de publicación"
+
+#: modules/notifications/notifications.php:538
+#: modules/notifications/notifications.php:946
+msgid "Stop notifying me"
+msgstr "Deja de avisarme"
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr "Asunto"
+
+#: modules/notifications-log/notifications-log.php:824
+msgid "Subject:"
+msgstr "Asunto:"
+
+#: modules/content-board/library/content-board-utilities.php:1123
+#: modules/content-overview/library/content-overview-utilities.php:449
+msgid "Submit"
+msgstr "Enviar"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:233
+msgid "Submitted on"
+msgstr "Enviado el"
+
+#: modules/calendar/library/calendar-utilities.php:1229
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "Suscríbete en iCal o Google Calendar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:521
+msgid "Success"
+msgstr "Correcto"
+
+#: modules/calendar/library/calendar-methods.php:1217
+msgid "Sun"
+msgstr "Dom"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "synchronous"
+msgstr "síncrono"
+
+#: modules/calendar/library/calendar-utilities.php:1085
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Etiqueta"
+msgstr[1] "Etiquetas"
+
+#: modules/calendar/library/calendar-methods.php:894
+#: modules/content-board/library/content-board-utilities.php:1199
+#: modules/content-overview/library/content-overview-utilities.php:525
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: modules/content-board/content-board.php:767
+#: modules/content-board/content-board.php:827
+#: modules/content-overview/content-overview.php:910
+#: modules/content-overview/content-overview.php:971
+#: modules/calendar/library/calendar-utilities.php:1206
+#: lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php:34
+msgid "Taxonomies"
+msgstr "Taxonomías"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr "Taxonomía"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgctxt "taxonomy general name"
+msgid "Editorial Field"
+msgstr "Campo editorial"
+
+#: modules/content-board/content-board.php:1292
+#: modules/content-overview/content-overview.php:1228
+#: modules/calendar/library/calendar-methods.php:1254
+msgid "Taxonomy not set."
+msgstr "La taxonomía no está establecida."
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgctxt "taxonomy singular name"
+msgid "Editorial Field"
+msgstr "Campo editorial"
+
+#: modules/calendar/library/calendar-utilities.php:1292
+msgid "Ten months"
+msgstr "Diez meses"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "Términos"
+
+#: modules/editorial-metadata/editorial-metadata.php:1549
+msgid "Terms not set."
+msgstr "Términos no establecidos."
+
+#: modules/editorial-metadata/editorial-metadata.php:294
+msgid "Text"
+msgstr "Texto"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:466
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+"El «slug» es la versión del nombre amigable con las URL. Normalmente va en "
+"minúsculas y contiene solo letras, números y guiones altos."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:184
+msgid ""
+"The description can be used to communicate with your team about what the "
+"field is for."
+msgstr ""
+"La descripción se puede usar para comunicarte con tu equipo acerca de para "
+"qué es el campo."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:483
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+"La descripción se puede usar para comunicarte con tu equipo acerca de para "
+"qué son los metadatos."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr "La integración The Events Calendar "
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:198
+msgid "The field type cannot be changed once created."
+msgstr "El tipo de campos no se puede cambiar una vez creado."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:158
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:452
+msgid "The name is for labeling the editorial fields."
+msgstr "El nombre es para etiquetar los campos editoriales."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:283
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+"El aviso se ha establecido como «Programado», pero la tarea cron no se "
+"encuentra"
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+"El módulo de avisos necesitará estar activado para que se muestre este "
+"widget."
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "El registro superior ha sido borrado o probablemente reprogramado"
+
+#: modules/calendar/library/calendar-methods.php:1705
+msgid "The selected post type is not enabled for the calendar."
+msgstr "El tipo de contenido seleccionado no está activado para el calendario."
+
+#: modules/calendar/calendar.php:1807
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+"El usuario seleccionado no tiene suficientes permisos como para definirle "
+"como autor de la entrada."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:168
+msgid "The slug cannot be changed once the term has been created."
+msgstr "El slug no puede cambiarse una vez el término ha sido creado."
+
+#: modules/content-board/content-board.php:1268
+#: modules/content-overview/content-overview.php:1199
+msgid "There are no posts in the range or filter specified."
+msgstr "No hay entradas en el rango o filtro especificado."
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr "No hay módulos de PublishPress registrados"
+
+#: modules/editorial-comments/editorial-comments.php:874
+#: modules/editorial-comments/editorial-comments.php:1004
+#: modules/editorial-comments/editorial-comments.php:1114
+#: modules/editorial-comments/editorial-comments.php:1198
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+"Hubo un problema de algún tipo. Inténtalo de nuevo o contacta a tu "
+"administrador."
+
+#: modules/calendar/calendar.php:243
+msgid "There was an error updating the post. Please try again."
+msgstr "Hubo un error al actualizar la publicación. Inténtalo de nuevo."
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2135
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "Esta acción se realizó el %1$s a las %2$s %3$s"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial fields type is not yet supported."
+msgstr "Este tipo de campos editoriales todavía no es compatible."
+
+#: modules/notifications/notifications.php:1066
+#, php-format
+msgid "This email was sent %s."
+msgstr "Este correo electrónico fue enviado el %s."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:375
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:686
+msgid "This field will be available for these post types."
+msgstr "Esto campo estará disponibles para estos tipos de contenido."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:399
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:708
+msgid ""
+"This field will be viewable on the overview screens for these post types."
+msgstr ""
+"Esto campo se podrá ver en las pantallas de resumen de estos tipos de "
+"contenido."
+
+#: modules/notifications-log/notifications-log.php:842
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+"Esta es una vista previa del mensaje programado. Todavía se puede cambiar el "
+"contenido hasta que se envíe el aviso."
+
+#: modules/content-board/content-board.php:1056
+msgid ""
+"This is the default publish date from today for posts moving to the "
+"Scheduled status."
+msgstr ""
+"Esta es la fecha de publicación por defecto a partir de hoy para las "
+"entradas que pasan al estado «Programado»."
+
+#: modules/notifications-log/notifications-log.php:449
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+"Este aviso es muy parecido a otro enviado al mismo destinatario hace menos "
+"de %d minutos"
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr "Esta entrada fue actualizada por última vez el "
+
+#: modules/improved-notifications/improved-notifications.php:425
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+"Esto evitará que se envíen demasiados avisos para eventos iguales o "
+"similares. Ajústalo a un número mayor si recibes correos duplicados."
+
+#: modules/notifications/notifications.php:649
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Users who selected \"Notify me\" for the content\" option."
+msgstr ""
+"Esto no tendrá ningún efecto si no tienes al menos un flujo de trabajo "
+"dirigido a la opción «Usuarios que seleccionaron “Avisarme” para el "
+"contenido»."
+
+#: modules/calendar/library/calendar-utilities.php:1278
+msgid "Three months"
+msgstr "Tres meses"
+
+#: modules/calendar/library/calendar-utilities.php:1244
+msgid "Three months ago"
+msgstr "Hace tres meses"
+
+#: modules/calendar/library/calendar-utilities.php:1265
+msgid "Three weeks"
+msgstr "Tres semanas"
+
+#: modules/calendar/library/calendar-methods.php:1221
+msgid "Thu"
+msgstr "Jue"
+
+#: modules/content-board/content-board.php:421
+#: modules/content-overview/content-overview.php:418
+#: lib/Notifications/Table/Notifications.php:156
+#: lib/Notifications/Table/Workflows.php:142
+#: modules/calendar/library/calendar-methods.php:853
+#: modules/content-board/library/content-board-utilities.php:244
+#: modules/content-board/library/content-board-utilities.php:1159
+#: modules/content-overview/library/content-overview-utilities.php:485
+msgid "Title"
+msgstr "Título"
+
+#: modules/notifications/notifications.php:2157
+#, php-format
+msgid "Title: %s"
+msgstr "Título: %s"
+
+#: modules/calendar/library/calendar-utilities.php:245
+#: modules/calendar/library/calendar-utilities.php:279
+#: modules/content-board/library/content-board-utilities.php:112
+#: modules/content-board/library/content-board-utilities.php:776
+#: modules/content-board/library/content-board-utilities.php:810
+#: modules/content-overview/library/content-overview-methods.php:343
+#: modules/content-overview/library/content-overview-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:932
+msgid "to"
+msgstr "a"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:632
+msgid "To date"
+msgstr "Fecha final"
+
+#: modules/calendar/library/calendar-methods.php:326
+#, php-format
+msgid ""
+"To refine your workflow with custom Post Statuses, install the "
+"%sPublishPress Statuses%s plugin."
+msgstr ""
+"Para refinar tu flujo de trabajo con estados personalizados de entradas, "
+"instala el plugin %sPublishPress Statuses%s."
+
+#: modules/calendar/library/calendar-methods.php:1243
+msgid "Today"
+msgstr "Hoy"
+
+#: common/php/class-module.php:336 modules/content-board/content-board.php:1190
+#: modules/content-board/content-board.php:1285
+#: modules/content-overview/content-overview.php:1221
+#: modules/content-overview/content-overview.php:1715
+#: modules/calendar/library/calendar-methods.php:1247
+#: modules/calendar/library/calendar-utilities.php:1104
+msgid "Trash"
+msgstr "Papelera"
+
+#: modules/calendar/library/calendar-methods.php:1219
+msgid "Tue"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-utilities.php:1296
+msgid "Twelve months"
+msgstr "Doce meses"
+
+#: modules/calendar/library/calendar-utilities.php:1276
+msgid "Two months"
+msgstr "Dos meses"
+
+#: modules/calendar/library/calendar-utilities.php:1242
+msgid "Two months ago"
+msgstr "Hace dos meses"
+
+#: modules/calendar/library/calendar-utilities.php:1263
+msgid "Two weeks"
+msgstr "Dos semanas"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:193
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:491
+msgid "Type"
+msgstr "Tipo"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr "Se ha encontrado un error indefinido"
+
+#: modules/calendar/calendar.php:1118
+#: modules/content-board/content-board.php:614
+#: modules/content-overview/library/content-overview-methods.php:221
+msgid "Undo"
+msgstr "Deshacer"
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr "Contenido sin publicar"
+
+#: modules/calendar/library/calendar-methods.php:1208
+#: modules/calendar/library/calendar-methods.php:1711
+msgid "Untitled"
+msgstr "Sin título"
+
+#: modules/editorial-metadata/editorial-metadata.php:457
+msgid "Update Editorial Fields"
+msgstr "Actualizar campos editoriales"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:422
+msgid "Update Editorial fields term"
+msgstr "Actualizar término de campos editoriales"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "Actualizar nota"
+
+#: modules/calendar/calendar.php:247
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+"Actualizar la fecha de publicación dinámicamente no funciona para el "
+"contenido publicado. Por favor edita la publicación ."
+
+#: includes.php:161 lib/Legacy/Util.php:216
+msgid "Upgrade to Pro"
+msgstr "Actualizar a Pro"
+
+#: lib/Legacy/Util.php:198
+msgid "Upgrade to PublishPress Planner Pro"
+msgstr "Actualiza a PublishPress Planner Pro"
+
+#: lib/Legacy/Util.php:209
+msgid "Use post meta in notifications"
+msgstr "Utiliza los metadatos de la entrada en los avisos"
+
+#: modules/editorial-metadata/editorial-metadata.php:295
+msgid "User"
+msgstr "Usuario"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "usuario"
+
+#: modules/improved-notifications/improved-notifications.php:1100
+msgid "User making changes or comments"
+msgstr "Usuario haciendo cambios o comentarios"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:204
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:516
+msgid "User role"
+msgstr "Perfil de usuario"
+
+#: modules/editorial-comments/editorial-comments.php:1279
+msgid "User Url"
+msgstr "URL del usuario"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:128
+#, php-format
+msgid "User: %s (%d)"
+msgstr "Usuario: %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1274
+msgid "Username"
+msgstr "Nombre del usuario"
+
+#: common/php/class-module.php:772
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "Usuarios"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr "Usuarios que seleccionaron «Avísame» para el contenido"
+
+#: modules/content-board/content-board.php:1206
+#: modules/content-board/content-board.php:1287
+#: modules/content-overview/content-overview.php:1223
+#: modules/content-overview/content-overview.php:1731
+#: modules/calendar/library/calendar-methods.php:1249
+#: modules/calendar/library/calendar-utilities.php:1111
+msgid "View"
+msgstr "Ver"
+
+#: modules/content-board/content-board.php:1200
+#: modules/content-overview/content-overview.php:1725
+#, php-format
+msgid "View “%s”"
+msgstr "Ver “%s”"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr "Ver “%s” en Google Maps"
+
+#: lib/Legacy/Util.php:241
+msgid "View Knowledge Base"
+msgstr "Ver la base de conocimiento"
+
+#: modules/notifications/notifications.php:2181
+#: modules/notifications/notifications.php:2238
+#, php-format
+msgid "View: %s"
+msgstr "Ver: %s"
+
+#: publishpress.php:1464
+msgid "Warning"
+msgstr "Advertencia"
+
+#: modules/calendar/library/calendar-methods.php:1220
+msgid "Wed"
+msgstr "Mié"
+
+#: modules/calendar/calendar.php:734
+msgid "Weeks"
+msgstr "Semanas"
+
+#: modules/editorial-metadata/editorial-metadata.php:223
+msgid "What the post needs to cover."
+msgstr "Lo que la publicación debe cubrir."
+
+#: modules/improved-notifications/improved-notifications.php:970
+msgid "What to say?"
+msgstr "¿Qué decir?"
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "Cuando se añade un comentario editorial"
+
+#: lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php:28
+msgid "When taxonomy is updated"
+msgstr "Cuando se actualiza la taxonomía"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "Cuando el contenido cambia a un nuevo estado"
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr "Cuando el contenido ha sido actualizado"
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "When the first draft needs to be ready."
+msgstr "Cuando el primer borrador debe estar listo."
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "Cuando se cambia el estado"
+
+#: lib/Notifications/Plugin.php:64
+#: modules/improved-notifications/improved-notifications.php:940
+#: modules/notifications-log/library/NotificationsLogTable.php:497
+msgid "When to notify?"
+msgstr "¿Cuándo avisar?"
+
+#: lib/Notifications/Plugin.php:66
+#: modules/improved-notifications/improved-notifications.php:960
+#: modules/notifications-log/library/NotificationsLogTable.php:499
+msgid "Who to notify?"
+msgstr "¿A quién avisar?"
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr "Opciones del widget"
+
+#: modules/notifications/notifications.php:2010
+msgid "WordPress Scheduler"
+msgstr "Programador de WordPress"
+
+#: modules/improved-notifications/improved-notifications.php:1101
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+#: modules/notifications/notifications.php:691
+msgid "Workflow has users enrolled"
+msgstr "El flujo de trabajo tiene usuarios inscritos"
+
+#: modules/improved-notifications/improved-notifications.php:902
+msgid "Workflow Settings"
+msgstr "Ajustes de los flujos de trabajo"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:116
+#, php-format
+msgid "Workflow: %s"
+msgstr "Flujo de trabajo: %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:477
+#: modules/improved-notifications/improved-notifications.php:1281
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:351
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:660
+msgid "Yes"
+msgstr "Sí"
+
+#: modules/notifications/notifications.php:1061
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr "Estás recibiendo este correo electrónico porque estás suscrito a «%s»."
+
+#: modules/improved-notifications/improved-notifications.php:1094
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+"Puedes agregar información dinámica al texto del asunto o del cuerpo con los "
+"siguientes shortcodes:"
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+"Puedes añadir comentarios editoriales a una entrada una vez la has guardado "
+"por primera vez."
+
+#: modules/notifications/notifications.php:2241
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr "Puedes ver todos los comentarios editoriales en esta %s aquí: "
+
+#: modules/content-board/content-board.php:761
+#: modules/content-board/content-board.php:821
+#: modules/content-overview/content-overview.php:904
+#: modules/content-overview/content-overview.php:965
+#: modules/calendar/library/calendar-utilities.php:1200
+msgid "You do not have any editorial fields enabled"
+msgstr "No hay campos editoriales activados"
+
+#: modules/content-board/content-board.php:768
+#: modules/content-board/content-board.php:828
+#: modules/content-overview/content-overview.php:911
+#: modules/content-overview/content-overview.php:972
+#: modules/calendar/library/calendar-utilities.php:1207
+msgid "You do not have any public taxonomies"
+msgstr "No hay ninguna taxonomía pública"
+
+#: publishpress.php:676
+msgid "You do not have necessary permissions to complete this action."
+msgstr "No tienes los permisos necesarios para completar esta acción."
+
+#: modules/content-overview/content-overview.php:762
+#: modules/content-board/library/content-board-methods.php:258
+#, php-format
+msgid "You do not have permission to add new %s"
+msgstr "Lo siento, no tienes permisos para añadir nuevo %s"
+
+#: modules/content-board/library/content-board-methods.php:63
+msgid "You do not have permission to edit selected post."
+msgstr "Lo siento, no tienes permisos para editar la entrada seleccionada."
+
+#: modules/content-board/library/content-board-methods.php:65
+msgid "You do not have permission to move post to selected post status."
+msgstr ""
+"Lo siento, no tienes permisos para mover la entrada al estado de entrada "
+"seleccionado."
+
+#: modules/content-board/content-board.php:1029
+msgid "You do not have permission to move post to this status"
+msgstr "Lo siento, no tienes permisos para mover la entrada a este estado"
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "No tienes avisos"
+
+#: includes.php:127
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
+"Estás usando PublishPress Planner Free. La versión Pro tiene más "
+"características y soporte. %sPasar a Pro%s"
+
+#~ msgid "Add New Notify Email"
+#~ msgstr "Añadir un nuevo correo electrónico de aviso"
+
+#~ msgid "Add New Notify Role"
+#~ msgstr "Añadir un nuevo aviso de perfil"
+
+#~ msgid "Add New Notify User"
+#~ msgstr "Añadir un nuevo aviso de usuario"
+
+#~ msgid "Add or remove notify emails"
+#~ msgstr "Añadir o eliminar correos electrónicos de aviso"
+
+#~ msgid "Add or remove notify roles"
+#~ msgstr "Añadir o eliminar avisos de perfiles"
+
+#~ msgid "Add or remove notify users"
+#~ msgstr "Añadir o eliminar avisos de usuarios"
+
+#~ msgid "All Notify Emails"
+#~ msgstr "Todos los correos electrónicos de aviso"
+
+#~ msgid "All Notify Roles"
+#~ msgstr "Todos los avisos de perfiles"
+
+#~ msgid "All Notify Users"
+#~ msgstr "Todos los avisos de usuarios"
+
+#~ msgid "Back to notify emails"
+#~ msgstr "Volver a los correos electrónicos de aviso"
+
+#~ msgid "Back to notify roles"
+#~ msgstr "Volver a los avisos de perfiles"
+
+#~ msgid "Back to notify users"
+#~ msgstr "Volver a los avisos de usuarios"
+
+#~ msgid "Choose from the most used notify emails"
+#~ msgstr "Elige entre los correos electrónicos de aviso más usados"
+
+#~ msgid "Choose from the most used notify roles"
+#~ msgstr "Elige entre los avisos de perfiles más usados"
+
+#~ msgid "Choose from the most used notify users"
+#~ msgstr "Elige entre los avisos de usuarios más usados"
+
+#~ msgid "Edit Notify Email"
+#~ msgstr "Editar el correo electrónico de aviso"
+
+#~ msgid "Edit Notify Role"
+#~ msgstr "Editar el aviso de perfil"
+
+#~ msgid "Edit Notify User"
+#~ msgstr "Editar el aviso de usuario"
+
+#~ msgid "Filter by notify email"
+#~ msgstr "Filtrar por correo electrónico de aviso"
+
+#~ msgid "Filter by notify role"
+#~ msgstr "Filtrar por aviso de perfil"
+
+#~ msgid "Filter by notify user"
+#~ msgstr "Filtrar por aviso de usuario"
+
+#~ msgid "Most Used Notify Email"
+#~ msgstr "Correos electrónicos de aviso más usados"
+
+#~ msgid "Most Used Notify Role"
+#~ msgstr "Aviso de perfil más usado"
+
+#~ msgid "Most Used Notify User"
+#~ msgstr "Avisos de usuarios más usados"
+
+#~ msgid "New Notify Email"
+#~ msgstr "Nuevo correo electrónico de aviso"
+
+#~ msgid "New Notify Role"
+#~ msgstr "Nuevo aviso de perfil"
+
+#~ msgid "New Notify User"
+#~ msgstr "Nuevo aviso de usuario"
+
+#~ msgid "No notify emails"
+#~ msgstr "No hay correos electrónicos de aviso"
+
+#~ msgid "No notify roles"
+#~ msgstr "No hay avisos de perfiles"
+
+#~ msgid "No notify users"
+#~ msgstr "No hay avisos de usuarios"
+
+#~ msgid "Parent Notify Email"
+#~ msgstr "Correo electrónico de aviso superior"
+
+#~ msgid "Parent Notify Email:"
+#~ msgstr "Correo electrónico de aviso superior:"
+
+#~ msgid "Parent Notify Role"
+#~ msgstr "Aviso de perfil superior"
+
+#~ msgid "Parent Notify Role:"
+#~ msgstr "Aviso de perfil superior:"
+
+#~ msgid "Parent Notify User"
+#~ msgstr "Aviso de usuario superior"
+
+#~ msgid "Parent Notify User:"
+#~ msgstr "Aviso de usuario superior:"
+
+#~ msgid "Popular Notify Emails"
+#~ msgstr "Correos electrónicos de aviso populares"
+
+#~ msgid "Popular Notify Roles"
+#~ msgstr "Avisos de perfiles populares"
+
+#~ msgid "Popular Notify Users"
+#~ msgstr "Avisos de usuarios populares"
+
+#~ msgid "Search Notify Emails"
+#~ msgstr "Buscar correos electrónicos de aviso"
+
+#~ msgid "Search Notify Roles"
+#~ msgstr "Buscar avisos de perfiles"
+
+#~ msgid "Search Notify Users"
+#~ msgstr "Buscar avisos de usuarios"
+
+#~ msgid "Separate notify emails with commas"
+#~ msgstr "Separa los correos electrónicos de aviso con comas"
+
+#~ msgid "Separate notify roles with commas"
+#~ msgstr "Separa los avisos de perfiles con comas"
+
+#~ msgid "Separate notify users with commas"
+#~ msgstr "Separa los avisos de usuarios con comas"
+
+#~ msgid "Update Notify Email"
+#~ msgstr "Actualizar el correo electrónico de aviso"
+
+#~ msgid "Update Notify Role"
+#~ msgstr "Actualizar el aviso de perfil"
+
+#~ msgid "Update Notify User"
+#~ msgstr "Actualizar el aviso de usuario"
+
+#~ msgid "View Notify Email"
+#~ msgstr "Ver el correo electrónico de aviso"
+
+#~ msgid "View Notify Role"
+#~ msgstr "Ver el aviso de perfil"
+
+#~ msgid "View Notify User"
+#~ msgstr "Ver el aviso de usuario"
+
+#, php-format
+#~ msgid "%s week"
+#~ msgid_plural "%s weeks"
+#~ msgstr[0] "%s semana"
+#~ msgstr[1] "%s semanas"
+
+#~ msgid "«"
+#~ msgstr "«"
+
+#~ msgid "‹"
+#~ msgstr "‹"
+
+#~ msgid "»"
+#~ msgstr "»"
+
+#~ msgid "›"
+#~ msgstr "›"
+
+#~ msgid "Back %d weeks"
+#~ msgstr "Ir %d semanas hacia detrás"
+
+#~ msgid "Back 1 week"
+#~ msgstr "1 semana atrás"
+
+#~ msgid "Edit this item"
+#~ msgstr "Editar este elemento"
+
+#~ msgid "Forward %d weeks"
+#~ msgstr "Ir %d semanas hacia adelante"
+
+#~ msgid "Forward 1 week"
+#~ msgstr "Ir 1 semana adelante"
+
+#, php-format
+#~ msgid "Save “%s”"
+#~ msgstr "Guardar “%s”"
+
+#~ msgid ""
+#~ "The number of weeks shown on the calendar can be changed on a user-by-"
+#~ "user basis using the calendar's screen options."
+#~ msgstr ""
+#~ "El número de semanas que se muestran en el calendario se puede cambiar de "
+#~ "usuario en usuario usando las opciones de pantalla del calendario."
+
+#, php-format
+#~ msgid "Today is %s"
+#~ msgstr "Hoy es %s"
+
+#~ msgid "View all categories"
+#~ msgstr "Ver todas las categorías"
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you activate the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Los estados personalizados están desactivados hasta que actives el plugin "
+#~ "%1$sPublishPress Statuses%2$s. Consulta %3$sPlanificación > Ajustes%4$s "
+#~ "para más detalles."
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you install the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Los estados personalizados están desactivados hasta que instales el "
+#~ "plugin %1$sPublishPress Statuses%2$s. Consulta %3$sPlanificación > "
+#~ "Ajustes%4$s para más detalles."
+
+#~ msgid "Hidden field can only be viewed on the edit post view."
+#~ msgstr ""
+#~ "Los campos ocultos solo se pueden ver en la vista de edición de la "
+#~ "publicación."
+
+#~ msgid "If enabled, this field can be seen on the Content Calendar screens."
+#~ msgstr ""
+#~ "Si se activa, esto campo puede verse en las pantallas «Calendario de "
+#~ "contenidos»"
+
+#~ msgid "Make Hidden"
+#~ msgstr "Hacer oculto"
+
+#~ msgid "Make Viewable"
+#~ msgstr "Hacer visible"
+
+#~ msgid "Viewable"
+#~ msgstr "Visible"
+
+#~ msgid "Dashboard"
+#~ msgstr "Escritorio"
+
+#~ msgid "Basic Notifications"
+#~ msgstr "Avisos básicos"
+
+#~ msgid "Schedule Date"
+#~ msgstr "Fecha de programación"
+
+#~ msgid "Add New Metadata Term"
+#~ msgstr "Añadir nuevo término de metadatos"
+
+#~ msgid "Manage Filters"
+#~ msgstr "Gestionar filtros"
+
+#~ msgid "Metadata"
+#~ msgstr "Metadatos"
+
+#~ msgid "Metadata order updated."
+#~ msgstr "Orden de los metadatos actualizado."
+
+#~ msgid "Metadata Type"
+#~ msgstr "Tipo de metadatos"
+
+#~ msgctxt "taxonomy general name"
+#~ msgid "Metadata"
+#~ msgstr "Metadatos"
+
+#~ msgctxt "taxonomy singular name"
+#~ msgid "Metadata"
+#~ msgstr "Metadatos"
+
+#~ msgid "Update Metadata Term"
+#~ msgstr "Actualizar términos de metadatos"
+
+#~ msgid "Click to toggle"
+#~ msgstr "Haz clic para activar"
+
+#~ msgid ""
+#~ "If enabled, this metadata will be available as a filter option on the "
+#~ "Content Overview screen."
+#~ msgstr ""
+#~ "Si se activa, estos metadatos estarán disponibles como opción de filtro "
+#~ "en la pantalla de resumen de contenidos."
+
+#~ msgid "Screen Layout"
+#~ msgstr "Diseño de pantalla"
+
+#~ msgid "Taxonomies to show:"
+#~ msgstr "Taxonomías a mostrar:"
+
+#~ msgid "said on %1$s at %2$s"
+#~ msgstr "dicho el %1$s a las %2$s"
+
+#~| msgid "Log content"
+#~ msgid "Sending content..."
+#~ msgstr "Enviando el contenido..."
+
+#~ msgid ""
+#~ "This comment can't be deleted because it has one or more replies. Before "
+#~ "deleting it make sure to delete all the replies first."
+#~ msgstr ""
+#~ "Este comentario no puede ser borrado porque tiene una o más respuestas. "
+#~ "Antes de eliminarlo, asegúrate de borrar primero todas las respuestas."
+
+#~ msgid "Are you sure you want to delete this comment?"
+#~ msgstr "¿Estás seguro de que quieres eliminar este comentario?"
+
+#~ msgid "for"
+#~ msgstr "para"
+
+#~ msgid "by"
+#~ msgstr "por"
+
+#~ msgid ""
+#~ "For more information:
Custom Status Documentation"
+#~ "a>
PublishPress on Github
"
+#~ msgstr ""
+#~ " Para más información:
Documentación del estado "
+#~ "personalizado
PublishPress en Github
"
+
+#~ msgid ""
+#~ "PublishPress’s custom statuses allow you to define the most important "
+#~ "stages of your editorial workflow. Out of the box, WordPress only offers "
+#~ "“Draft” and “Pending Review” as post states. With custom statuses, you "
+#~ "can create your own post states like “In Progress”, “Pitch”, or “Waiting "
+#~ "for Edit” and keep or delete the originals. You can also drag and drop "
+#~ "statuses to set the best order for your workflow.
Custom statuses "
+#~ "are fully integrated into the rest of PublishPress and the WordPress "
+#~ "admin. On the calendar and content overview, you can filter your view to "
+#~ "see only posts of a specific post state. Furthermore, email notifications "
+#~ "can be sent to a specific group of users when a post changes state.
"
+#~ msgstr ""
+#~ "Los estados personalizados de PublishPress te permiten definir las "
+#~ "fases más importantes de tu flujo de trabajo editorial. Tal y como viene, "
+#~ "WordPress sólo ofrece los estados de publicación «Borrador» y «Pendiente "
+#~ "de revisión». Con los estados personalizados puedes crear tus propios "
+#~ "estados como «En proceso», «Discurso», o «Esperando a ser editado» y "
+#~ "mantener o eliminar los originales. Puedes también arrastrar y soltar los "
+#~ "estados para establecer el mejor orden para tu flujo de trabajo."
+#~ "p>
Los estados personalizados están integrados totalmente en el resto "
+#~ "de PublishPress y el administrador de WordPress. En el resumen de "
+#~ "contenido y el calendario, puedes filtrar para ver solo las publicaciones "
+#~ "que tienen un estado específico. Además, los avisos por correo "
+#~ "electrónico pueden ser enviados a un grupo específico de usuarios cuando "
+#~ "una publicación cambia de estado.
"
+
+#~ msgid ""
+#~ "Note: Your browser does not support JavaScript or has "
+#~ "JavaScript disabled. You will not be able to access or change the post "
+#~ "status."
+#~ msgstr ""
+#~ "Nota: Tu navegador no admite JavaScript o tiene "
+#~ "JavaScript desactivado. No podrás acceder o cambiar el estado de la "
+#~ "publicación."
+
+#~ msgid "Add New Status"
+#~ msgstr "Añadir nuevo estado"
+
+#~ msgid ""
+#~ "Are you sure you want to delete the post status? All posts with this "
+#~ "status will be assigned to the default status."
+#~ msgstr ""
+#~ "¿Estás seguro de que quieres eliminar el estado de la publicación? A "
+#~ "todas las publicaciones con este estado se les asignará el estado por "
+#~ "defecto."
+
+#~ msgid "Assigned"
+#~ msgstr "Asignado"
+
+#~ msgid "Cannot reassign to the status you want to delete"
+#~ msgstr "No se puede reasignar al estado que quieres eliminar"
+
+#~ msgid "Color"
+#~ msgstr "Color"
+
+#~ msgid "Could not add status: "
+#~ msgstr "No se pudo agregar el estado: "
+
+#~ msgid "Could not delete the status: "
+#~ msgstr "No se pudo eliminar el estado: "
+
+#~ msgid "Custom status doesn't exist."
+#~ msgstr "El estado personalizado no existe."
+
+#~ msgid "Default post status has been changed."
+#~ msgstr "El estado de la publicación por defecto se ha cambiado."
+
+#~ msgid "Edit Statuses"
+#~ msgstr "Editar estados"
+
+#~ msgid "Error while updating the status"
+#~ msgstr "Error al actualizar el estado"
+
+#~ msgid "Icon"
+#~ msgstr "Icono"
+
+#~ msgid "Idea proposed; waiting for acceptance."
+#~ msgstr "Idea propuesta; esperando ser aceptada."
+
+#~ msgid "In Progress"
+#~ msgstr "En progreso"
+
+#~ msgid "No custom statuses found."
+#~ msgstr "No se encontraron estados personalizados."
+
+#~ msgid "Pending review"
+#~ msgstr "Pendiente de revisión"
+
+#~ msgid "Pitch"
+#~ msgstr "Discurso"
+
+#~ msgid "Please enter a name for the status"
+#~ msgstr "Por favor, introduce un nombre para el estado"
+
+#~ msgid "Please enter a valid, non-numeric name for the status."
+#~ msgstr "Por favor, introduce un nombre válido y no numérico para el estado."
+
+#~ msgid ""
+#~ "Please note that checking a box will apply all statuses to that post type."
+#~ msgstr ""
+#~ "Por favor, ten en cuenta que marcando la casilla se aplicarán todos los "
+#~ "estados a ese tipo de contenido."
+
+#~ msgid "Post idea assigned to writer."
+#~ msgstr "Idea de publicación asignada al escritor."
+
+#~ msgid "Post status created."
+#~ msgstr "Estado de la publicación creado."
+
+#~ msgid "Post status deleted."
+#~ msgstr "Estado de la publicación eliminado."
+
+#~ msgid "Post status doesn't exist."
+#~ msgstr "El estado de la publicación no existe."
+
+#~ msgid "Privately Published"
+#~ msgstr "Publicado privadamente"
+
+#~ msgid "Restricted status "
+#~ msgstr "Estado restringido "
+
+#~ msgid "Select Icon"
+#~ msgstr "Seleccionar el icono"
+
+#~ msgid "Show the status dropdown menu on the post editing screen:"
+#~ msgstr ""
+#~ "Mostrar el menú desplegable de estados en la pantalla de edición de la "
+#~ "publicación:"
+
+#~ msgid "Status does not exist."
+#~ msgstr "No existe el estado."
+
+#~ msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+#~ msgstr ""
+#~ "El nombre del estado no puede pasarse de 20 caracteres. Por favor, prueba "
+#~ "un nombre más corto."
+
+#~ msgid "Status name conflicts with existing status. Please choose another."
+#~ msgstr ""
+#~ "El nombre del estado tiene un conflicto con un estado ya existente. Por "
+#~ "favor, elige otro."
+
+#~ msgid "Status name conflicts with existing term. Please choose another."
+#~ msgstr ""
+#~ "El nombre del estado tiene un conflicto con un término existente. Por "
+#~ "favor, elige otro."
+
+#~ msgid "Status name is restricted. Please choose another name."
+#~ msgstr ""
+#~ "El nombre del estado está restringido. Por favor, elige otro nombre."
+
+#~ msgid "Statuses"
+#~ msgstr "Estados"
+
+#~ msgid "The color is used to identify the status."
+#~ msgstr "El color se usa para identificar el estado."
+
+#~ msgid ""
+#~ "The description is primarily for administrative use, to give you some "
+#~ "context on what the custom status is to be used for."
+#~ msgstr ""
+#~ "La descripción es principalmente para uso administrativo, para darte algo "
+#~ "de contexto sobre para qué se va a usar el estado personalizado."
+
+#~ msgid "The icon is used to visually represent the status."
+#~ msgstr "El icono se usa para representar visualmente el estado."
+
+#~ msgid "The name is used to identify the status. (Max: 20 characters)"
+#~ msgstr ""
+#~ "El nombre se utiliza para identificar el estado (Máx: 20 caracteres)"
+
+#~ msgid ""
+#~ "The slug is the unique ID for the status and is changed when the name is "
+#~ "changed."
+#~ msgstr ""
+#~ "El slug es el identificador único para el estado y se cambia cuando se "
+#~ "cambia el nombre."
+
+#~ msgid "Update Status"
+#~ msgstr "Actualizar estado"
+
+#~ msgid "Use on these post types:"
+#~ msgstr "Utilizar en estos tipos de contenido:"
+
+#~ msgid "Writer is working on the post."
+#~ msgstr "El escritor está trabajando en la publicación."
+
+#~ msgid "Calendar"
+#~ msgstr "Calendario"
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.mo b/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.mo
index 8819eab73..3e95a1d93 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.po b/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.po
index 35a09d6db..ab9180973 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-fr_FR.po
@@ -1,3023 +1,3898 @@
-# Copyright (C) 2012
-# This file is distributed under the same license as the package.
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://wordpress.org/tag/publishpress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:15-0300\n"
-"Last-Translator: Boris HOCDE \n"
-"Language-Team: LANGUAGE FR \n"
-"Language: fr_FR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 2.0.7\n"
-
-#: common/php/class-module.php:92
-#| msgid "Posts"
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-#| msgid "Pages"
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-#| msgid "Filter"
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-#| msgid "Notifications"
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-#| msgid "Notifications"
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-#| msgid "Notifications"
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-#| msgid "Notifications"
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-#| msgid "Notifications"
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-#| msgid "Notifications"
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-#| msgid "Post moved to the trash."
-#| msgid_plural "%d posts moved to the trash."
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-#| msgid "Post restored from the Trash."
-#| msgid_plural "%d posts restored from the Trash."
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-#| msgid "Please select a valid metadata type."
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-#| msgid "View"
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-#| msgid "== Actions =="
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-#| msgid "First Draft Date"
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-#| msgid "Preview"
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "%1$s => %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-#| msgid "Show %1$s more "
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-#| msgid "No user groups found."
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-#| msgid "Filter"
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-#| msgid "Editorial Comments"
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-#| msgid "No user groups found."
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-#| msgid "Content Overview"
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-#| msgid "Add editorial comment: %s"
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-#| msgid "Default post status has been changed."
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-#| msgid "Add New Status"
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-#| msgid "View all categories"
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-#| msgid "Post Type"
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-#| msgid "Post Type"
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-#| msgid "Author"
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-#| msgid "User"
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-#| msgid "Back to PublishPress"
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-#| msgid "Content Overview"
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-#| msgid "Disable"
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-#| msgid "Notifications"
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "Back %d weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "Back %d weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-#| msgid "Click to toggle"
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-#| msgid "Show %1$s more "
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-#| msgid "View “%s”"
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-#| msgid "Post date updated."
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-#| msgid "(no title)"
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-#| msgid "Post status created."
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-#| msgid "Please select a valid metadata type."
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-#| msgid "Metadata term updated."
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-#| msgid "View all statuses"
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-#| msgid "Back %d weeks"
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-#| msgid "Published"
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-#| msgid "Item moved to the trash."
-#| msgid_plural "%s items moved to the trash."
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-#| msgid "Item restored from the Trash."
-#| msgid_plural "%s items restored from the Trash."
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-#| msgid "The name is used to identify the user group."
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-#| msgid "The name is used to identify the user group."
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-#| msgid "Dashboard"
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-#| msgid "This post was last updated on"
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-#| msgid "Update Status"
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-#| msgid "Add editorial comment: %s"
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-#| msgid "Editorial Comments"
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-#| msgid ""
-#| "Keep track of important details about your content with editorial "
-#| "metadata. This feature allows you to create as many date, text, number, "
-#| "etc. fields as you like, and then use them to store information like "
-#| "contact details, required word count, or the location of an interview."
-#| "p>
Once you’ve set your fields up, editorial metadata integrates with "
-#| "both the calendar and the content overview. Make an editorial metadata "
-#| "item visible to have it appear to the rest of your team. Keep it hidden "
-#| "to restrict the information between the writer and their editor.
"
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-#| msgid "Metadata"
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-#| msgid "Unpublished"
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-#| msgid "Notifications"
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-#| msgid "Add editorial comment: %s"
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-#| msgid "Settings updated."
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-#| msgid "Editorial Comments"
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-#| msgid "Disable"
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-#| msgid "Notifications"
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-#| msgid "Change"
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-#| msgid "Enabled"
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-#| msgid "Notifications"
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-#| msgid ""
-#| "Notifications ensure you keep up to date with progress your most "
-#| "important content. Users can be subscribed to notifications on a post one "
-#| "by one or by selecting user groups.
When enabled, notifications can "
-#| "be sent when a post changes status or an editorial comment is left by a "
-#| "writer or an editor.
"
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-#| msgid ""
-#| "Select the users and user groups that should receive notifications when "
-#| "the status of this post is updated or when an editorial comment is added."
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-#| msgid "Use on these post types:"
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-#| msgid "%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s"
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-#| msgid "Author: %1$s (%2$s)"
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-#| msgid "You can see all editorial comments on this %s here: "
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No user groups found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-#| msgid "User group created. Feel free to add users to the usergroup."
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-#| msgid "Post does not exist"
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-#| msgid "User group deleted."
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-#| msgid ""
-#| "User group name cannot exceed 40 characters. Please try a shorter name."
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-#| msgid "Error adding term."
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-#| msgid "Error adding term."
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-#| msgid "Could not delete the status: "
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-#| msgid "PublishPress"
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-#| msgid "Cheatin' uh?"
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-#| msgid "Notifications"
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-#| msgid "Notifications"
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-#| msgid ""
-#| "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#, fuzzy
-#~| msgid "Notifications"
-#~ msgid "Notification"
-#~ msgstr "Notifications"
-
-#, fuzzy
-#~| msgid "User Groups"
-#~ msgid "%d Group"
-#~ msgid_plural "%d Groups"
-#~ msgstr[0] "Groupes d'utilisateurs"
-#~ msgstr[1] "Groupes d'utilisateurs"
-
-#~ msgid "The calendar lets you see your posts over a customizable date range."
-#~ msgstr "Voir le contenu à venir dans un calendrier personnalisable."
-
-#, fuzzy
-#~| msgid ""
-#~| "PublishPress’s calendar lets you see your posts over a customizable date "
-#~| "range. Filter by status or click on the post title to see its details. "
-#~| "Drag and drop posts between days to change their publication date date."
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date."
-#~ msgstr ""
-#~ "Le calendrier de PublishPress vous permet de voir vos articles grâce à un "
-#~ "calendrier flexible. Filtrez par statut ou cliquez sur un titre pour voir "
-#~ "l'article détaillé. Glissez-déposez vos articles sur un jour pour "
-#~ "modifier sa date de publication."
-
-#~ msgid ""
-#~ "Click here for a single screen that shows the publication status of all "
-#~ "your content."
-#~ msgstr "Voir le statut de tout votre contenu en un coup d'œil."
-
-#~ msgid ""
-#~ "Use the content overview to see how content on your site is progressing. "
-#~ "Filter by specific categories or date ranges to see details about each "
-#~ "post in progress."
-#~ msgstr ""
-#~ "Utilisez la boite à idées pour voir comment progresse le contenu de votre "
-#~ "site. Filtrez par catégories ou périodes pour voir les détails de chaque "
-#~ "document en progression."
-
-#~ msgid ""
-#~ "Create custom post statuses to define the stages of your publishing "
-#~ "workflow."
-#~ msgstr ""
-#~ "Créer des statuts d'articles personnalisés pour mieux définir les étapes "
-#~ "de votre workflow."
-
-#~ msgid ""
-#~ "Create your own post statuses to add structure your publishing workflow. "
-#~ "You can change existing or add new ones anytime, and drag and drop to "
-#~ "change their order."
-#~ msgstr ""
-#~ "Créez vos propres statuts d'articles pour respecter la structure de votre "
-#~ "flux de travail. Vous pouvez changer les statuts déjà existants, en "
-#~ "ajouter des nouveaux, et les glisser-déposer pour changer leur ordre."
-
-#~ msgid "Track your content from the WordPress dashboard."
-#~ msgstr "Suivre votre contenu depuis le tableau de bord WordPress."
-
-#~ msgid ""
-#~ "Enable dashboard widgets to quickly get an overview of what state your "
-#~ "content is in."
-#~ msgstr ""
-#~ "Activez les widgets du tableau de bord pour facilement avoir un aperçu de "
-#~ "l'état de votre contenu."
-
-#~ msgid "Edit Custom Statuses"
-#~ msgstr "Modifier les statuts personnalisés"
-
-#~ msgid "Share internal notes with your team."
-#~ msgstr "Partager des notes internes avec votre équipe."
-
-#~ msgid ""
-#~ "Use editorial comments to hold a private discussion about a post. "
-#~ "Communicate directly with your writers or editors about what works and "
-#~ "what needs to be improved for each piece."
-#~ msgstr ""
-#~ "Utilisez les Commentaires Éditoriaux pour tenir une discussion privée en "
-#~ "rapport avec un article. Communiquez directement avec vos rédacteurs ou "
-#~ "éditeurs sur ce que vous voulez faire ou améliorer pour chaque article."
-
-#~ msgid ""
-#~ "With Metadata you can customize the extra data that’s tracked for your "
-#~ "content."
-#~ msgstr "Détailler tout ce qui importe pour vos articles en progression."
-
-#~ msgid ""
-#~ "Log details on every assignment using configurable editorial metadata. "
-#~ "It’s completely customizable; create fields for everything from due date "
-#~ "to location to contact information to role assignments."
-#~ msgstr ""
-#~ "Enregistrez plus de détails sur tout contenu grâce aux métadonnées de "
-#~ "rédaction. Ces données sont entièrement personnalisable : créez vos "
-#~ "champs pour toute information, comme la date d'échéance, la localisation, "
-#~ "les informations d'un contact ou encore les attributions de rôles."
-
-#~ msgid "Name conflicts with slug for another term. Please choose again."
-#~ msgstr "Nom en conflit avec l'abréviation d'un autre terme."
-
-#~ msgid "Could not update the term: %s "
-#~ msgstr "Impossible de modifier le terme : %s "
-
-#~ msgid "Quick Edit"
-#~ msgstr "Modification rapide"
-
-#~ msgid "Quick Edit"
-#~ msgstr "Modification rapide"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved notifications for PublishPress"
-#~ msgstr "Retour à PublishPress"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved Notifications for PublishPress"
-#~ msgstr "Retour à PublishPress"
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with your content."
-#~ msgstr ""
-#~ "Tenir au courant votre équipe des changements importants sur votre "
-#~ "contenu."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with a given content. Each status change or editorial comment sends out a "
-#~ "message to users subscribed to a post. User groups can be used to manage "
-#~ "who receives notifications on what."
-#~ msgstr ""
-#~ "Grâce aux notifications par email, vous pouvez tenir votre équipe informé "
-#~ "sur ce qu'il se passe à propos d'un contenu précis. Chaque changement de "
-#~ "statut ou commentaire éditorial déclenche l'envoi d'un email aux "
-#~ "utilisateurs qui suivent un article. Les groupes d'utilisateurs peuvent "
-#~ "être utilisés pour configurer ces alertes."
-
-#, fuzzy
-#~| msgid "My Content Notifications"
-#~ msgid "Following"
-#~ msgstr "Articles suivis"
-
-#, fuzzy
-#~| msgid "Respond to this post"
-#~ msgid "Follow updates to this post"
-#~ msgstr "Répondre à cet article"
-
-#, fuzzy
-#~| msgid ""
-#~| "Nonce check failed. Please ensure you're supposed to be adding editorial "
-#~| "comments."
-#~ msgid ""
-#~ "Nonce check failed. Please ensure you can add users or user groups to a "
-#~ "post."
-#~ msgstr ""
-#~ "Vérification échouée. Merci de vous assurer que vous avez le droit "
-#~ "d'ajouter des commentaires éditoriaux."
-
-#~ msgid ""
-#~ "Organize your users into groups who can take different roles in your "
-#~ "publishing workflow."
-#~ msgstr ""
-#~ "Organise vos utilisateurs en groupes pour correspondre à votre structure."
-
-#~ msgid ""
-#~ "Configure user groups to organize all of the users on your site. Each "
-#~ "user can be in many user groups and you can change them at any time."
-#~ msgstr ""
-#~ "Configurez des groupes d'utlisateurs pour organiser tous les utilisateurs "
-#~ "de votre site. Chaque utilisateur peut être dans plusieurs groupes, et "
-#~ "retiré de l'un d'eux à tout moment."
-
-#~ msgid "Are you sure you want to delete the user group?"
-#~ msgstr "Êtes-vous sûr de vouloir supprimer le groupe d'utilisateurs ?"
-
-#~ msgid "Error adding usergroup."
-#~ msgstr "Erreur lors de l'ajout du groupe."
-
-#~ msgid "Error updating user group."
-#~ msgstr "Erreur lors de la modification du groupe."
-
-#~ msgid "Error deleting user group."
-#~ msgstr "Erreur lors de la suppression du groupe."
-
-#~ msgid "The name is used to identify the user group."
-#~ msgstr "Le nom est utilisé pour identifier le groupe d'utilisateurs."
-
-#~ msgid ""
-#~ "The description is primarily for administrative use, to give you some "
-#~ "context on what the user group is to be used for."
-#~ msgstr ""
-#~ "La description sert principalement aux administrateurs, pour vous donner "
-#~ "le contexte d'utilisation du groupe."
-
-#~ msgid "Update User Group"
-#~ msgstr "Modifier le groupe d'utilisateurs"
-
-#~ msgid "Add New User Group"
-#~ msgstr "Ajouter un nouveau groupe d'utilisateurs."
-
-#~ msgid "Usergroups"
-#~ msgstr "Groupes d'utilisateurs"
-
-#~ msgid "Select the user groups that you would like to be a part of:"
-#~ msgstr ""
-#~ "Sélectionnez le groupe d'utilisateurs que vous souhaitez rejoindre :"
-
-#~ msgid "Select the user groups that this user should be a part of:"
-#~ msgstr ""
-#~ "Sélectionnez le groupe d'utilisateur que cet utilisateur devrait "
-#~ "rejoindre :"
-
-#~ msgid "No user groups were found."
-#~ msgstr "Aucun groupe d'utilisateurs trouvé."
-
-#~ msgid "Add a new user group. Opens new window."
-#~ msgstr ""
-#~ "Ajoute un nouveau groupe d'utilisateurs (ouvre une nouvelle fenêtre)."
-
-#~ msgid "Add a User Group"
-#~ msgstr "Ajouter un groupe d'utilisateurs"
-
-#~ msgid "Unpublished"
-#~ msgstr "Non publié"
-
-#~ msgid "Please enter a name for the status."
-#~ msgstr "Merci de choisir un nom pour le statut."
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Le nom choisi est protégé. Merci d'en choisir un nouveau."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Ce statut existe déjà. Merci de choisir un nouveau nom."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Impossible de modifier le statut : %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Répondre à cet article"
-
-#~ msgid "Submit Response"
-#~ msgstr "Envoyer la réponse"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Toujours notifier l'administrateur"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Impossible de modifier le groupe : %s "
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr "PublishPress redéfini votre processus de publication WordPress."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Options du calendrier"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Nombre de semaines :"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Nombre de semaines à afficher"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "La suppression d'un statut entraine la réaffectation de tous les articles "
-#~ "au statut par défaut."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Répondre à cet article"
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Coché si l'article a besoin d'une photo."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Taille de l'article en nombre de mots."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Module non reconnu par PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Module non activé. Merci de l'activer depuis la page de "
-#~ "configuration PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Activer"
+# Translation of Plugins - PublishPress: Editorial Calendar, Workflow, Comments, Notifications and Statuses - Stable (latest release) in French (France)
+# This file is distributed under the same license as the Plugins - PublishPress: Editorial Calendar, Workflow, Comments, Notifications and Statuses - Stable (latest release) package.
+msgid ""
+msgstr ""
+"Project-Id-Version: Plugins - PublishPress: Editorial Calendar, Workflow, "
+"Comments, Notifications and Statuses - Stable (latest release)\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n"
+"POT-Creation-Date: 2025-03-13 09:56+0000\n"
+"PO-Revision-Date: 2025-03-18 12:17+0100\n"
+"Last-Translator: \n"
+"Language-Team: French (France)\n"
+"Language: fr_FR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Poedit 3.4.4\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:263
+msgid " Scheduled"
+msgstr " Planifié"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:261
+msgid " Scheduled, but late"
+msgstr " Planifié, mais en retard"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "« Me notifier »"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2043
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr "%1$s #%2$s « %3$s » a été mis à la corbeille par %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2090
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr "%1$s #%2$s « %3$s » a été publié par %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2060
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%1$s #%2$s « %3$s » a été restauré de la corbeille par %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2107
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr "%1$s #%2$s « %3$s » a été dépublié par %4$s %5$s"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2206
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s (%2$s) a dit le %3$s à %4$s :"
+
+#: modules/content-board/library/content-board-utilities.php:538
+#: modules/content-overview/library/content-overview-utilities.php:643
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to
%2$s"
+msgstr " %1$s à
%2$s"
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "%1$s => %2$s"
+msgstr "%1$s => %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1981
+#: modules/editorial-comments/library/EditorialCommentsTable.php:336
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s à %2$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr "%1$s mis à jour le %2$s"
+
+#: modules/calendar/library/calendar-utilities.php:503
+#, php-format
+msgid "%1s weeks"
+msgstr "%1s semaines"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "Rôle %d"
+msgstr[1] "Rôles %d"
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "%d utilisateur/utilisatrice"
+msgstr[1] "%d utilisateurs/utilisatrices"
+
+#: modules/calendar/library/calendar-methods.php:1241
+#: modules/calendar/library/calendar-utilities.php:513
+msgid "%d week"
+msgstr "%d semaine"
+
+#: modules/calendar/library/calendar-methods.php:1242
+msgid "%d weeks"
+msgstr "%d semaines"
+
+#: modules/content-overview/content-overview.php:757
+#: modules/content-board/library/content-board-methods.php:253
+#, php-format
+msgid "%s could not be created"
+msgstr "%s n’a pas pu être créée"
+
+#: modules/content-overview/content-overview.php:754
+#: modules/content-board/library/content-board-methods.php:250
+#, php-format
+msgid "%s created successfully. Edit %s "
+msgstr "%s a bien été créée. Modifier %s "
+
+#: modules/notifications-log/notifications-log.php:279
+#, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "%s notification trouvée."
+msgstr[1] "%s notifications trouvées."
+
+#: modules/calendar/library/calendar-utilities.php:54
+#: modules/content-overview/library/content-overview-utilities.php:710
+msgid "(Hide all)"
+msgstr "(Masquer tous)"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(sans titre)"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "- tout statut -"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-select-handler.php:255
+#, php-format
+msgid "-- Select %s --"
+msgstr "-- Sélectionner %s --"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-user-handler.php:79
+msgid "-- Select a user --"
+msgstr "-- Sélectionner un utilisateur/utilisatrice --"
+
+#: modules/calendar/calendar.php:265
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on Github"
+"a>
"
+msgstr ""
+"Pour plus d’informations :
Documentation du calendrier "
+"p>
PublishPress sur "
+"Github
"
+
+#: modules/editorial-comments/editorial-comments.php:88
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Pour plus d’informations :
Documentation des "
+"commentaires éditoriaux
PublishPress sur Github
"
+
+#: modules/editorial-metadata/editorial-metadata.php:125
+msgid ""
+"For more information:
Editorial Fields "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Pour plus d’informations :
Documentation des champs "
+"éditoriaux
PublishPress sur Github
"
+
+#: modules/notifications/notifications.php:102
+msgid ""
+"For more information:
Notifications Documentation "
+"p>
PublishPress on "
+"Github
"
+msgstr ""
+"Pour plus d’informations :
Documentation des notifications"
+"a>
PublishPress "
+"sur Github
"
+
+#: modules/editorial-comments/editorial-comments.php:83
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"Les commentaires éditoriaux vous aident à réduire la surcharge d’e-mails "
+"et de maintenir la conversation là où elle est importante : votre contenu. "
+"Les commentaires en ligne dans l’administration, semblables à ceux que vous "
+"trouvez à la fin d’un article de blog, permettent aux rédacteurs/rédactrices "
+"et aux éditeurs/éditrices de laisser des retours en privé et de discuter de "
+"ce qui doit être modifié avant la publication.
Toute personne ayant "
+"accès à la vue de la publication en cours aura également la possibilité de "
+"la commenter. Si vous avez activé les notifications, les personnes qui "
+"suivent la publication recevront un e-mail chaque fois qu’un commentaire "
+"sera laissé.
"
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+msgid ""
+"Keep track of important details about your content with editorial fields. "
+"This feature allows you to create as many date, text, number, etc. fields as "
+"you like, and then use them to store information like contact details or the "
+"location of an interview.
Once you’ve set your fields up, editorial "
+"fields integrates with both the calendar and the content overview. Make an "
+"editorial fields item visible to have it appear to the rest of your team. "
+"Keep it hidden to restrict the information between the writer and their "
+"editor.
"
+msgstr ""
+"Garder une trace des détails importants concernant votre contenu grâce "
+"aux champs éditoriaux. Cette fonctionnalité vous permet de créer autant de "
+"champs de date, de texte, de numéro, etc. que vous le souhaitez, puis de les "
+"utiliser pour stocker des informations telles que des coordonnées ou "
+"l’emplacement d’une interview.
Une fois que vous avez défini vos "
+"champs, les métadonnées éditoriales s’intègrent à la fois au calendrier et à "
+"l’aperçu du contenu. Rendez visible un élément de champs éditoriaux pour "
+"qu’il apparaisse au reste de votre équipe. Gardez-le caché pour limiter les "
+"informations entre le rédacteur/rédactrice et son éditeur/éditrice.
"
+
+#: modules/notifications/notifications.php:97
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"Les notifications vous permettent de rester informé de l’évolution de vos "
+"contenus les plus importants. Les utilisateurs/utilisatrices peuvent "
+"s’abonner aux notifications sur une publication, individuellement ou en "
+"sélectionnant des rôles.
Lorsqu’elles sont activées, des notifications "
+"peuvent être envoyées chaque fois qu’une publication change d’état ou qu’un "
+"commentaire éditorial est laissé par un rédacteur/redactrice ainsi qu’un "
+"éditeur/éditrice.
"
+
+#: modules/calendar/calendar.php:260
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+"Le calendrier est une vue pratique de votre contenu, semaine par semaine "
+"ou mois par mois. Vous pouvez voir rapidement quelles histoires sont sur la "
+"bonne voie pour être publiées à temps, et celles qui nécessitent un effort "
+"supplémentaire.
"
+
+#: modules/notifications/notifications.php:2156
+#, php-format
+msgid "== %s Details =="
+msgstr "== %s Détails =="
+
+#: modules/notifications/notifications.php:2175
+#: modules/notifications/notifications.php:2228
+msgid "== Actions =="
+msgstr "== Actions =="
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2083
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s publié : « %3$s »"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2053
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] %2$s Restauré de la corbeille : « %3$s »"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2117
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$s état modifié pour « %3$s »"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2036
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s mis à la corbeille : « %3$s »"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2100
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s non publié : « %3$s »"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2019
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] Nouveau %2$s créé : « %3$s »"
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2192
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] Nouveau commentaire éditorial : « %2$s »"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2026
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr "Un nouveau %1$s (#%2$s \"%3$s\") a été créé par %4$s %5$s"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2199
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr "Un nouveau commentaire éditorial a été ajouté à %3$s #%1$s « %2$s »"
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr "À propos"
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr "Accès refusé"
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr "Nonce d’action non trouvé."
+
+#: modules/notifications/notifications.php:663
+msgid "Active Notifications"
+msgstr "Notifications actives"
+
+#: modules/notifications/notifications.php:1874
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+"Ajoutez une liste de slugs de taxonomie séparés par des virgules qui ne "
+"doivent pas être chargés par le filtre de contenu de taxonomie lors de "
+"l’ajout d’un nouveau flux de notification."
+
+#: modules/editorial-comments/editorial-comments.php:561
+#: modules/editorial-comments/editorial-comments.php:565
+msgid "Add an editorial comment"
+msgstr "Ajouter un commentaire éditorial"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:338
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:649
+msgid "Add Another Option"
+msgstr "Ajouter une autre option"
+
+#: modules/content-overview/library/content-overview-utilities.php:61
+msgid "Add Column"
+msgstr "Ajouter une colonne"
+
+#: modules/editorial-comments/editorial-comments.php:583
+msgid "Add Comment"
+msgstr "Ajouter un commentaire"
+
+#: modules/calendar/library/calendar-methods.php:1213
+#, php-format
+msgid "Add content for %s"
+msgstr "Ajouter le contenu pour %s"
+
+#: modules/notifications/notifications.php:2177
+#: modules/notifications/notifications.php:2234
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr "Ajouter un commentaire éditorial : %s"
+
+#: modules/calendar/library/calendar-utilities.php:618
+#: modules/content-board/library/content-board-utilities.php:399
+#: modules/content-overview/library/content-overview-utilities.php:207
+msgid "Add Filter"
+msgstr "Ajouter un filtre"
+
+#: modules/calendar/library/calendar-utilities.php:601
+#: modules/content-board/library/content-board-utilities.php:236
+#: modules/content-board/library/content-board-utilities.php:253
+#: modules/content-board/library/content-board-utilities.php:382
+#: modules/content-overview/library/content-overview-utilities.php:44
+#: modules/content-overview/library/content-overview-utilities.php:190
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:68
+msgid "Add New"
+msgstr "Ajouter"
+
+#: modules/content-board/library/content-board-utilities.php:987
+#: modules/content-overview/library/content-overview-utilities.php:314
+#, php-format
+msgid "Add New %s"
+msgstr "Ajouter %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:458
+msgid "Add New Editorial Fields"
+msgstr "Ajouter de nouveaux champs éditoriaux"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:730
+msgid "Add New Editorial fields term"
+msgstr "Ajouter un nouveau terme de champs éditoriaux"
+
+#: publishpress.php:1410
+msgid "Add New Notification"
+msgstr "Ajouter une nouvelle notification"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:370
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:682
+msgid "Add to post types"
+msgstr "Ajouter aux types de publication"
+
+#: modules/improved-notifications/improved-notifications.php:95
+msgid "Advanced Notifications"
+msgstr "Notifications avancées"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:517
+msgid "All"
+msgstr "Tous"
+
+#: modules/calendar/library/calendar-utilities.php:90
+#: modules/calendar/library/calendar-utilities.php:93
+#: modules/content-board/library/content-board-utilities.php:624
+#: modules/content-board/library/content-board-utilities.php:627
+#: modules/content-overview/library/content-overview-utilities.php:746
+#: modules/content-overview/library/content-overview-utilities.php:749
+#, php-format
+msgid "All %s"
+msgstr "Toutes les %s"
+
+#: modules/notifications-log/notifications-log.php:213
+msgid "All Actions"
+msgstr "Toutes les actions"
+
+#: modules/calendar/library/calendar-methods.php:1239
+#: modules/calendar/library/calendar-utilities.php:117
+#: modules/calendar/library/calendar-utilities.php:120
+#: modules/content-board/library/content-board-utilities.php:649
+#: modules/content-board/library/content-board-utilities.php:652
+#: modules/content-overview/library/content-overview-utilities.php:771
+#: modules/content-overview/library/content-overview-utilities.php:774
+msgid "All authors"
+msgstr "Tous les auteurs/autrices"
+
+#: modules/calendar/library/calendar-methods.php:1237
+msgid "All categories"
+msgstr "Toutes les catégories"
+
+#: modules/notifications-log/notifications-log.php:214
+msgid "All Channels"
+msgstr "Tous les canaux"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:607
+msgid "All channels"
+msgstr "Tous les canaux"
+
+#: modules/editorial-metadata/editorial-metadata.php:455
+msgid "All Editorial Fields"
+msgstr "Tous les champs éditoriaux"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:590
+msgid "All events"
+msgstr "Tous les évènements"
+
+#: modules/editorial-metadata/editorial-metadata.php:1243
+#: modules/editorial-metadata/editorial-metadata.php:1400
+msgid "All options value and labels are required."
+msgstr "Toutes les valeurs et libellés des options sont obligatoires."
+
+#: modules/calendar/library/calendar-utilities.php:150
+#: modules/content-board/library/content-board-utilities.php:681
+#: modules/content-overview/library/content-overview-utilities.php:803
+msgid "All post types"
+msgstr "Tous les types de publication"
+
+#: modules/editorial-comments/editorial-comments.php:219
+#: modules/notifications-log/notifications-log.php:211
+#: modules/editorial-comments/library/EditorialCommentsTable.php:181
+msgid "All Posts"
+msgstr "Toutes les publications"
+
+#: modules/calendar/library/calendar-methods.php:479
+msgid "All posts"
+msgstr "Toutes les publications"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+msgid "All Receivers"
+msgstr "Tous les destinataires"
+
+#: modules/calendar/library/calendar-utilities.php:370
+#: modules/content-board/library/content-board-utilities.php:895
+#: modules/content-overview/library/content-overview-utilities.php:1023
+msgid "All status"
+msgstr "Tous les états"
+
+#: modules/notifications-log/notifications-log.php:215
+msgid "All Statuses"
+msgstr "Tous les états"
+
+#: modules/calendar/library/calendar-methods.php:1236
+#: modules/calendar/library/calendar-utilities.php:51
+#: modules/content-board/library/content-board-utilities.php:598
+#: modules/content-overview/library/content-overview-utilities.php:707
+msgid "All statuses"
+msgstr "Tous les états"
+
+#: modules/calendar/library/calendar-methods.php:1238
+msgid "All tags"
+msgstr "Toutes les étiquettes"
+
+#: modules/calendar/library/calendar-methods.php:1240
+msgid "All types"
+msgstr "Tous les types"
+
+#: modules/editorial-comments/editorial-comments.php:220
+#: modules/editorial-comments/library/EditorialCommentsTable.php:196
+msgid "All Users"
+msgstr "Tous les comptes"
+
+#: modules/notifications-log/notifications-log.php:212
+msgid "All Workflows"
+msgstr "Tous les flux de travail"
+
+#: modules/calendar/library/calendar-methods.php:111
+msgid "Allow public access to subscriptions in iCal or Google Calendar"
+msgstr "Autoriser l’accès public aux abonnements à iCal ou Calendrier Google"
+
+#: modules/notifications/notifications.php:1738
+msgid "Always notify the author of the content:"
+msgstr "Prévenez toujours l’auteur/autrice du contenu :"
+
+#: modules/notifications/notifications.php:1746
+msgid "Always notify users who have edited the content:"
+msgstr ""
+"Prévenez toujours les utilisateurs/utilisatrices qui ont modifié le contenu :"
+
+#: modules/calendar/library/calendar-methods.php:159
+msgid "Always show complete post titles"
+msgstr "Toujours afficher les titres complets des publications"
+
+#: modules/content-board/content-board.php:847
+#: modules/content-board/library/content-board-methods.php:39
+#: modules/content-board/library/content-board-methods.php:107
+msgid "An error occured"
+msgstr "Une erreur s’est produite"
+
+#: modules/content-board/content-board.php:1059
+#: modules/calendar/library/calendar-utilities.php:198
+#: modules/calendar/library/calendar-utilities.php:309
+#: modules/calendar/library/calendar-utilities.php:347
+#: modules/calendar/library/calendar-utilities.php:433
+#: modules/content-board/library/content-board-utilities.php:548
+#: modules/content-board/library/content-board-utilities.php:558
+#: modules/content-board/library/content-board-utilities.php:729
+#: modules/content-board/library/content-board-utilities.php:840
+#: modules/content-board/library/content-board-utilities.php:878
+#: modules/content-board/library/content-board-utilities.php:958
+#: modules/content-overview/library/content-overview-utilities.php:653
+#: modules/content-overview/library/content-overview-utilities.php:663
+#: modules/content-overview/library/content-overview-utilities.php:851
+#: modules/content-overview/library/content-overview-utilities.php:962
+#: modules/content-overview/library/content-overview-utilities.php:1000
+#: modules/content-overview/library/content-overview-utilities.php:1086
+msgid "Apply"
+msgstr "Appliquer"
+
+#: modules/calendar/library/calendar-utilities.php:702
+#: modules/content-board/library/content-board-utilities.php:71
+#: modules/content-board/library/content-board-utilities.php:337
+#: modules/content-board/library/content-board-utilities.php:483
+#: modules/content-overview/library/content-overview-methods.php:302
+#: modules/content-overview/library/content-overview-utilities.php:145
+#: modules/content-overview/library/content-overview-utilities.php:291
+msgid "Apply Changes"
+msgstr "Appliquer les modifications"
+
+#: modules/calendar/library/calendar-methods.php:1227
+msgid "Apr"
+msgstr "Avr"
+
+#: modules/editorial-metadata/editorial-metadata.php:372
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+"Confirmez-vous de vouloir supprimer ce terme ? Toutes les métadonnées de ce "
+"terme seront conservées mais ne seront pas visibles à moins que ce terme ne "
+"soit ajouté à nouveau."
+
+#: modules/editorial-metadata/editorial-metadata.php:220
+msgid "Assignment"
+msgstr "Devoir"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "Notifications asynchrones"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "asynchronous"
+msgstr "asynchrone"
+
+#: modules/calendar/library/calendar-methods.php:179
+msgid "At least one post type must be selected"
+msgstr "Au moins un type de publication doit être sélectionné"
+
+#: modules/editorial-comments/editorial-comments.php:571
+msgid "Attach file"
+msgstr "Attacher un fichier"
+
+#: modules/calendar/library/calendar-methods.php:1231
+msgid "Aug"
+msgstr "Aoû"
+
+#: modules/calendar/calendar.php:988 modules/calendar/calendar.php:1210
+#: modules/content-board/content-board.php:699
+#: modules/content-board/content-board.php:710
+#: modules/content-board/content-board.php:753
+#: modules/content-board/content-board.php:812
+#: modules/content-overview/content-overview.php:835
+#: modules/content-overview/content-overview.php:849
+#: modules/content-overview/content-overview.php:894
+#: modules/content-overview/content-overview.php:956
+#: modules/content-overview/content-overview.php:1218
+#: modules/calendar/library/calendar-methods.php:875
+#: modules/calendar/library/calendar-methods.php:1255
+#: modules/calendar/library/calendar-utilities.php:115
+#: modules/calendar/library/calendar-utilities.php:1075
+#: modules/calendar/library/calendar-utilities.php:1191
+#: modules/content-board/library/content-board-utilities.php:647
+#: modules/content-board/library/content-board-utilities.php:1180
+#: modules/content-overview/library/content-overview-utilities.php:506
+#: modules/content-overview/library/content-overview-utilities.php:769
+#: modules/editorial-comments/library/EditorialCommentsTable.php:228
+msgid "Author"
+msgstr "Auteur/autrice"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2161
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr "Auteur/Autrice : %1$s (%2$s)"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "Auteurs"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "Auteurs du contenu"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:26
+msgid "Authors of the parent page"
+msgstr "Auteurs/autrices de la page parente"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr "Brouillon automatique"
+
+#: modules/improved-notifications/improved-notifications.php:1110
+msgid "Available fields"
+msgstr "Available fields"
+
+#: modules/notifications/notifications.php:1754
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "Taxonomies en liste noire pour les notifications"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:163
+msgid "Blog ID: %d"
+msgstr "ID du blog : %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:383
+msgid "Blog: "
+msgstr "Blog : "
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr "Corps"
+
+#: modules/editorial-comments/editorial-comments.php:587
+#: modules/content-board/library/content-board-utilities.php:554
+#: modules/content-overview/library/content-overview-utilities.php:659
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:425
+msgid "Cancel"
+msgstr "Annuler"
+
+#: modules/content-board/library/content-board-methods.php:150
+msgid "Card Data updated successfully."
+msgstr "Les données de la carte ont bien été mises à jour."
+
+#: modules/calendar/library/calendar-methods.php:885
+#: modules/content-board/library/content-board-utilities.php:1190
+#: modules/content-overview/library/content-overview-utilities.php:516
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "Catégories"
+
+#: modules/calendar/library/calendar-utilities.php:1080
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Catégorie"
+msgstr[1] "Catégories"
+
+#: modules/content-board/library/content-board-utilities.php:555
+#: modules/content-overview/library/content-overview-utilities.php:660
+msgid "Change"
+msgstr "Changer"
+
+#: modules/content-board/library/content-board-methods.php:95
+#: modules/content-board/library/content-board-methods.php:123
+msgid "Changes saved!"
+msgstr "Modifications enregistrées !"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:478
+#: modules/improved-notifications/improved-notifications.php:1282
+msgid "Channels"
+msgstr "Canaux"
+
+#: publishpress.php:675
+msgid "Cheatin’ uh?"
+msgstr "Une mauvaise manipulation ?"
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Checkbox"
+msgstr "Case à cocher"
+
+#: modules/calendar/library/calendar-utilities.php:329
+#: modules/content-board/library/content-board-utilities.php:860
+#: modules/content-overview/library/content-overview-utilities.php:982
+msgid "Checked"
+msgstr "Sélectionné"
+
+#: modules/editorial-comments/editorial-comments.php:78
+msgid "Choose Post Types"
+msgstr "Choisissez les types de publication"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:472
+#: modules/improved-notifications/improved-notifications.php:1276
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+"Choisissez les canaux vers lesquels chaque flux de travail enverra des "
+"notifications :"
+
+#: modules/improved-notifications/improved-notifications.php:1112
+msgid "Click here to read more about shortcode options..."
+msgstr "Cliquez ici pour en savoir plus sur les options des codes courts…"
+
+#: modules/calendar/library/calendar-utilities.php:1321
+msgid "Click here to subscribe in iCal or Google Calendar"
+msgstr "Cliquez ici pour vous abonner à iCal ou Calendrier Google"
+
+#: modules/content-board/content-board.php:744
+msgid "Click the \"Add New\" button to create new card data."
+msgstr ""
+"Cliquer sur le bouton « Ajouter » pour créer de nouvelles données de carte."
+
+#: modules/content-overview/content-overview.php:884
+msgid "Click the \"Add New\" button to create new columns."
+msgstr "Cliquer sur le bouton « Ajouter » pour créer de nouvelles colonnes."
+
+#: modules/content-board/content-board.php:803
+#: modules/content-overview/content-overview.php:946
+#: modules/calendar/library/calendar-utilities.php:1181
+msgid "Click the \"Add New\" button to create new filters."
+msgstr "Cliquer sur le bouton « Ajouter » pour créer de nouveaux filtres."
+
+#: modules/calendar/library/calendar-methods.php:1204
+msgid "Click to add"
+msgstr "Cliquez pour ajouter"
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+"Cliquez pour supprimer le fichier journal. Faites attention, cette opération "
+"est irréversible. "
+
+#: modules/notifications/notifications.php:541
+#: modules/notifications/notifications.php:953
+msgid "Click to start being notified on updates for this post"
+msgstr "Cliquez pour être informé des mises à jour de ce contenu"
+
+#: modules/notifications/notifications.php:537
+#: modules/notifications/notifications.php:947
+msgid "Click to stop being notified on updates for this post"
+msgstr "Cliquez pour ne plus être informé des mises à jour de ce contenu"
+
+#: modules/calendar/library/calendar-methods.php:1209
+msgid "Close"
+msgstr "Fermer"
+
+#: modules/content-overview/library/content-overview-utilities.php:52
+msgid "Column Title"
+msgstr "Titre de la colonne"
+
+#: modules/content-overview/content-overview.php:654
+msgid "Column updated successfully."
+msgstr "La colonne a bien été mise à jour."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Comment"
+msgstr "Commentaire"
+
+#: modules/editorial-comments/editorial-comments.php:1248
+msgid "Comment author name field:"
+msgstr "Champ du nom de l’auteur du commentaire :"
+
+#: modules/editorial-comments/editorial-comments.php:1190
+msgid "Comment deleted successfully."
+msgstr "Le commentaire a bien été suppromé."
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr "Commentaire : %s (%d)"
+
+#: publishpress.php:671
+msgid "Configure"
+msgstr "Configurer"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr "Contact"
+
+#: modules/improved-notifications/improved-notifications.php:1098
+#: modules/calendar/library/calendar-methods.php:902
+#: modules/content-board/library/content-board-utilities.php:1207
+#: modules/content-overview/library/content-overview-utilities.php:533
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr "Contenu"
+
+#: modules/content-board/content-board.php:142
+#: modules/content-board/content-board.php:379
+#: modules/content-board/content-board.php:396
+#: modules/content-board/content-board.php:397
+msgid "Content Board"
+msgstr "Tableau des contenus"
+
+#: modules/calendar/calendar.php:216 modules/calendar/calendar.php:415
+#: modules/calendar/calendar.php:432 modules/calendar/calendar.php:433
+msgid "Content Calendar"
+msgstr "Calendrier des contenus"
+
+#: modules/content-overview/content-overview.php:156
+#: modules/content-overview/content-overview.php:376
+#: modules/content-overview/content-overview.php:393
+#: modules/content-overview/content-overview.php:394
+msgid "Content Overview"
+msgstr "Aperçu du contenu"
+
+#: modules/notifications-log/notifications-log.php:832
+msgid "Content:"
+msgstr "Contenu :"
+
+#: modules/calendar/library/calendar-utilities.php:1315
+msgid "Copy to the clipboard"
+msgstr "Copier dans le presse-papiers"
+
+#: modules/content-board/library/content-board-utilities.php:1121
+#: modules/content-overview/library/content-overview-utilities.php:447
+#, php-format
+msgid "Create %s"
+msgstr "Créer %s"
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr "Créé le"
+
+#: modules/calendar/library/calendar-utilities.php:1238
+msgid "Current week"
+msgstr "Semaine courante"
+
+#: modules/content-overview/content-overview.php:883
+msgid "Custom Columns"
+msgstr "Colonnes personnalisées"
+
+#: modules/content-board/content-board.php:802
+#: modules/content-overview/content-overview.php:945
+#: modules/calendar/library/calendar-utilities.php:1180
+msgid "Custom filters"
+msgstr "Filtres personnalisés"
+
+#: modules/content-board/content-board.php:743
+msgid "Custom Items"
+msgstr "Éléments personnalisés"
+
+#: modules/content-board/library/content-board-utilities.php:32
+msgid "Customize Card Data"
+msgstr "Personnaliser les données de la carte"
+
+#: modules/content-overview/library/content-overview-methods.php:263
+msgid "Customize Columns"
+msgstr "Personnaliser les colonnes"
+
+#: modules/calendar/library/calendar-utilities.php:473
+#: modules/content-board/library/content-board-utilities.php:42
+#: modules/content-overview/library/content-overview-methods.php:273
+msgid "Customize Filters"
+msgstr "Personnaliser les filtres"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "Note du tableau de bord"
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard Widgets"
+msgstr "Widgets du tableau de bord"
+
+#: modules/editorial-metadata/editorial-metadata.php:290
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/calendar/library/calendar-utilities.php:1064
+#: modules/content-board/library/content-board-utilities.php:116
+#: modules/content-overview/library/content-overview-methods.php:347
+#: modules/notifications-log/library/NotificationsLogTable.php:496
+msgid "Date"
+msgstr "Date"
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr "Débogage"
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr "Données de débogage"
+
+#: modules/calendar/library/calendar-methods.php:1235
+msgid "Dec"
+msgstr "Déc"
+
+#: modules/content-board/content-board.php:1049
+#: modules/content-board/content-board.php:1066
+msgid "Default Date"
+msgstr "Date par défaut"
+
+#: modules/improved-notifications/improved-notifications.php:222
+msgid "Default notification channels:"
+msgstr "Canaux de notifiation par défaut :"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:300
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:330
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:611
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:641
+msgid "Default option"
+msgstr "Option par défaut"
+
+#: modules/calendar/library/calendar-methods.php:135
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+"Heure de publication par défaut pour les éléments créés dans le calendrier"
+
+#: modules/editorial-comments/editorial-comments.php:652
+#: modules/editorial-comments/library/EditorialCommentsTable.php:434
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:161
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:303
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:333
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:614
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:644
+#: modules/notifications-log/library/NotificationsLogTable.php:376
+#: modules/notifications-log/library/NotificationsLogTable.php:407
+msgid "Delete"
+msgstr "Supprimer"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:408
+msgid "Delete All"
+msgstr "Tout supprimer"
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr "Supprimer le fichier"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:48
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:176
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:474
+msgid "Description"
+msgstr "Description"
+
+#: lib/Legacy/Util.php:239
+msgid "Detailed documentation is also available on the plugin website."
+msgstr ""
+"Une documentation détaillée est également disponible sur le site de "
+"l’extension."
+
+#: modules/dashboard/dashboard.php:368 modules/dashboard/dashboard.php:391
+#: modules/dashboard/dashboard.php:425
+#: modules/calendar/library/calendar-methods.php:527
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+"Désactivé car add_post_type_support (’%1$s’, ’%2$s’) est inclus dans un "
+"fichier chargé."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:291
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:322
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:602
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:633
+msgid "Display Label"
+msgstr "Afficher le libellé"
+
+#: modules/editorial-comments/editorial-comments.php:1275
+msgid "Display Name"
+msgstr "Nom à afficher publiquement"
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr "Documentation"
+
+#: modules/calendar/library/calendar-utilities.php:1308
+msgid "Download .ics file"
+msgstr "Téléchargez le fichier .ics"
+
+#: common/php/class-module.php:332
+msgid "Draft"
+msgstr "Brouillon"
+
+#: modules/content-board/library/content-board-utilities.php:296
+msgid "Drag to change enabled card data order."
+msgstr "Glisser pour modifier l’ordre des données de la carte activée."
+
+#: modules/content-overview/library/content-overview-utilities.php:104
+msgid "Drag to change enabled columns order."
+msgstr "Glisser pour modifier l’ordre des colonnes activées."
+
+#: modules/calendar/library/calendar-utilities.php:661
+#: modules/content-board/library/content-board-utilities.php:442
+#: modules/content-overview/library/content-overview-utilities.php:250
+msgid "Drag to change enabled filters order."
+msgstr "Glisser pour modifier l’ordre des filtres activés."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:258
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:571
+msgid "Dropdown Option"
+msgstr "Option de la liste déroulante"
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "Dropdown Select"
+msgstr "Sélection par liste déroulante"
+
+#: modules/improved-notifications/improved-notifications.php:214
+msgid "Duplicated notification threshold:"
+msgstr "Seuil de notification dupliquée :"
+
+#: common/php/class-module.php:782
+msgid "E-mails"
+msgstr "E-mails"
+
+#: modules/content-board/content-board.php:1178
+#: modules/content-board/content-board.php:1284
+#: modules/content-overview/content-overview.php:1220
+#: modules/content-overview/content-overview.php:1703
+#: modules/editorial-comments/editorial-comments.php:641
+#: modules/calendar/library/calendar-methods.php:1246
+#: modules/calendar/library/calendar-utilities.php:1097
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:159
+msgid "Edit"
+msgstr "Modifier"
+
+#: modules/editorial-metadata/editorial-metadata.php:456
+msgid "Edit Editorial Fields"
+msgstr "Modifier les champs éditoriaux"
+
+#: modules/efmigration/efmigration.php:288
+msgid ""
+"Edit Flow should not be used alongside PublishPress Planner. If you want to "
+"use PublishPress Planner, please complete Edit Flow data migration and then "
+"deactivate Edit Flow."
+msgstr ""
+"Edit Flow ne doit pas être utilisé en même temps que PublishPress Planner. "
+"Si vous souhaitez utiliser PublishPress Planner, terminer d’abord la "
+"migration des données d’Edit Flow, puis désactiver Edit Flow."
+
+#: publishpress.php:1411
+msgid "Edit Notification"
+msgstr "Modifier la notification"
+
+#: modules/content-board/content-board.php:1174
+#: modules/content-overview/content-overview.php:1699
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr "Editer cette fiche entreprise"
+
+#: modules/notifications/notifications.php:2180
+#: modules/notifications/notifications.php:2237
+#, php-format
+msgid "Edit: %s"
+msgstr "Modifier : %s"
+
+#: modules/improved-notifications/improved-notifications.php:1099
+msgid "Editorial Comment"
+msgstr "Commentaire éditorial"
+
+#: modules/editorial-comments/editorial-comments.php:63
+#: modules/editorial-comments/editorial-comments.php:244
+#: modules/editorial-comments/editorial-comments.php:245
+#: modules/editorial-comments/editorial-comments.php:466
+msgid "Editorial Comments"
+msgstr "Commentaires éditoriaux"
+
+#: modules/content-board/content-board.php:760
+#: modules/content-board/content-board.php:820
+#: modules/content-overview/content-overview.php:903
+#: modules/content-overview/content-overview.php:964
+#: modules/editorial-metadata/editorial-metadata.php:95
+#: modules/editorial-metadata/editorial-metadata.php:511
+#: modules/editorial-metadata/editorial-metadata.php:1719
+#: modules/editorial-metadata/editorial-metadata.php:1720
+#: modules/calendar/library/calendar-utilities.php:1199
+msgid "Editorial Fields"
+msgstr "Champs éditoriaux"
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Editorial fields order updated."
+msgstr "L’ordre des champs éditoriaux a été mis à jour."
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Editorial fields term added."
+msgstr "Terme de champs éditoriaux ajouté."
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Editorial fields term deleted."
+msgstr "Terme de champs éditoriaux supprimé."
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Editorial fields term doesn't exist."
+msgstr "Le terme de champs éditoriaux n’existe pas."
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Editorial fields term updated."
+msgstr "Terme des champs éditoriaux mis à jour."
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Editorial fields visibility changed."
+msgstr "La visibilité des champs éditoriaux a été modifiée."
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:471
+#: modules/improved-notifications/improved-notifications.php:1275
+msgid "Editorial Notifications"
+msgstr "Notifications éditoriales"
+
+#: modules/calendar/library/calendar-utilities.php:1288
+msgid "Eight months"
+msgstr "Huit mois"
+
+#: modules/calendar/library/calendar-utilities.php:1294
+msgid "Eleven months"
+msgstr "Onze mois"
+
+#: modules/editorial-comments/editorial-comments.php:1278
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "E-mail"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "e-mail"
+
+#: modules/notifications/notifications.php:1730
+msgid "Email from:"
+msgstr "E-mail de l’expéditeur :"
+
+#: modules/content-overview/library/content-overview-utilities.php:25
+msgid "Enable Columns"
+msgstr "Activer les colonnes"
+
+#: modules/calendar/library/calendar-utilities.php:582
+#: modules/content-board/library/content-board-utilities.php:363
+#: modules/content-overview/library/content-overview-utilities.php:171
+msgid "Enable Filters"
+msgstr "Activer les filtres"
+
+#: modules/editorial-comments/editorial-comments.php:1241
+msgid "Enable for these post types:"
+msgstr "Activer pour ces types de publications :"
+
+#: modules/content-board/library/content-board-utilities.php:217
+msgid "Enable or Disable"
+msgstr "Activer ou désactiver"
+
+#: modules/content-board/library/content-board-utilities.php:223
+msgid "Enable or Disable Content Board Card Data."
+msgstr ""
+"Activer ou désactiver les données de la carte du « Tableau des contenus »."
+
+#: modules/content-board/library/content-board-utilities.php:369
+msgid "Enable or Disable Content Board filter."
+msgstr "Activer ou désactiver le filtre du « Tableau des contenus »."
+
+#: modules/calendar/library/calendar-utilities.php:588
+msgid "Enable or Disable Content calendar filter."
+msgstr "Activer ou désactiver le filtre du calendrier des contenus."
+
+#: modules/content-overview/library/content-overview-utilities.php:177
+msgid "Enable or Disable Content Overview filter."
+msgstr "Activer ou désactiver le filtre de la « Vue d’ensemble du contenu »."
+
+#: modules/content-overview/library/content-overview-utilities.php:31
+msgid "Enable or Disable Content Overview table column."
+msgstr ""
+"Activer ou désactiver la colonne du tableau « Vue d’ensemble du contenu »."
+
+#: modules/calendar/library/calendar-methods.php:103
+msgid "Enable subscriptions in iCal or Google Calendar"
+msgstr "Activez les abonnements à iCal ou Calendrier Google"
+
+#: modules/dashboard/dashboard.php:369 modules/dashboard/dashboard.php:392
+#: modules/dashboard/dashboard.php:426
+#: modules/calendar/library/calendar-methods.php:528
+msgid "Enabled"
+msgstr "Activé"
+
+#: modules/modules-settings/modules-settings.php:223
+msgid "Enabled features"
+msgstr "Fonctionnalitées activées"
+
+#: modules/calendar/library/calendar-utilities.php:1256
+msgid "End date"
+msgstr "Date de fin"
+
+#: lib/Legacy/Util.php:203
+msgid "Enhance the power of PublishPress Planner with the Pro version:"
+msgstr "Améliorez la puissance de PublishPress Planner avec la vérsion Pro :"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:263
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:574
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+
+#: modules/notifications/notifications.php:606
+msgid ""
+"Enter users, roles, or email addresses that should receive notifications for "
+"this post."
+msgstr ""
+"Saisir les utilisateurs/utilisatrices, les rôles ou les e-mails qui doivent "
+"recevoir des notifications pour cette publication."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+#: modules/notifications-log/library/NotificationsLogTable.php:533
+msgid "Error"
+msgstr "Erreur"
+
+#: modules/editorial-metadata/editorial-metadata.php:1331
+msgid "Error adding term."
+msgstr "Erreur en ajoutant le terme."
+
+#: modules/editorial-metadata/editorial-metadata.php:1590
+msgid "Error deleting term."
+msgstr "Erreur de suppression du terme."
+
+#: modules/content-board/library/content-board-methods.php:53
+msgid "Error fetching post data."
+msgstr "Erreur dans la récupération des données de la publication."
+
+#: modules/editorial-metadata/editorial-metadata.php:1481
+#: modules/editorial-metadata/editorial-metadata.php:1524
+msgid "Error updating term."
+msgstr "Erreur de mise à jour du terme."
+
+#: modules/content-board/content-board.php:851
+#: modules/content-overview/content-overview.php:995
+#: modules/content-board/library/content-board-methods.php:43
+#: modules/content-board/library/content-board-methods.php:111
+msgid "Error validating nonce. Please reload this page and try again."
+msgstr ""
+"Erreur de validation du nonce. Veuillez recharger cette page et réessayer."
+
+#: modules/async-notifications/async-notifications.php:180
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+"Événement : %s, ID du flux de travail : %s, ID de la publication : %s, ID "
+"utilisateur/utilisatrice : %s"
+
+#: lib/Notifications/Table/Base.php:183
+msgid "Excerpt View"
+msgstr "Vue en résumé"
+
+#: modules/improved-notifications/improved-notifications.php:250
+msgid "Existing Post is updated"
+msgstr "La publication existante est mise à jour"
+
+#: modules/calendar/library/calendar-utilities.php:374
+#: modules/content-board/library/content-board-utilities.php:899
+#: modules/content-overview/library/content-overview-utilities.php:1027
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+#: modules/notifications-log/library/NotificationsLogTable.php:293
+msgid "Failed"
+msgstr "Échec"
+
+#: lib/Legacy/Util.php:213
+msgid "Fast, professional support"
+msgstr "Un support rapide et professionnel"
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr "Fonctionnalitées"
+
+#: modules/calendar/library/calendar-methods.php:1225
+msgid "Feb"
+msgstr "Fév"
+
+#: modules/modules-settings/modules-settings.php:217
+msgid "Feel free to select only the features you need."
+msgstr ""
+"N’hésitez pas à ne sélectionner que les fonctionnalités dont vous avez "
+"besoin."
+
+#: modules/improved-notifications/improved-notifications.php:1105
+msgid "field"
+msgstr "champ"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:47
+msgid "Field Type"
+msgstr "Type de champ"
+
+#: modules/calendar/library/calendar-methods.php:143
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+"Champ utilisé pour trier les éléments du calendrier dans une cellule "
+"journalière"
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr "Info Fichier"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:210
+#: modules/notifications-log/library/NotificationsLogTable.php:646
+msgid "Filter"
+msgstr "Filtrer"
+
+#: modules/calendar/calendar.php:919
+msgid "Filter reset successfully."
+msgstr "Le filtre a bien été réinitialisé."
+
+#: lib/Notifications/Plugin.php:65
+msgid "Filter the content?"
+msgstr "Filtrer le contenu ?"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:223
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:537
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+"Filtrer la liste des utilisateur·ice·s dans la méta éditoriale des "
+"utilisateur·ice·s dans les rôles sélectionnés."
+
+#: modules/calendar/library/calendar-utilities.php:609
+#: modules/content-board/library/content-board-utilities.php:390
+#: modules/content-overview/library/content-overview-utilities.php:198
+msgid "Filter Title"
+msgstr "Titre du filtre"
+
+#: modules/calendar/calendar.php:912
+#: modules/content-overview/content-overview.php:668
+#: modules/content-board/library/content-board-methods.php:164
+msgid "Filter updated successfully."
+msgstr "Le filtre a bien été mis à jour."
+
+#: modules/editorial-metadata/editorial-metadata.php:212
+msgid "First Draft Date"
+msgstr "Date de la première ébauche"
+
+#: modules/editorial-comments/editorial-comments.php:1276
+msgid "First Name"
+msgstr "Prénom"
+
+#: modules/calendar/library/calendar-utilities.php:1282
+msgid "Five months"
+msgstr "Cinq mois"
+
+#: modules/calendar/library/calendar-utilities.php:1248
+msgid "Five months ago"
+msgstr "Il y a cinq mois"
+
+#: modules/calendar/library/calendar-methods.php:340
+#, php-format
+msgid "For custom Revision Statuses, upgrade to %sPublishPress Statuses Pro%s."
+msgstr ""
+"Pour des états de révision personnalisés, mettre à niveau vers "
+"%sPublishPress Statuses Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:308
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions Pro%s."
+msgstr ""
+"Pour l’intégration des révisions dans le calendrier des contenus, la vue "
+"d’ensemble et le tableau des contenus, veuillez mettre à jour %sPublishPress "
+"Revisions Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:309
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions%s."
+msgstr ""
+"Pour l’intégration des révisions dans le calendrier des contenus, la vue "
+"d’ensemble et le tableau des contenus, veuillez mettre à jour %sPublishPress "
+"Revisions%s."
+
+#: modules/improved-notifications/improved-notifications.php:950
+#: modules/notifications-log/library/NotificationsLogTable.php:498
+msgid "For which content?"
+msgstr "Pour quel contenu ?"
+
+#: modules/improved-notifications/improved-notifications.php:1102
+msgid "Format"
+msgstr "Format"
+
+#: modules/calendar/library/calendar-utilities.php:1280
+msgid "Four months"
+msgstr "Quatre mois"
+
+#: modules/calendar/library/calendar-utilities.php:1246
+msgid "Four months ago"
+msgstr "Il y a quatre mois"
+
+#: modules/calendar/library/calendar-utilities.php:1267
+msgid "Four weeks"
+msgstr "Quatre semaines"
+
+#: modules/calendar/library/calendar-methods.php:1222
+msgid "Fri"
+msgstr "Ven"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "From date"
+msgstr "À partir du"
+
+#: common/php/class-module.php:764
+msgid "Group"
+msgstr "Groupe"
+
+#: common/php/class-module.php:761
+msgid "Groups"
+msgstr "Groupes"
+
+#: modules/improved-notifications/improved-notifications.php:920
+msgid "Help"
+msgstr "Aide"
+
+#: modules/calendar/library/calendar-methods.php:1206
+#, php-format
+msgid "Hide the %s last items"
+msgstr "Masquer les %s derniers éléments"
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:251
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+"Clé secrète iCal régénérée. Veuillez informer tous les utilisateurs/"
+"utilisatrices qu’ils devront se réinscrire."
+
+#: lib/Notifications/Table/Notifications.php:159
+#: lib/Notifications/Table/Workflows.php:143
+#: modules/calendar/library/calendar-utilities.php:1059
+msgid "ID"
+msgstr "ID"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:361
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:674
+msgid ""
+"If enabled, this field will be available when adding new posts on the "
+"Content Calendar and Overview screen."
+msgstr ""
+"Si cette option est activée, ce champ sera disponible lors de l’ajout de "
+"nouvelles publications sur l’écran du « Calendrier des contenus » et de la "
+"« Vue d’ensemble du contenu »."
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "Si vous appréciez %s, veuillez nous laisser une note de %s. Merci !"
+
+#: lib/Legacy/Util.php:228
+msgid "If you need help or have a new feature request, let us know."
+msgstr ""
+"Si vous avez besoin d’aide ou si vous avez une nouvelle demande de "
+"fonctionnalité, faites-le nous savoir."
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"Si vous voyez une erreur ou recherchez des informations concernant "
+"PublishPress, veuillez ne pas hésiter à contacter l’équipe de support. "
+"Envoyez-nous un e-mail :"
+
+#: modules/content-board/content-board.php:750
+msgid "Inbuilt Card Data"
+msgstr "Données natives de la carte"
+
+#: modules/content-overview/content-overview.php:890
+msgid "Inbuilt Columns"
+msgstr "Colonnes natives"
+
+#: modules/content-board/content-board.php:809
+#: modules/content-overview/content-overview.php:952
+#: modules/calendar/library/calendar-utilities.php:1187
+msgid "Inbuilt filters"
+msgstr "Filtres natifs"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:251
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:566
+msgid "Indicate the select type."
+msgstr "Indiquez le type de sélection."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:511
+msgid "Indicate the type of editorial fields."
+msgstr "Indiquer le type de champs éditoriaux."
+
+#: modules/calendar/calendar.php:1159
+msgid "Initializing the calendar. Please wait..."
+msgstr "Initialisation du calendrier. Veuillez patienter…"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr "Intégration avec l’extension The Events Calendar"
+
+#: lib/Legacy/Util.php:211
+msgid "Integration with SEO plugins"
+msgstr "Integration avec les extensions SEO"
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr "Nonce d’action non valide."
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr "Canal invalide pour la notification"
+
+#: modules/editorial-comments/editorial-comments.php:764
+#: modules/editorial-comments/editorial-comments.php:905
+#: modules/editorial-comments/editorial-comments.php:1037
+#: modules/editorial-comments/editorial-comments.php:1153
+msgid "Invalid comment data"
+msgstr "Données de commentaire invalides"
+
+#: modules/calendar/library/calendar-methods.php:808
+msgid "Invalid date"
+msgstr "Date invalide"
+
+#: modules/content-board/content-board.php:853
+#: modules/content-overview/content-overview.php:997
+#: modules/content-board/library/content-board-methods.php:45
+#: modules/content-board/library/content-board-methods.php:113
+msgid "Invalid form request."
+msgstr "Demande de formulaire invalide."
+
+#: modules/calendar/library/calendar-methods.php:788
+msgid "Invalid input"
+msgstr "Entrée invalide"
+
+#: core/Error.php:80 modules/calendar/library/calendar-methods.php:779
+msgid "Invalid nonce"
+msgstr "Nonce invalide"
+
+#: modules/calendar/library/calendar-methods.php:1759
+msgid "Invalid Publish Date supplied."
+msgstr "Date de publication invalide fournie."
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr "Destinataire invalide pour la notification"
+
+#: modules/calendar/library/calendar-methods.php:1735
+msgid "Invalid Status supplied."
+msgstr "État invalide fourni."
+
+#: modules/calendar/calendar.php:1163
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+"Il semble que cela prenne trop de temps. Essayez de recharger la page et "
+"vérifiez la console du navigateur à la recherche d’erreurs."
+
+#: modules/calendar/library/calendar-methods.php:1224
+msgid "Jan"
+msgstr "Jan"
+
+#: modules/calendar/library/calendar-methods.php:1230
+msgid "Jul"
+msgstr "Jui"
+
+#: modules/calendar/library/calendar-methods.php:1229
+msgid "Jun"
+msgstr "Jui"
+
+#: modules/content-overview/content-overview.php:837
+#: modules/content-overview/content-overview.php:896
+msgid "Last Modified"
+msgstr "Dernière modification"
+
+#: modules/editorial-comments/editorial-comments.php:1277
+msgid "Last Name"
+msgstr "Nom"
+
+#: modules/calendar/library/calendar-methods.php:1203
+msgid "Loading item..."
+msgstr "Chargement de l’élément…"
+
+#: modules/notifications-log/notifications-log.php:217
+#: modules/calendar/library/calendar-methods.php:1202
+msgid "Loading..."
+msgstr "Chargement…"
+
+#: modules/editorial-metadata/editorial-metadata.php:291
+msgid "Location"
+msgstr "Emplacement"
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr "Contenu du journal"
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr "Fichier journal"
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr "Fichier journal non trouvé."
+
+#: modules/calendar/library/calendar-methods.php:1226
+msgid "Mar"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-methods.php:151
+msgid "Max visible posts per date"
+msgstr "Nombre maximum de publications visibles par date"
+
+#: modules/content-board/library/content-board-utilities.php:63
+#: modules/content-overview/library/content-overview-methods.php:294
+msgid "Maximum number of posts to display"
+msgstr "Nombre maximum de publications à afficher"
+
+#: modules/calendar/library/calendar-methods.php:1228
+msgid "May"
+msgstr "Mai"
+
+#: modules/calendar/calendar.php:736
+#: modules/calendar/library/calendar-utilities.php:467
+#: modules/calendar/library/calendar-utilities.php:468
+#: modules/content-board/library/content-board-utilities.php:28
+#: modules/content-overview/library/content-overview-methods.php:259
+msgid "Me Mode"
+msgstr "Mode Me"
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "Message"
+
+#: modules/improved-notifications/improved-notifications.php:1111
+msgid "Meta fields"
+msgstr "Champs métas"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:285
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:316
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:596
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:627
+msgid "Meta Value"
+msgstr "Valeur de méta"
+
+#: modules/editorial-metadata/editorial-metadata.php:1423
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+"Le nom des métadonnées entre en conflit avec un terme existant. Veuillez en "
+"choisir un autre."
+
+#: modules/improved-notifications/improved-notifications.php:421
+msgid "minutes"
+msgstr "minutes"
+
+#: lib/Legacy/Util.php:210
+msgid "Modals so you can edit posts without changing screen"
+msgstr ""
+"Fenêtres modales pour vous permettre de modifier les publications sans "
+"modifier l’écran"
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr "Modifié le"
+
+#: modules/calendar/library/calendar-methods.php:1218
+msgid "Mon"
+msgstr "Lun"
+
+#: modules/content-board/content-board.php:1026
+msgid "Move posts here to change their status"
+msgstr "Déplacer les publications ici pour changer leur état"
+
+#: modules/content-board/content-board.php:1186
+#: modules/content-overview/content-overview.php:1711
+msgid "Move this item to the Trash"
+msgstr "Mettre cet article à la corbeille"
+
+#: modules/calendar/library/calendar-methods.php:1205
+msgid "Moving the item..."
+msgstr "Déplacement de l’élément…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:234
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:546
+msgid "Multiple Select"
+msgstr "Sélection multiple"
+
+#: modules/improved-notifications/improved-notifications.php:476
+#: modules/improved-notifications/improved-notifications.php:1263
+#: modules/improved-notifications/improved-notifications.php:1280
+msgid "Muted"
+msgstr "Muet"
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr "Mes notifications de contenu"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:45
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:443
+msgid "Name"
+msgstr "Nom"
+
+#: modules/editorial-metadata/editorial-metadata.php:1272
+#: modules/editorial-metadata/editorial-metadata.php:1432
+msgid "Name already in use. Please choose another."
+msgstr "Nom déjà utilisé. Veuillez en choisir un autre."
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+#: modules/editorial-metadata/editorial-metadata.php:1289
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr "Le nom ne peut pas dépasser 200 caractères. Essayez un nom plus court."
+
+#: modules/editorial-metadata/editorial-metadata.php:1265
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+"Le nom entre en conflit avec un terme existant. Veuillez en choisir un autre."
+
+#: modules/editorial-metadata/editorial-metadata.php:1437
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+"Le nom est en conflit avec le slug d’un autre terme. Veuillez choisir un "
+"autre terme."
+
+#: lib/Legacy/Util.php:223
+msgid "Need PublishPress Planner Support?"
+msgstr "Besoin du support de PublishPress Planner ?"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "Nouveau"
+
+#: modules/editorial-metadata/editorial-metadata.php:459
+msgid "New Editorial Fields"
+msgstr "Nouveaux champs éditoriaux"
+
+#: modules/content-board/library/content-board-utilities.php:84
+#: modules/content-overview/library/content-overview-methods.php:315
+msgid "New Post"
+msgstr "Nouvelle publication"
+
+#: modules/improved-notifications/improved-notifications.php:292
+msgid "New Post is created in Draft status"
+msgstr "La nouvelle publication est créée dans l’état « Brouillon »"
+
+#: modules/improved-notifications/improved-notifications.php:341
+msgid "New Post is Published"
+msgstr "La nouvelle publication est publiée"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr "Nouveau état de la publication : %s"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "Nouvel état"
+
+#: modules/content-board/content-board.php:1289
+#: modules/content-overview/content-overview.php:1225
+#: modules/calendar/library/calendar-methods.php:1251
+msgid "Next Post"
+msgstr "Publication suivante"
+
+#: modules/editorial-comments/editorial-comments.php:1273
+msgid "Nickname"
+msgstr "Pseudonyme"
+
+#: modules/calendar/library/calendar-utilities.php:1290
+msgid "Nine months"
+msgstr "Neuf mois"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:350
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:659
+msgid "No"
+msgstr "Non"
+
+#: modules/notifications/notifications.php:698
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr "Aucune notification active n’a été trouvée pour ce %s."
+
+#: modules/calendar/library/calendar-methods.php:1694
+msgid "No date supplied."
+msgstr "Aucune date fournie."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:158
+msgid "No editorial comments."
+msgstr "Aucun commentaire éditorial."
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:135
+msgid "No editorial fields found."
+msgstr "Aucun champ éditorial trouvé."
+
+#: modules/calendar/library/calendar-methods.php:799
+msgid "No enough permissions"
+msgstr "Aucun droit suffisant"
+
+#: publishpress.php:1415 publishpress.php:1416
+msgid "No notification found"
+msgstr "Aucune notification trouvée"
+
+#: modules/notifications-log/notifications-log.php:291
+msgid "No notifications found."
+msgstr "Aucune notification trouvée."
+
+#: modules/content-board/content-board.php:1263
+#: modules/content-overview/content-overview.php:1194
+msgid "No results found"
+msgstr "Aucun résultat trouvé"
+
+#: modules/calendar/library/calendar-methods.php:1244
+msgid "No terms"
+msgstr "Aucun terme"
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "Aucun flux de notification trouvé."
+
+#: modules/editorial-comments/editorial-comments.php:756
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+"La vérification du nonce a échoué. Veuillez vous assurer que vous êtes censé "
+"ajouter des commentaires éditoriaux."
+
+#: modules/editorial-comments/editorial-comments.php:894
+#: modules/editorial-comments/editorial-comments.php:1026
+#: modules/editorial-comments/editorial-comments.php:1143
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+"La vérification du nonce a échoué. Veuillez vous assurer que vous êtes censé "
+"modifier les commentaires éditoriaux."
+
+#: modules/content-board/content-board.php:1600
+#: modules/content-overview/content-overview.php:1579
+msgid "None"
+msgstr "Aucun"
+
+#: lib/Notifications/Plugin.php:283
+msgid "Not filtered"
+msgstr "Non filtré"
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr "Bloc-notes"
+
+#: publishpress.php:1409 publishpress.php:1414
+#: modules/notifications-log/notifications-log.php:216
+msgid "Notification"
+msgstr "Notification"
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+msgid "Notification Group"
+msgstr "Groupe de notifications"
+
+#: modules/notifications/notifications.php:336
+msgid "Notification Groups"
+msgstr "Groupes de notifications"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "Journal de notification non trouvé"
+
+#: publishpress.php:1408 publishpress.php:1413
+#: modules/notifications/notifications.php:75
+#: modules/notifications/notifications.php:569
+msgid "Notifications"
+msgstr "Notifications"
+
+#: modules/improved-notifications/improved-notifications.php:868
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:270
+#: modules/notifications-log/notifications-log.php:496
+#: modules/notifications-log/notifications-log.php:497
+msgid "Notifications Log"
+msgstr "Journal des notifications"
+
+#: modules/notifications/notifications.php:350
+#: modules/notifications/notifications.php:353
+msgid "Notify Email"
+msgstr "E-mail de notification"
+
+#: modules/notifications/notifications.php:352
+msgid "Notify Emails"
+msgstr "E-mails de notification"
+
+#: modules/notifications/notifications.php:542
+#: modules/notifications/notifications.php:952
+msgid "Notify me"
+msgstr "Notifiez-moi"
+
+#: modules/improved-notifications/improved-notifications.php:376
+msgid "Notify on editorial comments"
+msgstr "Notifier des commentaires éditoriaux"
+
+#: modules/notifications/notifications.php:318
+#: modules/notifications/notifications.php:321
+msgid "Notify Role"
+msgstr "Notification de rôle"
+
+#: modules/notifications/notifications.php:320
+msgid "Notify Roles"
+msgstr "Notifications des rôles"
+
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:306
+msgid "Notify User"
+msgstr "Utilisateur/utilisatrice de notification"
+
+#: modules/notifications/notifications.php:305
+msgid "Notify Users"
+msgstr "Utilisateurs/utilisatrices de notification"
+
+#: modules/calendar/library/calendar-methods.php:1234
+msgid "Nov"
+msgstr "Nov"
+
+#: modules/editorial-metadata/editorial-metadata.php:292
+msgid "Number"
+msgstr "Nombre"
+
+#: modules/calendar/library/calendar-methods.php:1233
+msgid "Oct"
+msgstr "Oct"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr "Vieux état de la publication : %s"
+
+#: modules/improved-notifications/improved-notifications.php:1106
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+"Sur chaque code court, vous pouvez sélectionner un ou plusieurs champs. S’il "
+"y en a plusieurs, ils seront affichés séparés par des « , »."
+
+#: modules/calendar/library/calendar-utilities.php:1273
+msgid "One month"
+msgstr "Un mois"
+
+#: modules/calendar/library/calendar-utilities.php:1240
+msgid "One month ago"
+msgstr "Il y a un mois"
+
+#: modules/calendar/library/calendar-utilities.php:1261
+msgid "One week"
+msgstr "Une Semaine"
+
+#: modules/content-board/content-board.php:1100
+#: modules/content-board/content-board.php:1242
+msgid "Only editable posts will be moveable."
+msgstr "Uniquement les publications modifiables peuvent être déplacées."
+
+#: modules/improved-notifications/improved-notifications.php:911
+msgid "Options"
+msgstr "Options"
+
+#: modules/calendar/calendar.php:259
+#: modules/editorial-comments/editorial-comments.php:82
+#: modules/editorial-metadata/editorial-metadata.php:119
+#: modules/notifications/notifications.php:96
+msgid "Overview"
+msgstr "Aperçu"
+
+#: modules/editorial-metadata/editorial-metadata.php:293
+msgid "Paragraph"
+msgstr "Paragraphe"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:106
+msgid "Parent Page Authors"
+msgstr "Auteurs/autrices de page parente"
+
+#: modules/calendar/library/calendar-utilities.php:373
+#: modules/content-board/library/content-board-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:1026
+msgid "Passed"
+msgstr "Succès"
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr "Chemin"
+
+#: common/php/class-module.php:335
+msgid "Pending Review"
+msgstr "En attente de validation"
+
+#: modules/calendar/library/calendar-utilities.php:502
+#: modules/calendar/library/calendar-utilities.php:503
+msgid "Period"
+msgstr "Période"
+
+#: publishpress.php:590
+msgid "Planner"
+msgstr "Planificateur"
+
+#: publishpress.php:674
+msgid "Please correct your form errors below and try again."
+msgstr "Veuillez corriger vos erreurs de formulaire ci-dessous et réessayer."
+
+#: modules/editorial-comments/editorial-comments.php:787
+#: modules/editorial-comments/editorial-comments.php:951
+msgid "Please enter a comment."
+msgstr "Veuillez saisir un commentaire."
+
+#: modules/editorial-metadata/editorial-metadata.php:1409
+msgid "Please enter a name for the editorial fields"
+msgstr "Veuillez saisir un nom pour les champs éditoriaux"
+
+#: modules/editorial-metadata/editorial-metadata.php:1252
+msgid "Please enter a name for the editorial fields."
+msgstr "Veuillez saisir un nom pour les champs éditoriaux."
+
+#: modules/editorial-metadata/editorial-metadata.php:1259
+msgid "Please enter a slug for the editorial fields."
+msgstr "Veuillez entrer un slug pour les champs éditoriaux."
+
+#: modules/editorial-metadata/editorial-metadata.php:1414
+msgid "Please enter a valid, non-numeric name for the editorial fields."
+msgstr ""
+"Veuillez entrer un nom valide et non numérique pour les champs éditoriaux."
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Please select a valid metadata type."
+msgstr "Veuillez sélectionner un type de métadonnées valide."
+
+#: lib/Notifications/Plugin.php:250
+msgid "Please select at least one event"
+msgstr "Veuillez sélectionner au moins un événement"
+
+#: modules/calendar/library/calendar-methods.php:1216
+#: modules/content-board/library/content-board-utilities.php:1130
+#: modules/content-overview/library/content-overview-utilities.php:456
+msgid "Please, wait! Loading the form fields..."
+msgstr "S’il vous plaît, attendez ! Chargement des champs du formulaire…"
+
+#: modules/editorial-metadata/editorial-metadata.php:454
+msgid "Popular Editorial Fields"
+msgstr "Champs éditoriaux populaires"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:44
+msgid "Position"
+msgstr "Position"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:231
+msgid "Post"
+msgstr "Article"
+
+#: modules/calendar/library/calendar-methods.php:1835
+msgid "Post could not be created"
+msgstr "La publication n’a pas pu être créée"
+
+#: modules/calendar/library/calendar-methods.php:1828
+msgid "Post created successfully"
+msgstr "La publication a bien été créée"
+
+#: modules/content-board/content-board.php:1283
+#: modules/content-overview/content-overview.php:836
+#: modules/content-overview/content-overview.php:895
+#: modules/content-overview/content-overview.php:1219
+#: modules/calendar/library/calendar-methods.php:1245
+msgid "Post Date"
+msgstr "Date de la publication"
+
+#: modules/calendar/calendar.php:241
+msgid "Post date updated."
+msgstr "Date de la publication mis à jour."
+
+#: publishpress.php:680
+msgid "Post does not exist"
+msgstr "La publication n’existe pas"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:160
+msgid "Post ID: %d"
+msgstr "ID de la publication : %d"
+
+#: modules/calendar/library/calendar-methods.php:794
+msgid "Post not found"
+msgstr "Publication non trouvée"
+
+#: common/php/class-module.php:1126 modules/content-board/content-board.php:811
+#: modules/content-board/content-board.php:1290
+#: modules/content-overview/content-overview.php:954
+#: modules/content-overview/content-overview.php:1226
+#: modules/calendar/library/calendar-methods.php:424
+#: modules/calendar/library/calendar-methods.php:858
+#: modules/calendar/library/calendar-methods.php:1252
+#: modules/calendar/library/calendar-utilities.php:47
+#: modules/calendar/library/calendar-utilities.php:1070
+#: modules/calendar/library/calendar-utilities.php:1189
+#: modules/content-board/library/content-board-utilities.php:594
+#: modules/content-board/library/content-board-utilities.php:1165
+#: modules/content-overview/library/content-overview-utilities.php:491
+#: modules/content-overview/library/content-overview-utilities.php:703
+msgid "Post Status"
+msgstr "État de la publication"
+
+#: modules/calendar/calendar.php:242
+msgid "Post status updated."
+msgstr "L’état de la publication mis à jour."
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr "Widget de l’état de la publication"
+
+#: modules/calendar/calendar.php:989 modules/calendar/calendar.php:1218
+#: modules/content-board/content-board.php:698
+#: modules/content-board/content-board.php:711
+#: modules/content-board/content-board.php:752
+#: modules/content-board/content-board.php:813
+#: modules/content-overview/content-overview.php:834
+#: modules/content-overview/content-overview.php:850
+#: modules/content-overview/content-overview.php:893
+#: modules/content-overview/content-overview.php:957
+#: modules/calendar/library/calendar-utilities.php:146
+#: modules/calendar/library/calendar-utilities.php:1054
+#: modules/calendar/library/calendar-utilities.php:1192
+#: modules/content-board/library/content-board-utilities.php:677
+#: modules/content-board/library/content-board-utilities.php:1153
+#: modules/content-overview/library/content-overview-utilities.php:479
+#: modules/content-overview/library/content-overview-utilities.php:799
+msgid "Post Type"
+msgstr "Type de publication"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "Type d’article"
+
+#: modules/calendar/library/calendar-methods.php:1214
+msgid "Post type not found"
+msgstr "Type de publication non trouvé"
+
+#: modules/calendar/library/calendar-methods.php:1215
+msgid "Post type:"
+msgstr "Type de publication :"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+#, php-format
+msgid "Post type: %s"
+msgstr "Type de publication : %s"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:46
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "Types d’article"
+
+#: modules/calendar/library/calendar-methods.php:87
+msgid "Post types to show"
+msgstr "Types de messages à afficher"
+
+#: modules/content-board/library/content-board-methods.php:444
+#: modules/content-overview/library/content-overview-methods.php:167
+msgid "Post types to show:"
+msgstr "Types de publications à afficher :"
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr "Aperçu des articles"
+
+#: modules/calendar/library/calendar-methods.php:127
+msgid "Posts publish time format"
+msgstr "Format de l’heure de publication des publications"
+
+#: modules/content-board/content-board.php:1219
+#: modules/content-board/content-board.php:1286
+#: modules/content-overview/content-overview.php:1222
+#: modules/content-overview/content-overview.php:1744
+#: modules/calendar/library/calendar-methods.php:1248
+#: modules/calendar/library/calendar-utilities.php:1114
+msgid "Preview"
+msgstr "Aperçu"
+
+#: modules/content-board/content-board.php:1216
+#: modules/content-overview/content-overview.php:1741
+#, php-format
+msgid "Preview “%s”"
+msgstr "Prévisualiser “%s”"
+
+#: modules/content-board/content-board.php:1288
+#: modules/content-overview/content-overview.php:1224
+#: modules/calendar/library/calendar-methods.php:1250
+msgid "Previous Post"
+msgstr "Publication précédente"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "Statut précédent"
+
+#: modules/content-board/library/content-board-utilities.php:51
+#: modules/content-overview/library/content-overview-methods.php:282
+msgid "Print"
+msgstr "Imprimer"
+
+#: common/php/class-module.php:334 modules/content-board/content-board.php:989
+msgid "Private"
+msgstr "Privé"
+
+#: modules/content-board/library/content-board-utilities.php:1171
+#: modules/content-overview/library/content-overview-utilities.php:497
+msgid "Publish Date"
+msgstr "Date de publication"
+
+#: modules/calendar/library/calendar-methods.php:864
+msgid "Publish Time"
+msgstr "Heure de publication"
+
+#: common/php/class-module.php:331 modules/calendar/calendar.php:1231
+msgid "Published"
+msgstr "Publié"
+
+#: modules/calendar/library/calendar-methods.php:423
+msgid "Publishing Time"
+msgstr "Heure de la publication"
+
+#. Author of the plugin
+#: modules/settings/settings.php:61
+#: modules/calendar/library/calendar-utilities.php:1227
+msgid "PublishPress"
+msgstr "PublishPress"
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr "Journal de débogage PublishPress"
+
+#. Name of the plugin
+#: modules/settings/settings.php:266
+msgid "PublishPress Planner"
+msgstr "PublishPress Planner"
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content inside WordPress. "
+"Features include a content calendar, kanban board, and notifications."
+msgstr ""
+"PublishPress Planner vous aide à planifier et publier du contenu dans "
+"WordPress. Les fonctionnalités incluent un calendrier des contenus, tableau "
+"de bord Kanban et notifications."
+
+#: publishpress.php:1456
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+"PublishPress Planner a essayé de se charger plusieurs fois. Veuillez "
+"désactiver et supprimer les autres instances de PublishPress, surtout si "
+"vous utilisez PublishPress Pro."
+
+#: lib/Legacy/Util.php:206
+msgid "PublishPress Revisions integration"
+msgstr "Intégration de PublishPress Revisions"
+
+#: modules/settings/settings.php:141
+msgid "PublishPress Settings"
+msgstr "Réglages de PublishPress"
+
+#: modules/improved-notifications/improved-notifications.php:1103
+msgid "Receiver"
+msgstr "Destinataire"
+
+#: modules/calendar/library/calendar-methods.php:546
+msgid "Regenerate calendar feed secret"
+msgstr "Régénérer le secret du flux du calendrier"
+
+#: modules/editorial-metadata/editorial-metadata.php:1637
+msgid "Register editorial fields for these post types:"
+msgstr "Enregistrer les champs éditoriaux pour ces types de publication :"
+
+#: modules/editorial-comments/editorial-comments.php:218
+#: modules/editorial-comments/editorial-comments.php:728
+msgid "Remove"
+msgstr "Retirer"
+
+#: lib/Legacy/Util.php:212
+msgid "Remove PublishPress ads and branding"
+msgstr "Retirez les publicités et l’image de marque de PublishPress"
+
+#: modules/content-board/library/content-board-utilities.php:218
+msgid "Reorder"
+msgstr "Réorganiser"
+
+#: modules/content-overview/library/content-overview-utilities.php:26
+msgid "Reorder Columns"
+msgstr "Réorganiser les colonnes"
+
+#: modules/calendar/library/calendar-utilities.php:583
+#: modules/content-board/library/content-board-utilities.php:364
+#: modules/content-overview/library/content-overview-utilities.php:172
+msgid "Reorder Filters"
+msgstr "Réorganiser les filtres"
+
+#: modules/editorial-comments/editorial-comments.php:632
+msgid "Reply"
+msgstr "Répondre"
+
+#: modules/editorial-comments/editorial-comments.php:629
+msgid "Reply to this comment"
+msgstr "Répondre à ce commentaire"
+
+#: modules/notifications/notifications.php:2230
+#, php-format
+msgid "Reply: %s"
+msgstr "Réponse : %s"
+
+#: lib/Legacy/Util.php:230
+msgid "Request Support"
+msgstr "Demande de support"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:361
+#: modules/notifications-log/library/NotificationsLogTable.php:406
+msgid "Reschedule"
+msgstr "Replanifier"
+
+#: modules/calendar/library/calendar-utilities.php:554
+#: modules/content-board/library/content-board-utilities.php:153
+#: modules/content-board/library/content-board-utilities.php:551
+#: modules/content-overview/library/content-overview-methods.php:384
+#: modules/content-overview/library/content-overview-utilities.php:656
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: modules/calendar/library/calendar-utilities.php:553
+#: modules/content-board/library/content-board-utilities.php:152
+#: modules/content-overview/library/content-overview-methods.php:383
+msgid "Reset Filters"
+msgstr "Réinitialiser les filtres"
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr "Avis"
+
+#: common/php/class-module.php:1126
+#: modules/content-overview/content-overview.php:833
+#: modules/content-overview/content-overview.php:848
+#: modules/content-overview/content-overview.php:955
+#: modules/calendar/library/calendar-utilities.php:1190
+msgid "Revision Status"
+msgstr "État de la révision"
+
+#: common/php/class-module.php:753
+msgid "Role"
+msgstr "Rôle"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#, php-format
+msgid "role:%s"
+msgstr "rôle : %s"
+
+#: common/php/class-module.php:750
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "Rôles"
+
+#: modules/calendar/library/calendar-methods.php:1223
+msgid "Sat"
+msgstr "Sam"
+
+#: modules/calendar/library/calendar-methods.php:1210
+msgid "Save"
+msgstr "Enregistrer"
+
+#: modules/calendar/library/calendar-methods.php:1212
+msgid "Save and edit"
+msgstr "Enregistrer et modifier"
+
+#: modules/content-board/content-board.php:1291
+#: modules/content-overview/content-overview.php:1227
+#: modules/calendar/library/calendar-methods.php:1253
+msgid "Save Changes"
+msgstr "Enregistrer les modifications"
+
+#: modules/calendar/library/calendar-methods.php:1211
+msgid "Saving..."
+msgstr "Enregistrement…"
+
+#: common/php/class-module.php:333 modules/calendar/calendar.php:1226
+#: modules/content-board/content-board.php:979
+#: modules/notifications-log/library/NotificationsLogTable.php:529
+msgid "Scheduled"
+msgstr "Planifié"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:233
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr "Planifié pour %d destinataires. Cliquez ici pour les afficher."
+
+#: modules/calendar/calendar.php:738
+#: modules/calendar/library/calendar-utilities.php:486
+#: modules/content-board/library/content-board-utilities.php:98
+#: modules/content-overview/library/content-overview-methods.php:329
+msgid "Search"
+msgstr "Rechercher"
+
+#: modules/calendar/library/calendar-utilities.php:169
+#: modules/calendar/library/calendar-utilities.php:485
+#: modules/content-board/library/content-board-utilities.php:97
+#: modules/content-board/library/content-board-utilities.php:700
+#: modules/content-overview/library/content-overview-methods.php:328
+#: modules/content-overview/library/content-overview-utilities.php:822
+msgid "Search box"
+msgstr "Boîte de recherche"
+
+#: modules/editorial-comments/editorial-comments.php:298
+msgid "Search Comments"
+msgstr "Rechercher des commentaires"
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "Search Editorial Fields"
+msgstr "Recherche de champs éditoriaux"
+
+#: modules/calendar/library/calendar-utilities.php:613
+#: modules/content-board/library/content-board-utilities.php:248
+#: modules/content-overview/library/content-overview-utilities.php:56
+msgid "Search Metakey"
+msgstr "Rechercher clé de méta"
+
+#: publishpress.php:1412
+msgid "Search Notifications"
+msgstr "Rechercher des notifications"
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:285
+#, php-format
+msgid "Search results for “%s”"
+msgstr "Résultats de recherche pour « %s »"
+
+#: common/php/class-module.php:1109
+#, php-format
+msgid "Select %s"
+msgstr "Sélectionner %s"
+
+#: modules/improved-notifications/improved-notifications.php:1090
+msgid "Select at least one option for each section."
+msgstr "Sélectionnez au moins une option pour chaque section."
+
+#: modules/content-board/library/content-board-utilities.php:394
+#: modules/content-overview/library/content-overview-utilities.php:202
+msgid "Select Metakey"
+msgstr "Sélectionner Metakey"
+
+#: modules/calendar/library/calendar-utilities.php:211
+#: modules/content-board/library/content-board-utilities.php:742
+#: modules/content-overview/library/content-overview-utilities.php:864
+msgid "Select option..."
+msgstr "Sélectionner une option…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:211
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:523
+msgid "Select roles..."
+msgstr "Sélectionner les rôles"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:229
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:542
+msgid "Select Type"
+msgstr "Sélectionner le type"
+
+#: lib/Legacy/Util.php:208
+msgid "Send reminder notifications"
+msgstr "Envoyer des notifications de rappel"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:288
+msgid "Sent"
+msgstr "Envoyé"
+
+#: modules/calendar/library/calendar-methods.php:1232
+msgid "Sep"
+msgstr "Sep"
+
+#: modules/settings/settings.php:142
+msgid "Settings"
+msgstr "Réglages"
+
+#: modules/settings/settings.php:124
+msgid "settings"
+msgstr "réglages"
+
+#: modules/content-overview/content-overview.php:676
+#: modules/content-board/library/content-board-methods.php:172
+msgid "Settings updated successfully."
+msgstr "Les réglages on bien été mis à jour."
+
+#: modules/calendar/library/calendar-utilities.php:1286
+msgid "Seven months"
+msgstr "Sept mois"
+
+#: modules/improved-notifications/improved-notifications.php:1104
+msgid "shortcode"
+msgstr "code court"
+
+#: modules/calendar/library/calendar-methods.php:1207
+#, php-format
+msgid "Show %s more"
+msgstr "Afficher %s de plus"
+
+#: modules/notifications/notifications.php:610
+msgid "Show active notifications"
+msgstr "Afficher les notifications actives"
+
+#: modules/content-board/library/content-board-utilities.php:509
+#: modules/content-overview/library/content-overview-utilities.php:614
+msgid "Show content from"
+msgstr "Afficher le contenu à partir de"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:346
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:656
+msgid "Show on Content Calendar and Overview form"
+msgstr ""
+"Afficher sur le formulaire du « Calendrier des contenus » et de la « Vue "
+"d’ensemble du contenu »."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:394
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:704
+msgid "Show on Post Types screen"
+msgstr "Afficher dans l’écran « Types de publication »"
+
+#: modules/calendar/calendar.php:737
+msgid "Show Revision"
+msgstr "Afficher la révision"
+
+#: modules/notifications/notifications.php:1722
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+"Affichez les liens « Me notifier » et « Arrêtez de me notifier » pour ces "
+"types de publication :"
+
+#: modules/calendar/library/calendar-methods.php:95
+msgid "Show today's date in the first row"
+msgstr "Afficher la date du jour dans la première ligne"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:233
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:545
+msgid "Single Select"
+msgstr "Sélection simple"
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "Administrateur/administratrice du site"
+
+#: modules/calendar/library/calendar-utilities.php:1284
+msgid "Six months"
+msgstr "Six mois"
+
+#: modules/calendar/library/calendar-utilities.php:1250
+msgid "Six months ago"
+msgstr "Il y a six mois"
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr "Dimension"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr "Passer l’utilisateur/utilisatrice actuel"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+"Passer les notifications pour l’utilisateur/utilisatrice qui a déclenché "
+"l’action"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:291
+#: modules/notifications-log/library/NotificationsLogTable.php:525
+msgid "Skipped"
+msgstr "Ignoré"
+
+#: lib/Legacy/Util.php:207
+msgid "Slack integration for notifications"
+msgstr "Intégration de Slack pour les notifications"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:163
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:457
+msgid "Slug"
+msgstr "Identifiant"
+
+#: modules/editorial-metadata/editorial-metadata.php:1276
+msgid "Slug already in use. Please choose another."
+msgstr "Slug déjà utilisé. Veuillez en choisir un autre."
+
+#: modules/notifications/notifications.php:1868
+msgid "slug1,slug2"
+msgstr "slug1,slug2"
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "Désolé ! Vous n’êtes abonné à aucune publication !"
+
+#: modules/editorial-comments/editorial-comments.php:1089
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+"Désolé, vous ne pouvez pas supprimer ce commentaire éditorial car il "
+"contient des réponses."
+
+#: modules/editorial-comments/editorial-comments.php:777
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Désolé, vous n’avez pas les privilèges pour ajouter des commentaires "
+"éditoriaux. Veuillez en parler à votre administrateur/administratrice."
+
+#: modules/editorial-comments/editorial-comments.php:1068
+#: modules/editorial-comments/editorial-comments.php:1172
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+"Désolé, vous n’avez pas les privilèges pour supprimer ce commentaire "
+"éditorial. Veuillez en parler à votre administrateur/administratrice."
+
+#: modules/editorial-comments/editorial-comments.php:920
+#: modules/editorial-comments/editorial-comments.php:1052
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Désolé, vous n’avez pas les privilèges pour modifier les commentaires "
+"éditoriaux. Veuillez en parler à votre administrateur/administratrice."
+
+#: modules/editorial-comments/editorial-comments.php:938
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+"Désolé, vous n’avez pas les privilèges pour modifier ce commentaire "
+"éditorial. Veuillez en parler à votre administrateur/administratrice."
+
+#: modules/calendar/calendar.php:735
+msgid "Start Date"
+msgstr "Date de début"
+
+#: modules/calendar/library/calendar-utilities.php:1234
+msgid "Start date"
+msgstr "Date de début"
+
+#: modules/calendar/calendar.php:987
+#: modules/content-board/content-board.php:709
+#: modules/content-overview/content-overview.php:832
+#: modules/content-overview/content-overview.php:847
+#: modules/content-overview/content-overview.php:892
+#: modules/notifications-log/library/NotificationsLogTable.php:500
+msgid "Status"
+msgstr "Statut"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2124
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "L’état a été changé pour %1$s #%2$s « %3$s » par %4$s %5$s"
+
+#: modules/calendar/library/calendar-methods.php:119
+msgid "Statuses to display publish time"
+msgstr "États à afficher l’heure de publication"
+
+#: modules/notifications/notifications.php:538
+#: modules/notifications/notifications.php:946
+msgid "Stop notifying me"
+msgstr "Arrêtez de me notifier"
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr "Objet"
+
+#: modules/notifications-log/notifications-log.php:824
+msgid "Subject:"
+msgstr "Objet :"
+
+#: modules/content-board/library/content-board-utilities.php:1123
+#: modules/content-overview/library/content-overview-utilities.php:449
+msgid "Submit"
+msgstr "Envoyer"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:233
+msgid "Submitted on"
+msgstr "Envoyé le"
+
+#: modules/calendar/library/calendar-utilities.php:1229
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "Cliquez ici pour vous abonner à iCal ou Google Agenda"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:521
+msgid "Success"
+msgstr "Succès"
+
+#: modules/calendar/library/calendar-methods.php:1217
+msgid "Sun"
+msgstr "Dim"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "synchronous"
+msgstr "synchrone"
+
+#: modules/calendar/library/calendar-utilities.php:1085
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Étiquette"
+msgstr[1] "Étiquettes"
+
+#: modules/calendar/library/calendar-methods.php:894
+#: modules/content-board/library/content-board-utilities.php:1199
+#: modules/content-overview/library/content-overview-utilities.php:525
+msgid "Tags"
+msgstr "Étiquettes"
+
+#: modules/content-board/content-board.php:767
+#: modules/content-board/content-board.php:827
+#: modules/content-overview/content-overview.php:910
+#: modules/content-overview/content-overview.php:971
+#: modules/calendar/library/calendar-utilities.php:1206
+#: lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php:34
+msgid "Taxonomies"
+msgstr "Taxonomies"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr "Taxonomie"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgctxt "taxonomy general name"
+msgid "Editorial Field"
+msgstr "Champ éditorial"
+
+#: modules/content-board/content-board.php:1292
+#: modules/content-overview/content-overview.php:1228
+#: modules/calendar/library/calendar-methods.php:1254
+msgid "Taxonomy not set."
+msgstr "La taxonomie n’est pas définie."
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgctxt "taxonomy singular name"
+msgid "Editorial Field"
+msgstr "Champ éditorial"
+
+#: modules/calendar/library/calendar-utilities.php:1292
+msgid "Ten months"
+msgstr "Dix mois"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "Termes"
+
+#: modules/editorial-metadata/editorial-metadata.php:1549
+msgid "Terms not set."
+msgstr "Les conditions ne sont pas définies."
+
+#: modules/editorial-metadata/editorial-metadata.php:294
+msgid "Text"
+msgstr "Texte"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:466
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+"Le « slug » est la version du nom adaptée à l’URL. Il est généralement tout "
+"en minuscules et ne contient que des lettres, des chiffres et des traits "
+"d’union."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:184
+msgid ""
+"The description can be used to communicate with your team about what the "
+"field is for."
+msgstr ""
+"La description peut être utilisée pour communiquer avec votre équipe sur le "
+"but du champ."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:483
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+"La description peut être utilisée pour communiquer avec votre équipe sur le "
+"but des métadonnées."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr "L’intégration de The Events Calendar"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:198
+msgid "The field type cannot be changed once created."
+msgstr "Le type de champ ne peut pas être modifié une fois créé."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:158
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:452
+msgid "The name is for labeling the editorial fields."
+msgstr "Le nom sert à labelliser le champs éditoriaux."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:283
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+"La notification a été définie comme « Planifiée » mais la tâche cron est "
+"introuvable"
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+"Le module de notification doit être activé pour que ce widget s’affiche."
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "Le journal parent a été supprimé ou probablement reprogrammé"
+
+#: modules/calendar/library/calendar-methods.php:1705
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+"Le type de publication sélectionné n’est pas activé pour le calendrier."
+
+#: modules/calendar/calendar.php:1807
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+"L’utilisateur/utilisatrice sélectionné n’a pas les droits pour être défini "
+"comme l’auteur/autrice de la publication."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:168
+msgid "The slug cannot be changed once the term has been created."
+msgstr "Le slug ne peut pas être modifié une fois que le terme a été créé."
+
+#: modules/content-board/content-board.php:1268
+#: modules/content-overview/content-overview.php:1199
+msgid "There are no posts in the range or filter specified."
+msgstr "Il n’y a aucune publication dans l’intervalle ou le filtre spécifié."
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr "Il n’y a aucun module PublishPress enregistré"
+
+#: modules/editorial-comments/editorial-comments.php:874
+#: modules/editorial-comments/editorial-comments.php:1004
+#: modules/editorial-comments/editorial-comments.php:1114
+#: modules/editorial-comments/editorial-comments.php:1198
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+"Un problème est survenu. Essayez à nouveau ou contactez votre administrateur."
+
+#: modules/calendar/calendar.php:243
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+"Une erreur s’est produite lors de la mise à jour de la publication. Veuillez "
+"réessayer."
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2135
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "Cette action a été effectuée le %1$s à %2$s %3$s"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial fields type is not yet supported."
+msgstr "Ce type de champs éditoriaux n’est pas encore pris en charge."
+
+#: modules/notifications/notifications.php:1066
+#, php-format
+msgid "This email was sent %s."
+msgstr "Cet e-mail à été envoyé %s."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:375
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:686
+msgid "This field will be available for these post types."
+msgstr "Ce champ sera disponible pour ces types de publication."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:399
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:708
+msgid ""
+"This field will be viewable on the overview screens for these post types."
+msgstr ""
+"Ce champ sera visible sur les écrans d’aperçu de ces types de publication."
+
+#: modules/notifications-log/notifications-log.php:842
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+"Ceci est un aperçu du message programmé. Le contenu peut encore être modifié "
+"jusqu’à l’envoi de la notification."
+
+#: modules/content-board/content-board.php:1056
+msgid ""
+"This is the default publish date from today for posts moving to the "
+"Scheduled status."
+msgstr ""
+"Ceci est la date de publication par défaut à partir d’aujourd’hui pour les "
+"publications qui passent à l’état « Planifié »."
+
+#: modules/notifications-log/notifications-log.php:449
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+"Cette notification est très similaire à une autre envoyée il y a moins de %d "
+"minutes pour le même destinataire"
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr "Cette publication a été mis à jour pour la dernière fois le "
+
+#: modules/improved-notifications/improved-notifications.php:425
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+"Cela permet d’éviter l’envoi d’un trop grand nombre de notifications pour "
+"des événements identiques ou similaires. Définissez un nombre plus élevé si "
+"vous recevez des e-mails en double."
+
+#: modules/notifications/notifications.php:649
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Users who selected \"Notify me\" for the content\" option."
+msgstr ""
+"Cela n’aura aucun effet si vous n’avez pas au moins un flux de travail "
+"ciblant l’option « Utilisateurs/utilisatrices ayant sélectionné “Me "
+"notifier” pour le contenu »."
+
+#: modules/calendar/library/calendar-utilities.php:1278
+msgid "Three months"
+msgstr "Trois mois"
+
+#: modules/calendar/library/calendar-utilities.php:1244
+msgid "Three months ago"
+msgstr "Il y a trois mois"
+
+#: modules/calendar/library/calendar-utilities.php:1265
+msgid "Three weeks"
+msgstr "Trois semaines"
+
+#: modules/calendar/library/calendar-methods.php:1221
+msgid "Thu"
+msgstr "Jeu"
+
+#: modules/content-board/content-board.php:421
+#: modules/content-overview/content-overview.php:418
+#: lib/Notifications/Table/Notifications.php:156
+#: lib/Notifications/Table/Workflows.php:142
+#: modules/calendar/library/calendar-methods.php:853
+#: modules/content-board/library/content-board-utilities.php:244
+#: modules/content-board/library/content-board-utilities.php:1159
+#: modules/content-overview/library/content-overview-utilities.php:485
+msgid "Title"
+msgstr "Titre"
+
+#: modules/notifications/notifications.php:2157
+#, php-format
+msgid "Title: %s"
+msgstr "Titre : %s"
+
+#: modules/calendar/library/calendar-utilities.php:245
+#: modules/calendar/library/calendar-utilities.php:279
+#: modules/content-board/library/content-board-utilities.php:112
+#: modules/content-board/library/content-board-utilities.php:776
+#: modules/content-board/library/content-board-utilities.php:810
+#: modules/content-overview/library/content-overview-methods.php:343
+#: modules/content-overview/library/content-overview-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:932
+msgid "to"
+msgstr "à"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:632
+msgid "To date"
+msgstr "À ce jour"
+
+#: modules/calendar/library/calendar-methods.php:326
+#, php-format
+msgid ""
+"To refine your workflow with custom Post Statuses, install the "
+"%sPublishPress Statuses%s plugin."
+msgstr ""
+"Pour perfectionner votre flux de travail avec des états personnalisés des "
+"publications, installer l’extension %sPublishPress Statuses%s."
+
+#: modules/calendar/library/calendar-methods.php:1243
+msgid "Today"
+msgstr "Aujourd’hui"
+
+#: common/php/class-module.php:336 modules/content-board/content-board.php:1190
+#: modules/content-board/content-board.php:1285
+#: modules/content-overview/content-overview.php:1221
+#: modules/content-overview/content-overview.php:1715
+#: modules/calendar/library/calendar-methods.php:1247
+#: modules/calendar/library/calendar-utilities.php:1104
+msgid "Trash"
+msgstr "Corbeille"
+
+#: modules/calendar/library/calendar-methods.php:1219
+msgid "Tue"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-utilities.php:1296
+msgid "Twelve months"
+msgstr "Douze mois"
+
+#: modules/calendar/library/calendar-utilities.php:1276
+msgid "Two months"
+msgstr "Deux mois"
+
+#: modules/calendar/library/calendar-utilities.php:1242
+msgid "Two months ago"
+msgstr "Il y a deux mois"
+
+#: modules/calendar/library/calendar-utilities.php:1263
+msgid "Two weeks"
+msgstr "Deux semaines"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:193
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:491
+msgid "Type"
+msgstr "Type"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr "Erreur indéfinie trouvée"
+
+#: modules/calendar/calendar.php:1118
+#: modules/content-board/content-board.php:614
+#: modules/content-overview/library/content-overview-methods.php:221
+msgid "Undo"
+msgstr "Annuler"
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr "Contenu non publié"
+
+#: modules/calendar/library/calendar-methods.php:1208
+#: modules/calendar/library/calendar-methods.php:1711
+msgid "Untitled"
+msgstr "Sans titre"
+
+#: modules/editorial-metadata/editorial-metadata.php:457
+msgid "Update Editorial Fields"
+msgstr "Mise à jour des champs éditoriaux"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:422
+msgid "Update Editorial fields term"
+msgstr "Mise à jour du terme des champs éditoriaux"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "Modification de la note"
+
+#: modules/calendar/calendar.php:247
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+"La mise à jour dynamique de la date de publication ne fonctionne pas pour le "
+"contenu publié. Veuillez modifier la publication ."
+
+#: includes.php:161 lib/Legacy/Util.php:216
+msgid "Upgrade to Pro"
+msgstr "Passer à la version Pro"
+
+#: lib/Legacy/Util.php:198
+msgid "Upgrade to PublishPress Planner Pro"
+msgstr "Passez à PublishPress Planner Pro"
+
+#: lib/Legacy/Util.php:209
+msgid "Use post meta in notifications"
+msgstr "Utiliser le méta de la publication dans les notifications"
+
+#: modules/editorial-metadata/editorial-metadata.php:295
+msgid "User"
+msgstr "Compte"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "compte"
+
+#: modules/improved-notifications/improved-notifications.php:1100
+msgid "User making changes or comments"
+msgstr ""
+"Utilisateur/utilisatrice apportant des modifications ou des commentaires"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:204
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:516
+msgid "User role"
+msgstr "Rôle du compte"
+
+#: modules/editorial-comments/editorial-comments.php:1279
+msgid "User Url"
+msgstr "Url du compte"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:128
+#, php-format
+msgid "User: %s (%d)"
+msgstr "Compte : %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1274
+msgid "Username"
+msgstr "Identifiant"
+
+#: common/php/class-module.php:772
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "Comptes"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+"Les utilisateurs/utilisatrices qui ont sélectionné « Me notifier » pour le "
+"contenu"
+
+#: modules/content-board/content-board.php:1206
+#: modules/content-board/content-board.php:1287
+#: modules/content-overview/content-overview.php:1223
+#: modules/content-overview/content-overview.php:1731
+#: modules/calendar/library/calendar-methods.php:1249
+#: modules/calendar/library/calendar-utilities.php:1111
+msgid "View"
+msgstr "Voir"
+
+#: modules/content-board/content-board.php:1200
+#: modules/content-overview/content-overview.php:1725
+#, php-format
+msgid "View “%s”"
+msgstr "Voir “%s”"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr "Voir “%s” sur Google Maps"
+
+#: lib/Legacy/Util.php:241
+msgid "View Knowledge Base"
+msgstr "Voir la base de connaissances"
+
+#: modules/notifications/notifications.php:2181
+#: modules/notifications/notifications.php:2238
+#, php-format
+msgid "View: %s"
+msgstr "Voir : %s"
+
+#: publishpress.php:1464
+msgid "Warning"
+msgstr "Avertissement"
+
+#: modules/calendar/library/calendar-methods.php:1220
+msgid "Wed"
+msgstr "Mer"
+
+#: modules/calendar/calendar.php:734
+msgid "Weeks"
+msgstr "Semaines"
+
+#: modules/editorial-metadata/editorial-metadata.php:223
+msgid "What the post needs to cover."
+msgstr "Ce que la publication doit couvrir."
+
+#: modules/improved-notifications/improved-notifications.php:970
+msgid "What to say?"
+msgstr "Que dire ?"
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "Quand un commentaire éditorial est ajouté"
+
+#: lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php:28
+msgid "When taxonomy is updated"
+msgstr "Lorsque la taxonomie est mise à jour"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "Lorsque le contenu est déplacé vers un nouveau statut"
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr "Lorsque le contenu a été mis à jour"
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "When the first draft needs to be ready."
+msgstr "Quand la première ébauche doit être prête."
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "Lorsque le statut est modifié"
+
+#: lib/Notifications/Plugin.php:64
+#: modules/improved-notifications/improved-notifications.php:940
+#: modules/notifications-log/library/NotificationsLogTable.php:497
+msgid "When to notify?"
+msgstr "Quand faut-il notifier ?"
+
+#: lib/Notifications/Plugin.php:66
+#: modules/improved-notifications/improved-notifications.php:960
+#: modules/notifications-log/library/NotificationsLogTable.php:499
+msgid "Who to notify?"
+msgstr "Qui doit être prévenu ?"
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr "Options de Widget"
+
+#: modules/notifications/notifications.php:2010
+msgid "WordPress Scheduler"
+msgstr "Planificateur WordPress"
+
+#: modules/improved-notifications/improved-notifications.php:1101
+msgid "Workflow"
+msgstr "Flux de travail"
+
+#: modules/notifications/notifications.php:691
+msgid "Workflow has users enrolled"
+msgstr "Le flux de travail a des utilisateurs/utilisatrices inscrits"
+
+#: modules/improved-notifications/improved-notifications.php:902
+msgid "Workflow Settings"
+msgstr "Réglages du flux de travail"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:116
+#, php-format
+msgid "Workflow: %s"
+msgstr "Fluxe de travail : %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:477
+#: modules/improved-notifications/improved-notifications.php:1281
+msgid "Workflows"
+msgstr "Flux de travail"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:351
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:660
+msgid "Yes"
+msgstr "Oui"
+
+#: modules/notifications/notifications.php:1061
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr "Vous recevez cet e-mail parce que vous êtes abonné à « %s »."
+
+#: modules/improved-notifications/improved-notifications.php:1094
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+"Vous pouvez ajouter des informations dynamiques à l’objet ou au corps du "
+"texte en utilisant les codes courts suivants :"
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+"Vous pouvez ajouter des commentaires éditoriaux à une publication une fois "
+"que vous l’avez enregistrée pour la première fois."
+
+#: modules/notifications/notifications.php:2241
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr "Vous pouvez voir ici tous les commentaires éditoriaux sur cette %s : "
+
+#: modules/content-board/content-board.php:761
+#: modules/content-board/content-board.php:821
+#: modules/content-overview/content-overview.php:904
+#: modules/content-overview/content-overview.php:965
+#: modules/calendar/library/calendar-utilities.php:1200
+msgid "You do not have any editorial fields enabled"
+msgstr "Vous n’avez aucun champ éditorial activé"
+
+#: modules/content-board/content-board.php:768
+#: modules/content-board/content-board.php:828
+#: modules/content-overview/content-overview.php:911
+#: modules/content-overview/content-overview.php:972
+#: modules/calendar/library/calendar-utilities.php:1207
+msgid "You do not have any public taxonomies"
+msgstr "Vous n’avez aucune taxonomie publique"
+
+#: publishpress.php:676
+msgid "You do not have necessary permissions to complete this action."
+msgstr "Vous n’avez pas les droits necessaires pour compléter cette action."
+
+#: modules/content-overview/content-overview.php:762
+#: modules/content-board/library/content-board-methods.php:258
+#, php-format
+msgid "You do not have permission to add new %s"
+msgstr "Vous n’avez pas les droits pour ajouter %s"
+
+#: modules/content-board/library/content-board-methods.php:63
+msgid "You do not have permission to edit selected post."
+msgstr "Vous n’avez pas les droits pour modifier la publication sélectionnée."
+
+#: modules/content-board/library/content-board-methods.php:65
+msgid "You do not have permission to move post to selected post status."
+msgstr ""
+"Vous n’avez pas les droits pour déplacer la publication à l’état de "
+"publication sélectionné."
+
+#: modules/content-board/content-board.php:1029
+msgid "You do not have permission to move post to this status"
+msgstr "Vous n’avez pas les droits pour déplacer la publication à cet état"
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "Vous n’avez aucune notification"
+
+#: includes.php:127
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
+"Vous utilisez la version gratuite de PublishPress Planner. La version Pro "
+"offre plus de fonctionnalités et de pris en charge. %sPasser à la version "
+"Pro%s"
+
+#~ msgid "Add New Notify Email"
+#~ msgstr "Ajoutez un nouveau e-mail de notification"
+
+#~ msgid "Add New Notify Role"
+#~ msgstr "Ajouter une nouvelle notification de rôle"
+
+#~ msgid "Add New Notify User"
+#~ msgstr "Ajouter un nouveau compte de notification"
+
+#~ msgid "Add or remove notify emails"
+#~ msgstr "Ajoutez ou retirez les e-mails de notification"
+
+#~ msgid "Add or remove notify roles"
+#~ msgstr "Ajouter ou supprimer des notifications de rôles"
+
+#~ msgid "Add or remove notify users"
+#~ msgstr "Ajouter ou supprimer des utilisateurs/utilisatrices de notification"
+
+#~ msgid "All Notify Emails"
+#~ msgstr "Tous les e-mails de notification"
+
+#~ msgid "All Notify Roles"
+#~ msgstr "Toutes les notifications des rôles"
+
+#~ msgid "All Notify Users"
+#~ msgstr "Tous les comptes de notification"
+
+#~ msgid "Back to notify emails"
+#~ msgstr "Retour à les e-mails de notification"
+
+#~ msgid "Back to notify roles"
+#~ msgstr "Retour à la notification des rôles"
+
+#~ msgid "Back to notify users"
+#~ msgstr "Retour aux utilisateurs/utilisatrices à prévenir"
+
+#~ msgid "Choose from the most used notify emails"
+#~ msgstr "Choisissez parmi les e-mails de notification les plus utilisés"
+
+#~ msgid "Choose from the most used notify roles"
+#~ msgstr "Choisissez parmi les notifications des rôles les plus utilisés"
+
+#~ msgid "Choose from the most used notify users"
+#~ msgstr ""
+#~ "Choisissez parmi les utilisateurs/utilisatrices de notification les plus "
+#~ "utilisés"
+
+#~ msgid "Edit Notify Email"
+#~ msgstr "Modifier l’e-mail de notification"
+
+#~ msgid "Edit Notify Role"
+#~ msgstr "Modifier la notification de rôle"
+
+#~ msgid "Edit Notify User"
+#~ msgstr "Modifier utilisateur/utilisatrice de notification"
+
+#~ msgid "Filter by notify email"
+#~ msgstr "Filtrer pour e-mail de notification"
+
+#~ msgid "Filter by notify role"
+#~ msgstr "Filtrer par notification de rôle"
+
+#~ msgid "Filter by notify user"
+#~ msgstr "Filtrer par utilisateur/utilisatrice de notification"
+
+#~ msgid "Most Used Notify Email"
+#~ msgstr "E-mail de notification le plus utilisé"
+
+#~ msgid "Most Used Notify Role"
+#~ msgstr "Notification de rôle la plus utilisée"
+
+#~ msgid "Most Used Notify User"
+#~ msgstr "Utilisateur/utilisatrice de notification le plus utilisé"
+
+#~ msgid "New Notify Email"
+#~ msgstr "Nouveau e-mail de notification"
+
+#~ msgid "New Notify Role"
+#~ msgstr "Nouvelle notification de rôle"
+
+#~ msgid "New Notify User"
+#~ msgstr "Nouveau compte de notification"
+
+#~ msgid "No notify emails"
+#~ msgstr "Aucun e-mail de notification"
+
+#~ msgid "No notify roles"
+#~ msgstr "Aucune notification des rôles"
+
+#~ msgid "No notify users"
+#~ msgstr "Aucun utilisateurs/utilisatrices de notification"
+
+#~ msgid "Parent Notify Email"
+#~ msgstr "E-mail de notification parent"
+
+#~ msgid "Parent Notify Email:"
+#~ msgstr "E-mail de notification parent :"
+
+#~ msgid "Parent Notify Role"
+#~ msgstr "Notification de rôle parent"
+
+#~ msgid "Parent Notify Role:"
+#~ msgstr "Notification de rôle parent :"
+
+#~ msgid "Parent Notify User"
+#~ msgstr "Utilisateur/utilisatrice de notification parent"
+
+#~ msgid "Parent Notify User:"
+#~ msgstr "Utilisateur/utilisatrice de notification parent :"
+
+#~ msgid "Popular Notify Emails"
+#~ msgstr "E-mails de notification populaires"
+
+#~ msgid "Popular Notify Roles"
+#~ msgstr "Les notifications des rôles populaires"
+
+#~ msgid "Popular Notify Users"
+#~ msgstr "Utilisateurs/utilisatrices de notification les plus populaires"
+
+#~ msgid "Search Notify Emails"
+#~ msgstr "Rechercher des e-mails de notification"
+
+#~ msgid "Search Notify Roles"
+#~ msgstr "Rechercher les notifications des rôles"
+
+#~ msgid "Search Notify Users"
+#~ msgstr "Rechercher utilisateurs/utilisatrices de notification"
+
+#~ msgid "Separate notify emails with commas"
+#~ msgstr "Séparez les e-mails de notification par des virgules"
+
+#~ msgid "Separate notify roles with commas"
+#~ msgstr "Séparez les notifications des rôles par des virgules"
+
+#~ msgid "Separate notify users with commas"
+#~ msgstr ""
+#~ "Separez les utilisateurs/utilisatrices de notification par des virgules"
+
+#~ msgid "Update Notify Email"
+#~ msgstr "Mettre à jour l’e-mail de notification"
+
+#~ msgid "Update Notify Role"
+#~ msgstr "Mettre à jour la notification de rôle"
+
+#~ msgid "Update Notify User"
+#~ msgstr "Mettre à jour utilisateur/utilisatrice de notification"
+
+#~ msgid "View Notify Email"
+#~ msgstr "Voir l’e-mail de notification"
+
+#~ msgid "View Notify Role"
+#~ msgstr "Voir la notification de rôle"
+
+#~ msgid "View Notify User"
+#~ msgstr "Voir utilisateur/utilisatrice de notification"
+
+#, php-format
+#~ msgid "%s week"
+#~ msgid_plural "%s weeks"
+#~ msgstr[0] "%s semaine"
+#~ msgstr[1] "%s semaines"
+
+#~ msgid "«"
+#~ msgstr "«"
+
+#~ msgid "‹"
+#~ msgstr "‹"
+
+#~ msgid "»"
+#~ msgstr "»"
+
+#~ msgid "›"
+#~ msgstr "›"
+
+#~ msgid "Back %d weeks"
+#~ msgstr "Retour de %d semaines"
+
+#~ msgid "Back 1 week"
+#~ msgstr "Retour 1 semaine"
+
+#~ msgid "Edit this item"
+#~ msgstr "Modifier cet élément"
+
+#~ msgid "Forward %d weeks"
+#~ msgstr "Avancer de %d semaines"
+
+#~ msgid "Forward 1 week"
+#~ msgstr "Avancer d’une semaine"
+
+#, php-format
+#~ msgid "Save “%s”"
+#~ msgstr "Enregistrer “%s”"
+
+#~ msgid ""
+#~ "The number of weeks shown on the calendar can be changed on a user-by-"
+#~ "user basis using the calendar's screen options."
+#~ msgstr ""
+#~ "Le nombre de semaines affichées sur le calendrier peut être modifié pour "
+#~ "chaque compte à l’aide des options de l’écran du calendrier."
+
+#, php-format
+#~ msgid "Today is %s"
+#~ msgstr "Aujourd‘hui est le %s"
+
+#~ msgid "View all categories"
+#~ msgstr "Voir toutes les catégories"
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you activate the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Les états personnalisés sont désactivés jusqu’à ce que vous activiez "
+#~ "l’extension %1$sPublishPress Statuses%2$s. Voir %3$sPlanificateur > "
+#~ "Réglages%4$s pour plus d’informations."
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you install the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Les états personnalisés sont désactivés jusqu’à ce que vous installiez "
+#~ "l’extension %1$sPublishPress Statuses%2$s. Voir %3$sPlanificateur > "
+#~ "Réglages%4$s pour plus de détails."
+
+#~ msgid "Hidden field can only be viewed on the edit post view."
+#~ msgstr ""
+#~ "Le champ masqué peut être visualisé uniquement dans la vue de "
+#~ "modification de la publication."
+
+#~ msgid "If enabled, this field can be seen on the Content Calendar screens."
+#~ msgstr ""
+#~ "Si cette option est activée, ce champ est visible sur les écrans "
+#~ "« Calendrier des contenus »."
+
+#~ msgid "Make Hidden"
+#~ msgstr "Rendre Caché"
+
+#~ msgid "Make Viewable"
+#~ msgstr "Rendre Visible"
+
+#~ msgid "Viewable"
+#~ msgstr "Visibilité"
+
+#~ msgid "Dashboard"
+#~ msgstr "Tableau de bord"
+
+#~ msgid "Basic Notifications"
+#~ msgstr "Notifications basiques"
+
+#~ msgid "Schedule Date"
+#~ msgstr "Date planifiée"
+
+#~ msgid "Add New Metadata Term"
+#~ msgstr "Ajouter un nouveau terme de métadonnées"
+
+#~ msgid "Manage Filters"
+#~ msgstr "Gérer les filtres"
+
+#~ msgid "Metadata"
+#~ msgstr "Métadonnées"
+
+#~ msgid "Metadata order updated."
+#~ msgstr "L’ordre des métadonnées a été mis à jour."
+
+#~ msgid "Metadata Type"
+#~ msgstr "Type de métadonnées"
+
+#~ msgctxt "taxonomy general name"
+#~ msgid "Metadata"
+#~ msgstr "Métadonnées"
+
+#~ msgctxt "taxonomy singular name"
+#~ msgid "Metadata"
+#~ msgstr "Métadonnées"
+
+#~ msgid "Update Metadata Term"
+#~ msgstr "Terme de mise à jour des métadonnées"
+
+#~ msgid "Click to toggle"
+#~ msgstr "Cliquez ici pour basculer"
+
+#~ msgid ""
+#~ "If enabled, this metadata will be available as a filter option on the "
+#~ "Content Overview screen."
+#~ msgstr ""
+#~ "Quand il est activée, ces métadonnées seront disponibles en tant "
+#~ "qu’option de filtre sur l’écran d’aperçu du contenu."
+
+#~ msgid "Screen Layout"
+#~ msgstr "Mise en page de l’écran"
+
+#~ msgid "Taxonomies to show:"
+#~ msgstr "Taxonomies à afficher :"
+
+#~| msgid "%1$s at %2$s"
+#~ msgid "said on %1$s at %2$s"
+#~ msgstr "dit le %1$s à %2$s"
+
+#~| msgid "Log content"
+#~ msgid "Sending content..."
+#~ msgstr "Envoi du contenu..."
+
+#~ msgid ""
+#~ "This comment can't be deleted because it has one or more replies. Before "
+#~ "deleting it make sure to delete all the replies first."
+#~ msgstr ""
+#~ "Ce commentaire ne peut pas être supprimé car il contient une ou plusieurs "
+#~ "réponses. Avant de le supprimer, assurez-vous d’abord de supprimer toutes "
+#~ "les réponses."
+
+#~ msgid "Are you sure you want to delete this comment?"
+#~ msgstr "Confirmez-vous de vouloir supprimer ce commentaire ?"
+
+#~ msgid "for"
+#~ msgstr "pour"
+
+#~ msgid "by"
+#~ msgstr "par"
+
+#~ msgid ""
+#~ "For more information:
Custom Status Documentation"
+#~ "a>
PublishPress on Github
"
+#~ msgstr ""
+#~ "Pour plus d’informations :
Documentation des états "
+#~ "pérsonnalisés
PublishPress sur Github
"
+
+#~ msgid ""
+#~ "PublishPress’s custom statuses allow you to define the most important "
+#~ "stages of your editorial workflow. Out of the box, WordPress only offers "
+#~ "“Draft” and “Pending Review” as post states. With custom statuses, you "
+#~ "can create your own post states like “In Progress”, “Pitch”, or “Waiting "
+#~ "for Edit” and keep or delete the originals. You can also drag and drop "
+#~ "statuses to set the best order for your workflow.
Custom statuses "
+#~ "are fully integrated into the rest of PublishPress and the WordPress "
+#~ "admin. On the calendar and content overview, you can filter your view to "
+#~ "see only posts of a specific post state. Furthermore, email notifications "
+#~ "can be sent to a specific group of users when a post changes state.
"
+#~ msgstr ""
+#~ "Les états personnalisés de PublishPress vous permettent de définir les "
+#~ "étapes les plus importantes de votre flux éditorial. Par défaut, "
+#~ "WordPress ne propose que les états de publication « Brouillon » et « En "
+#~ "attente de relecture ». Avec les états personnalisés, vous pouvez créer "
+#~ "vos propres états de publication comme « En cours », « Proposition » ou "
+#~ "« En attente de modification » et conserver ou supprimer les originaux. "
+#~ "Vous pouvez également faire glisser et déposer les états pour définir le "
+#~ "meilleur tri pour votre flux de travail.
Les états personnalisés "
+#~ "sont entièrement intégrés au reste de PublishPress et à l’administration "
+#~ "de WordPress. Dans l’aperçu du calendrier et du contenu, vous pouvez "
+#~ "filtrer votre vue pour voir uniquement publications d’un état spécifique. "
+#~ "Par ailleurs, des notifications par e-mail peuvent être envoyées à un "
+#~ "groupe spécifique d’utilisateurs/utilisatrices lorsqu’une publication "
+#~ "change d’état.
"
+
+#~ msgid ""
+#~ "Note: Your browser does not support JavaScript or has "
+#~ "JavaScript disabled. You will not be able to access or change the post "
+#~ "status."
+#~ msgstr ""
+#~ "Note : Votre navigateur ne prend pas en charge "
+#~ "JavaScript ou a désactivé JavaScript. Vous ne pourrez pas accéder ou "
+#~ "modifier l’état de la publication."
+
+#~ msgid "Add New Status"
+#~ msgstr "Ajouter un nouveau état"
+
+#~ msgid ""
+#~ "Are you sure you want to delete the post status? All posts with this "
+#~ "status will be assigned to the default status."
+#~ msgstr ""
+#~ "Êtes-vous sûr de vouloir supprimer l’état de la publication ? Toutes les "
+#~ "publications ayant cet état seront assignées à l’état par défaut."
+
+#~ msgid "Assigned"
+#~ msgstr "Assigné"
+
+#~ msgid "Cannot reassign to the status you want to delete"
+#~ msgstr "Impossible de réaffecter le statut que vous voulez supprimer"
+
+#~ msgid "Color"
+#~ msgstr "Couleur"
+
+#~ msgid "Could not add status: "
+#~ msgstr "Impossible d’ajouter l’état : "
+
+#~ msgid "Could not delete the status: "
+#~ msgstr "Impossible de supprimer l’état : "
+
+#~ msgid "Custom status doesn't exist."
+#~ msgstr "L’état pérsonnalisé n’existe pas."
+
+#~ msgid "Default post status has been changed."
+#~ msgstr "L’état par défaut des publications a été modifié."
+
+#~ msgid "Edit Statuses"
+#~ msgstr "Modifier les états"
+
+#~ msgid "Error while updating the status"
+#~ msgstr "Erreur lors de la mise à jour de l’état"
+
+#~ msgid "Icon"
+#~ msgstr "Icône"
+
+#~ msgid "Idea proposed; waiting for acceptance."
+#~ msgstr "Idée proposée ; en attente d’acceptation."
+
+#~ msgid "In Progress"
+#~ msgstr "En cours"
+
+#~ msgid "No custom statuses found."
+#~ msgstr "Aucun statut personnalisé trouvé."
+
+#~ msgid "Pending review"
+#~ msgstr "En attente de relecture"
+
+#~ msgid "Pitch"
+#~ msgstr "Pitch"
+
+#~ msgid "Please enter a name for the status"
+#~ msgstr "Veuillez entrer un nom pour le statut"
+
+#~ msgid "Please enter a valid, non-numeric name for the status."
+#~ msgstr "Veuillez entrer un nom valide et non numérique pour le statut."
+
+#~ msgid ""
+#~ "Please note that checking a box will apply all statuses to that post type."
+#~ msgstr ""
+#~ "Veuillez noter que si vous cochez une case, tous les états s’appliqueront "
+#~ "à ce type de publication."
+
+#~ msgid "Post idea assigned to writer."
+#~ msgstr "Poster une idée assignée à un auteur."
+
+#~ msgid "Post status created."
+#~ msgstr "État de la publication créé."
+
+#~ msgid "Post status deleted."
+#~ msgstr "État de la publication supprimé."
+
+#~ msgid "Post status doesn't exist."
+#~ msgstr "L’état de la publication n’existe pas."
+
+#~ msgid "Privately Published"
+#~ msgstr "Afficher Date et heure"
+
+#~ msgid "Restricted status "
+#~ msgstr "Statut restreint "
+
+#~ msgid "Select Icon"
+#~ msgstr "Sélectionner une icône"
+
+#~ msgid "Show the status dropdown menu on the post editing screen:"
+#~ msgstr ""
+#~ "Afficher le menu déroulant de l’état sur l’écran de modification de la "
+#~ "publication :"
+
+#~ msgid "Status does not exist."
+#~ msgstr "L’état n’existe pas."
+
+#~ msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+#~ msgstr ""
+#~ "Le nom du statut ne peut pas dépasser 20 caractères. Essayez un nom plus "
+#~ "court."
+
+#~ msgid "Status name conflicts with existing status. Please choose another."
+#~ msgstr ""
+#~ "Le nom du statut entre en conflit avec le statut existant. Veuillez en "
+#~ "choisir un autre."
+
+#~ msgid "Status name conflicts with existing term. Please choose another."
+#~ msgstr ""
+#~ "Le nom du statut entre en conflit avec le terme existant. Veuillez en "
+#~ "choisir un autre."
+
+#~ msgid "Status name is restricted. Please choose another name."
+#~ msgstr "Le nom du statut est restreint. Veuillez choisir un autre nom."
+
+#~ msgid "Statuses"
+#~ msgstr "États"
+
+#~ msgid "The color is used to identify the status."
+#~ msgstr "La couleur est utilisée pour identifier le statut."
+
+#~ msgid ""
+#~ "The description is primarily for administrative use, to give you some "
+#~ "context on what the custom status is to be used for."
+#~ msgstr ""
+#~ "La description est principalement destinée à un usage admin, pour vous "
+#~ "donner un certain contexte sur ce à quoi le statut personnalisé doit être "
+#~ "utilisé."
+
+#~ msgid "The icon is used to visually represent the status."
+#~ msgstr "L’icône est utilisée pour représenter visuellement l’état."
+
+#~ msgid "The name is used to identify the status. (Max: 20 characters)"
+#~ msgstr "Le nom est utilisé pour identifier l’état. (Max : 20 caractères)"
+
+#~ msgid ""
+#~ "The slug is the unique ID for the status and is changed when the name is "
+#~ "changed."
+#~ msgstr ""
+#~ "Le slug est un ID unique pour l’état et est modifié lorsque le nom est "
+#~ "modifié."
+
+#~ msgid "Update Status"
+#~ msgstr "Mettre à jour le statut"
+
+#~ msgid "Use on these post types:"
+#~ msgstr "Utiliser sur ces types de publication :"
+
+#~ msgid "Writer is working on the post."
+#~ msgstr "Le rédacteur travaille actuellement sur la publication."
+
+#~ msgid "Calendar"
+#~ msgstr "Calendrier"
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.mo b/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.mo
index 8e73c4ce9..2563d03b6 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.po b/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.po
index 8a1b569a6..f1bacca9e 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-it_IT.po
@@ -1,3025 +1,3865 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: 0.7.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:15-0300\n"
-"Last-Translator: Luca \n"
-"Language-Team: Language IT \n"
-"Language: it_IT\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
-"X-Poedit-Basepath: C:/Documents and Settings/morfeo/Documenti/lavoro/00 "
-"opensource/traduzioni plugin wordpress/publishpress/0.7.1\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"Plural-Forms: nplurals=2; plural=(n !=1);\n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SearchPath-0: C:/Documents and Settings/morfeo/Documenti/lavoro/00 "
-"opensource/traduzioni plugin wordpress/publishpress/0.7.1\n"
-
-#: common/php/class-module.php:92
-#| msgid "Posts"
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-#| msgid "Pages"
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-#| msgid "Filter"
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-#| msgid "Notifications"
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-#| msgid "Notifications"
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-#| msgid "Notifications"
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-#| msgid "Notifications"
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-#| msgid "Notifications"
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-#| msgid "Notifications"
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-#| msgid "Please select a valid metadata type."
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-#| msgid "View"
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-#| msgid "== Actions =="
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-#| msgid "First Draft Date"
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-#| msgid "Preview"
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "%1$s => %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-#| msgid "Show %1$s more "
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-#| msgid "No user groups found."
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-#| msgid "Filter"
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-#| msgid "Editorial Comments"
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-#| msgid "No user groups found."
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-#| msgid "Content Overview"
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-#| msgid "Add editorial comment: %s"
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-#| msgid "Default post status has been changed."
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-#| msgid "Add New Status"
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-#| msgid "View all categories"
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-#| msgid "Post Type"
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-#| msgid "Post Type"
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-#| msgid "Author"
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-#| msgid "User"
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-#| msgid "Back to PublishPress"
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-#| msgid "Content Overview"
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-#| msgid "Disable"
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-#| msgid "Notifications"
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "Back %d weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "Back %d weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-#| msgid "Click to toggle"
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-#| msgid "Show %1$s more "
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-#| msgid "Edit this item"
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-#| msgid "View “%s”"
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-#| msgid "Post date updated."
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-#| msgid "(no title)"
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-#| msgid "Post status created."
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-#| msgid "Please select a valid metadata type."
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-#| msgid "Metadata term updated."
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-#| msgid "View all statuses"
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-#| msgid "Back %d weeks"
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-#| msgid "Published"
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#| msgid "Today"
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-#| msgid "Move this item to the Trash"
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-#| msgid "The name is used to identify the user group."
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-#| msgid "The name is used to identify the user group."
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-#| msgid "Dashboard"
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-#| msgid "This post was last updated on"
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-#| msgid "Update Status"
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-#| msgid "Add editorial comment: %s"
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-#| msgid "Editorial Comments"
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-#| msgid ""
-#| "Keep track of important details about your content with editorial "
-#| "metadata. This feature allows you to create as many date, text, number, "
-#| "etc. fields as you like, and then use them to store information like "
-#| "contact details, required word count, or the location of an interview."
-#| "p>
Once you’ve set your fields up, editorial metadata integrates with "
-#| "both the calendar and the content overview. Make an editorial metadata "
-#| "item visible to have it appear to the rest of your team. Keep it hidden "
-#| "to restrict the information between the writer and their editor.
"
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-#| msgid "Metadata"
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-#| msgid "Metadata"
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-#| msgid "%1$s => %2$s"
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-#| msgid "Metadata"
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-#| msgid "Unpublished"
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-#| msgid "Notifications"
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-#| msgid "Add editorial comment: %s"
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-#| msgid "Settings updated."
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-#| msgid "Editorial Comments"
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-#| msgid "Disable"
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-#| msgid "Notifications"
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-#| msgid "Change"
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-#| msgid "Enabled"
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-#| msgid "Notifications"
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-#| msgid ""
-#| "Notifications ensure you keep up to date with progress your most "
-#| "important content. Users can be subscribed to notifications on a post one "
-#| "by one or by selecting user groups.
When enabled, notifications can "
-#| "be sent when a post changes status or an editorial comment is left by a "
-#| "writer or an editor.
"
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-#| msgid ""
-#| "Select the users and user groups that should receive notifications when "
-#| "the status of this post is updated or when an editorial comment is added."
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-#| msgid "Use on these post types:"
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-#| msgid "%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s"
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-#| msgid "Author: %1$s (%2$s)"
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No user groups found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-#| msgid "User group created. Feel free to add users to the usergroup."
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-#| msgid "Post does not exist"
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-#| msgid "User group deleted."
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-#| msgid "Name cannot exceed 50 characters. Please try a shorter name."
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-#| msgid ""
-#| "User group name cannot exceed 40 characters. Please try a shorter name."
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-#| msgid "Error adding term."
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-#| msgid "Error adding term."
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-#| msgid "Could not delete the status: "
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-#| msgid "PublishPress"
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-#| msgid "Notifications"
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-#| msgid "Notifications"
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-#| msgid ""
-#| "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#, fuzzy
-#~| msgid "Notifications"
-#~ msgid "Notification"
-#~ msgstr "Notifiche"
-
-#, fuzzy
-#~| msgid "User Groups"
-#~ msgid "%d Group"
-#~ msgid_plural "%d Groups"
-#~ msgstr[0] "Gruppi"
-#~ msgstr[1] "Gruppi"
-
-#~ msgid "The calendar lets you see your posts over a customizable date range."
-#~ msgstr "Visualizza i prossimi contenuti in un calendario personalizzabile."
-
-#, fuzzy
-#~| msgid ""
-#~| "PublishPress’s calendar lets you see your posts over a customizable date "
-#~| "range. Filter by status or click on the post title to see its details. "
-#~| "Drag and drop posts between days to change their publication date date."
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date."
-#~ msgstr ""
-#~ "Il calendario di PublishPress ti permette di vedere gli articoli previsti "
-#~ "in un intervallo di tempo. Filtrali in base allo stato o clicca sul "
-#~ "titolo dell'articolo per vederne i dettagli. Trascina gli articoli da un "
-#~ "giorno all'altro per cambiare la loro data di pubblicazione."
-
-#~ msgid ""
-#~ "Click here for a single screen that shows the publication status of all "
-#~ "your content."
-#~ msgstr ""
-#~ "Visualizza lo stato di lavorazione di tutti i tuoi contenuti in un'unica "
-#~ "schermata."
-
-#~ msgid ""
-#~ "Use the content overview to see how content on your site is progressing. "
-#~ "Filter by specific categories or date ranges to see details about each "
-#~ "post in progress."
-#~ msgstr ""
-#~ "Utilizza il prospetto editoriale per vedere come procede il lavoro sui "
-#~ "contenuti. Filtra gli articoli per categorie o intervalli di tempo "
-#~ "specifici, per vedere i dettagli di ogni articolo in lavorazione."
-
-#~ msgid ""
-#~ "Create custom post statuses to define the stages of your publishing "
-#~ "workflow."
-#~ msgstr ""
-#~ "Crea delle fasi di lavorazione per gli articoli, in modo da definire i "
-#~ "vari stadi della lavorazione."
-
-#~ msgid ""
-#~ "Create your own post statuses to add structure your publishing workflow. "
-#~ "You can change existing or add new ones anytime, and drag and drop to "
-#~ "change their order."
-#~ msgstr ""
-#~ "Crea i tuoi stati di lavorazione per gli articoli, in modo da "
-#~ "personalizzare il tuo flusso di lavoro. Puoi modificare gli stati "
-#~ "esistenti o aggiungerne di nuovi in ogni momento, e trascinarli per "
-#~ "modificarne l'ordine."
-
-#~ msgid "Track your content from the WordPress dashboard."
-#~ msgstr "Controlla i contenuti dalla bacheca di Wordpress."
-
-#~ msgid ""
-#~ "Enable dashboard widgets to quickly get an overview of what state your "
-#~ "content is in."
-#~ msgstr ""
-#~ "Abilita i widget nella bacheca per visualizzare rapidamente a che punto "
-#~ "sono gli articoli."
-
-#~ msgid "Edit Custom Statuses"
-#~ msgstr "Modifica stati di lavorazione"
-
-#~ msgid "Share internal notes with your team."
-#~ msgstr "Condividi note e appunti col resto del team."
-
-#~ msgid ""
-#~ "Use editorial comments to hold a private discussion about a post. "
-#~ "Communicate directly with your writers or editors about what works and "
-#~ "what needs to be improved for each piece."
-#~ msgstr ""
-#~ "Utilizza i commenti editoriali per iniziare un discussione riservata "
-#~ "riguardo a un articolo. Comunica direttamente con i giornalisti e i "
-#~ "redattori sull'avanzamento dei lavori e su quello che deve essere "
-#~ "migliorato per ciascun pezzo."
-
-#~ msgid ""
-#~ "With Metadata you can customize the extra data that’s tracked for your "
-#~ "content."
-#~ msgstr "Controlla i dettagli degli articoli in lavorazione."
-
-#~ msgid ""
-#~ "Log details on every assignment using configurable editorial metadata. "
-#~ "It’s completely customizable; create fields for everything from due date "
-#~ "to location to contact information to role assignments."
-#~ msgstr ""
-#~ "Tiene traccia dei dettagli su qualsiasi compito assegnato tramite le "
-#~ "informazioni editoriali. È completamente personalizzabile; crea campi per "
-#~ "ogni informazione, come la data di consegna, la località, i riferimenti "
-#~ "dell'autore o il ruolo assegnato."
-
-#~ msgid "Name conflicts with slug for another term. Please choose again."
-#~ msgstr "Esiste già un'abbreviazione con questo nome. Sceglierne un'altra."
-
-#~ msgid "Could not update the term: %s "
-#~ msgstr "Impossibile aggiornare il termine: %s "
-
-#~ msgid "Quick Edit"
-#~ msgstr "Modifica veloce"
-
-#~ msgid "Quick Edit"
-#~ msgstr "Modifica veloce"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved notifications for PublishPress"
-#~ msgstr "Ritorna a PublishPress"
-
-#, fuzzy
-#~| msgid "Back to PublishPress"
-#~ msgid "Improved Notifications for PublishPress"
-#~ msgstr "Ritorna a PublishPress"
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with your content."
-#~ msgstr "Aggiorna il tuo team su modifiche importanti ai contenuti."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with a given content. Each status change or editorial comment sends out a "
-#~ "message to users subscribed to a post. User groups can be used to manage "
-#~ "who receives notifications on what."
-#~ msgstr ""
-#~ "Con la notifica via email, potrai tenere aggiornato chiunque su quello "
-#~ "che sta succedendo a un determinato contenuto. Qualsiasi modifica dello "
-#~ "stato di lavorazione o commento editoriale sarà notificato agli utenti "
-#~ "iscritti all'articolo. Inoltre i gruppi possono essere utilizzati per "
-#~ "gestire i destinatari delle notifiche."
-
-#, fuzzy
-#~| msgid "My Content Notifications"
-#~ msgid "Following"
-#~ msgstr "Articoli che sto seguendo"
-
-#, fuzzy
-#~| msgid "Respond to this post"
-#~ msgid "Follow updates to this post"
-#~ msgstr "Rispondi a questo articolo"
-
-#, fuzzy
-#~| msgid ""
-#~| "Nonce check failed. Please ensure you're supposed to be adding editorial "
-#~| "comments."
-#~ msgid ""
-#~ "Nonce check failed. Please ensure you can add users or user groups to a "
-#~ "post."
-#~ msgstr ""
-#~ "Controllo fallito. Verifica di poter aggiungere commenti editoriali."
-
-#~ msgid ""
-#~ "Organize your users into groups who can take different roles in your "
-#~ "publishing workflow."
-#~ msgstr ""
-#~ "Organizza gli utenti in gruppi rappresentativi della tua struttura "
-#~ "editoriale."
-
-#~ msgid ""
-#~ "Configure user groups to organize all of the users on your site. Each "
-#~ "user can be in many user groups and you can change them at any time."
-#~ msgstr ""
-#~ "Configura i gruppi per organizzare tutti gli utenti del tuo sito. Ogni "
-#~ "utente può appartenere a più gruppi e potrai spostarli in ogni momento."
-
-#~ msgid "Are you sure you want to delete the user group?"
-#~ msgstr "Sei sicuro di voler cancellare il gruppo?"
-
-#~ msgid "Error adding usergroup."
-#~ msgstr "Errore nella creazione del gruppo."
-
-#~ msgid "Error updating user group."
-#~ msgstr "Errore nell'aggiornamento del gruppo."
-
-#~ msgid "Error deleting user group."
-#~ msgstr "Errore nella cancellazione del gruppo."
-
-#~ msgid "The name is used to identify the user group."
-#~ msgstr "Il nome serve a identificare il gruppo."
-
-#~ msgid ""
-#~ "The description is primarily for administrative use, to give you some "
-#~ "context on what the user group is to be used for."
-#~ msgstr ""
-#~ "La descrizione serve per far capire che cosa fanno gli utenti di questo "
-#~ "gruppo."
-
-#~ msgid "Update User Group"
-#~ msgstr "Aggiorna il gruppo"
-
-#~ msgid "Add New User Group"
-#~ msgstr "Aggiungi un nuovo gruppo"
-
-#~ msgid "Usergroups"
-#~ msgstr "Gruppi utente"
-
-#~ msgid "Select the user groups that you would like to be a part of:"
-#~ msgstr "Seleziona il gruppo di cui vuoi fare parte:"
-
-#~ msgid "Select the user groups that this user should be a part of:"
-#~ msgstr "Seleziona il gruppo a cui questo utente deve appartenere:"
-
-#~ msgid "No user groups were found."
-#~ msgstr "Nessun gruppo trovato!"
-
-#~ msgid "Add a new user group. Opens new window."
-#~ msgstr "Aggiungi un nuovo gruppo. Apre una nuova finestra."
-
-#~ msgid "Add a User Group"
-#~ msgstr "Aggiungi un gruppo"
-
-#~ msgid "Unpublished"
-#~ msgstr "Non pubblicato"
-
-#~ msgid "Please enter a name for the status."
-#~ msgstr "Inserire un nome per lo stato di lavorazione."
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Il nome è riservato. Utilizzarne un altro."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Lo stato esiste già. Utilizzare un altro nome."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Impossibile aggiornare lo stato: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Rispondi a questo articolo"
-
-#~ msgid "Submit Response"
-#~ msgstr "Invia la risposta"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Inviare sempre le notifiche agli amministratori"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Impossibile aggiornare il gruppo: %s "
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "PublishPress ridefinisce il flusso di lavoro delle tue pubblicazioni su "
-#~ "WordPress."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Opzioni calendario"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Numero di settimane:"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Numero di settimane da visualizzare"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "La cancellazione di uno stato riporterà tutti gli articoli allo stato "
-#~ "predefinito."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Rispondi a questo articolo"
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Seleziona se l'articolo necessita di fotografie."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Lunghezza richiesta in caratteri, spazi inclusi."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Questo non è un modulo registrato di PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Modulo non abilitato. Abilitarlo dalle impostazioni di "
-#~ "PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Abilita"
+# Translation of Plugins - PublishPress Planner: Organize and Schedule Your WordPress Content - Stable (latest release) in Italian
+# This file is distributed under the same license as the Plugins - PublishPress Planner: Organize and Schedule Your WordPress Content - Stable (latest release) package.
+msgid ""
+msgstr ""
+"Project-Id-Version: Plugins - PublishPress Planner: Organize and Schedule "
+"Your WordPress Content - Stable (latest release)\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n"
+"POT-Creation-Date: 2025-03-13 09:56+0000\n"
+"PO-Revision-Date: 2025-03-18 12:00+0100\n"
+"Last-Translator: \n"
+"Language-Team: Italian\n"
+"Language: it_IT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 3.4.4\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:263
+msgid " Scheduled"
+msgstr " Programmato"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:261
+msgid " Scheduled, but late"
+msgstr " In programma, ma in ritardo"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "«Avvisami»"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2043
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" è stato cestinato da %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2090
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" è stato pubblicato da %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2060
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" è stato ripristinato dal cestino da %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2107
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" è stato modificato a non pubblicato da %4$s %5$s"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2206
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s (%2$s ) ha detto %3$s alle %4$s:"
+
+#: modules/content-board/library/content-board-utilities.php:538
+#: modules/content-overview/library/content-overview-utilities.php:643
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to
%2$s"
+msgstr " %1$s a
%2$s"
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "%1$s => %2$s"
+msgstr "%1$s => %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1981
+#: modules/editorial-comments/library/EditorialCommentsTable.php:336
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%1$s alle %2$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr "Ultimo aggiornamento di%1$s il %2$s"
+
+#: modules/calendar/library/calendar-utilities.php:503
+#, php-format
+msgid "%1s weeks"
+msgstr "%1s settimane"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "Ruolo %d"
+msgstr[1] "Ruoli %d"
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "%d utente"
+msgstr[1] "%d utenti"
+
+#: modules/calendar/library/calendar-methods.php:1241
+#: modules/calendar/library/calendar-utilities.php:513
+msgid "%d week"
+msgstr "%d settimana"
+
+#: modules/calendar/library/calendar-methods.php:1242
+msgid "%d weeks"
+msgstr "%d settimane"
+
+#: modules/content-overview/content-overview.php:757
+#: modules/content-board/library/content-board-methods.php:253
+#, php-format
+msgid "%s could not be created"
+msgstr "%s non può essere creato"
+
+#: modules/content-overview/content-overview.php:754
+#: modules/content-board/library/content-board-methods.php:250
+#, php-format
+msgid "%s created successfully. Edit %s "
+msgstr ""
+"%s creato correttamente. Modifica %s "
+
+#: modules/notifications-log/notifications-log.php:279
+#, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "Notifica %s trovata."
+msgstr[1] "Notifiche %s trovate."
+
+#: modules/calendar/library/calendar-utilities.php:54
+#: modules/content-overview/library/content-overview-utilities.php:710
+msgid "(Hide all)"
+msgstr "(Nascondi tutto)"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(senza titolo)"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "- Qualsiasi stato -"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-select-handler.php:255
+#, php-format
+msgid "-- Select %s --"
+msgstr "-- Selezionare %s --"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-user-handler.php:79
+msgid "-- Select a user --"
+msgstr "-- Selezionare un utente --"
+
+#: modules/calendar/calendar.php:265
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on Github"
+"a>
"
+msgstr ""
+"Per maggiori informazioni:
Documentazione calendario "
+"p>
PublishPress su "
+"Github
"
+
+#: modules/editorial-comments/editorial-comments.php:88
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Per maggiori informazioni vedi:
Documentazione Commenti "
+"Editoriali
PublishPress su Github
"
+
+#: modules/editorial-metadata/editorial-metadata.php:125
+msgid ""
+"For more information:
Editorial Fields "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Per maggiori informazioni vedi:
Documentazione sui campi "
+"editoriali
PublishPress su Github
"
+
+#: modules/notifications/notifications.php:102
+msgid ""
+"For more information:
Notifications Documentation "
+"p>
PublishPress on "
+"Github
"
+msgstr ""
+"Per maggiori informazioni:
Documentazione sulle notifiche"
+"a>
PublishPress "
+"su Github
"
+
+#: modules/editorial-comments/editorial-comments.php:83
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"I commenti editoriali ti aiutano a ridurre il sovraccarico di email e a "
+"mantenere la conversazione pertinente a ciò che conta: i tuoi contenuti. I "
+"commenti in thread nell'amministratore, simili a quelli che trovi alla fine "
+"di un post sul blog, consentono a scrittori ed editori di lasciare un "
+"feedback privato e discutere di ciò che deve essere modificato prima della "
+"pubblicazione.
Chiunque abbia accesso per visualizzare la storia in "
+"corso avrà anche la possibilità di commentarla. Se hai le notifiche "
+"abilitate, chi segue l'articolo riceverà un'email ogni volta che viene "
+"lasciato un commento.
"
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+msgid ""
+"Keep track of important details about your content with editorial fields. "
+"This feature allows you to create as many date, text, number, etc. fields as "
+"you like, and then use them to store information like contact details or the "
+"location of an interview.
Once you’ve set your fields up, editorial "
+"fields integrates with both the calendar and the content overview. Make an "
+"editorial fields item visible to have it appear to the rest of your team. "
+"Keep it hidden to restrict the information between the writer and their "
+"editor.
"
+msgstr ""
+"Tieni traccia dei dettagli importanti sui tuoi contenuti con i campi "
+"editoriali. Questa funzione ti consente di creare tutti i campi data, testo, "
+"numero, ecc. che desideri e quindi utilizzarli per memorizzare informazioni "
+"come i dettagli di contatto o il luogo di un colloquio.
Dopo aver "
+"impostato i campi, i campi editoriali si integrano sia con il calendario sia "
+"con la panoramica dei contenuti. Rendi visibile un elemento di campi "
+"editoriali per farlo apparire al resto del tuo team. Tienilo nascosto per "
+"limitare le informazioni tra l'autore e il loro editore.
"
+
+#: modules/notifications/notifications.php:97
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"Le notifiche ti garantiscono di tenerti aggiornato sui progressi dei tuoi "
+"contenuti più importanti. Gli utenti possono essere iscritti alle notifiche "
+"su un articolo selezionandoli singolarmente oppure selezionando i ruoli."
+"p>
Se abilitato, è possibile inviare notifiche quando un articolo cambia "
+"stato o un commento editoriale viene lasciato da uno scrittore o da un "
+"editore.
"
+
+#: modules/calendar/calendar.php:260
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+"Il calendario è una comoda visualizzazione settimana per settimana o mese "
+"per mese dei tuoi contenuti. Scopri rapidamente quali storie sono sulla "
+"buona strada per essere pubblicate in tempo e quali richiederanno uno sforzo "
+"extra.
"
+
+#: modules/notifications/notifications.php:2156
+#, php-format
+msgid "== %s Details =="
+msgstr "== %s Dettagli =="
+
+#: modules/notifications/notifications.php:2175
+#: modules/notifications/notifications.php:2228
+msgid "== Actions =="
+msgstr "== Azioni =="
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2083
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s Pubblicato: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2053
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] %2$s Ripristinato (dal cestino): \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2117
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$s Stato modificato per \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2036
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s Cestinato: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2100
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s Non pubblicato: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2019
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] New %2$s Creato: \"%3$s\""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2192
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] Nuovo commento editoriale: \"%2$s\""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2026
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr "A new %1$s (#%2$s \"%3$s\" ) è stato creato da %4$s %5$s"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2199
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr "Un nuovo commento editoriale è stato aggiunto a %3$s #%1$s \"%2$s\""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr "Chi siamo"
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr "Accesso negato"
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr "Azione nonce non trovata."
+
+#: modules/notifications/notifications.php:663
+msgid "Active Notifications"
+msgstr "Notifiche attive"
+
+#: modules/notifications/notifications.php:1874
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+"Aggiungi un elenco di tassonomia-slug separati da virgola che non devono "
+"essere caricati dal filtro del contenuto della tassonomia quando si aggiunge "
+"un nuovo flusso di lavoro di notifica."
+
+#: modules/editorial-comments/editorial-comments.php:561
+#: modules/editorial-comments/editorial-comments.php:565
+msgid "Add an editorial comment"
+msgstr "Aggiungi un commento editoriale"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:338
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:649
+msgid "Add Another Option"
+msgstr "Aggiungi una opzione"
+
+#: modules/content-overview/library/content-overview-utilities.php:61
+msgid "Add Column"
+msgstr "Aggiungi una colonna"
+
+#: modules/editorial-comments/editorial-comments.php:583
+msgid "Add Comment"
+msgstr "Aggiungi un commento"
+
+#: modules/calendar/library/calendar-methods.php:1213
+#, php-format
+msgid "Add content for %s"
+msgstr "Aggiungi contenuto per %s"
+
+#: modules/notifications/notifications.php:2177
+#: modules/notifications/notifications.php:2234
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr "Aggiungi commento editoriale: %s"
+
+#: modules/calendar/library/calendar-utilities.php:618
+#: modules/content-board/library/content-board-utilities.php:399
+#: modules/content-overview/library/content-overview-utilities.php:207
+msgid "Add Filter"
+msgstr "Aggiungi filtro"
+
+#: modules/calendar/library/calendar-utilities.php:601
+#: modules/content-board/library/content-board-utilities.php:236
+#: modules/content-board/library/content-board-utilities.php:253
+#: modules/content-board/library/content-board-utilities.php:382
+#: modules/content-overview/library/content-overview-utilities.php:44
+#: modules/content-overview/library/content-overview-utilities.php:190
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:68
+msgid "Add New"
+msgstr "Aggiungi nuovo"
+
+#: modules/content-board/library/content-board-utilities.php:987
+#: modules/content-overview/library/content-overview-utilities.php:314
+#, php-format
+msgid "Add New %s"
+msgstr "Aggiungi nuovo %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:458
+msgid "Add New Editorial Fields"
+msgstr "Aggiungi nuovi campi editoriali"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:730
+msgid "Add New Editorial fields term"
+msgstr "Aggiungi un nuovo termine ai campi editoriali"
+
+#: publishpress.php:1410
+msgid "Add New Notification"
+msgstr "Aggiungi nuova notifica"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:370
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:682
+msgid "Add to post types"
+msgstr "Aggiungi ai tipi di contenuto"
+
+#: modules/improved-notifications/improved-notifications.php:95
+msgid "Advanced Notifications"
+msgstr "Notifiche avanzate"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:517
+msgid "All"
+msgstr "Tutto"
+
+#: modules/calendar/library/calendar-utilities.php:90
+#: modules/calendar/library/calendar-utilities.php:93
+#: modules/content-board/library/content-board-utilities.php:624
+#: modules/content-board/library/content-board-utilities.php:627
+#: modules/content-overview/library/content-overview-utilities.php:746
+#: modules/content-overview/library/content-overview-utilities.php:749
+#, php-format
+msgid "All %s"
+msgstr "Tutti i %s"
+
+#: modules/notifications-log/notifications-log.php:213
+msgid "All Actions"
+msgstr "Tutte le azioni"
+
+#: modules/calendar/library/calendar-methods.php:1239
+#: modules/calendar/library/calendar-utilities.php:117
+#: modules/calendar/library/calendar-utilities.php:120
+#: modules/content-board/library/content-board-utilities.php:649
+#: modules/content-board/library/content-board-utilities.php:652
+#: modules/content-overview/library/content-overview-utilities.php:771
+#: modules/content-overview/library/content-overview-utilities.php:774
+msgid "All authors"
+msgstr "Tutti gli autori"
+
+#: modules/calendar/library/calendar-methods.php:1237
+msgid "All categories"
+msgstr "Tutte le categorie"
+
+#: modules/notifications-log/notifications-log.php:214
+msgid "All Channels"
+msgstr "Tutti i canali"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:607
+msgid "All channels"
+msgstr "Tutti i canali"
+
+#: modules/editorial-metadata/editorial-metadata.php:455
+msgid "All Editorial Fields"
+msgstr "Tutti i campi editoriali"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:590
+msgid "All events"
+msgstr "Tutti gli eventi"
+
+#: modules/editorial-metadata/editorial-metadata.php:1243
+#: modules/editorial-metadata/editorial-metadata.php:1400
+msgid "All options value and labels are required."
+msgstr "Tutti i valori e le etichette delle opzioni sono obbligatori."
+
+#: modules/calendar/library/calendar-utilities.php:150
+#: modules/content-board/library/content-board-utilities.php:681
+#: modules/content-overview/library/content-overview-utilities.php:803
+msgid "All post types"
+msgstr "Tutti i tipi di contenuto"
+
+#: modules/editorial-comments/editorial-comments.php:219
+#: modules/notifications-log/notifications-log.php:211
+#: modules/editorial-comments/library/EditorialCommentsTable.php:181
+msgid "All Posts"
+msgstr "Tutti gli articoli"
+
+#: modules/calendar/library/calendar-methods.php:479
+msgid "All posts"
+msgstr "Tutti gli articoli"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+msgid "All Receivers"
+msgstr "Tutti i destinatari"
+
+#: modules/calendar/library/calendar-utilities.php:370
+#: modules/content-board/library/content-board-utilities.php:895
+#: modules/content-overview/library/content-overview-utilities.php:1023
+msgid "All status"
+msgstr "Tutti gli stati"
+
+#: modules/notifications-log/notifications-log.php:215
+msgid "All Statuses"
+msgstr "Tutti gli stati"
+
+#: modules/calendar/library/calendar-methods.php:1236
+#: modules/calendar/library/calendar-utilities.php:51
+#: modules/content-board/library/content-board-utilities.php:598
+#: modules/content-overview/library/content-overview-utilities.php:707
+msgid "All statuses"
+msgstr "Tutti gli stati"
+
+#: modules/calendar/library/calendar-methods.php:1238
+msgid "All tags"
+msgstr "Tutti i tag"
+
+#: modules/calendar/library/calendar-methods.php:1240
+msgid "All types"
+msgstr "Tutti i tipi"
+
+#: modules/editorial-comments/editorial-comments.php:220
+#: modules/editorial-comments/library/EditorialCommentsTable.php:196
+msgid "All Users"
+msgstr "Tutti gli utenti"
+
+#: modules/notifications-log/notifications-log.php:212
+msgid "All Workflows"
+msgstr "Tutti i workflows"
+
+#: modules/calendar/library/calendar-methods.php:111
+msgid "Allow public access to subscriptions in iCal or Google Calendar"
+msgstr "Permetti l'accesso pubblico agli abbonamenti a iCal o Google Calendar"
+
+#: modules/notifications/notifications.php:1738
+msgid "Always notify the author of the content:"
+msgstr "Avvisa sempre l'autore del contenuto:"
+
+#: modules/notifications/notifications.php:1746
+msgid "Always notify users who have edited the content:"
+msgstr "Avvisa sempre gli utenti che hanno modificato il contenuto:"
+
+#: modules/calendar/library/calendar-methods.php:159
+msgid "Always show complete post titles"
+msgstr "Visualizza sempre il titolo completo degli articoli"
+
+#: modules/content-board/content-board.php:847
+#: modules/content-board/library/content-board-methods.php:39
+#: modules/content-board/library/content-board-methods.php:107
+msgid "An error occured"
+msgstr "Si è verificato un errore"
+
+#: modules/content-board/content-board.php:1059
+#: modules/calendar/library/calendar-utilities.php:198
+#: modules/calendar/library/calendar-utilities.php:309
+#: modules/calendar/library/calendar-utilities.php:347
+#: modules/calendar/library/calendar-utilities.php:433
+#: modules/content-board/library/content-board-utilities.php:548
+#: modules/content-board/library/content-board-utilities.php:558
+#: modules/content-board/library/content-board-utilities.php:729
+#: modules/content-board/library/content-board-utilities.php:840
+#: modules/content-board/library/content-board-utilities.php:878
+#: modules/content-board/library/content-board-utilities.php:958
+#: modules/content-overview/library/content-overview-utilities.php:653
+#: modules/content-overview/library/content-overview-utilities.php:663
+#: modules/content-overview/library/content-overview-utilities.php:851
+#: modules/content-overview/library/content-overview-utilities.php:962
+#: modules/content-overview/library/content-overview-utilities.php:1000
+#: modules/content-overview/library/content-overview-utilities.php:1086
+msgid "Apply"
+msgstr "Applica"
+
+#: modules/calendar/library/calendar-utilities.php:702
+#: modules/content-board/library/content-board-utilities.php:71
+#: modules/content-board/library/content-board-utilities.php:337
+#: modules/content-board/library/content-board-utilities.php:483
+#: modules/content-overview/library/content-overview-methods.php:302
+#: modules/content-overview/library/content-overview-utilities.php:145
+#: modules/content-overview/library/content-overview-utilities.php:291
+msgid "Apply Changes"
+msgstr "Applica modifiche"
+
+#: modules/calendar/library/calendar-methods.php:1227
+msgid "Apr"
+msgstr "Apr"
+
+#: modules/editorial-metadata/editorial-metadata.php:372
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+"Sei sicuro di voler eliminare questo termine? Tutti i metadati per questo "
+"termine rimarranno ma non saranno visibili a meno che questo termine non "
+"venga aggiunto di nuovo."
+
+#: modules/editorial-metadata/editorial-metadata.php:220
+msgid "Assignment"
+msgstr "Incarico"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "Notifiche asincrone"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "asynchronous"
+msgstr "asincrono"
+
+#: modules/calendar/library/calendar-methods.php:179
+msgid "At least one post type must be selected"
+msgstr "Almeno un tipo di articolo deve essere selezionato"
+
+#: modules/editorial-comments/editorial-comments.php:571
+msgid "Attach file"
+msgstr "Allega file"
+
+#: modules/calendar/library/calendar-methods.php:1231
+msgid "Aug"
+msgstr "Ago"
+
+#: modules/calendar/calendar.php:988 modules/calendar/calendar.php:1210
+#: modules/content-board/content-board.php:699
+#: modules/content-board/content-board.php:710
+#: modules/content-board/content-board.php:753
+#: modules/content-board/content-board.php:812
+#: modules/content-overview/content-overview.php:835
+#: modules/content-overview/content-overview.php:849
+#: modules/content-overview/content-overview.php:894
+#: modules/content-overview/content-overview.php:956
+#: modules/content-overview/content-overview.php:1218
+#: modules/calendar/library/calendar-methods.php:875
+#: modules/calendar/library/calendar-methods.php:1255
+#: modules/calendar/library/calendar-utilities.php:115
+#: modules/calendar/library/calendar-utilities.php:1075
+#: modules/calendar/library/calendar-utilities.php:1191
+#: modules/content-board/library/content-board-utilities.php:647
+#: modules/content-board/library/content-board-utilities.php:1180
+#: modules/content-overview/library/content-overview-utilities.php:506
+#: modules/content-overview/library/content-overview-utilities.php:769
+#: modules/editorial-comments/library/EditorialCommentsTable.php:228
+msgid "Author"
+msgstr "Autore"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2161
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr "Autore: %1$s (%2$s )"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "Autori"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "Autori dei contenuti"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:26
+msgid "Authors of the parent page"
+msgstr "Autori della pagina genitore"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr "Bozza automatica"
+
+#: modules/improved-notifications/improved-notifications.php:1110
+msgid "Available fields"
+msgstr "Campi disponibili"
+
+#: modules/notifications/notifications.php:1754
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "Tassonomie nella blacklist delle notifiche"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:163
+msgid "Blog ID: %d"
+msgstr "ID Blog: %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:383
+msgid "Blog: "
+msgstr "Blog: "
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr "Corpo del testo"
+
+#: modules/editorial-comments/editorial-comments.php:587
+#: modules/content-board/library/content-board-utilities.php:554
+#: modules/content-overview/library/content-overview-utilities.php:659
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:425
+msgid "Cancel"
+msgstr "Annulla"
+
+#: modules/content-board/library/content-board-methods.php:150
+msgid "Card Data updated successfully."
+msgstr "Dati della scheda aggiornati correttamente."
+
+#: modules/calendar/library/calendar-methods.php:885
+#: modules/content-board/library/content-board-utilities.php:1190
+#: modules/content-overview/library/content-overview-utilities.php:516
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "Categorie"
+
+#: modules/calendar/library/calendar-utilities.php:1080
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Categoria"
+msgstr[1] "Categorie"
+
+#: modules/content-board/library/content-board-utilities.php:555
+#: modules/content-overview/library/content-overview-utilities.php:660
+msgid "Change"
+msgstr "Cambia"
+
+#: modules/content-board/library/content-board-methods.php:95
+#: modules/content-board/library/content-board-methods.php:123
+msgid "Changes saved!"
+msgstr "Modifiche salvate!"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:478
+#: modules/improved-notifications/improved-notifications.php:1282
+msgid "Channels"
+msgstr "Canali"
+
+#: publishpress.php:675
+msgid "Cheatin’ uh?"
+msgstr "Si tenta di fare i furbi, eh?"
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Checkbox"
+msgstr "Checkbox"
+
+#: modules/calendar/library/calendar-utilities.php:329
+#: modules/content-board/library/content-board-utilities.php:860
+#: modules/content-overview/library/content-overview-utilities.php:982
+msgid "Checked"
+msgstr "Selezionato"
+
+#: modules/editorial-comments/editorial-comments.php:78
+msgid "Choose Post Types"
+msgstr "Scegli i tipi di articoli"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:472
+#: modules/improved-notifications/improved-notifications.php:1276
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr "Scegli i canali a cui ogni workflow invierà notifiche:"
+
+#: modules/improved-notifications/improved-notifications.php:1112
+msgid "Click here to read more about shortcode options..."
+msgstr "Fare clic qui per saperne di più sulle opzioni di shortcode…"
+
+#: modules/calendar/library/calendar-utilities.php:1321
+msgid "Click here to subscribe in iCal or Google Calendar"
+msgstr "Fai clic qui per iscriverti a iCal o Google Calendar"
+
+#: modules/content-board/content-board.php:744
+msgid "Click the \"Add New\" button to create new card data."
+msgstr "Fai clic sul pulsante \"Aggiungi nuovo\" per creare nuovi dati scheda."
+
+#: modules/content-overview/content-overview.php:884
+msgid "Click the \"Add New\" button to create new columns."
+msgstr "Fai clic sul pulsante \"Aggiungi nuovo\" per creare nuove colonne."
+
+#: modules/content-board/content-board.php:803
+#: modules/content-overview/content-overview.php:946
+#: modules/calendar/library/calendar-utilities.php:1181
+msgid "Click the \"Add New\" button to create new filters."
+msgstr "Fai clic sul pulsante \"Aggiungi nuovo\" per creare nuovi filtri."
+
+#: modules/calendar/library/calendar-methods.php:1204
+msgid "Click to add"
+msgstr "Fai clic per aggiungere"
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+"Fare clic per eliminare il file di registro. Attenzione, questa operazione "
+"non può essere annullata. "
+
+#: modules/notifications/notifications.php:541
+#: modules/notifications/notifications.php:953
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+"Fai clic per iniziare a ricevere notifiche sugli aggiornamenti di questo "
+"articolo"
+
+#: modules/notifications/notifications.php:537
+#: modules/notifications/notifications.php:947
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+"Fai clic per non ricevere più notifiche sugli aggiornamenti di questo "
+"articolo"
+
+#: modules/calendar/library/calendar-methods.php:1209
+msgid "Close"
+msgstr "Chiudi"
+
+#: modules/content-overview/library/content-overview-utilities.php:52
+msgid "Column Title"
+msgstr "Titolo colonna"
+
+#: modules/content-overview/content-overview.php:654
+msgid "Column updated successfully."
+msgstr "La colonna è stata aggiornata correttamente."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Comment"
+msgstr "Commento"
+
+#: modules/editorial-comments/editorial-comments.php:1248
+msgid "Comment author name field:"
+msgstr "Nome del campo del commento autore:"
+
+#: modules/editorial-comments/editorial-comments.php:1190
+msgid "Comment deleted successfully."
+msgstr "Il commento è stato eliminato correttamente."
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr "Commento: %s (%d)"
+
+#: publishpress.php:671
+msgid "Configure"
+msgstr "Configura"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr "Contatti"
+
+#: modules/improved-notifications/improved-notifications.php:1098
+#: modules/calendar/library/calendar-methods.php:902
+#: modules/content-board/library/content-board-utilities.php:1207
+#: modules/content-overview/library/content-overview-utilities.php:533
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr "Contenuto"
+
+#: modules/content-board/content-board.php:142
+#: modules/content-board/content-board.php:379
+#: modules/content-board/content-board.php:396
+#: modules/content-board/content-board.php:397
+msgid "Content Board"
+msgstr "Bacheca dei contenuti"
+
+#: modules/calendar/calendar.php:216 modules/calendar/calendar.php:415
+#: modules/calendar/calendar.php:432 modules/calendar/calendar.php:433
+msgid "Content Calendar"
+msgstr "Calendario dei contenuti"
+
+#: modules/content-overview/content-overview.php:156
+#: modules/content-overview/content-overview.php:376
+#: modules/content-overview/content-overview.php:393
+#: modules/content-overview/content-overview.php:394
+msgid "Content Overview"
+msgstr "Panoramica dei contenuti"
+
+#: modules/notifications-log/notifications-log.php:832
+msgid "Content:"
+msgstr "Contenuto:"
+
+#: modules/calendar/library/calendar-utilities.php:1315
+msgid "Copy to the clipboard"
+msgstr "Copia negli appunti"
+
+#: modules/content-board/library/content-board-utilities.php:1121
+#: modules/content-overview/library/content-overview-utilities.php:447
+#, php-format
+msgid "Create %s"
+msgstr "Crea %s"
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr "Creato il"
+
+#: modules/calendar/library/calendar-utilities.php:1238
+msgid "Current week"
+msgstr "Settimana corrente"
+
+#: modules/content-overview/content-overview.php:883
+msgid "Custom Columns"
+msgstr "Colonne personalizzate"
+
+#: modules/content-board/content-board.php:802
+#: modules/content-overview/content-overview.php:945
+#: modules/calendar/library/calendar-utilities.php:1180
+msgid "Custom filters"
+msgstr "Filtri personalizzati"
+
+#: modules/content-board/content-board.php:743
+msgid "Custom Items"
+msgstr "Elementi personalizzati"
+
+#: modules/content-board/library/content-board-utilities.php:32
+msgid "Customize Card Data"
+msgstr "Personalizza dati scheda"
+
+#: modules/content-overview/library/content-overview-methods.php:263
+msgid "Customize Columns"
+msgstr "Personalizza colonne"
+
+#: modules/calendar/library/calendar-utilities.php:473
+#: modules/content-board/library/content-board-utilities.php:42
+#: modules/content-overview/library/content-overview-methods.php:273
+msgid "Customize Filters"
+msgstr "Personalizza filtri"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "Nota in bacheca"
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard Widgets"
+msgstr "Widget in bacheca"
+
+#: modules/editorial-metadata/editorial-metadata.php:290
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/calendar/library/calendar-utilities.php:1064
+#: modules/content-board/library/content-board-utilities.php:116
+#: modules/content-overview/library/content-overview-methods.php:347
+#: modules/notifications-log/library/NotificationsLogTable.php:496
+msgid "Date"
+msgstr "Data"
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr "Dati di debug"
+
+#: modules/calendar/library/calendar-methods.php:1235
+msgid "Dec"
+msgstr "Dic"
+
+#: modules/content-board/content-board.php:1049
+#: modules/content-board/content-board.php:1066
+msgid "Default Date"
+msgstr "Data predefinita"
+
+#: modules/improved-notifications/improved-notifications.php:222
+msgid "Default notification channels:"
+msgstr "Canali di notifica predefiniti:"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:300
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:330
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:611
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:641
+msgid "Default option"
+msgstr "Opzione predefinita"
+
+#: modules/calendar/library/calendar-methods.php:135
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+"Ora di pubblicazione predefinita per gli elementi creati nel calendario"
+
+#: modules/editorial-comments/editorial-comments.php:652
+#: modules/editorial-comments/library/EditorialCommentsTable.php:434
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:161
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:303
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:333
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:614
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:644
+#: modules/notifications-log/library/NotificationsLogTable.php:376
+#: modules/notifications-log/library/NotificationsLogTable.php:407
+msgid "Delete"
+msgstr "Elimina"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:408
+msgid "Delete All"
+msgstr "Eliminare tutto"
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr "Elimina file"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:48
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:176
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:474
+msgid "Description"
+msgstr "Descrizione"
+
+#: lib/Legacy/Util.php:239
+msgid "Detailed documentation is also available on the plugin website."
+msgstr ""
+"Una documentazione dettagliata è disponibile anche sul sito del plugin."
+
+#: modules/dashboard/dashboard.php:368 modules/dashboard/dashboard.php:391
+#: modules/dashboard/dashboard.php:425
+#: modules/calendar/library/calendar-methods.php:527
+msgid "Disabled"
+msgstr "Disabilitato"
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+"Disattivato perché add_post_type_support('%1$s', '%2$s') è incluso in un "
+"file caricato."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:291
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:322
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:602
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:633
+msgid "Display Label"
+msgstr "Visualizza eitichetta"
+
+#: modules/editorial-comments/editorial-comments.php:1275
+msgid "Display Name"
+msgstr "Nome da visualizzare"
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr "Documentazione"
+
+#: modules/calendar/library/calendar-utilities.php:1308
+msgid "Download .ics file"
+msgstr "Scarica file .ics"
+
+#: common/php/class-module.php:332
+msgid "Draft"
+msgstr "Bozza"
+
+#: modules/content-board/library/content-board-utilities.php:296
+msgid "Drag to change enabled card data order."
+msgstr "Trascina per modificare l'ordine dei dati della scheda abilitata."
+
+#: modules/content-overview/library/content-overview-utilities.php:104
+msgid "Drag to change enabled columns order."
+msgstr "Trascina per modificare l'ordine delle colonne abilitate."
+
+#: modules/calendar/library/calendar-utilities.php:661
+#: modules/content-board/library/content-board-utilities.php:442
+#: modules/content-overview/library/content-overview-utilities.php:250
+msgid "Drag to change enabled filters order."
+msgstr "Trascina per modificare l'ordine dei filtri abilitati."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:258
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:571
+msgid "Dropdown Option"
+msgstr "Opzioni del menu a discesa"
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "Dropdown Select"
+msgstr "Seleziona menu a discesa"
+
+#: modules/improved-notifications/improved-notifications.php:214
+msgid "Duplicated notification threshold:"
+msgstr "Soglia di notifica duplicata:"
+
+#: common/php/class-module.php:782
+msgid "E-mails"
+msgstr "Email"
+
+#: modules/content-board/content-board.php:1178
+#: modules/content-board/content-board.php:1284
+#: modules/content-overview/content-overview.php:1220
+#: modules/content-overview/content-overview.php:1703
+#: modules/editorial-comments/editorial-comments.php:641
+#: modules/calendar/library/calendar-methods.php:1246
+#: modules/calendar/library/calendar-utilities.php:1097
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:159
+msgid "Edit"
+msgstr "Modifica"
+
+#: modules/editorial-metadata/editorial-metadata.php:456
+msgid "Edit Editorial Fields"
+msgstr "Modifica campi editoriali"
+
+#: modules/efmigration/efmigration.php:288
+msgid ""
+"Edit Flow should not be used alongside PublishPress Planner. If you want to "
+"use PublishPress Planner, please complete Edit Flow data migration and then "
+"deactivate Edit Flow."
+msgstr ""
+"Edit Flow non deve essere utilizzato insieme a PublishPress Planner. Se vuoi "
+"usare PublishPress Planner, completa prima la migrazione dei dati da Edit "
+"Flow e poi disattiva Edit Flow."
+
+#: publishpress.php:1411
+msgid "Edit Notification"
+msgstr "Modifica notifica"
+
+#: modules/content-board/content-board.php:1174
+#: modules/content-overview/content-overview.php:1699
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr "Modifica questo articolo"
+
+#: modules/notifications/notifications.php:2180
+#: modules/notifications/notifications.php:2237
+#, php-format
+msgid "Edit: %s"
+msgstr "Modifica: %s"
+
+#: modules/improved-notifications/improved-notifications.php:1099
+msgid "Editorial Comment"
+msgstr "Commenti editoriali"
+
+#: modules/editorial-comments/editorial-comments.php:63
+#: modules/editorial-comments/editorial-comments.php:244
+#: modules/editorial-comments/editorial-comments.php:245
+#: modules/editorial-comments/editorial-comments.php:466
+msgid "Editorial Comments"
+msgstr "Commenti editoriali"
+
+#: modules/content-board/content-board.php:760
+#: modules/content-board/content-board.php:820
+#: modules/content-overview/content-overview.php:903
+#: modules/content-overview/content-overview.php:964
+#: modules/editorial-metadata/editorial-metadata.php:95
+#: modules/editorial-metadata/editorial-metadata.php:511
+#: modules/editorial-metadata/editorial-metadata.php:1719
+#: modules/editorial-metadata/editorial-metadata.php:1720
+#: modules/calendar/library/calendar-utilities.php:1199
+msgid "Editorial Fields"
+msgstr "Campi editoriali"
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Editorial fields order updated."
+msgstr "Ordine dei campi editoriali aggiornato."
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Editorial fields term added."
+msgstr "Termine dei campi editoriali aggiunto."
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Editorial fields term deleted."
+msgstr "Termine dei campi editoriali eliminato."
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Editorial fields term doesn't exist."
+msgstr "Il termine dei campi editoriali non esiste."
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Editorial fields term updated."
+msgstr "Termine dei campi editoriali aggiornato."
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Editorial fields visibility changed."
+msgstr "Visibilità dei campi editoriali cambiata."
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:471
+#: modules/improved-notifications/improved-notifications.php:1275
+msgid "Editorial Notifications"
+msgstr "Notifiche editoriali"
+
+#: modules/calendar/library/calendar-utilities.php:1288
+msgid "Eight months"
+msgstr "Otto mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1294
+msgid "Eleven months"
+msgstr "Undici mesi"
+
+#: modules/editorial-comments/editorial-comments.php:1278
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "Email"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "email"
+
+#: modules/notifications/notifications.php:1730
+msgid "Email from:"
+msgstr "Email da:"
+
+#: modules/content-overview/library/content-overview-utilities.php:25
+msgid "Enable Columns"
+msgstr "Abilita colonne"
+
+#: modules/calendar/library/calendar-utilities.php:582
+#: modules/content-board/library/content-board-utilities.php:363
+#: modules/content-overview/library/content-overview-utilities.php:171
+msgid "Enable Filters"
+msgstr "Abilita filtri"
+
+#: modules/editorial-comments/editorial-comments.php:1241
+msgid "Enable for these post types:"
+msgstr "Abilita per questi tipi di contenuti:"
+
+#: modules/content-board/library/content-board-utilities.php:217
+msgid "Enable or Disable"
+msgstr "Abilita o disabilita"
+
+#: modules/content-board/library/content-board-utilities.php:223
+msgid "Enable or Disable Content Board Card Data."
+msgstr "Abilita o disabilita i dati della sheda \"Bacheca dei contenuti\"."
+
+#: modules/content-board/library/content-board-utilities.php:369
+msgid "Enable or Disable Content Board filter."
+msgstr "Abilita o disabilita filtro della \"Bacheca dei contenuti\"."
+
+#: modules/calendar/library/calendar-utilities.php:588
+msgid "Enable or Disable Content calendar filter."
+msgstr "Abilita o disabilita filtro del \"Calendario dei contenuti\"."
+
+#: modules/content-overview/library/content-overview-utilities.php:177
+msgid "Enable or Disable Content Overview filter."
+msgstr "Abilita o disabilita filtro della panoramica dei contenuti."
+
+#: modules/content-overview/library/content-overview-utilities.php:31
+msgid "Enable or Disable Content Overview table column."
+msgstr ""
+"Abilita o disabilita colonna della tabella della panoramica dei contenuti."
+
+#: modules/calendar/library/calendar-methods.php:103
+msgid "Enable subscriptions in iCal or Google Calendar"
+msgstr "Abilita gli abbonamenti a iCal o Google Calendar"
+
+#: modules/dashboard/dashboard.php:369 modules/dashboard/dashboard.php:392
+#: modules/dashboard/dashboard.php:426
+#: modules/calendar/library/calendar-methods.php:528
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: modules/modules-settings/modules-settings.php:223
+msgid "Enabled features"
+msgstr "Funzionalità abilitate"
+
+#: modules/calendar/library/calendar-utilities.php:1256
+msgid "End date"
+msgstr "Data di fine"
+
+#: lib/Legacy/Util.php:203
+msgid "Enhance the power of PublishPress Planner with the Pro version:"
+msgstr "Aumenta la potenza di PublishPress Planner con la versione Pro:"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:263
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:574
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+"Inserisci i valori e le etichette delle opzioni del menu a discesa. Puoi "
+"spostare le opzioni per cambiarne l'ordine."
+
+#: modules/notifications/notifications.php:606
+msgid ""
+"Enter users, roles, or email addresses that should receive notifications for "
+"this post."
+msgstr ""
+"Inserisci utenti, ruoli o indirizzi email che dovranno ricevere le notifiche "
+"per questo articolo."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+#: modules/notifications-log/library/NotificationsLogTable.php:533
+msgid "Error"
+msgstr "Errore"
+
+#: modules/editorial-metadata/editorial-metadata.php:1331
+msgid "Error adding term."
+msgstr "Errore nell'aggiungere il termine."
+
+#: modules/editorial-metadata/editorial-metadata.php:1590
+msgid "Error deleting term."
+msgstr "Errore nell'eliminazione del termine."
+
+#: modules/content-board/library/content-board-methods.php:53
+msgid "Error fetching post data."
+msgstr "Errore nel recupero dei dati dell'articolo."
+
+#: modules/editorial-metadata/editorial-metadata.php:1481
+#: modules/editorial-metadata/editorial-metadata.php:1524
+msgid "Error updating term."
+msgstr "Errore nell'aggiornamento del termine."
+
+#: modules/content-board/content-board.php:851
+#: modules/content-overview/content-overview.php:995
+#: modules/content-board/library/content-board-methods.php:43
+#: modules/content-board/library/content-board-methods.php:111
+msgid "Error validating nonce. Please reload this page and try again."
+msgstr "Errore nella convalida del nonce. Ricarica questa pagina e riprova."
+
+#: modules/async-notifications/async-notifications.php:180
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr "Evento: %s, ID Workflow: %s,ID Articolo: %s, ID Utente: %s"
+
+#: lib/Notifications/Table/Base.php:183
+msgid "Excerpt View"
+msgstr "Visualizza riassunto"
+
+#: modules/improved-notifications/improved-notifications.php:250
+msgid "Existing Post is updated"
+msgstr "L'articolo esistente è stato aggiornato"
+
+#: modules/calendar/library/calendar-utilities.php:374
+#: modules/content-board/library/content-board-utilities.php:899
+#: modules/content-overview/library/content-overview-utilities.php:1027
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+#: modules/notifications-log/library/NotificationsLogTable.php:293
+msgid "Failed"
+msgstr "Fallito"
+
+#: lib/Legacy/Util.php:213
+msgid "Fast, professional support"
+msgstr "Supporto veloce e professionale"
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr "Funzionalità"
+
+#: modules/calendar/library/calendar-methods.php:1225
+msgid "Feb"
+msgstr "Feb"
+
+#: modules/modules-settings/modules-settings.php:217
+msgid "Feel free to select only the features you need."
+msgstr "Puoi scegliere liberamente le funzionalità che ti servono."
+
+#: modules/improved-notifications/improved-notifications.php:1105
+msgid "field"
+msgstr "campo"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:47
+msgid "Field Type"
+msgstr "Tipo di campo"
+
+#: modules/calendar/library/calendar-methods.php:143
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+"Campo utilizzato per ordinare gli elementi del calendario in una cella del "
+"giorno"
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr "Informazioni file"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:210
+#: modules/notifications-log/library/NotificationsLogTable.php:646
+msgid "Filter"
+msgstr "Filtro"
+
+#: modules/calendar/calendar.php:919
+msgid "Filter reset successfully."
+msgstr "Filtro reimpostato con successo."
+
+#: lib/Notifications/Plugin.php:65
+msgid "Filter the content?"
+msgstr "Filtrare il contenuto?"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:223
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:537
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+"Filtra la lista degli utenti dei meta editoriali per gli utenti dei ruoli "
+"selezionati."
+
+#: modules/calendar/library/calendar-utilities.php:609
+#: modules/content-board/library/content-board-utilities.php:390
+#: modules/content-overview/library/content-overview-utilities.php:198
+msgid "Filter Title"
+msgstr "Titolo filtro"
+
+#: modules/calendar/calendar.php:912
+#: modules/content-overview/content-overview.php:668
+#: modules/content-board/library/content-board-methods.php:164
+msgid "Filter updated successfully."
+msgstr "Filtro aggiornato correttamente."
+
+#: modules/editorial-metadata/editorial-metadata.php:212
+msgid "First Draft Date"
+msgstr "Data prima bozza"
+
+#: modules/editorial-comments/editorial-comments.php:1276
+msgid "First Name"
+msgstr "Nome"
+
+#: modules/calendar/library/calendar-utilities.php:1282
+msgid "Five months"
+msgstr "Cinque mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1248
+msgid "Five months ago"
+msgstr "Cinque mesi fa"
+
+#: modules/calendar/library/calendar-methods.php:340
+#, php-format
+msgid "For custom Revision Statuses, upgrade to %sPublishPress Statuses Pro%s."
+msgstr ""
+"Per gli stati di revisione personalizzati, aggiorna a %sPublishPress "
+"Statuses Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:308
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions Pro%s."
+msgstr ""
+"Per l'integrazione delle revisioni nel calendario dei contenuti, nella "
+"panoramica e nella bacheca dei contenuti, aggiorna %sPublishPress Revisions "
+"Pro%s."
+
+#: modules/calendar/library/calendar-methods.php:309
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions%s."
+msgstr ""
+"Per l'integrazione delle revisioni nel calendario dei contenuti, nella "
+"panoramica e nella bacheca dei contenuti, aggiorna %sPublishPress "
+"Revisions%s."
+
+#: modules/improved-notifications/improved-notifications.php:950
+#: modules/notifications-log/library/NotificationsLogTable.php:498
+msgid "For which content?"
+msgstr "Per quale contenuto?"
+
+#: modules/improved-notifications/improved-notifications.php:1102
+msgid "Format"
+msgstr "Formato"
+
+#: modules/calendar/library/calendar-utilities.php:1280
+msgid "Four months"
+msgstr "Quattro mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1246
+msgid "Four months ago"
+msgstr "Quattro mesi fa"
+
+#: modules/calendar/library/calendar-utilities.php:1267
+msgid "Four weeks"
+msgstr "Quattro settimane"
+
+#: modules/calendar/library/calendar-methods.php:1222
+msgid "Fri"
+msgstr "Ven"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "From date"
+msgstr "Dalla data"
+
+#: common/php/class-module.php:764
+msgid "Group"
+msgstr "Gruppo"
+
+#: common/php/class-module.php:761
+msgid "Groups"
+msgstr "Gruppi"
+
+#: modules/improved-notifications/improved-notifications.php:920
+msgid "Help"
+msgstr "Aiuto"
+
+#: modules/calendar/library/calendar-methods.php:1206
+#, php-format
+msgid "Hide the %s last items"
+msgstr "Nascondi gli ultimi %s elementi"
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:251
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+"chiave segreta iCal rigenerata. Ricordati di informare tutti gli utenti che "
+"dovranno iscriversi nuovamente."
+
+#: lib/Notifications/Table/Notifications.php:159
+#: lib/Notifications/Table/Workflows.php:143
+#: modules/calendar/library/calendar-utilities.php:1059
+msgid "ID"
+msgstr "ID"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:361
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:674
+msgid ""
+"If enabled, this field will be available when adding new posts on the "
+"Content Calendar and Overview screen."
+msgstr ""
+"Se viene abilitato questo campo sarà disponibile quando si aggiungono nuovi "
+"articoli nella schermata del calendario dei contenuti e della panoramica dei "
+"contenuti."
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "Se ti piace %s, lasciaci una valutazione di %s!"
+
+#: lib/Legacy/Util.php:228
+msgid "If you need help or have a new feature request, let us know."
+msgstr ""
+"Se hai bisogno di aiuto o hai una richiesta di una nuova funzionalità, "
+"faccelo sapere."
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"Se vedi un errore o cerchi informazioni su PublishPress, non esitare a "
+"contattare il team di supporto. Mandaci una email:"
+
+#: modules/content-board/content-board.php:750
+msgid "Inbuilt Card Data"
+msgstr "Dati della scheda incorporati"
+
+#: modules/content-overview/content-overview.php:890
+msgid "Inbuilt Columns"
+msgstr "Colonne integrate"
+
+#: modules/content-board/content-board.php:809
+#: modules/content-overview/content-overview.php:952
+#: modules/calendar/library/calendar-utilities.php:1187
+msgid "Inbuilt filters"
+msgstr "Filtri integrati"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:251
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:566
+msgid "Indicate the select type."
+msgstr "Indica il tipo selezionato."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:511
+msgid "Indicate the type of editorial fields."
+msgstr "Indica il tipo di campo editoriale."
+
+#: modules/calendar/calendar.php:1159
+msgid "Initializing the calendar. Please wait..."
+msgstr "Inizializzando il calendario. Attendi…"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr "Integrazione con il plugin The Events Calendar"
+
+#: lib/Legacy/Util.php:211
+msgid "Integration with SEO plugins"
+msgstr "Integrazione con i plugin SEO"
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr "Azione nonce non valida."
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr "Canale non valido per la notifica"
+
+#: modules/editorial-comments/editorial-comments.php:764
+#: modules/editorial-comments/editorial-comments.php:905
+#: modules/editorial-comments/editorial-comments.php:1037
+#: modules/editorial-comments/editorial-comments.php:1153
+msgid "Invalid comment data"
+msgstr "Dati del commento non validi"
+
+#: modules/calendar/library/calendar-methods.php:808
+msgid "Invalid date"
+msgstr "Data non valida"
+
+#: modules/content-board/content-board.php:853
+#: modules/content-overview/content-overview.php:997
+#: modules/content-board/library/content-board-methods.php:45
+#: modules/content-board/library/content-board-methods.php:113
+msgid "Invalid form request."
+msgstr "Richiesta di modulo non valida."
+
+#: modules/calendar/library/calendar-methods.php:788
+msgid "Invalid input"
+msgstr "Input non valido"
+
+#: core/Error.php:80 modules/calendar/library/calendar-methods.php:779
+msgid "Invalid nonce"
+msgstr "Nonce non valido"
+
+#: modules/calendar/library/calendar-methods.php:1759
+msgid "Invalid Publish Date supplied."
+msgstr "Data di pubblicazione fornita non valida."
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr "Ricevitore non valido per la notifica"
+
+#: modules/calendar/library/calendar-methods.php:1735
+msgid "Invalid Status supplied."
+msgstr "Stato fornito non valido."
+
+#: modules/calendar/calendar.php:1163
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+"Sta impiegando troppo tempo. Prova a ricaricare di nuovo la pagina e "
+"controlla la console del browser alla ricerca di errori."
+
+#: modules/calendar/library/calendar-methods.php:1224
+msgid "Jan"
+msgstr "Gen"
+
+#: modules/calendar/library/calendar-methods.php:1230
+msgid "Jul"
+msgstr "Lug"
+
+#: modules/calendar/library/calendar-methods.php:1229
+msgid "Jun"
+msgstr "Giu"
+
+#: modules/content-overview/content-overview.php:837
+#: modules/content-overview/content-overview.php:896
+msgid "Last Modified"
+msgstr "Ultima modifica"
+
+#: modules/editorial-comments/editorial-comments.php:1277
+msgid "Last Name"
+msgstr "Cognome"
+
+#: modules/calendar/library/calendar-methods.php:1203
+msgid "Loading item..."
+msgstr "Caricando l'elemento…"
+
+#: modules/notifications-log/notifications-log.php:217
+#: modules/calendar/library/calendar-methods.php:1202
+msgid "Loading..."
+msgstr "Caricando…"
+
+#: modules/editorial-metadata/editorial-metadata.php:291
+msgid "Location"
+msgstr "Luogo dell'evento"
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr "Contenuto del registro"
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr "File di registro"
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr "File di registro non trovato."
+
+#: modules/calendar/library/calendar-methods.php:1226
+msgid "Mar"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-methods.php:151
+msgid "Max visible posts per date"
+msgstr "Numero massimo di articoli visibili per data"
+
+#: modules/content-board/library/content-board-utilities.php:63
+#: modules/content-overview/library/content-overview-methods.php:294
+msgid "Maximum number of posts to display"
+msgstr "Numero massimo di articoli da visualizzare"
+
+#: modules/calendar/library/calendar-methods.php:1228
+msgid "May"
+msgstr "Mag"
+
+#: modules/calendar/calendar.php:736
+#: modules/calendar/library/calendar-utilities.php:467
+#: modules/calendar/library/calendar-utilities.php:468
+#: modules/content-board/library/content-board-utilities.php:28
+#: modules/content-overview/library/content-overview-methods.php:259
+msgid "Me Mode"
+msgstr "Me Mode"
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "Messaggio"
+
+#: modules/improved-notifications/improved-notifications.php:1111
+msgid "Meta fields"
+msgstr "Campi meta"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:285
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:316
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:596
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:627
+msgid "Meta Value"
+msgstr "Valore meta"
+
+#: modules/editorial-metadata/editorial-metadata.php:1423
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+"Il nome del metadato è in conflitto con un termine esistente. Scegli un "
+"altro nome."
+
+#: modules/improved-notifications/improved-notifications.php:421
+msgid "minutes"
+msgstr "minuti"
+
+#: lib/Legacy/Util.php:210
+msgid "Modals so you can edit posts without changing screen"
+msgstr "Modale affinché possa modificare gli articoli senza cambiare schermata"
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr "Modificato il"
+
+#: modules/calendar/library/calendar-methods.php:1218
+msgid "Mon"
+msgstr "Lun"
+
+#: modules/content-board/content-board.php:1026
+msgid "Move posts here to change their status"
+msgstr "Sposta gli articoli qui per cambiarne lo stato"
+
+#: modules/content-board/content-board.php:1186
+#: modules/content-overview/content-overview.php:1711
+msgid "Move this item to the Trash"
+msgstr "Sposta questo elemento nel cestino"
+
+#: modules/calendar/library/calendar-methods.php:1205
+msgid "Moving the item..."
+msgstr "Spostando l'elemento…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:234
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:546
+msgid "Multiple Select"
+msgstr "Selezione multipla"
+
+#: modules/improved-notifications/improved-notifications.php:476
+#: modules/improved-notifications/improved-notifications.php:1263
+#: modules/improved-notifications/improved-notifications.php:1280
+msgid "Muted"
+msgstr "Silenzioso"
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr "Le mie notifiche dei contenuti"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:45
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:443
+msgid "Name"
+msgstr "Nome"
+
+#: modules/editorial-metadata/editorial-metadata.php:1272
+#: modules/editorial-metadata/editorial-metadata.php:1432
+msgid "Name already in use. Please choose another."
+msgstr "Questo nome già esiste. Scegli un altro nome."
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+#: modules/editorial-metadata/editorial-metadata.php:1289
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr "Il nome non può superare i 200 caratteri. Utilizza un nome più breve."
+
+#: modules/editorial-metadata/editorial-metadata.php:1265
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+"Questo nome è in conflitto con un termine esistente. Scegline uno differente."
+
+#: modules/editorial-metadata/editorial-metadata.php:1437
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+"Questo nome è in conflitto con lo slug di un altro termine. Scegline uno "
+"differente."
+
+#: lib/Legacy/Util.php:223
+msgid "Need PublishPress Planner Support?"
+msgstr "Hai bisogno del supporto di PublishPress Planner?"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "Nuovo"
+
+#: modules/editorial-metadata/editorial-metadata.php:459
+msgid "New Editorial Fields"
+msgstr "Nuovi campi editoriali"
+
+#: modules/content-board/library/content-board-utilities.php:84
+#: modules/content-overview/library/content-overview-methods.php:315
+msgid "New Post"
+msgstr "Nuovo articolo"
+
+#: modules/improved-notifications/improved-notifications.php:292
+msgid "New Post is created in Draft status"
+msgstr "Il nuovo articolo viene creato nello stato di bozza"
+
+#: modules/improved-notifications/improved-notifications.php:341
+msgid "New Post is Published"
+msgstr "Il nuovo articolo è stato pubblicato"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr "Nuovo stato articolo: %s"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "Nuovo stato"
+
+#: modules/content-board/content-board.php:1289
+#: modules/content-overview/content-overview.php:1225
+#: modules/calendar/library/calendar-methods.php:1251
+msgid "Next Post"
+msgstr "Articolo successivo"
+
+#: modules/editorial-comments/editorial-comments.php:1273
+msgid "Nickname"
+msgstr "Pseudonimo"
+
+#: modules/calendar/library/calendar-utilities.php:1290
+msgid "Nine months"
+msgstr "Nove mesi"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:350
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:659
+msgid "No"
+msgstr "No"
+
+#: modules/notifications/notifications.php:698
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr "Nessuna notifica attiva trovata per questo %s."
+
+#: modules/calendar/library/calendar-methods.php:1694
+msgid "No date supplied."
+msgstr "Nessuna data specificata."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:158
+msgid "No editorial comments."
+msgstr "Nessun commento editoriale."
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:135
+msgid "No editorial fields found."
+msgstr "Nessun campo editoriale trovato."
+
+#: modules/calendar/library/calendar-methods.php:799
+msgid "No enough permissions"
+msgstr "Non hai autorizzazioni sufficienti"
+
+#: publishpress.php:1415 publishpress.php:1416
+msgid "No notification found"
+msgstr "Nessuna notifica trovata"
+
+#: modules/notifications-log/notifications-log.php:291
+msgid "No notifications found."
+msgstr "Non sono state trovate notifiche."
+
+#: modules/content-board/content-board.php:1263
+#: modules/content-overview/content-overview.php:1194
+msgid "No results found"
+msgstr "Nessun risultato trovato."
+
+#: modules/calendar/library/calendar-methods.php:1244
+msgid "No terms"
+msgstr "Nessun termine"
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "Nessun workflow trovato."
+
+#: modules/editorial-comments/editorial-comments.php:756
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+"Nonce non riuscito. Assicurati di dover aggiungere commenti editoriali."
+
+#: modules/editorial-comments/editorial-comments.php:894
+#: modules/editorial-comments/editorial-comments.php:1026
+#: modules/editorial-comments/editorial-comments.php:1143
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+"Controllo nonce fallito. Assicurati che tu possa modificare i commenti "
+"editoriali."
+
+#: modules/content-board/content-board.php:1600
+#: modules/content-overview/content-overview.php:1579
+msgid "None"
+msgstr "Nessuno"
+
+#: lib/Notifications/Plugin.php:283
+msgid "Not filtered"
+msgstr "Non filtrato"
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr "Blocco note"
+
+#: publishpress.php:1409 publishpress.php:1414
+#: modules/notifications-log/notifications-log.php:216
+msgid "Notification"
+msgstr "Notifica"
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+msgid "Notification Group"
+msgstr "Gruppo di notifica"
+
+#: modules/notifications/notifications.php:336
+msgid "Notification Groups"
+msgstr "Gruppi di notifica"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "Registro delle notifiche non trovato"
+
+#: publishpress.php:1408 publishpress.php:1413
+#: modules/notifications/notifications.php:75
+#: modules/notifications/notifications.php:569
+msgid "Notifications"
+msgstr "Notifiche"
+
+#: modules/improved-notifications/improved-notifications.php:868
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:270
+#: modules/notifications-log/notifications-log.php:496
+#: modules/notifications-log/notifications-log.php:497
+msgid "Notifications Log"
+msgstr "Registro delle notifiche"
+
+#: modules/notifications/notifications.php:350
+#: modules/notifications/notifications.php:353
+msgid "Notify Email"
+msgstr "Email di notifica"
+
+#: modules/notifications/notifications.php:352
+msgid "Notify Emails"
+msgstr "Email di notifica"
+
+#: modules/notifications/notifications.php:542
+#: modules/notifications/notifications.php:952
+msgid "Notify me"
+msgstr "Avvisami"
+
+#: modules/improved-notifications/improved-notifications.php:376
+msgid "Notify on editorial comments"
+msgstr "Notifica sui commenti editoriali"
+
+#: modules/notifications/notifications.php:318
+#: modules/notifications/notifications.php:321
+msgid "Notify Role"
+msgstr "Notifica di ruolo"
+
+#: modules/notifications/notifications.php:320
+msgid "Notify Roles"
+msgstr "Notifiche di ruolo"
+
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:306
+msgid "Notify User"
+msgstr "Utente di notifica"
+
+#: modules/notifications/notifications.php:305
+msgid "Notify Users"
+msgstr "Utenti di notifica"
+
+#: modules/calendar/library/calendar-methods.php:1234
+msgid "Nov"
+msgstr "Nov"
+
+#: modules/editorial-metadata/editorial-metadata.php:292
+msgid "Number"
+msgstr "Numero"
+
+#: modules/calendar/library/calendar-methods.php:1233
+msgid "Oct"
+msgstr "Ott"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr "Vecchio stato dell'articolo: %s"
+
+#: modules/improved-notifications/improved-notifications.php:1106
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+"Su ogni shortcode, puoi selezionare uno o più campi. Se più di uno, verranno "
+"visualizzati separati da una \", \"."
+
+#: modules/calendar/library/calendar-utilities.php:1273
+msgid "One month"
+msgstr "Un mese"
+
+#: modules/calendar/library/calendar-utilities.php:1240
+msgid "One month ago"
+msgstr "Un mese fa"
+
+#: modules/calendar/library/calendar-utilities.php:1261
+msgid "One week"
+msgstr "Una settimana"
+
+#: modules/content-board/content-board.php:1100
+#: modules/content-board/content-board.php:1242
+msgid "Only editable posts will be moveable."
+msgstr "Solo gli articoli modificabili saranno spostabili."
+
+#: modules/improved-notifications/improved-notifications.php:911
+msgid "Options"
+msgstr "Opzioni"
+
+#: modules/calendar/calendar.php:259
+#: modules/editorial-comments/editorial-comments.php:82
+#: modules/editorial-metadata/editorial-metadata.php:119
+#: modules/notifications/notifications.php:96
+msgid "Overview"
+msgstr "Panoramica"
+
+#: modules/editorial-metadata/editorial-metadata.php:293
+msgid "Paragraph"
+msgstr "Paragrafo"
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:106
+msgid "Parent Page Authors"
+msgstr "Autori di pagine genitore"
+
+#: modules/calendar/library/calendar-utilities.php:373
+#: modules/content-board/library/content-board-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:1026
+msgid "Passed"
+msgstr "Approvato"
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr "Percorso"
+
+#: common/php/class-module.php:335
+msgid "Pending Review"
+msgstr "In attesa di revisione"
+
+#: modules/calendar/library/calendar-utilities.php:502
+#: modules/calendar/library/calendar-utilities.php:503
+msgid "Period"
+msgstr "Periodo"
+
+#: publishpress.php:590
+msgid "Planner"
+msgstr "Planner"
+
+#: publishpress.php:674
+msgid "Please correct your form errors below and try again."
+msgstr "Correggi gli errori nel modulo sottostante e riprova."
+
+#: modules/editorial-comments/editorial-comments.php:787
+#: modules/editorial-comments/editorial-comments.php:951
+msgid "Please enter a comment."
+msgstr "Inserisci un commento."
+
+#: modules/editorial-metadata/editorial-metadata.php:1409
+msgid "Please enter a name for the editorial fields"
+msgstr "Inserisci un nome per i campi editoriali"
+
+#: modules/editorial-metadata/editorial-metadata.php:1252
+msgid "Please enter a name for the editorial fields."
+msgstr "Inserisci un nome per i campi editoriali."
+
+#: modules/editorial-metadata/editorial-metadata.php:1259
+msgid "Please enter a slug for the editorial fields."
+msgstr "Inserisci uno slug per i campi editoriali."
+
+#: modules/editorial-metadata/editorial-metadata.php:1414
+msgid "Please enter a valid, non-numeric name for the editorial fields."
+msgstr "Inserisci un nome valido e non numerico per i campi editoriali."
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Please select a valid metadata type."
+msgstr "Seleziona un tipo di metadati valido."
+
+#: lib/Notifications/Plugin.php:250
+msgid "Please select at least one event"
+msgstr "Selezionare almeno un evento"
+
+#: modules/calendar/library/calendar-methods.php:1216
+#: modules/content-board/library/content-board-utilities.php:1130
+#: modules/content-overview/library/content-overview-utilities.php:456
+msgid "Please, wait! Loading the form fields..."
+msgstr "Attendi! Caricamento in corso dei campi del modulo…"
+
+#: modules/editorial-metadata/editorial-metadata.php:454
+msgid "Popular Editorial Fields"
+msgstr "Campi editoriali più popolari"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:44
+msgid "Position"
+msgstr "Posizione"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:231
+msgid "Post"
+msgstr "Articolo"
+
+#: modules/calendar/library/calendar-methods.php:1835
+msgid "Post could not be created"
+msgstr "L'articolo non può essere creato"
+
+#: modules/calendar/library/calendar-methods.php:1828
+msgid "Post created successfully"
+msgstr "Articolo creato con successo"
+
+#: modules/content-board/content-board.php:1283
+#: modules/content-overview/content-overview.php:836
+#: modules/content-overview/content-overview.php:895
+#: modules/content-overview/content-overview.php:1219
+#: modules/calendar/library/calendar-methods.php:1245
+msgid "Post Date"
+msgstr "Data articolo"
+
+#: modules/calendar/calendar.php:241
+msgid "Post date updated."
+msgstr "Data dell'articolo aggiornata."
+
+#: publishpress.php:680
+msgid "Post does not exist"
+msgstr "L'articolo non esiste"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:160
+msgid "Post ID: %d"
+msgstr "ID Articolo: %d"
+
+#: modules/calendar/library/calendar-methods.php:794
+msgid "Post not found"
+msgstr "Articolo non trovato"
+
+#: common/php/class-module.php:1126 modules/content-board/content-board.php:811
+#: modules/content-board/content-board.php:1290
+#: modules/content-overview/content-overview.php:954
+#: modules/content-overview/content-overview.php:1226
+#: modules/calendar/library/calendar-methods.php:424
+#: modules/calendar/library/calendar-methods.php:858
+#: modules/calendar/library/calendar-methods.php:1252
+#: modules/calendar/library/calendar-utilities.php:47
+#: modules/calendar/library/calendar-utilities.php:1070
+#: modules/calendar/library/calendar-utilities.php:1189
+#: modules/content-board/library/content-board-utilities.php:594
+#: modules/content-board/library/content-board-utilities.php:1165
+#: modules/content-overview/library/content-overview-utilities.php:491
+#: modules/content-overview/library/content-overview-utilities.php:703
+msgid "Post Status"
+msgstr "Stati dell'articolo"
+
+#: modules/calendar/calendar.php:242
+msgid "Post status updated."
+msgstr "Lo stato dell'articolo è stato aggiornato."
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr "Widget stato articolo"
+
+#: modules/calendar/calendar.php:989 modules/calendar/calendar.php:1218
+#: modules/content-board/content-board.php:698
+#: modules/content-board/content-board.php:711
+#: modules/content-board/content-board.php:752
+#: modules/content-board/content-board.php:813
+#: modules/content-overview/content-overview.php:834
+#: modules/content-overview/content-overview.php:850
+#: modules/content-overview/content-overview.php:893
+#: modules/content-overview/content-overview.php:957
+#: modules/calendar/library/calendar-utilities.php:146
+#: modules/calendar/library/calendar-utilities.php:1054
+#: modules/calendar/library/calendar-utilities.php:1192
+#: modules/content-board/library/content-board-utilities.php:677
+#: modules/content-board/library/content-board-utilities.php:1153
+#: modules/content-overview/library/content-overview-utilities.php:479
+#: modules/content-overview/library/content-overview-utilities.php:799
+msgid "Post Type"
+msgstr "Tipo di articolo"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "Tipo di articolo"
+
+#: modules/calendar/library/calendar-methods.php:1214
+msgid "Post type not found"
+msgstr "Tipo di contenuto non trovato"
+
+#: modules/calendar/library/calendar-methods.php:1215
+msgid "Post type:"
+msgstr "Tipo di contenuto:"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+#, php-format
+msgid "Post type: %s"
+msgstr "Tipo di Articolo: %s"
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:46
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "Tipi di articoli"
+
+#: modules/calendar/library/calendar-methods.php:87
+msgid "Post types to show"
+msgstr "Tipi di articoli da mostrare"
+
+#: modules/content-board/library/content-board-methods.php:444
+#: modules/content-overview/library/content-overview-methods.php:167
+msgid "Post types to show:"
+msgstr "Tipi di contenuto da mostrare:"
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr "Articoli a colpo d'occhio"
+
+#: modules/calendar/library/calendar-methods.php:127
+msgid "Posts publish time format"
+msgstr "Gli articoli pubblicano il formato dell'ora"
+
+#: modules/content-board/content-board.php:1219
+#: modules/content-board/content-board.php:1286
+#: modules/content-overview/content-overview.php:1222
+#: modules/content-overview/content-overview.php:1744
+#: modules/calendar/library/calendar-methods.php:1248
+#: modules/calendar/library/calendar-utilities.php:1114
+msgid "Preview"
+msgstr "Anteprima"
+
+#: modules/content-board/content-board.php:1216
+#: modules/content-overview/content-overview.php:1741
+#, php-format
+msgid "Preview “%s”"
+msgstr "Anteprima “%s”"
+
+#: modules/content-board/content-board.php:1288
+#: modules/content-overview/content-overview.php:1224
+#: modules/calendar/library/calendar-methods.php:1250
+msgid "Previous Post"
+msgstr "Articolo precedente"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "Stato precedente"
+
+#: modules/content-board/library/content-board-utilities.php:51
+#: modules/content-overview/library/content-overview-methods.php:282
+msgid "Print"
+msgstr "Stampa"
+
+#: common/php/class-module.php:334 modules/content-board/content-board.php:989
+msgid "Private"
+msgstr "Privato"
+
+#: modules/content-board/library/content-board-utilities.php:1171
+#: modules/content-overview/library/content-overview-utilities.php:497
+msgid "Publish Date"
+msgstr "Data di pubblicazione"
+
+#: modules/calendar/library/calendar-methods.php:864
+msgid "Publish Time"
+msgstr "Pubblicare l'ora"
+
+#: common/php/class-module.php:331 modules/calendar/calendar.php:1231
+msgid "Published"
+msgstr "Pubblicato"
+
+#: modules/calendar/library/calendar-methods.php:423
+msgid "Publishing Time"
+msgstr "Tempo di pubblicazione"
+
+#. Author of the plugin
+#: modules/settings/settings.php:61
+#: modules/calendar/library/calendar-utilities.php:1227
+msgid "PublishPress"
+msgstr "PublishPress"
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr "Registro di debug di PublishPress"
+
+#. Name of the plugin
+#: modules/settings/settings.php:266
+msgid "PublishPress Planner"
+msgstr "PublishPress Planner"
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content inside WordPress. "
+"Features include a content calendar, kanban board, and notifications."
+msgstr ""
+"PublishPress Planner ti aiuta a programmare e pubblicare i contenuti in "
+"WordPress. Le caratteristiche includono un calendario dei contenuti, una "
+"lavagna kanban e le notifiche."
+
+#: publishpress.php:1456
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+"PublishPress Planner ha provato a ricaricarsi più volte. Dissattiva e "
+"rimuovi le altre istanze di PublishPress, in special modo se stai "
+"utilizzando PublishPress Pro."
+
+#: lib/Legacy/Util.php:206
+msgid "PublishPress Revisions integration"
+msgstr "Integrazione di PublishPress Revisions"
+
+#: modules/settings/settings.php:141
+msgid "PublishPress Settings"
+msgstr "Impostazioni di PublishPress"
+
+#: modules/improved-notifications/improved-notifications.php:1103
+msgid "Receiver"
+msgstr "Destinatario"
+
+#: modules/calendar/library/calendar-methods.php:546
+msgid "Regenerate calendar feed secret"
+msgstr "Rigenera il feed secret del calendario"
+
+#: modules/editorial-metadata/editorial-metadata.php:1637
+msgid "Register editorial fields for these post types:"
+msgstr "Registra i campi editoriali per questi tipi di contenuto:"
+
+#: modules/editorial-comments/editorial-comments.php:218
+#: modules/editorial-comments/editorial-comments.php:728
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: lib/Legacy/Util.php:212
+msgid "Remove PublishPress ads and branding"
+msgstr "Rimuovi la pubblicità e il marchio di PublishPress"
+
+#: modules/content-board/library/content-board-utilities.php:218
+msgid "Reorder"
+msgstr "Riordina"
+
+#: modules/content-overview/library/content-overview-utilities.php:26
+msgid "Reorder Columns"
+msgstr "Riordina colonne"
+
+#: modules/calendar/library/calendar-utilities.php:583
+#: modules/content-board/library/content-board-utilities.php:364
+#: modules/content-overview/library/content-overview-utilities.php:172
+msgid "Reorder Filters"
+msgstr "Riordina filtri"
+
+#: modules/editorial-comments/editorial-comments.php:632
+msgid "Reply"
+msgstr "Rispondi"
+
+#: modules/editorial-comments/editorial-comments.php:629
+msgid "Reply to this comment"
+msgstr "Rispondi a questo commento"
+
+#: modules/notifications/notifications.php:2230
+#, php-format
+msgid "Reply: %s"
+msgstr "Rispondi: %s"
+
+#: lib/Legacy/Util.php:230
+msgid "Request Support"
+msgstr "Richiesta di supporto"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:361
+#: modules/notifications-log/library/NotificationsLogTable.php:406
+msgid "Reschedule"
+msgstr "Riprogrammare"
+
+#: modules/calendar/library/calendar-utilities.php:554
+#: modules/content-board/library/content-board-utilities.php:153
+#: modules/content-board/library/content-board-utilities.php:551
+#: modules/content-overview/library/content-overview-methods.php:384
+#: modules/content-overview/library/content-overview-utilities.php:656
+msgid "Reset"
+msgstr "Reimposta"
+
+#: modules/calendar/library/calendar-utilities.php:553
+#: modules/content-board/library/content-board-utilities.php:152
+#: modules/content-overview/library/content-overview-methods.php:383
+msgid "Reset Filters"
+msgstr "Reimposta i filtri"
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr "Recensioni"
+
+#: common/php/class-module.php:1126
+#: modules/content-overview/content-overview.php:833
+#: modules/content-overview/content-overview.php:848
+#: modules/content-overview/content-overview.php:955
+#: modules/calendar/library/calendar-utilities.php:1190
+msgid "Revision Status"
+msgstr "Stato della revisione"
+
+#: common/php/class-module.php:753
+msgid "Role"
+msgstr "Ruolo"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#, php-format
+msgid "role:%s"
+msgstr "ruolo:%s"
+
+#: common/php/class-module.php:750
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "Ruoli"
+
+#: modules/calendar/library/calendar-methods.php:1223
+msgid "Sat"
+msgstr "Sab"
+
+#: modules/calendar/library/calendar-methods.php:1210
+msgid "Save"
+msgstr "Salva"
+
+#: modules/calendar/library/calendar-methods.php:1212
+msgid "Save and edit"
+msgstr "Salva e modifica"
+
+#: modules/content-board/content-board.php:1291
+#: modules/content-overview/content-overview.php:1227
+#: modules/calendar/library/calendar-methods.php:1253
+msgid "Save Changes"
+msgstr "Salva modifiche"
+
+#: modules/calendar/library/calendar-methods.php:1211
+msgid "Saving..."
+msgstr "Salvataggio in corso…"
+
+#: common/php/class-module.php:333 modules/calendar/calendar.php:1226
+#: modules/content-board/content-board.php:979
+#: modules/notifications-log/library/NotificationsLogTable.php:529
+msgid "Scheduled"
+msgstr "Programmato"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:233
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr "Pianificato per %d destinatari. Fare clic qui per visualizzarli."
+
+#: modules/calendar/calendar.php:738
+#: modules/calendar/library/calendar-utilities.php:486
+#: modules/content-board/library/content-board-utilities.php:98
+#: modules/content-overview/library/content-overview-methods.php:329
+msgid "Search"
+msgstr "Cerca"
+
+#: modules/calendar/library/calendar-utilities.php:169
+#: modules/calendar/library/calendar-utilities.php:485
+#: modules/content-board/library/content-board-utilities.php:97
+#: modules/content-board/library/content-board-utilities.php:700
+#: modules/content-overview/library/content-overview-methods.php:328
+#: modules/content-overview/library/content-overview-utilities.php:822
+msgid "Search box"
+msgstr "Casella di ricerca"
+
+#: modules/editorial-comments/editorial-comments.php:298
+msgid "Search Comments"
+msgstr "Cerca commenti"
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "Search Editorial Fields"
+msgstr "Cerca campi editoriali"
+
+#: modules/calendar/library/calendar-utilities.php:613
+#: modules/content-board/library/content-board-utilities.php:248
+#: modules/content-overview/library/content-overview-utilities.php:56
+msgid "Search Metakey"
+msgstr "Cerca chiave meta"
+
+#: publishpress.php:1412
+msgid "Search Notifications"
+msgstr "Cerca notifiche"
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:285
+#, php-format
+msgid "Search results for “%s”"
+msgstr "Risultati della ricerca per “%s”"
+
+#: common/php/class-module.php:1109
+#, php-format
+msgid "Select %s"
+msgstr "Seleziona %s"
+
+#: modules/improved-notifications/improved-notifications.php:1090
+msgid "Select at least one option for each section."
+msgstr "Seleziona almeno una opzione per ciascuna selezione."
+
+#: modules/content-board/library/content-board-utilities.php:394
+#: modules/content-overview/library/content-overview-utilities.php:202
+msgid "Select Metakey"
+msgstr "Seleziona Metakey"
+
+#: modules/calendar/library/calendar-utilities.php:211
+#: modules/content-board/library/content-board-utilities.php:742
+#: modules/content-overview/library/content-overview-utilities.php:864
+msgid "Select option..."
+msgstr "Seleziona opzione…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:211
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:523
+msgid "Select roles..."
+msgstr "Selezionare i ruoli…"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:229
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:542
+msgid "Select Type"
+msgstr "Selezione tipo"
+
+#: lib/Legacy/Util.php:208
+msgid "Send reminder notifications"
+msgstr "Invia notifiche di promemoria"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:288
+msgid "Sent"
+msgstr "Inviato"
+
+#: modules/calendar/library/calendar-methods.php:1232
+msgid "Sep"
+msgstr "Set"
+
+#: modules/settings/settings.php:142
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: modules/settings/settings.php:124
+msgid "settings"
+msgstr "impostazioni"
+
+#: modules/content-overview/content-overview.php:676
+#: modules/content-board/library/content-board-methods.php:172
+msgid "Settings updated successfully."
+msgstr "Le impostazioni sono state aggiornate correttamente."
+
+#: modules/calendar/library/calendar-utilities.php:1286
+msgid "Seven months"
+msgstr "Sette mesi"
+
+#: modules/improved-notifications/improved-notifications.php:1104
+msgid "shortcode"
+msgstr "shortcode"
+
+#: modules/calendar/library/calendar-methods.php:1207
+#, php-format
+msgid "Show %s more"
+msgstr "Mostra più %s"
+
+#: modules/notifications/notifications.php:610
+msgid "Show active notifications"
+msgstr "Mostra notifiche attive"
+
+#: modules/content-board/library/content-board-utilities.php:509
+#: modules/content-overview/library/content-overview-utilities.php:614
+msgid "Show content from"
+msgstr "Mostra i contenuti dal"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:346
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:656
+msgid "Show on Content Calendar and Overview form"
+msgstr "Mostra nel modulo del calendario e della panoramica dei contenuti"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:394
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:704
+msgid "Show on Post Types screen"
+msgstr "Mostra nelle schermate dei tipi di contenuto"
+
+#: modules/calendar/calendar.php:737
+msgid "Show Revision"
+msgstr "Mostra la revisione"
+
+#: modules/notifications/notifications.php:1722
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+"Mostra i link «Avvisami» e «Non avvisarmi più» per questi tipi di post:"
+
+#: modules/calendar/library/calendar-methods.php:95
+msgid "Show today's date in the first row"
+msgstr "Mostra la data odierna nella prima riga"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:233
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:545
+msgid "Single Select"
+msgstr "Selezione singola"
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "Amministratore del sito"
+
+#: modules/calendar/library/calendar-utilities.php:1284
+msgid "Six months"
+msgstr "Sei mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1250
+msgid "Six months ago"
+msgstr "Sei mesi fa"
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr "Dimensione"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr "Salta l'utente corrente"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr "Salta le notifiche per l'utente che ha creato l'azione"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:291
+#: modules/notifications-log/library/NotificationsLogTable.php:525
+msgid "Skipped"
+msgstr "Saltato"
+
+#: lib/Legacy/Util.php:207
+msgid "Slack integration for notifications"
+msgstr "Integrazioni con Slack per le notifiche"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:163
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:457
+msgid "Slug"
+msgstr "Slug"
+
+#: modules/editorial-metadata/editorial-metadata.php:1276
+msgid "Slug already in use. Please choose another."
+msgstr "Questo slug già esiste. Scegli un altro nome."
+
+#: modules/notifications/notifications.php:1868
+msgid "slug1,slug2"
+msgstr "slug1,slug2"
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "Spiacente! Non sei iscritto a nessun articolo!"
+
+#: modules/editorial-comments/editorial-comments.php:1089
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+"Non puoi eliminare questo commento editoriale perché ha delle risposte."
+
+#: modules/editorial-comments/editorial-comments.php:777
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Spiacenti, non hai i privilegi per aggiungere commenti editoriali. Contatta "
+"l'amministratore."
+
+#: modules/editorial-comments/editorial-comments.php:1068
+#: modules/editorial-comments/editorial-comments.php:1172
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+"Non hai i privilegi per eliminare questo commento editoriale. Rivolgiti "
+"all'amministratore."
+
+#: modules/editorial-comments/editorial-comments.php:920
+#: modules/editorial-comments/editorial-comments.php:1052
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Non hai i privilegi per eliminare i commenti editoriali. Rivolgiti "
+"all'amministratore."
+
+#: modules/editorial-comments/editorial-comments.php:938
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+"Non hai i privilegi per modificare questo commento editoriale. Rivolgiti "
+"all'amministratore."
+
+#: modules/calendar/calendar.php:735
+msgid "Start Date"
+msgstr "Data d'inizio"
+
+#: modules/calendar/library/calendar-utilities.php:1234
+msgid "Start date"
+msgstr "Data d'inizio"
+
+#: modules/calendar/calendar.php:987
+#: modules/content-board/content-board.php:709
+#: modules/content-overview/content-overview.php:832
+#: modules/content-overview/content-overview.php:847
+#: modules/content-overview/content-overview.php:892
+#: modules/notifications-log/library/NotificationsLogTable.php:500
+msgid "Status"
+msgstr "Stato"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2124
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "Lo stato per %1$s #%2$s \"%3$s\" è stato modificato da %4$s %5$s"
+
+#: modules/calendar/library/calendar-methods.php:119
+msgid "Statuses to display publish time"
+msgstr "Stati per visualizzare l'ora di pubblicazione"
+
+#: modules/notifications/notifications.php:538
+#: modules/notifications/notifications.php:946
+msgid "Stop notifying me"
+msgstr "Non avvisarmi più"
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr "Oggetto"
+
+#: modules/notifications-log/notifications-log.php:824
+msgid "Subject:"
+msgstr "Oggetto:"
+
+#: modules/content-board/library/content-board-utilities.php:1123
+#: modules/content-overview/library/content-overview-utilities.php:449
+msgid "Submit"
+msgstr "Invia"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:233
+msgid "Submitted on"
+msgstr "Inviato il"
+
+#: modules/calendar/library/calendar-utilities.php:1229
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "Iscriviti a iCal o Google Calendar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:521
+msgid "Success"
+msgstr "Successo"
+
+#: modules/calendar/library/calendar-methods.php:1217
+msgid "Sun"
+msgstr "Dom"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "synchronous"
+msgstr "sincrono"
+
+#: modules/calendar/library/calendar-utilities.php:1085
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Tag"
+msgstr[1] "Tag"
+
+#: modules/calendar/library/calendar-methods.php:894
+#: modules/content-board/library/content-board-utilities.php:1199
+#: modules/content-overview/library/content-overview-utilities.php:525
+msgid "Tags"
+msgstr "Tag"
+
+#: modules/content-board/content-board.php:767
+#: modules/content-board/content-board.php:827
+#: modules/content-overview/content-overview.php:910
+#: modules/content-overview/content-overview.php:971
+#: modules/calendar/library/calendar-utilities.php:1206
+#: lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php:34
+msgid "Taxonomies"
+msgstr "Tassonomie"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr "Tassonomia"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgctxt "taxonomy general name"
+msgid "Editorial Field"
+msgstr "Campo editoriale"
+
+#: modules/content-board/content-board.php:1292
+#: modules/content-overview/content-overview.php:1228
+#: modules/calendar/library/calendar-methods.php:1254
+msgid "Taxonomy not set."
+msgstr "La tassonomia non è stata impostata."
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgctxt "taxonomy singular name"
+msgid "Editorial Field"
+msgstr "Campo editoriale"
+
+#: modules/calendar/library/calendar-utilities.php:1292
+msgid "Ten months"
+msgstr "Dieci mesi"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "Termini"
+
+#: modules/editorial-metadata/editorial-metadata.php:1549
+msgid "Terms not set."
+msgstr "Termini non impostati."
+
+#: modules/editorial-metadata/editorial-metadata.php:294
+msgid "Text"
+msgstr "Testo"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:466
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+"Lo \"slug\" è la versione del nome compatibile con l'URL. Di solito è tutto "
+"minuscolo e contiene solo lettere, numeri e trattini."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:184
+msgid ""
+"The description can be used to communicate with your team about what the "
+"field is for."
+msgstr ""
+"La descrizione può essere utilizzata per comunicare con il tuo team a cosa "
+"serve il campo."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:483
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+"La descrizione può essere utilizzata per comunicare con il tuo team a cosa "
+"servono quei metadati."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr "Integrazione The Events Calendar"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:198
+msgid "The field type cannot be changed once created."
+msgstr "Il tipo di campo una volta creato non può essere modificato."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:158
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:452
+msgid "The name is for labeling the editorial fields."
+msgstr "Il nome serve per etichettare i campi editoriali"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:283
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+"La notifica è stata impostata come \"Pianificata\" ma l'attività cron non è "
+"stata trovata"
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+"Il modulo delle notifiche dovrà essere abilitato per visualizzare questo "
+"widget."
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "Il registro genitore è stato eliminato o probabilmente riprogrammato"
+
+#: modules/calendar/library/calendar-methods.php:1705
+msgid "The selected post type is not enabled for the calendar."
+msgstr "Il tipo di contenuto selezionato non è abilitato per il calendario."
+
+#: modules/calendar/calendar.php:1807
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+"L'utente selezionato non dispone di autorizzazioni sufficienti per essere "
+"impostato come autore dell'articolo."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:168
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+"Una volta che il termine è stato creato il suo slug non può essere cambiato."
+
+#: modules/content-board/content-board.php:1268
+#: modules/content-overview/content-overview.php:1199
+msgid "There are no posts in the range or filter specified."
+msgstr "Non sono presenti post nell'intervallo o nel filtro specificato."
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr "Non ci sono moduli PublishPress registrati"
+
+#: modules/editorial-comments/editorial-comments.php:874
+#: modules/editorial-comments/editorial-comments.php:1004
+#: modules/editorial-comments/editorial-comments.php:1114
+#: modules/editorial-comments/editorial-comments.php:1198
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+"C'era un problema di qualche tipo. Riprova o contatta il tuo amministratore."
+
+#: modules/calendar/calendar.php:243
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+"Si è verificato un errore nell'aggiornamento dell'articolo. Prova ancora."
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2135
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "Questa azione è stata intrapresa il %1$s alle %2$s %3$s"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial fields type is not yet supported."
+msgstr "Questo tipo di campo editoriale non è ancora supportato."
+
+#: modules/notifications/notifications.php:1066
+#, php-format
+msgid "This email was sent %s."
+msgstr "Questa email è stata spedita %s."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:375
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:686
+msgid "This field will be available for these post types."
+msgstr "Questo campo sarà disponibile per questi tipi di contenuto."
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:399
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:708
+msgid ""
+"This field will be viewable on the overview screens for these post types."
+msgstr ""
+"Questo campo sarà visibile nelle schermate panoramiche per questo tipi di "
+"contenuto."
+
+#: modules/notifications-log/notifications-log.php:842
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+"Questa è un'anteprima del messaggio pianificato. Il contenuto può ancora "
+"essere modificato fino a quando non viene inviata la notifica."
+
+#: modules/content-board/content-board.php:1056
+msgid ""
+"This is the default publish date from today for posts moving to the "
+"Scheduled status."
+msgstr ""
+"Questa è la data predefinita da oggi per gli articoli che vengono spostati "
+"allo stato \"Programmato\"."
+
+#: modules/notifications-log/notifications-log.php:449
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+"Questa notifica è molto simile a un'altra inviata meno di %d minuti fa allo "
+"stesso destinatario"
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr "Questo articolo è stato aggiornato l'ultima volta il "
+
+#: modules/improved-notifications/improved-notifications.php:425
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+"Questo previene che troppe notifiche vengano inviate per lo stesso o per "
+"eventi simili. Impostalo su un numero alto quando ricevi duplicati di email."
+
+#: modules/notifications/notifications.php:649
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Users who selected \"Notify me\" for the content\" option."
+msgstr ""
+"Questo non avrà alcun effetto se non si dispone di almeno un flusso di "
+"lavoro mirato all'opzione “Utenti che hanno selezionato ‘Notificami’ per il "
+"contenuto”."
+
+#: modules/calendar/library/calendar-utilities.php:1278
+msgid "Three months"
+msgstr "Tre mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1244
+msgid "Three months ago"
+msgstr "Tre mesi fa"
+
+#: modules/calendar/library/calendar-utilities.php:1265
+msgid "Three weeks"
+msgstr "Tre settimane"
+
+#: modules/calendar/library/calendar-methods.php:1221
+msgid "Thu"
+msgstr "Gio"
+
+#: modules/content-board/content-board.php:421
+#: modules/content-overview/content-overview.php:418
+#: lib/Notifications/Table/Notifications.php:156
+#: lib/Notifications/Table/Workflows.php:142
+#: modules/calendar/library/calendar-methods.php:853
+#: modules/content-board/library/content-board-utilities.php:244
+#: modules/content-board/library/content-board-utilities.php:1159
+#: modules/content-overview/library/content-overview-utilities.php:485
+msgid "Title"
+msgstr "Titolo"
+
+#: modules/notifications/notifications.php:2157
+#, php-format
+msgid "Title: %s"
+msgstr "Titolo: %s"
+
+#: modules/calendar/library/calendar-utilities.php:245
+#: modules/calendar/library/calendar-utilities.php:279
+#: modules/content-board/library/content-board-utilities.php:112
+#: modules/content-board/library/content-board-utilities.php:776
+#: modules/content-board/library/content-board-utilities.php:810
+#: modules/content-overview/library/content-overview-methods.php:343
+#: modules/content-overview/library/content-overview-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:932
+msgid "to"
+msgstr "a"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:632
+msgid "To date"
+msgstr "Ad oggi"
+
+#: modules/calendar/library/calendar-methods.php:326
+#, php-format
+msgid ""
+"To refine your workflow with custom Post Statuses, install the "
+"%sPublishPress Statuses%s plugin."
+msgstr ""
+"Per perfezionare il flusso di lavoro con gli stati personalizzati degli "
+"articoli, installare il plugin %sPublishPress Statuses%s."
+
+#: modules/calendar/library/calendar-methods.php:1243
+msgid "Today"
+msgstr "Oggi"
+
+#: common/php/class-module.php:336 modules/content-board/content-board.php:1190
+#: modules/content-board/content-board.php:1285
+#: modules/content-overview/content-overview.php:1221
+#: modules/content-overview/content-overview.php:1715
+#: modules/calendar/library/calendar-methods.php:1247
+#: modules/calendar/library/calendar-utilities.php:1104
+msgid "Trash"
+msgstr "Cestino"
+
+#: modules/calendar/library/calendar-methods.php:1219
+msgid "Tue"
+msgstr "Mar"
+
+#: modules/calendar/library/calendar-utilities.php:1296
+msgid "Twelve months"
+msgstr "Dodici mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1276
+msgid "Two months"
+msgstr "Due mesi"
+
+#: modules/calendar/library/calendar-utilities.php:1242
+msgid "Two months ago"
+msgstr "Due mesi fa"
+
+#: modules/calendar/library/calendar-utilities.php:1263
+msgid "Two weeks"
+msgstr "Due settimane"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:193
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:491
+msgid "Type"
+msgstr "Tipo"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr "Si è verificato un errore indefinito"
+
+#: modules/calendar/calendar.php:1118
+#: modules/content-board/content-board.php:614
+#: modules/content-overview/library/content-overview-methods.php:221
+msgid "Undo"
+msgstr "Annulla azione"
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr "Contenuto non pubblicato"
+
+#: modules/calendar/library/calendar-methods.php:1208
+#: modules/calendar/library/calendar-methods.php:1711
+msgid "Untitled"
+msgstr "Senza titolo"
+
+#: modules/editorial-metadata/editorial-metadata.php:457
+msgid "Update Editorial Fields"
+msgstr "Aggiorna i campi editoriali"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:422
+msgid "Update Editorial fields term"
+msgstr "Aggiorna termine dei campi editoriali"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "Nota di aggiornamento"
+
+#: modules/calendar/calendar.php:247
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+"L'aggiornamento dinamico della data di pubblicazione non funziona per i "
+"contenuti pubblicati. Dovresti modificare l'articolo ."
+
+#: includes.php:161 lib/Legacy/Util.php:216
+msgid "Upgrade to Pro"
+msgstr "Aggiorna a Pro"
+
+#: lib/Legacy/Util.php:198
+msgid "Upgrade to PublishPress Planner Pro"
+msgstr "Aggiorna a PublishPress Planner Pro"
+
+#: lib/Legacy/Util.php:209
+msgid "Use post meta in notifications"
+msgstr "Utilizza i metadati dell'articolo nelle notifiche"
+
+#: modules/editorial-metadata/editorial-metadata.php:295
+msgid "User"
+msgstr "Utente"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "utente"
+
+#: modules/improved-notifications/improved-notifications.php:1100
+msgid "User making changes or comments"
+msgstr "Utente che apporta modifiche o commenti"
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:204
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:516
+msgid "User role"
+msgstr "Ruolo utente"
+
+#: modules/editorial-comments/editorial-comments.php:1279
+msgid "User Url"
+msgstr "Url utente"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:128
+#, php-format
+msgid "User: %s (%d)"
+msgstr "Utente: %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1274
+msgid "Username"
+msgstr "Nome utente"
+
+#: common/php/class-module.php:772
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "Utenti"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr "Utenti che hanno selezionato «Avvisami» per il contenuto"
+
+#: modules/content-board/content-board.php:1206
+#: modules/content-board/content-board.php:1287
+#: modules/content-overview/content-overview.php:1223
+#: modules/content-overview/content-overview.php:1731
+#: modules/calendar/library/calendar-methods.php:1249
+#: modules/calendar/library/calendar-utilities.php:1111
+msgid "View"
+msgstr "Visualizza"
+
+#: modules/content-board/content-board.php:1200
+#: modules/content-overview/content-overview.php:1725
+#, php-format
+msgid "View “%s”"
+msgstr "Visualizza “%s”"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr "Visualizza “%s” su Google Maps"
+
+#: lib/Legacy/Util.php:241
+msgid "View Knowledge Base"
+msgstr "Vedi la documentazione di base"
+
+#: modules/notifications/notifications.php:2181
+#: modules/notifications/notifications.php:2238
+#, php-format
+msgid "View: %s"
+msgstr "Visualizza: %s"
+
+#: publishpress.php:1464
+msgid "Warning"
+msgstr "Attenzione"
+
+#: modules/calendar/library/calendar-methods.php:1220
+msgid "Wed"
+msgstr "Mer"
+
+#: modules/calendar/calendar.php:734
+msgid "Weeks"
+msgstr "Settimane"
+
+#: modules/editorial-metadata/editorial-metadata.php:223
+msgid "What the post needs to cover."
+msgstr "Di che cosa deve trattare l'articolo."
+
+#: modules/improved-notifications/improved-notifications.php:970
+msgid "What to say?"
+msgstr "Cosa dire?"
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "Quando viene aggiunto un commento editoriale"
+
+#: lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php:28
+msgid "When taxonomy is updated"
+msgstr "Quando la tassonomia viene aggiornata"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "Quando il contenuto viene cambiato di stato"
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr "Quando il contenuto è aggiornato"
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "When the first draft needs to be ready."
+msgstr "Quando deve essere pronta la prima bozza."
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "Quando lo stato è cambiato"
+
+#: lib/Notifications/Plugin.php:64
+#: modules/improved-notifications/improved-notifications.php:940
+#: modules/notifications-log/library/NotificationsLogTable.php:497
+msgid "When to notify?"
+msgstr "Quando notificare?"
+
+#: lib/Notifications/Plugin.php:66
+#: modules/improved-notifications/improved-notifications.php:960
+#: modules/notifications-log/library/NotificationsLogTable.php:499
+msgid "Who to notify?"
+msgstr "Chi notificare?"
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr "Opzioni del widget"
+
+#: modules/notifications/notifications.php:2010
+msgid "WordPress Scheduler"
+msgstr "Programmazione di WordPress"
+
+#: modules/improved-notifications/improved-notifications.php:1101
+msgid "Workflow"
+msgstr "Workflow"
+
+#: modules/notifications/notifications.php:691
+msgid "Workflow has users enrolled"
+msgstr "Il flusso di lavoro ha degli utenti iscritti"
+
+#: modules/improved-notifications/improved-notifications.php:902
+msgid "Workflow Settings"
+msgstr "Impostazioni del workflow"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:116
+#, php-format
+msgid "Workflow: %s"
+msgstr "Workflow: %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:477
+#: modules/improved-notifications/improved-notifications.php:1281
+msgid "Workflows"
+msgstr "Workflow"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:351
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:660
+msgid "Yes"
+msgstr "Sì"
+
+#: modules/notifications/notifications.php:1061
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr "Hai ricevuto questa email perché ti sei iscritto a \"%s\"."
+
+#: modules/improved-notifications/improved-notifications.php:1094
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+"Puoi aggiungere informazioni dinamiche all'oggetto o al corpo del testo "
+"utilizzando i seguenti shortcode:"
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+"Puoi aggiungere i commenti editoriali all'articolo soltanto dopo averlo "
+"salvato la prima volta."
+
+#: modules/notifications/notifications.php:2241
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr "Puoi vedere qui tutti i commenti editoriali su questo %s: "
+
+#: modules/content-board/content-board.php:761
+#: modules/content-board/content-board.php:821
+#: modules/content-overview/content-overview.php:904
+#: modules/content-overview/content-overview.php:965
+#: modules/calendar/library/calendar-utilities.php:1200
+msgid "You do not have any editorial fields enabled"
+msgstr "Non c'è nessun campo editoriale abilitato"
+
+#: modules/content-board/content-board.php:768
+#: modules/content-board/content-board.php:828
+#: modules/content-overview/content-overview.php:911
+#: modules/content-overview/content-overview.php:972
+#: modules/calendar/library/calendar-utilities.php:1207
+msgid "You do not have any public taxonomies"
+msgstr "Non c'è nessuna tassonomia pubblica"
+
+#: publishpress.php:676
+msgid "You do not have necessary permissions to complete this action."
+msgstr "Non hai i permessi necessari per completare questa operazione."
+
+#: modules/content-overview/content-overview.php:762
+#: modules/content-board/library/content-board-methods.php:258
+#, php-format
+msgid "You do not have permission to add new %s"
+msgstr "Non hai i permessi necessari per aggiungere nuovi %s"
+
+#: modules/content-board/library/content-board-methods.php:63
+msgid "You do not have permission to edit selected post."
+msgstr "Non hai i permessi necessari per modificare l'articolo selezionato."
+
+#: modules/content-board/library/content-board-methods.php:65
+msgid "You do not have permission to move post to selected post status."
+msgstr ""
+"Non hai i permessi necessari per spostare l'articolo allo stato di articolo "
+"selezionato."
+
+#: modules/content-board/content-board.php:1029
+msgid "You do not have permission to move post to this status"
+msgstr "Non hai i permessi necessari per spostare l'articolo a questo stato"
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "Non hai nessuna notifica"
+
+#: includes.php:127
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
+"Stai usando la versione gratuita di PublishPress Planner. La versione Pro ha "
+"più funzionalità e un supporto migliore. %sAggiorna a Pro%s"
+
+#~ msgid "Add New Notify Email"
+#~ msgstr "Aggiungi nuova email di notifica"
+
+#~ msgid "Add New Notify Role"
+#~ msgstr "Aggiungi nuova notifica di ruolo"
+
+#~ msgid "Add New Notify User"
+#~ msgstr "Aggiungi nuovo utente di notifica"
+
+#~ msgid "Add or remove notify emails"
+#~ msgstr "Aggiungi o elimina email di notifica"
+
+#~ msgid "Add or remove notify roles"
+#~ msgstr "Aggiungi o elimina notifiche di ruolo"
+
+#~ msgid "Add or remove notify users"
+#~ msgstr "Aggiungi o elimina utenti di notifica"
+
+#~ msgid "All Notify Emails"
+#~ msgstr "Tutte le email di notifica"
+
+#~ msgid "All Notify Roles"
+#~ msgstr "Tutte le notifiche di ruolo"
+
+#~ msgid "All Notify Users"
+#~ msgstr "Tutti gli utenti di notifica"
+
+#~ msgid "Back to notify emails"
+#~ msgstr "Torna alle email di notifica"
+
+#~ msgid "Back to notify roles"
+#~ msgstr "Torna alle notifiche dei ruoli"
+
+#~ msgid "Back to notify users"
+#~ msgstr "Torna agli utenti da notificare"
+
+#~ msgid "Choose from the most used notify emails"
+#~ msgstr "Scegli tra le email di notifica più utilizzate"
+
+#~ msgid "Choose from the most used notify roles"
+#~ msgstr "Scegli tra le notifiche di ruolo"
+
+#~ msgid "Choose from the most used notify users"
+#~ msgstr "Scegli tra gli utenti di notifica più usati"
+
+#~ msgid "Edit Notify Email"
+#~ msgstr "Modifica l'email di notifica"
+
+#~ msgid "Edit Notify Role"
+#~ msgstr "Modifica notifica di ruolo"
+
+#~ msgid "Edit Notify User"
+#~ msgstr "Modifica utente di notifica"
+
+#~ msgid "Filter by notify email"
+#~ msgstr "Filtra per email di notifica"
+
+#~ msgid "Filter by notify role"
+#~ msgstr "Filtra per notifiche di ruolo"
+
+#~ msgid "Filter by notify user"
+#~ msgstr "Filtra per utenti di notifica"
+
+#~ msgid "Most Used Notify Email"
+#~ msgstr "Email di notifica più utilizzate"
+
+#~ msgid "Most Used Notify Role"
+#~ msgstr "Notifiche di ruolo più usate"
+
+#~ msgid "Most Used Notify User"
+#~ msgstr "Gli utenti di notifica più usati"
+
+#~ msgid "New Notify Email"
+#~ msgstr "Nuova email di notifica"
+
+#~ msgid "New Notify Role"
+#~ msgstr "Nuova notifica di ruolo"
+
+#~ msgid "New Notify User"
+#~ msgstr "Nuovo utente di notifica"
+
+#~ msgid "No notify emails"
+#~ msgstr "Nessuna email di notifica"
+
+#~ msgid "No notify roles"
+#~ msgstr "Nessuna notifica di ruoli"
+
+#~ msgid "No notify users"
+#~ msgstr "Nessun utente di notifica"
+
+#~ msgid "Parent Notify Email"
+#~ msgstr "Email di notifica genitore"
+
+#~ msgid "Parent Notify Email:"
+#~ msgstr "Email di notifica genitore:"
+
+#~ msgid "Parent Notify Role"
+#~ msgstr "Notifica di ruolo genitore"
+
+#~ msgid "Parent Notify Role:"
+#~ msgstr "Notifica di ruolo genitore:"
+
+#~ msgid "Parent Notify User"
+#~ msgstr "Utente di notifica genitore"
+
+#~ msgid "Parent Notify User:"
+#~ msgstr "Utente di notifica genitore:"
+
+#~ msgid "Popular Notify Emails"
+#~ msgstr "Email di notifica più popolari"
+
+#~ msgid "Popular Notify Roles"
+#~ msgstr "Notifiche di ruolo più popolari"
+
+#~ msgid "Popular Notify Users"
+#~ msgstr "Utenti di notifica più popolari"
+
+#~ msgid "Search Notify Emails"
+#~ msgstr "Cerca email di notifica"
+
+#~ msgid "Search Notify Roles"
+#~ msgstr "Cerca notifiche di ruolo"
+
+#~ msgid "Search Notify Users"
+#~ msgstr "Cerca utenti di notifica"
+
+#~ msgid "Separate notify emails with commas"
+#~ msgstr "Separa con virgola le email di notifica"
+
+#~ msgid "Separate notify roles with commas"
+#~ msgstr "Separa con virgole le notifiche di ruolo"
+
+#~ msgid "Separate notify users with commas"
+#~ msgstr "Separa con virgole gli utenti di notifica"
+
+#~ msgid "Update Notify Email"
+#~ msgstr "Aggiorna l'email di notifica"
+
+#~ msgid "Update Notify Role"
+#~ msgstr "Aggiorna la notifica di ruolo"
+
+#~ msgid "Update Notify User"
+#~ msgstr "Aggiorna utente di notifica"
+
+#~ msgid "View Notify Email"
+#~ msgstr "Visualizza l'email di notifica"
+
+#~ msgid "View Notify Role"
+#~ msgstr "Visualizza notifica di ruolo"
+
+#~ msgid "View Notify User"
+#~ msgstr "Visualizza utente di notifica"
+
+#, php-format
+#~ msgid "%s week"
+#~ msgid_plural "%s weeks"
+#~ msgstr[0] "%s settimana"
+#~ msgstr[1] "%s settimane"
+
+#~ msgid "«"
+#~ msgstr "«"
+
+#~ msgid "‹"
+#~ msgstr "‹"
+
+#~ msgid "»"
+#~ msgstr "»"
+
+#~ msgid "›"
+#~ msgstr "›"
+
+#~ msgid "Back %d weeks"
+#~ msgstr "Indietro di %d settimane"
+
+#~ msgid "Back 1 week"
+#~ msgstr "Indietro di una settimana"
+
+#~ msgid "Edit this item"
+#~ msgstr "Modifica questo elemento"
+
+#~ msgid "Forward %d weeks"
+#~ msgstr "Avanti di %d settimane"
+
+#~ msgid "Forward 1 week"
+#~ msgstr "Avanti di una settimana"
+
+#, php-format
+#~ msgid "Save “%s”"
+#~ msgstr "Salva “%s”"
+
+#~ msgid ""
+#~ "The number of weeks shown on the calendar can be changed on a user-by-"
+#~ "user basis using the calendar's screen options."
+#~ msgstr ""
+#~ "Il numero di settimane mostrato nel calendario può essere modificato per "
+#~ "ciascun utente utilizzando le opzioni della schermata del calendario."
+
+#, php-format
+#~ msgid "Today is %s"
+#~ msgstr "Oggi è %s"
+
+#~ msgid "View all categories"
+#~ msgstr "Visualizza tutte le categorie"
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you activate the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Gli stati personalizzati sono disabilitati finché non attivi il plugin "
+#~ "%1$sPublishPress Statuses%2$s. Vedi %3$sPlanner > Impostazioni%4$s per i "
+#~ "dettagli."
+
+#, php-format
+#~ msgid ""
+#~ "Custom statuses are disabled until you install the %1$sPublishPress "
+#~ "Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+#~ msgstr ""
+#~ "Gli stati personalizzati sono disabilitati finché non installi il plugin "
+#~ "%1$sPublishPress Statuses%2$s. Vedi %3$sPlanner > Impostazioni%4$s per i "
+#~ "dettagli."
+
+#~ msgid "Hidden field can only be viewed on the edit post view."
+#~ msgstr ""
+#~ "Il campo nascosto può essere visualizzato solo nella vista di modifica "
+#~ "dell'articolo."
+
+#~ msgid "If enabled, this field can be seen on the Content Calendar screens."
+#~ msgstr ""
+#~ "Se viene abilitato questo campo sarà visibile nella schermata del "
+#~ "calendario dei contenuti."
+
+#~ msgid "Make Hidden"
+#~ msgstr "Rendi nascosto"
+
+#~ msgid "Make Viewable"
+#~ msgstr "Rendi visibile"
+
+#~ msgid "Viewable"
+#~ msgstr "Visibile"
+
+#~ msgid "Dashboard"
+#~ msgstr "Bacheca"
+
+#~ msgid "Basic Notifications"
+#~ msgstr "Notifiche di base"
+
+#~ msgid "Schedule Date"
+#~ msgstr "Data di programmazione"
+
+#~ msgid "Add New Metadata Term"
+#~ msgstr "Aggiungi nuovo termine metadati"
+
+#~ msgid "Manage Filters"
+#~ msgstr "Gestisci filtri"
+
+#~ msgid "Metadata"
+#~ msgstr "Metadati"
+
+#~ msgid "Metadata order updated."
+#~ msgstr "Ordine dei metadati aggiornato."
+
+#~ msgid "Metadata Type"
+#~ msgstr "Tipo di metadati"
+
+#~ msgctxt "taxonomy general name"
+#~ msgid "Metadata"
+#~ msgstr "Metadati"
+
+#~ msgctxt "taxonomy singular name"
+#~ msgid "Metadata"
+#~ msgstr "Metadato"
+
+#~ msgid "Update Metadata Term"
+#~ msgstr "Aggiorna termine metadati"
+
+#~ msgid "Click to toggle"
+#~ msgstr "Fai clic per commutare"
+
+#~ msgid ""
+#~ "If enabled, this metadata will be available as a filter option on the "
+#~ "Content Overview screen."
+#~ msgstr ""
+#~ "Se viene abilitato questo metadato sarà disponibile come opzione del "
+#~ "filtro nella schermata della panoramica dei contenuti."
+
+#~ msgid "Screen Layout"
+#~ msgstr "Layout della schermata"
+
+#~ msgid "Taxonomies to show:"
+#~ msgstr "Tassonomie da mostrare:"
+
+#~ msgid "said on %1$s at %2$s"
+#~ msgstr "detto il %1$s alle %2$s"
+
+#~ msgid "Sending content..."
+#~ msgstr "Invio del contenuto in corso…"
+
+#~ msgid ""
+#~ "This comment can't be deleted because it has one or more replies. Before "
+#~ "deleting it make sure to delete all the replies first."
+#~ msgstr ""
+#~ "Questo commento non può essere eliminato perché ha una o più risposte. "
+#~ "Prima di eliminarlo assicurati di aver eliminato per prima le risposte."
+
+#~ msgid "Are you sure you want to delete this comment?"
+#~ msgstr "Vuoi davvero elimiare questo commento?"
+
+#~ msgid "for"
+#~ msgstr "per"
+
+#~ msgid "by"
+#~ msgstr "da"
+
+#~ msgid ""
+#~ "For more information:
Custom Status Documentation"
+#~ "a>
PublishPress on Github
"
+#~ msgstr ""
+#~ "Per maggiori informazioni vedi:
Documentazione stato personalizzato
PublishPress su Github
"
+
+#~ msgid ""
+#~ "PublishPress’s custom statuses allow you to define the most important "
+#~ "stages of your editorial workflow. Out of the box, WordPress only offers "
+#~ "“Draft” and “Pending Review” as post states. With custom statuses, you "
+#~ "can create your own post states like “In Progress”, “Pitch”, or “Waiting "
+#~ "for Edit” and keep or delete the originals. You can also drag and drop "
+#~ "statuses to set the best order for your workflow.
Custom statuses "
+#~ "are fully integrated into the rest of PublishPress and the WordPress "
+#~ "admin. On the calendar and content overview, you can filter your view to "
+#~ "see only posts of a specific post state. Furthermore, email notifications "
+#~ "can be sent to a specific group of users when a post changes state.
"
+#~ msgstr ""
+#~ "Gli stati personalizzati di PublishPress ti consentono di definire le "
+#~ "fasi più importanti del tuo workflow editoriale. Per impostazione "
+#~ "predefinita, WordPress offre solo \"Bozza\" e \"In attesa di revisione\" "
+#~ "come stati dell'articolo. Con gli stati personalizzati, puoi creare i "
+#~ "tuoi stati dei post come \"In corso\", \"Presentazione\" o \"In attesa di "
+#~ "modifica\" e mantenere o eliminare gli originali. Puoi trascinare e "
+#~ "rilasciare gli stati per ordinarli come preferisci nel tuo workflow."
+#~ "p>
Gli stati personalizzati sono completamente integrati con il resto "
+#~ "di PublishPress e la bacheca di amministrazione di WordPress. Nel "
+#~ "calendario e nella panoramica dei contenuti, puoi filtrare la "
+#~ "visualizzazione per vedere solo i post di uno specifico stato del post. "
+#~ "Inoltre, le notifiche e-mail possono essere inviate a un gruppo specifico "
+#~ "di utenti quando un post cambia stato.
"
+
+#~ msgid ""
+#~ "Note: Your browser does not support JavaScript or has "
+#~ "JavaScript disabled. You will not be able to access or change the post "
+#~ "status."
+#~ msgstr ""
+#~ "Nota: Il tuo browser non supporta JavaScript o ha "
+#~ "JavaScript disabilitato. Non sarai in grado di accedere o modificare lo "
+#~ "stato dell'articolo."
+
+#~ msgid "Add New Status"
+#~ msgstr "Aggiungi un nuovo stato"
+
+#~ msgid ""
+#~ "Are you sure you want to delete the post status? All posts with this "
+#~ "status will be assigned to the default status."
+#~ msgstr ""
+#~ "Sei sicuro di voler eliminare lo stato dell'articolo? Tutti gli articoli "
+#~ "con questo stato verranno assegnati allo stato predefinito."
+
+#~ msgid "Assigned"
+#~ msgstr "Assegnato"
+
+#~ msgid "Cannot reassign to the status you want to delete"
+#~ msgstr "Impossibile riassegnare allo stato che si desidera eliminare"
+
+#~ msgid "Color"
+#~ msgstr "Colore"
+
+#~ msgid "Could not add status: "
+#~ msgstr "Impossibile aggiungere lo stato: "
+
+#~ msgid "Could not delete the status: "
+#~ msgstr "Impossibile eliminare lo stato: "
+
+#~ msgid "Custom status doesn't exist."
+#~ msgstr "Lo stato personalizzato non esiste."
+
+#~ msgid "Default post status has been changed."
+#~ msgstr "Lo stato predefinito dell'articolo è stato modificato."
+
+#~ msgid "Edit Statuses"
+#~ msgstr "Modifica gli stati"
+
+#~ msgid "Error while updating the status"
+#~ msgstr "Errore durante l'aggiornamento dello stato"
+
+#~ msgid "Icon"
+#~ msgstr "Icona"
+
+#~ msgid "Idea proposed; waiting for acceptance."
+#~ msgstr "Idea proposta; in attesa di conferma."
+
+#~ msgid "In Progress"
+#~ msgstr "In lavorazione"
+
+#~ msgid "No custom statuses found."
+#~ msgstr "Non sono stati trovati stati personalizzati."
+
+#~ msgid "Pending review"
+#~ msgstr "In attesa di revisione"
+
+#~ msgid "Pitch"
+#~ msgstr "Presentazione"
+
+#~ msgid "Please enter a name for the status"
+#~ msgstr "Inserisci un nome per lo stato"
+
+#~ msgid "Please enter a valid, non-numeric name for the status."
+#~ msgstr "Immettere un nome valido, non numerico per lo stato."
+
+#~ msgid ""
+#~ "Please note that checking a box will apply all statuses to that post type."
+#~ msgstr ""
+#~ "Tieni presente che selezionando una casella verranno applicati tutti gli "
+#~ "stati a quel tipo di articolo."
+
+#~ msgid "Post idea assigned to writer."
+#~ msgstr "Idea per l'articolo assegnata allo scrittore."
+
+#~ msgid "Post status created."
+#~ msgstr "Lo stato dell'articolo è stato creato."
+
+#~ msgid "Post status deleted."
+#~ msgstr "Stato dell'articolo eliminato."
+
+#~ msgid "Post status doesn't exist."
+#~ msgstr "Lo stato dell'articolo non esiste."
+
+#~ msgid "Privately Published"
+#~ msgstr "Pubblicato privatamente"
+
+#~ msgid "Restricted status "
+#~ msgstr "Stato limitato "
+
+#~ msgid "Select Icon"
+#~ msgstr "Seleziona icona"
+
+#~ msgid "Show the status dropdown menu on the post editing screen:"
+#~ msgstr ""
+#~ "Mostra il menu a discesa dello stato nella schermata di modifica "
+#~ "dell'articolo:"
+
+#~ msgid "Status does not exist."
+#~ msgstr "Lo stato non esiste."
+
+#~ msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+#~ msgstr ""
+#~ "Il nome dello stato non può superare i 20 caratteri. Scegli un nome più "
+#~ "breve."
+
+#~ msgid "Status name conflicts with existing status. Please choose another."
+#~ msgstr ""
+#~ "Il nome dello stato è in conflitto con uno stato esistente. Scegli un "
+#~ "altro nome."
+
+#~ msgid "Status name conflicts with existing term. Please choose another."
+#~ msgstr ""
+#~ "Il nome dello stato è in conflitto con un termine esistente. Scegli un "
+#~ "altro nome."
+
+#~ msgid "Status name is restricted. Please choose another name."
+#~ msgstr "Il nome dello stato è limitato. Scegli un altro nome."
+
+#~ msgid "Statuses"
+#~ msgstr "Stati"
+
+#~ msgid "The color is used to identify the status."
+#~ msgstr "Il colore viene utilizzato per rappresentare visivamente lo stato."
+
+#~ msgid ""
+#~ "The description is primarily for administrative use, to give you some "
+#~ "context on what the custom status is to be used for."
+#~ msgstr ""
+#~ "La descrizione è principalmente per uso amministrativo, per fornire un "
+#~ "contesto su ciò per cui deve essere utilizzato lo stato personalizzato."
+
+#~ msgid "The icon is used to visually represent the status."
+#~ msgstr "L'icona viene utilizzata per rappresentare visivamente lo stato."
+
+#~ msgid "The name is used to identify the status. (Max: 20 characters)"
+#~ msgstr "Il nome serve per identificare lo stato. (Max: 20 caratteri)"
+
+#~ msgid ""
+#~ "The slug is the unique ID for the status and is changed when the name is "
+#~ "changed."
+#~ msgstr ""
+#~ "Lo slug è l'ID univoco per lo stato e viene modificato quando il nome "
+#~ "viene modificato."
+
+#~ msgid "Update Status"
+#~ msgstr "Aggiorna stato"
+
+#~ msgid "Use on these post types:"
+#~ msgstr "Usa in questi tipi di articoli:"
+
+#~ msgid "Writer is working on the post."
+#~ msgstr "Lo scrittore sta lavorando all'articolo."
+
+#~ msgid "Calendar"
+#~ msgstr "Calendario"
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-ja.mo b/public/wp-content/plugins/publishpress/languages/publishpress-ja.mo
new file mode 100644
index 000000000..d96f3e995
Binary files /dev/null and b/public/wp-content/plugins/publishpress/languages/publishpress-ja.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-ja.po b/public/wp-content/plugins/publishpress/languages/publishpress-ja.po
new file mode 100644
index 000000000..c47351a3d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-ja.po
@@ -0,0 +1,3123 @@
+msgid ""
+msgstr ""
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Project-Id-Version: PublishPress\n"
+"POT-Creation-Date: 2021-07-15 10:04-0300\n"
+"PO-Revision-Date: 2023-01-16 13:14+0000\n"
+"Language-Team: Japanese\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
+"X-Poedit-WPHeader: publishpress.php\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
+"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
+"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
+"Last-Translator: \n"
+"Language: ja\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPathExcluded-0: *.min.js\n"
+"X-Poedit-SearchPathExcluded-1: vendor\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr "予約済み"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr "スケジュール済み、ただし遅い"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "通知する"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr "%1$s#%2$s「%3$s」は%4$s %5$sによってゴミ箱に移動されました"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr "%1$s#%2$s「%3$s」は%4$s %5$sによって出版されました"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%4$s %5$sによってゴミ箱から「%3$s」と%1$s#%2$s「%3$s」が復元されました"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr "%1$s#%2$s「%3$s」は%4$s %5$sによって未発表でした"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s(%2$s)は%4$sで%3$sに言いました:"
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr "%1$s, %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, fuzzy, php-format
+msgid "%1$s at %2$s"
+msgstr "%2$s で %1$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr "%2$sで更新%1$s"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, fuzzy, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "%d役割"
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, fuzzy, php-format
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "ユーザー%d"
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+#, fuzzy, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "%s通知が見つかりました。"
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] "%s 週"
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr "«"
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr "テーマの翻訳 ‹ Loco"
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr "»"
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr "›"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(タイトルなし)"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "すべてのステータス"
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+"詳細については、次の情報を参照してください。
カレンダーのドキュメント
ギットハブの発行プレス
"
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"詳細については、次の情報を参照してください。
カスタムステータスドキュメント
ギットハブの発行プレス
"
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"詳細については、次の情報を参照してください。
編集コメントのドキュメント
ギットハブの発行プレス
"
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"詳細については、次の情報を参照してください。
エディトリアル メタデータ のドキュメント "
+"
ギットハブの発行プレス "
+"
"
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+"詳細については、次の情報を参照してください。
通知のドキュメント
ギットハブの発行プレス
"
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"編集コメントは、電子メールの過負荷を減らし、会話を重要な場所(コンテンツ)"
+"に近づけるのに役立ちます。管理者のスレッドコメントは、ブログ記事の最後に見られるものと同様に、作家や編集者が非公開でフィードバックを残し、公開前に何を変更する必要があるかを議論することができます。
"
+"進行中のストーリーを表示するアクセス権を持つ人は、コメントすることもできます。通知が有効になっている場合、投稿に続くユーザーはコメントが残るたびにメールを受信します。
"
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+""
+"編集メタデータを使用して、コンテンツに関する重要な詳細を追跡します。この機能を使用すると、日付、テキスト、数値などのフィールドをいくつでも作成し、連絡先の詳細や面接の場所などの情報を保存するために使用できます。
"
+"フィールドを設定すると、編集メタデータがカレンダーとコンテンツの概要の両方に統合されます。編集メタデータ項目を表示して、チームの他のメンバーに表示されるようにします。作成者と編集者の間の情報を制限するために、非表示にします。
"
+
+#: modules/notifications/notifications.php:93
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"通知は、最も重要なコンテンツの進捗状況を最新の状態に保つことを保証します。ユーザーは、投稿に対する通知を 1 "
+"つずつ、またはロールを選択してサブスクライブできます。
"
+"有効にすると、投稿のステータスが変更されたり、編集者または編集者が編集コメントが残されたりしたときに通知を送信できます。
"
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+""
+"PublishPressのカスタムステータスを使用すると、編集ワークフローの最も重要な段階を定義することができます。すぐに、WordPressは投稿の状態として「下書き」と「保留中のレビュー」のみを提供しています。カスタムステータスを使用すると、「進行中」、「ピッチ」、「編集待ち」などの独自の投稿状態を作成し、オリジナルを保持または削除できます。また、ステータスをドラッグ"
+" アンド ドロップして、ワークフローの最適な順序を設定することもできます。
"
+"カスタムステータスは、完全にパブリッシュプレスとワードプレスの管理者の残りの部分に統合されています。カレンダーとコンテンツの概要では、ビューをフィルター処理して、特定の投稿状態の投稿のみを表示できます。さらに、投稿の状態が変化したときに、特定のユーザーグループに電子メール通知を送信できます。
"
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+""
+"カレンダーは、コンテンツを週ごとまたは月単位で表示できます。どのストーリーが時間に公開されるのに向けて軌道に乗っていて、余分な努力が必要かを素早く確認します。
"
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+"注: お使いのブラウザは Java スクリプトをサポートしていないか、JavaScript "
+"が無効になっています。投稿ステータスにアクセスしたり、変更したりすることはできません。"
+
+#: modules/notifications/notifications.php:2063
+#, fuzzy, php-format
+msgid "== %s Details =="
+msgstr "== %s 詳細 =="
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr "操作"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s 公開: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] 復元%2$s (ゴミ箱から) \" \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$sステータスが変更されました \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s ゴミ箱: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s 未発表: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] 新しい%2$s作成: \"%3$s\""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] 新しい編集コメント:「%2$s」"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr "%4$s %5$sによって新しい%1$s (#%2$s \"%3$s\" ) が作成されました"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr "#%1$s「%2$s」に新しい編集コメント%3$s追加されました"
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+#, fuzzy
+#| msgid "Access Denied"
+msgid "Access denied"
+msgstr "アクセスが拒否されました"
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr "アクション nonce が見つかりません。"
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr "アクティブな通知"
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr "新しい通知ワークフローを追加するときに分類コンテンツ フィルターで読み込まれるべきではない分類スラグの一覧をコンマで区切って追加します。"
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+msgid "Add an editorial comment"
+msgstr "エディトリアルコメントを追加する"
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid "Add Comment"
+msgstr "コメントを追加"
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr "編集コメントを追加する: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr "新規追加"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr "新しい編集メタデータの追加"
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr "新しいメタデータ用語の追加"
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr "新しい通知の追加"
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr "新しいステータスの追加"
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr "すべて"
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr "賃貸・売買を選択"
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr "すべての投稿者"
+
+#: modules/calendar/calendar.php:825
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr "すべてのチャンネル"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr "すべてのチャンネル"
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr "すべての編集メタデータ"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr "すべてのイベント"
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr "すべての投稿"
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr "全てのポスト"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr "すべての受信機"
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr "ステータス一覧"
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+msgid "All statuses"
+msgstr "すべてのステータス"
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr "すべてのタグ"
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+msgid "All types"
+msgstr "すベてのタイプ"
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr "すべてのワークフロー"
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr "コンテンツの作成者に常に通知します。"
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr "コンテンツを編集したユーザーに常に通知する:"
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr "適用"
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr "投稿のステータスを削除しますか?このステータスのすべての投稿は、既定のステータスに割り当てられます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr "この用語を削除しますか?この用語のメタデータは残りますが、この用語を再追加しない限り表示されません。"
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr "割り当てられていません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr "課題"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "非同期通知"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr "非同期"
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr "少なくとも 1 つの転記タイプを選択する必要があります"
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] "投稿者"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr "著者: %1$s (%2$s)"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "投稿者"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "コンテンツの作成者"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+#, fuzzy
+msgid "Auto-draft"
+msgstr "自動ドラフト"
+
+#: modules/improved-notifications/improved-notifications.php:944
+msgid "Available fields"
+msgstr "使用可能なフィールド"
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr "%d週間前に戻る"
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr "バック 1 週間"
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "通知のブラックリストに登録された分類"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+#, fuzzy, php-format
+msgid "Blog ID: %d"
+msgstr "ブログ ID: %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+#, fuzzy
+msgid "Blog: "
+msgstr "ブログ:"
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr "本文"
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr "カレンダー"
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr "削除するステータスに再割り当てすることはできません"
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "カテゴリー"
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "カテゴリー"
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr "変更"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+msgid "Channels"
+msgstr "チャンネル"
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr "不正行為’ ?"
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr "チェックボックス"
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr "投稿の種類を選択してください"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr "各ワークフローが通知を送信するチャネルを選択してください:"
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr "ショートコードオプションの詳細については、ここをクリックしてください。"
+
+#: modules/calendar/calendar.php:1425
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr "iCal または Google カレンダーを購読するには、ここをクリックしてください"
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr "ログ ファイルを削除する場合にクリックします。注意してください、この操作は元に戻すことはできません。"
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+msgid "Click to start being notified on updates for this post"
+msgstr "クリックすると、この投稿の更新に関する通知が開始されます"
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+msgid "Click to stop being notified on updates for this post"
+msgstr "クリックすると、この投稿の更新に関する通知を停止します"
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr "クリックで切り替え"
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr "色"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+#, fuzzy, php-format
+#| msgid "%s comment"
+#| msgid_plural "%s comments"
+msgid "Comment"
+msgstr "%s コメント"
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr "コメント: %s (%d)"
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr "定義設定"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+msgid "Content"
+msgstr "コンテンツ"
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr "コンテンツの概要"
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr "内容:"
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr "パスをクリップボードにコピーする"
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr "ステータスを追加できませんでした:"
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr "ステータスを削除できませんでした:"
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr "作成日"
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr "現在の週"
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr "カスタム ステータス注文を編集可能にします。"
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr "カスタムステータスが存在しません。"
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr "ダッシュボード"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "ダッシュボードの注意"
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr "日付"
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr "デバッグ"
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr "デバッグデータがありません"
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr "デフォルト"
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr "デフォルトの通知チャネル:"
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr "既定の投稿ステータスが変更されました。"
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr "予定表に作成されたアイテムの既定の公開時間"
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr "削除"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr "すべてを削除"
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr "ファイル削除"
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr "説明"
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr "無効"
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr "読み込まれたファイルにadd_post_type_support ('%1$s'、'%2$s') が含まれているため無効になります。"
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr "表示名"
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr "ICS ファイルのダウンロード"
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr "下書き"
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr "重複した通知しきい値:"
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr "電子メール"
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr "編集"
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr "エディトリアル メタデータの編集"
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr "通知を編集"
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr "ステータスの編集"
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr "このアイテムを編集"
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr "記事を編集"
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr "%s 編集"
+
+#: modules/improved-notifications/improved-notifications.php:933
+msgid "Editorial Comment"
+msgstr "エディトリアルコメント"
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr "担当者のコメント:"
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+msgid "Editorial Notifications"
+msgstr "編集通知"
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr "8ヶ月前"
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr "11ヶ月前"
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "メールアドレス"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "メールアドレス"
+
+#: modules/notifications/notifications.php:1640
+msgid "Email from:"
+msgstr "メール送信者:"
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr "これらの投稿タイプを有効にします。"
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr "有効"
+
+#: modules/modules-settings/modules-settings.php:218
+msgid "Enabled features"
+msgstr "有効な機能"
+
+#: modules/calendar/calendar.php:1360
+msgid "End date"
+msgstr "終了日"
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr "ワークフローから通知を受信する必要があるユーザー、ロール、または電子メール アドレスを入力します。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr "エラー"
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr "用語の追加中にエラーが発生しました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr "用語の削除中にエラーが発生しました。"
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr "投稿の状態を更新中にエラーが発生しました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr "用語の更新中にエラーが発生しました。"
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr "イベント: %s、ワークフロー ID: %s、投稿 ID: %s、ユーザー ID: %s"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr "失敗"
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr "特徴"
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr "必要な機能だけを自由に選択してください。"
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr "フィールド"
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr "日のセル内の予定表アイテムの並べ替えに使用されるフィールド"
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr "ファイル情報"
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr "フィルター"
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+msgid "Filter the content?"
+msgstr "コンテンツタイプで絞り込み"
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr "最初のドラフト日"
+
+#: modules/editorial-comments/editorial-comments.php:1133
+#, fuzzy
+#| msgid "First page"
+msgid "First Name"
+msgstr "最初のページ"
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr "5ヶ月前"
+
+#: modules/calendar/calendar.php:1352
+#, fuzzy
+msgid "Five months ago"
+msgstr "5ヶ月前"
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr "どのコンテンツに対して?"
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr "フォーマット"
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr "%d週間を転送する"
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr "1週間前"
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr "4ヶ月前"
+
+#: modules/calendar/calendar.php:1350
+#, fuzzy
+msgid "Four months ago"
+msgstr "4ヶ月前"
+
+#: modules/calendar/calendar.php:1371
+msgid "Four weeks"
+msgstr "4週間"
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr "日付から"
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr "非表示のメタデータは、編集後のビューでのみ表示できます。"
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr "iCal 秘密鍵が再生成されました。再登録が必要なすべてのユーザーに通知してください。"
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr "アイコン"
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr "ID"
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr "アイデアが提案されました。受け入れを待っています。"
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "あなたが好きなら%s私たちに%s評価を残してください。ありがとうございました!"
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"あなたは何らかのエラーを見たり、PublishPressに関する情報を探した場合は、サポートチームに連絡することを躊躇しないでください。電子メール:"
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr "進行中"
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr "エディトリアル メタデータの種類を示します。"
+
+#: modules/calendar/calendar.php:1493
+#, fuzzy
+msgid "Initializing the calendar. Please wait..."
+msgstr "カレンダーの初期化。お待ちください。。。"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr "無効なアクション nonce です。"
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+#, fuzzy
+msgid "Invalid comment data"
+msgstr "無効なコメント データ"
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr "無効な日付"
+
+#: modules/calendar/calendar.php:3146
+#, fuzzy
+msgid "Invalid input"
+msgstr "無効な入力"
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr "無効な nonce。"
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr "発行日が無効です。"
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr "無効なステータスが指定されました。"
+
+#: modules/calendar/calendar.php:1497
+#, fuzzy
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr "時間がかかりすぎるようです。ページを再読み込みして、ブラウザコンソールでエラーを探してください。"
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr "最終編集日"
+
+#: modules/editorial-comments/editorial-comments.php:1134
+#, fuzzy
+#| msgid "Last page"
+msgid "Last Name"
+msgstr "最後のページ"
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr "読み込み中…"
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr "場所"
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr "ログの内容"
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr "ログファイル"
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr "ログ ファイルが見つかりません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr "非表示にする"
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr "表示可能にする"
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr "日付ごとの最大表示投稿数"
+
+#: modules/calendar/calendar.php:816
+#, fuzzy
+#| msgid "day"
+#| msgid_plural "days"
+msgid "May"
+msgstr "日"
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "メッセージ"
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr "メタフィールド"
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr "メタデータ"
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr "メタデータ名が既存の用語と競合しています。別の項目を選択してください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr "メタデータ用語が追加されました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr "メタデータ用語が削除されました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr "メタデータ用語が存在しません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr "メタデータ用語が更新されました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr "メタデータ型"
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr "分"
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr "最終編集"
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr "この項目をゴミ箱に移動する"
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr "ミュートされた"
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr "マイ コンテンツ通知"
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr "名前"
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr "既に使用されている名前です。別の項目を選択してください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr "名前は 200 文字を超えることはできません。短い名前を試してください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr "名前が既存の用語と競合しています。別の項目を選択してください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr "別の用語のスラグと名前が競合しています。他のものを選択してください。"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "New"
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr "新しい編集メタデータ"
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr "新しい投稿ステータス: %s"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "新しいステータス"
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr "9ヶ月前"
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr "いいえ"
+
+#: modules/notifications/notifications.php:704
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr "この%sに対するアクティブな通知が見つかりません。"
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr "カスタム ステータスが見つかりません。"
+
+#: modules/calendar/calendar.php:3660
+msgid "No date supplied."
+msgstr "日付が指定されていません。"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr "エディトリアル メタデータが見つかりません。"
+
+#: modules/calendar/calendar.php:3157
+#, fuzzy
+msgid "No enough permissions"
+msgstr "十分なアクセス許可がありません"
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr "通知が見つかりません"
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr "通知は見つかりませんでした。"
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "ワークフローが見つかりません。"
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr "ナンスチェックに失敗しました。編集コメントを追加することになっていることを確認してください。"
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr "なし"
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr "フィルタなし"
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr "メモ帳"
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr "通知"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "通知ログが見つかりません"
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr "通知"
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr "通知ログ"
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr "通知する"
+
+#: modules/improved-notifications/improved-notifications.php:305
+msgid "Notify on editorial comments"
+msgstr "編集コメントで通知する"
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr "コンテンツが公開されたときに通知する"
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr "番号"
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr "カラムの数: "
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr "古い投稿ステータス: %s"
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr "各ショートコードで、1 つ以上のフィールドを選択できます。複数の場合、それらは\", \"で区切られて表示されます。"
+
+#: modules/calendar/calendar.php:1377
+msgid "One month"
+msgstr "1ヶ月"
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr "1ヶ月前"
+
+#: modules/calendar/calendar.php:1365
+msgid "One week"
+msgstr "1週間"
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr "オプション"
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr "概要"
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr "段落"
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr "パス"
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr "保留中のレビュー"
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr "レビュー待ち"
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr "ピッチ"
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr "以下のフォームエラーを修正して、やり直してください。"
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr "コメントをご記入ください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr "編集メタデータの名前を入力してください"
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr "編集メタデータの名前を入力してください。"
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr "ステータスの名前を入力してください"
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr "編集メタデータのスラグを入力してください。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr "編集メタデータの有効な数値以外の名前を入力してください。"
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr "ステータスの有効な数値以外の名前を入力してください。"
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr "チェックボックスをオンにすると、すべてのステータスがその投稿タイプに適用されます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr "有効なメタデータ型を選択してください。"
+
+#: libraries/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr "少なくとも 1 つのイベントを選択してください"
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr "人気のエディトリアルメタデータ"
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr "位置"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+msgid "Post"
+msgstr "投稿"
+
+#: modules/calendar/calendar.php:3801
+msgid "Post could not be created"
+msgstr "ポストを作成できませんでした。"
+
+#: modules/calendar/calendar.php:3794
+#, fuzzy
+msgid "Post created successfully"
+msgstr "投稿が正常に作成されました"
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr "投稿日"
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr "更新された投稿日。"
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr "投稿が存在しません"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+#, php-format
+msgid "Post ID: %d"
+msgstr "投稿 ID: %d"
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr "ライターに割り当てられたポストアイデア。"
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr "投稿が見つかりませんでした"
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr "投稿ステータス"
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr "投稿ステータスが作成されました。"
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr "ステータスの削除を投稿しました。"
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr "投稿の状態が存在しません。"
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr "投稿状況が更新されました。"
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr "投稿ステータスウィジェット"
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr "投稿タイプ"
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "投稿タイプ"
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+#, php-format
+msgid "Post type: %s"
+msgstr "転記タイプ %s を検索できます"
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "投稿タイプ"
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr "表示する投稿タイプ"
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr "一目で投稿する"
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr "投稿の公開時刻形式"
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr "プレビュー"
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr "“%s” をプレビュー"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "前のステータス"
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr "印刷"
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr "プライベート"
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr "プライベートに公開する"
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr "公開時刻"
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr "公開済み"
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr "公開時間"
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr "発行プレス"
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr "発行プレス デバッグ ログ"
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+#, fuzzy
+#| msgid ""
+#| "PublishPress helps you plan and publish content with WordPress. Features "
+#| "include a content calendar, notifications, and custom statuses."
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+"発行プレスは、WordPressでコンテンツを計画し、公開するのに役立ちます。機能には、コンテンツ カレンダー、通知、およびカスタム "
+"ステータスが含まれます。"
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+msgid "PublishPress Settings"
+msgstr "発行プレスの設定"
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr "受信者"
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr "カレンダーフィードの秘密を再生成する"
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr "返信"
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr "このコメントに返信"
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr "FTPサーバーの応答: %s"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr "再スケジュール"
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr "リセット"
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr "制限付きステータス"
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr "権限"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+#, php-format
+msgid "role:%s"
+msgstr "役割 %s"
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "権限"
+
+#: modules/calendar/calendar.php:811
+#, fuzzy
+#| msgid "Start"
+msgid "Sat"
+msgstr "開始"
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr "保存"
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+msgid "Save “%s”"
+msgstr "「%s」を保存"
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr "予定済み"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+#, php-format
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr "%d受信機に対してスケジュールされます。クリックして表示します。"
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr "画面レイアウト"
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr "エディトリアルメタデータの検索"
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr "通知を検索"
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr "各セクションに対して少なくとも 1 つのオプションを選択します。"
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr "アイコンを選択"
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr "送信"
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+msgid "Settings"
+msgstr "設定"
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr "設定"
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr "7ヶ月前"
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr "ショートコード"
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr "次の投稿の種類について、[通知] と [通知を停止する] リンクを表示します。"
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr "投稿編集画面にステータスドロップダウンメニューを表示します。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "この機能はサイト管理者によって無効にされています。"
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr "6ヶ月"
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr "6ヶ月前"
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr "サイズ"
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+#, fuzzy
+msgid "Skip current user"
+msgstr "現在のユーザーをスキップ"
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+#, fuzzy
+msgid "Skip notifications for the user who triggered the action"
+msgstr "アクションをトリガーしたユーザーの通知をスキップする"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr "スキップ済み"
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr "スラッグ"
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr "スラグはすでに使用されています。別の項目を選択してください。"
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr "スラッグ1,スラッグ2"
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "ごめんなさい!投稿を購読していません。"
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr "カスタム ステータスを編集する権限がありません。"
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr "申し訳ありませんが、編集コメントを追加する権限がありません。管理者に相談してください。"
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+msgid "Start date"
+msgstr "開始日"
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr "ステータス"
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr "ステータスが存在しません。"
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr "状態名は 20 文字以内にできません。短い名前を試してください。"
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr "ステータス名が既存のステータスと競合しています。別の項目を選択してください。"
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr "ステータス名が既存の用語と競合しています。別の項目を選択してください。"
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr "状態名は制限されています。別の名前を選択してください。"
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr "ステータスの順序が更新されました。"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "%4$s %5$sによって %1$s #%2$s \"%3$s\" の状態が変更されました"
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr "ステータス"
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr "公開時間を表示するステータス"
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr "通知を停止する"
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr "件名"
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr "タイトル:"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "iCal または Google カレンダーで購読する"
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr "iCal または Google カレンダーでのサブスクリプション"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr "成功"
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr "同期"
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "タグ"
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr "タグ"
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+#, fuzzy
+msgid "Taxonomy"
+msgstr "タクソノミー"
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr "メタデータ"
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr "メタデータ"
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr "10ヶ月前"
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr "用語の順序が更新されました。"
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr "用語の可視性が変更されました。"
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "利用規約"
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr "用語が設定されていません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr "テキスト"
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr "「メタルスラッグ」は、名前の URL 向けバージョンです。通常はすべて小文字、文字、数字、およびハイフンのみが含まれています。"
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+msgid "The color is used to identify the status."
+msgstr "色はステータスを識別するために使用されます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr "説明を使用して、メタデータの目的についてチームと通信できます。"
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr "説明は主に管理時に使用します。カスタムステータスがどんな時に使われるかについて解説を加えることができます。"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+msgid "The icon is used to visually represent the status."
+msgstr "アイコンは、ステータスを視覚的に表すために使用されます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr "作成したメタデータ型は変更できません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr "名前は、メタデータ フィールドのラベル付けです。"
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr "名称はステータスを識別するために使用されます。(最大: 20 文字)"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr "通知が \"スケジュール済み\" に設定されましたが、cron タスクが見つかりません"
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr "このウィジェットを表示するには、通知モジュールを有効にする必要があります。"
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr "カレンダーに表示される週数は、カレンダーの画面オプションを使用してユーザーごとに変更できます。"
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+#, fuzzy
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "親ログが削除されたか、またはおそらく再スケジュールされました"
+
+#: modules/calendar/calendar.php:3671
+#, fuzzy
+msgid "The selected post type is not enabled for the calendar."
+msgstr "選択した投稿タイプはカレンダーに対して有効ではありません。"
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr "選択したユーザーには、投稿の作成者として設定する十分なアクセス許可がありません。"
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr "用語が作成されると、スラグを変更することはできません。"
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr "スラグはステータスの一意の ID であり、名前が変更されると変更されます。"
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr "指定された範囲またはフィルターに投稿がありません。"
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr "登録されている公開プレス モジュールがありません。"
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr "何らかの問題がありました。もう一度やり直すか、管理者に問い合わせてください。"
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr "投稿の更新中にエラーが発生しました。もう一度やり直してください。"
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "この操作は%1$s (%2$s %3$s) に行われました"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr "この編集メタデータ型はまだサポートされていません。"
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr "この電子メールは%s送信されました。"
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr "これは、スケジュールされたメッセージのプレビューです。通知が送信されるまで、コンテンツは変更できます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+#, php-format
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr "この通知は、同じ受信者に対して%d分前に送信された別の通知と非常によく似ています"
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr "この投稿は最後に更新されました"
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr "[通知] ボックスを対象とするワークフローが少なくとも 1 つある場合を除き、この方法は無効です。"
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr "3ヶ月"
+
+#: modules/calendar/calendar.php:1348
+#, fuzzy
+msgid "Three months ago"
+msgstr "3ヶ月前"
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr "3週間"
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr "タイトル"
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr "タイトル: %s"
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr "現在まで"
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr "今日"
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr "%s で今日に"
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr "ゴミ箱"
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr "12ヶ月前"
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr "2ヶ月"
+
+#: modules/calendar/calendar.php:1346
+#, fuzzy
+msgid "Two months ago"
+msgstr "2ヶ月前"
+
+#: modules/calendar/calendar.php:1367
+msgid "Two weeks"
+msgstr "2週間"
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr "タイプ"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr "取り消し"
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr "未公開コンテンツ"
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+msgid "Untitled"
+msgstr "無題"
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr "エディトリアル メタデータの更新"
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr "メタデータ用語の更新"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "更新ノート"
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr "更新ステータス"
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr "投稿日を動的に更新しても、発行済みコンテンツでは機能しません。 投稿を編集 してください。"
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr "次の投稿タイプで使用します。"
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr "ユーザー"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "ユーザー"
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr "ユーザーによる変更またはコメント"
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+#, php-format
+msgid "User: %s (%d)"
+msgstr "ユーザー: %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "ユーザー"
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr "コンテンツに対して [通知] を選択したユーザー"
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr "表示"
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr "表示 “%s”"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr "Google マップで 「%s」を表示する"
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr "全てのカテゴリーを表示"
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr "View: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr "表示"
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr "投稿がカバーする必要があるもの。"
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr "何を言う?"
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "エディトリアルコメントが追加された場合"
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "コンテンツが新しいステータスに移動されたとき"
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr "最初のドラフトの準備が必要な場合。"
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "ステータスが変更された場合"
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr "いつ通知しますか?"
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr "誰に通知するか?"
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr "ウィジェットオプション"
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr "ワードプレススケジューラ"
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr "ワークフロー"
+
+#: modules/improved-notifications/improved-notifications.php:738
+msgid "Workflow Settings"
+msgstr "ワークフローの設定"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+#, php-format
+msgid "Workflow: %s"
+msgstr "ワークフロー: %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr "ワークフロー"
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr "ライターはポストに取り組んでいます。"
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr "はい"
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr "このメールは「%s」に登録されているため、受信しています。"
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr "次のショートコードを使用して、件名または本文テキストに動的な情報を追加できます。"
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr "投稿を初めて保存すると、投稿に編集コメントを追加できます。"
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr "この%sに対するすべての編集用コメントは以下で読むことができます: "
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr "この操作を完了するために必要なアクセス許可がありません。"
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "通知がない場合"
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.mo b/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.mo
index 796fa3266..081b556a8 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.po b/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.po
index 74503ef48..fc430fa48 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-nl_NL.po
@@ -1,2653 +1,3054 @@
-# Copyright (C) 2012
-# This file is distributed under the same license as the package.
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: http://wordpress.org/tag/publishpress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:15-0300\n"
-"Last-Translator: \n"
-"Language-Team: Karim \n"
-"Language: nl_NL\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.7\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: common/php/class-module.php:92
-#| msgid "Post Type"
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-#| msgid "Filter"
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-#| msgid "View"
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-#| msgid "Preview"
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "for %1$s through %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-#| msgid "Show %1$s more "
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-#| msgid "No user groups found."
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-#| msgid "Filter"
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-#| msgid "for %1$s through %2$s"
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-#| msgid "No user groups found."
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-#| msgid "View all categories"
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-#| msgid "Post Type"
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-#| msgid "Post Type"
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-#| msgid "Author"
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "Back %d weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "Back %d weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-#| msgid "Show %1$s more "
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-#| msgid "View “%s”"
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-#| msgid "Post date updated."
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-#| msgid "(no title)"
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-#| msgid "Post date updated."
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-#| msgid "Back %d weeks"
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-#| msgid "Published"
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-#| msgid "for %1$s through %2$s"
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-#| msgid "Unpublished"
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-#| msgid "Settings updated."
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No user groups found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-#| msgid "Post does not exist"
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#~ msgid "Add a User Group"
-#~ msgstr "Voeg een Gebruikersgroep toe"
-
-#~ msgid "Unpublished"
-#~ msgstr "Ongepubliceerd"
-
-#~ msgid "Calendar Options"
-#~ msgstr "Kalender Opties"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Aantal Weken:"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Aantal weken om te bekijken"
+# Copyright (C) 2012
+# This file is distributed under the same license as the package.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://wordpress.org/tag/publishpress\n"
+"POT-Creation-Date: 2018-05-14 13:02-0300\n"
+"PO-Revision-Date: 2023-01-16 13:15+0000\n"
+"Last-Translator: \n"
+"Language-Team: Dutch\n"
+"Language: nl_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Loco https://localise.biz/\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, php-format
+#| msgid "for %1$s through %2$s"
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, php-format
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+#| msgid "Back %d weeks"
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr ""
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr ""
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr ""
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:93
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+
+#: modules/notifications/notifications.php:2063
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr ""
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr ""
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/calendar.php:825
+#| msgid "View all categories"
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr ""
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+#| msgid "View all types"
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr ""
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+#, fuzzy
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+#| msgid "Author"
+msgid "Authors"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:944
+msgid "Available fields"
+msgstr ""
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr ""
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr ""
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr ""
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+#| msgid "View all categories"
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+#, fuzzy
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr ""
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/calendar.php:1425
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr ""
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+msgid "Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr ""
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:933
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1640
+msgid "Email from:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:218
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/calendar.php:1360
+msgid "End date"
+msgstr ""
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr ""
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr ""
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+#| msgid "Filter"
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1352
+msgid "Five months ago"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr ""
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1350
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1371
+#| msgid "Forward %d weeks"
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr ""
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr ""
+
+#: modules/calendar/calendar.php:1493
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr ""
+
+#: modules/calendar/calendar.php:3146
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1497
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr ""
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "May"
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:704
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3660
+#| msgid "Post date updated."
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3157
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr ""
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+#| msgid "No user groups found."
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:305
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr ""
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr ""
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/calendar.php:1377
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1365
+#| msgid "Back %d weeks"
+msgid "One week"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr ""
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr ""
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+#| msgid "Post Type"
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3801
+#| msgid "Post date updated."
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/calendar.php:3794
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr ""
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+#| msgid "Post Type"
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+#| msgid "Post Type"
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr ""
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr ""
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/calendar.php:811
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+#| msgid "View “%s”"
+msgid "Save “%s”"
+msgstr ""
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr ""
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+#| msgid "Settings updated."
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr ""
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+msgid "Start date"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+msgid "The color is used to identify the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+msgid "The icon is used to visually represent the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/calendar.php:3671
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1348
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr ""
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr ""
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1346
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1367
+#| msgid "Back %d weeks"
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+#| msgid "(no title)"
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr ""
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr ""
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr ""
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr ""
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:738
+#| msgid "Settings updated."
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.mo b/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.mo
index dea6b691a..e918ba7c1 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.po b/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.po
index 21e9d96b3..4c7a79da8 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-pt_BR.po
@@ -1,3154 +1,3159 @@
-# Copyright (C) 2013
-# This file is distributed under the same license as the package.
-msgid ""
-msgstr ""
-"Project-Id-Version: PublishPress\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:14-0300\n"
-"Last-Translator: Angelo \n"
-"Language-Team: Douglas Araujo de Moura \n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.7\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: common/php/class-module.php:92
-msgid "Post"
-msgstr "Publicação"
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr "Página"
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr "Projeto"
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr "Pendente de revisão"
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr "Publicado"
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr "Programado"
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr "Privado"
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr "Lixo"
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr "dd/mm/yy"
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr "Taxonomia inválida"
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr "Usuários"
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr "(sem título)"
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr "Quando notificar?"
-
-#: libraries/Notifications/Plugin.php:60
-msgid "Filter the content?"
-msgstr "Filtrar o conteúdo?"
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr "A quem notificar?"
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr "d/m/Y H:i"
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr "Workflow de notificações atualizado."
-
-#: libraries/Notifications/Plugin.php:107
-msgid "Notification workflow published."
-msgstr "Workflow de notificações publicado."
-
-#: libraries/Notifications/Plugin.php:108
-msgid "Notification workflow saved."
-msgstr "Workflow de notificações salvo."
-
-#: libraries/Notifications/Plugin.php:109
-msgid "Notification workflow submitted."
-msgstr "Workflow de notificações enviado."
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-#| msgid "Notification workflow updated."
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-#| msgid "Notification workflow updated."
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-#| msgid "Notification workflow updated."
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-#| msgid "Notification workflow updated."
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-#| msgid "Notification workflow updated."
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-#| msgid "Notification workflow updated."
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-#| msgid "Notification workflow updated."
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-#| msgid "Post restored from the Trash."
-#| msgid_plural "%d posts restored from the Trash."
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-msgid "Please select at least one event"
-msgstr "Selecione pelo menos um evento"
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-msgid "List View"
-msgstr "Visualização em Lista"
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr "Visualização de Excerto"
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr "Selecione uma ação em lote"
-
-#: libraries/Notifications/Table/Base.php:625
-msgid "Bulk Actions"
-msgstr "Ações em Lote"
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr "Aplicar"
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-msgid "First page"
-msgstr "Primeira página"
-
-#: libraries/Notifications/Table/Base.php:748
-msgid "Previous page"
-msgstr "Página anterior"
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "%1$s at %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-msgid "Show more details"
-msgstr "Mostrar mais detalhes"
-
-#: libraries/Notifications/Table/Base.php:1155
-msgid "No items found."
-msgstr "Nenhum item foi encontrado."
-
-#: libraries/Notifications/Table/Base.php:1370
-msgid "Filter by date"
-msgstr "Filtrar por data"
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-msgid "%1$s %2$d"
-msgstr "%1$s às %2$d"
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] "%s comentário"
-msgstr[1] "%s comentários"
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] "%s comentário aprovado"
-msgstr[1] "%s comentários aprovados"
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-#| msgid "Editorial Comments"
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr "Título"
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr "Data"
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-msgid "No workflows found."
-msgstr "Nenhum workflow foi encontrado."
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-msgid "Content"
-msgstr "Conteúdo"
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-msgid "When an editorial comment is added"
-msgstr "Quando um comentário editorial é adicionado"
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-msgid "When the status is changed"
-msgstr "Status padrão do post alterado"
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-msgid "New status"
-msgstr "Novo status"
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-msgid "Categories"
-msgstr "Categories"
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-msgid "Post Types"
-msgstr "Tipos de post"
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-msgid "Post type"
-msgstr "Tipo de post"
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-msgid "Authors"
-msgstr "Autores"
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] "Usuário %d"
-msgstr[1] "Usuários %d"
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr "Add-ons"
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr "Pro Add-ons para PublishPress"
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr "Lista de Verificação de Conteúdo"
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-"Permite às equipes definirem tarefas que precisam serem completadas antes do "
-"conteúdo ser publicado."
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr "Suporte ao Slack"
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-"PublishPress com Slack, então você pode receber as notificações de "
-"comentários e alteração de estados diretamente no Slack."
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr "Permissões"
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-"Permite à você controlar usuários que podem completar certas tarefas como "
-"publicar conteúdo."
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr "WooCommerce Checklist"
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-"Este add-on permite equipes de WooCommerce definirem tarefas que precisam "
-"ser completadas antes que produtos sejam publicados."
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr "Suporte à múltiplos autores"
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-"Permite que você selecione múltiplos autores para um único post. Este add-on "
-"é ideal para equipes que escrevem colaborativamente."
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr "Multi-site e Múltiplo suporte"
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-"Habilita PublishPress à suportar múltiplos sites. Escreva em um site, mas "
-"publique em vários sites."
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr "Suporte ao Zapier"
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-"Integra PublishPress com Zapier, permitindo que você envie notificações "
-"sobre mudança em comentários e estados diretamente ao Zapier."
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr "Ativo"
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr "Instalado"
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr "Obtenha Pro Add-ons!"
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr "Em breve"
-
-#: modules/addons/addons.php:227
-#| msgid "Disable"
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-#| msgid "Notifications"
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr "Calendário"
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr "Data do post atualizada."
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr "Ocorreu um erro ao atualizar o post. Por favor, tente novamente."
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-"Atualizar a data a publicação do post dinamicamente não funciona para "
-"conteúdo publicado. Por favor edite o post ."
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-"Chave secreta iCal regenerada. Por favor, informar a todos os usuários que "
-"deverão assinar novamente."
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr "Visão geral"
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-"O calendário é uma visualização semana-a-semana ou mês-a-mês conveniente "
-"para seu conteúdo. Veja rapidamente quais histórias estão encaminhadas para "
-"serem publicadas a tempo, e quais precisarão de um esforço extra.
"
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-" Para mais informações
Documentação do Calendário "
-"p>
PublishPress no "
-"Github
"
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr "Algo está errado com o formato para a nova data."
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr "PublishPress"
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr "Assinar no iCal ou Google Calendar"
-
-#: modules/calendar/calendar.php:909
-#| msgid "Start"
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "%s week"
-#| msgid_plural "%s weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "%s week"
-#| msgid_plural "%s weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-#| msgid "Subscribe in iCal or Google Calendar"
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] "Post movido para a lixeira."
-msgstr[1] "%d posts movidos para a lixeira."
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr "Desfazer"
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] "Post restaurado da lixeira."
-msgstr[1] "%d posts restaurados da lixeira."
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr "Clique para criar"
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-msgid "Show %d more"
-msgstr "Mostrar %1$d mais"
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-#| msgid "Schedule a %s for %s"
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr "Programe conteúdo para %s"
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr "Tipo"
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr "Criar"
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr "Editar"
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr "Nenhum"
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr "Editar este item"
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr "Enviar para a lixeira"
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr "Pré-visualizar “ %s”"
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr "Pré-visualizar"
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr "Ver “%s”"
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr "Ver"
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-msgid "Save “%s”"
-msgstr "Salvar “%s”"
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr "Salvar"
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr "Autor"
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr "Tipo de post"
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr "Reiniciar"
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr "Avançar 1 semana"
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr "›"
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr "Avançar %d semanas"
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr "»"
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr "Hoje é %s"
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr "Hoje"
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr "Voltar %d semanas"
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr "«"
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr "Voltar 1 semana"
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr "‹"
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr "para %1$s através %2$s"
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr "Tipos de publicação para exibir"
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr "Assinar no iCal ou Google Calendar"
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-"O número de semanas mostradas no calendário pode mudar para cada usuário "
-"usando as opções de visualização do calendário."
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr "Desativado"
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr "Ativado"
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr "Regenerar o feed secreto do calendário"
-
-#: modules/calendar/calendar.php:2148
-msgid "No date supplied."
-msgstr "Nenhuma data informada."
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-"Por favor altere o Quick Create para usar um tipo de post visível no "
-"calendário."
-
-#: modules/calendar/calendar.php:2169
-msgid "Untitled"
-msgstr "Sem título"
-
-#: modules/calendar/calendar.php:2217
-msgid "Post could not be created"
-msgstr "Post não pôde ser criado"
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr "Tipo de metadados inválida"
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr "Metados não foram atualizados."
-
-#: modules/calendar/calendar.php:2442
-#| msgid "View all statuses"
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] "%s semana"
-msgstr[1] "%s semanas"
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-msgid "Publish on"
-msgstr "Publicado em"
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr "Histórico de orçamento"
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr "Layout da tela"
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr "Status"
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr "Data da publicação"
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr "Última modificação"
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr "Número de Colunas: "
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr "iniciando %1$s mostrando %2$s %3$s"
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dia"
-msgstr[1] "dias"
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr "Alterar"
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] "Item movido para a lixeira."
-msgstr[1] "%d ítens movidos para a lixeira."
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] "Item restaurado da lixeira."
-msgstr[1] "%d itens restaurados da lixeira."
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr "Imprimir"
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr "Vert todos os status"
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr "Ver todas as categorias"
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr "Ver todos os usuários"
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr "Clique para alternar"
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr "Não há posts para este termo no alcance ou filtro especificado."
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr "Editar este post"
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr "Mover este item para a lixeira"
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr "Status personalizados"
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr "Editar status"
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr "Status de post criado."
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr "Status do post atualizado."
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr "Status de post não existe."
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr "Status padrão do post alterado."
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr "Status do post excluído."
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr "Status do post atualizado."
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-"Status personalizados do PublishPress permitem definir as etapas mais "
-"importantes do seu fluxo de trabalho editorial. Fora da caixa, WordPress só "
-"oferece \"Rascunho\" e \"Revisão Pendente\" como status de post. Com status "
-"personalizados, você pode criar seus próprios status, como \"Em andamento\", "
-"\"Em campo\" ou \"Esperando edição\" e conservar ou eliminar os originais. "
-"Também é possível arrastar e soltar os status para estabelecer a melhor "
-"ordem para seu fluxo de trabalho.
Os status personalizados estão "
-"plenamente integrados com o restante do PublishPress e a administração do "
-"WordPress. No calendário e no histórico de orçamento, é possível filtrar "
-"apenas os posts de um status específico. Além disso, as notificações de "
-"email poder ser enviadas a um grupo específico de usuários quando o post "
-"teve seu status alterado."
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-" Para mais informações
Documentação do status "
-"personalizado
Fórum PublishPress p>
Editar Flow no Github
"
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr "Passo"
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr "Ideia proposta; esperando aprovação."
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr "Atribuído"
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr "Ideia de publicação atribuída a um escritor."
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr "Em progresso"
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr "O escritor está trabalhando no post."
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr "O post é um rascunho; não está pronto para revisão ou publicação."
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr "O post precisa ser revisado por um editor."
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-"Tem certeza que deseja excluir este status de post? Todos os posts com este "
-"status serão atribuídos ao status padrão."
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-"Nota: Seu navegador não suporta JavaScript ou o JavaScript "
-"está desativado. Você não será capaz de acessar ou alterar o status do post."
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr "Publicado privadamente"
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr "— Sem alterações —"
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr "Status personalizado não existe."
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr "Não é possível alterar para o status que você quer excluir."
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr "Status restrito"
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr "Por favor, insira o nome do status"
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr "Por favor insira um nome válido, não númerico para o status."
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-"O status não pode ter mais de 20 caracteres. Por favor, tente um nome mais "
-"curto."
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-"Nome do status está em conflito com um termo já existente. Por favor, "
-"escolha outro."
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr "Nome do status é restrito. Por favor, escolha outro nome."
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr "Não foi possível adicionar o status: "
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-"Nome do status está em conflito com um status já existente. Por favor, "
-"escolha outro."
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr "Erro ao atualizar o status do post."
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr "Nonce inválido para envio."
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-"Desculpe, mas você não tem permissão para editar os status personalizados."
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr "Status não existe."
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr "Status não existe."
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr "Não é possível excluir um status padrão."
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr "Não foi possível excluir o status: "
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr "Termos não definidos."
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr "Utilizar neste tipo de posts:"
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr "Mostrar o menu dropdown na tela de edição de posts:"
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr "Status personalizado"
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr "O nome é utilizado para identificar o status. (Max.: 20 caracteres)"
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr "Slug"
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-"O slug é um identificador único para o status e é alterado quando nome é "
-"alterado."
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr "Descrição"
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-"A descrição é primariamente para uso administrativo, para lhe dar algum "
-"contexto em o que os status customizados estão sendo usados."
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-#| msgid "The name is used to identify the user group."
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-#| msgid "The name is used to identify the user group."
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr "Atualizar status"
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr "Adicionar novo"
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr "Opções"
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-"Por favor note que selecionando uma caixa irá aplicar todos os status para o "
-"determinado tipo de Post."
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr "Nome"
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr "Adicionar novo status"
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr "Link permanente:"
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr "Alterar Links Permanentes"
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr "Editar link permanente"
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr "Posição"
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr "Nenhum status personalizado encontrado"
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr "Padrão"
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr "Tornar padrão"
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr "Excluir"
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr "Widgets do Painel"
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr "Opções de widget"
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr "Conteúdo não publicado"
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr "Bloco de notas"
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr "Posts que sigo"
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr "Posts a um relance"
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr "Este post foi atualizado pela última vez em"
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr "Desculpe! Você não assinou nenhum post!"
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr "Widget de status de post"
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-"O módulo de notificações precisará ser ativado para que esta widget seja "
-"exibida."
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr "Nota de Painel de Controle"
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr "%1$s atualizado pela última vez em %2$s"
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr "Atualizar nota"
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr "Comentários Editoriais"
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr "Escolha os tipos de post"
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-"Comentários editoriais ajudam a reduzir a sobrecarga de email e manter a "
-"conversação acerca do que verdadeiramente importa: seu conteúdo. Comentar no "
-"admin, similar ao que se encontra ao final de um post do blog, permite aos "
-"escritores e editores deixar um feedback privado e discutir o que deve ser "
-"alterado antes da publicação.
Qualquer pessoa que tenha acceso a ver "
-"a história em progreso também terá a possibilidade de fazer comentários a "
-"respeito. Se você habilitou as notificações, os que seguirem o post "
-"receberão um email cada vez que um comentario é deixado.
"
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-" Para mais informações
Documentação dos "
-"Comentários Editoriais
Fórum PublishPress PublishPress no Github
"
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-"Você pode adicionar comentários editoriais ao post uma vez que você o salvou "
-"pela primeira vez."
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-msgid "Add an editorial comment"
-msgstr "Adicionar comentário editorial"
-
-#: modules/editorial-comments/editorial-comments.php:252
-msgid "Add Comment"
-msgstr "Adicionar comentários"
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr "Responder a este comentário"
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr "Responder"
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-" disse em "
-"%2$s em %3$s "
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-"Revisão Nonce falhou. Por favor tenha certeza que você pode adicionar "
-"comentários editoriais."
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-"Desculpe, você não tem privilégios para adicionar comentários editoriais. "
-"Por favor, fale com seu administrador."
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr "Por favor insira um comentário."
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr "Ocorreu algum problema. Tente novamente ou contate seu administrador."
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr "Habilitar para estes tipos de post:"
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr "Metadados"
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr "Termo de metadado adicionado."
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr "Termo de metadado atualizado."
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr "Termo de metadado não existe."
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr "Termo de metadado excluído."
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr "Ordem do termo atualizada."
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr "Visibilidade do termo alterada."
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-#| msgid ""
-#| "Keep track of important details about your content with editorial "
-#| "metadata. This feature allows you to create as many date, text, number, "
-#| "etc. fields as you like, and then use them to store information like "
-#| "contact details, required word count, or the location of an interview."
-#| "p>
Once you’ve set your fields up, editorial metadata integrates with "
-#| "both the calendar and the content overview. Make an editorial metadata "
-#| "item visible to have it appear to the rest of your team. Keep it hidden "
-#| "to restrict the information between the writer and their editor.
"
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-" Para mais informações
Documentação dos Metadados "
-"Editoriais
PublishPress no Github
"
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr "Primeira data do rascunho"
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr "Quando o primeiro rascunho precisa estar pronto."
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr "Atribuição"
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr "O que o post precisa cobrir."
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr "Checkbox"
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr "Localização"
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr "Número"
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr "Parágrafo"
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr "Texto"
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr "Usuário"
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-"Tem certeza que deseja excluir este termo? Qualquer metadado para este termo "
-"irá permanecer, mas não será visível a menos que este termo seja "
-"readicionado."
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr "Metadados"
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr "Metadado"
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr "Buscar metadados editoriais"
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr "Metados editoriais populares"
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr "Todos os metadaddos editoriais"
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr "Editar metadados editoriais"
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr "Atualizar metadados editoriais"
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr "Adicionar novo metadado editorial"
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr "Novo metadado editorial"
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr "Configurar"
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr "Nenhum metadado editorial disponível."
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr " Adicionar campos para começar ."
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-"Encorage o administrador do site a configurar seu fluxo de trabalho "
-"editorial adicionando metadados editoriais."
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr "Ver “%s” no Google Maps"
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr "- Selecione um usuário -"
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr "Este tipo de metadado editorial ainda não é suportado."
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr "Não"
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr "Sim"
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr "d/m/Y"
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr "d/m/Y H:i"
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-msgid "%1$s at %2$s"
-msgstr "%1$s às %2$s"
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr "Por favor, insira um nome para os metadados editoriais."
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr "Por favor insira o slug para os metadados editoriais."
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-"Nome entra em conflito com o termo existente. Por favor, escolha outro."
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr "Este nome já está em uso. Por favor escolha outro."
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr "Este slug já está em uso. Por favor, escolha outro."
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-"O nome não pode ter mais de 200 caracteres. Por favor, tente um nome mais "
-"curto."
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr "Selecione um tipo de metadada válido."
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr "Erro ao adicionar o termo."
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr "Por favor insira um nome para os metadados editoriais."
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-"Por favor insira um nome válido, não-numérico para os metadados editoriais."
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-"O nome do metadado conflita com um termo existente. Por favor, escolha outro."
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr "O nome conflita com o slug para outro termo. Por favor, escolha outro."
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr "Erro ao atualizar o termo."
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr "Erro ao excluir o term."
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr "Adicionar a estes tipos de post:"
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr "O nome serve para marcar o campo de metadado."
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr "O slug não pode ser alterado uma vez que o termo tenha sido criado."
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-"A descrição pode ser usada para comunicação com sua equipe sobre o assunto "
-"do metadado."
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-"O tipo de metadado não pode ser alterado uma vez que tenha sido criado."
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr "Visível"
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-"Quando visível, o metadado pode ser visto em outras visualizações além da "
-"edição do post (por exemplo: calendário, gerenciar posts, histórico de "
-"pagamento, etc)."
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr "Atualizar termo do metadado"
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-"Por favor, note que selecionando uma caixa irá aplicar todos os metadados "
-"para o determinado tipo de Post."
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-"O \"slug\" é uma versão amigável da URL para o nome. É geralmente em caixa "
-"baixa e contém somente letras, números e hífens."
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr "Indica o tipo de metadado editorial."
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr "Adicionar novo termo de metadado"
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr "Tipo de metadado"
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr "Nenhum metadado editorial encontrado."
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr "Metadados ocultos podem ser vistos somente na edição do post."
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr "Ocultar"
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr "Tornar visível"
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr "Editar Migração de Fluxo"
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr "Migrar dados do Edit Flow para o PublishPress"
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-"Esta migração irá importar todos os seus dados e configurações do Edit Flow."
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-"Atenção! Importando dados do Edit Flow irá sobrescrever qualquer dados "
-"atuais no PublishPress."
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr "Iniciar"
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr "Opções de Plugin e Módulos"
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr "Metadados de Usuários"
-
-#: modules/efmigration/efmigration.php:157
-msgid "Finished!"
-msgstr "Finalizado!"
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr "Por favor, aguarde enquanto migramos seus dados antigos…"
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr "Erro"
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr "Se necessário, sinta-se livre para"
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr "contatar o time de suporte "
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr "Voltar ao PublishPress"
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr "Acesso Negado"
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-"Nós encontramos dados do Edit Flow! Você gostaria de importar os dados para "
-"o PublishPress? Sim, importe os dados | Cancelar "
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr "Passo desconhecido"
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr "Método de migração não definido"
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-msgid "Notification Workflows"
-msgstr "Workflows de Notificações"
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-#| msgid "Add editorial comment: %s"
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-msgid "Workflow Settings"
-msgstr "Configurações de workflow"
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-#| msgid "Editorial Comments"
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-#| msgid "Disable"
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-#| msgid "Notifications"
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-#| msgid "Change"
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr "Gerais"
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr "Recursos"
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr "Sinta-se livre para selecionar somente os recursos de que precisa."
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr "Recursos ativados"
-
-#: modules/notifications/notifications.php:60
-#| msgid "Notifications"
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-#| msgid ""
-#| "Notifications ensure you keep up to date with progress your most "
-#| "important content. Users can be subscribed to notifications on a post one "
-#| "by one or by selecting user groups.
When enabled, notifications can "
-#| "be sent when a post changes status or an editorial comment is left by a "
-#| "writer or an editor.
"
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-"Para mais informações:
Documentação de Notificações "
-"a>
PublishPress "
-"no Github
"
-
-#: modules/notifications/notifications.php:357
-#| msgid "Click to unfollow updates to this post"
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-#| msgid "Click to unfollow updates to this post"
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-#| msgid ""
-#| "Select the users and user groups that should receive notifications when "
-#| "the status of this post is updated or when an editorial comment is added."
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr "Você está recebendo este email porque está inscrito em “%s”."
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr "Este email foi enviado %s."
-
-#: modules/notifications/notifications.php:1159
-#| msgid "Use on these post types:"
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr "WordPress Scheduler"
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr "[%1$s] Novo %2$s Criado: \"%3$s\""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr "[%1$s] %2$s Movido para a lixeira: \"%3$s\""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr "%1$s #%2$s \"%3$s\" foi movido para a lixeira por %4$s %5$s"
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr "[%1$s] %2$s Restaurados (da lixeira): \"%3$s”"
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr "%1$s #%2$s \"%3$s\" foi restaurado da lixeira por %4$s %5$s"
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr "[%1$s] %2$s Programado: \"%3$s\""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-"%1$s #%2$s \"%3$s\" foi programado por %4$s %5$s. Será publicado em %6$s"
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr "[%1$s] %2$s Publicado: \"%3$s\""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr "%1$s #%2$s \"%3$s\" foi publicado por %4$s %5$s"
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr "[%1$s] %2$s Despublicado: \"%3$s\""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr "%1$s #%2$s \"%3$s\" foi despublicado por %4$s %5$s"
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr "[%1$s] %2$s status alterado para \"%3$s\""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr "O status foi alterado para %1$s #%2$s \"%3$s\" por %4$s %5$s"
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr "Esta ação foi tomada em %1$s às %2$s %3$s"
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr "%1$s => %2$s"
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr "== Detalhes %s =="
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr "Título: %s"
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-#| msgid "Author: %1$s (%2$s)"
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr "== Ações =="
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr "Adicionar comentário editorial: %s"
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr "Editar: %s"
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr "Ver: %s"
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr "[%1$s] Novo comentário editorial: \"%2$s\""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr "Um novo comentário editorial foi adicionado a %3$s #%1$s \"%2$s\""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr "Resposta: %s"
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr "Você pode ver todos os comentário editoriais neste %s aqui: "
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No items found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-#| msgid "User group created. Feel free to add users to the usergroup."
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-msgid "Role doesn't exist."
-msgstr "Role não existe."
-
-#: modules/roles/roles.php:82
-#| msgid "User group deleted."
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit %s"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-#| msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-#| msgid ""
-#| "User group name cannot exceed 40 characters. Please try a shorter name."
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-#| msgid "Error adding term."
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-#| msgid "Error adding term."
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-#| msgid "Could not delete the status: "
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-#| msgid "PublishPress"
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr "Se você gosta do %s por favor nos deixe uma avaliação %s. Obrigado!"
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr "Não há módulos do PublishPress registrados"
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr "Posts"
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr "Páginas"
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-"Desabilitado, pois add_post_type_support('%1$s', '%2$s') está incluído em um "
-"arquivo carregado."
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr "Trapaceando hein?"
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr "Grupos de Usuários"
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-"Grupo de usuários criado. Sinta-se livre para adicionar usuários a este "
-"grupo."
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr "Gupo de usuários atualizado."
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr "Grupo de usuários não existe."
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr "Grupo de usuários excluído."
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr "Gerenciar grupo de usuários"
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-"
Para os que têm muitas pessoas envolvidas no processo de publicação, "
-"grupos de usuários ajudam a manter a organização.
Atualmente, grupos "
-"de usuários são usados primariamente para atribuir um grupo de usuários para "
-"receber notificações.
"
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-" Para mais informações
Documentação dos Grupos de "
-"usuários
Fórum PublishPress PublishPress no Github "
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr "Revisores"
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr "Assegurando a qualidade de alto nível."
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr "Fotógrafos"
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr "Capturando a história visualmente."
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr "Repórteres"
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr "Em campo, escrevendo histórias."
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr "Editores"
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr "Proporcionando feedback e direção."
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr "Novos grupos de usuários devem conter um nome"
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr "Variável de usuários inválida. Precisa ser uma matriz."
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr "Nenhum grupo de usuários encontrado."
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr "Usuários no grupo"
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr "Por favor, corrija os erros do seguinte formulário e envie novamente."
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr "Você não tem as permissões necessárias para completar esta ação."
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr "Post não existe"
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-"Edit Flow foi desativado pelo PublishPress. Se você deseja ativá-lo, "
-"desative PublishPress antes."
-
-#: publishpress.php:671 publishpress.php:676
-msgid "Notification Workflow"
-msgstr "Workflow de Notificações"
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr "Adicionar Novo Workflow de Notificações"
-
-#: publishpress.php:673
-msgid "Edit Notification Workflow"
-msgstr "Editar Workflow de Notificações"
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr "Pesquisar Workflows"
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr "Notificações"
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr "Nenhum workflow foi encontrado"
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr "https://publishpress.com/"
-
-#. Description of the plugin/theme
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-"O plugin essencial para qualquer site WordPress com múltiplos escritores"
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr "https://publishpress.com"
-
-#~ msgid ""
-#~ "Unable to connect to the filesystem. Please confirm your credentials."
-#~ msgstr ""
-#~ "Não foi possível se comunicar com o sistema de arquivos. Por favor "
-#~ "confirme suas credenciais."
-
-#~ msgid "Notification"
-#~ msgstr "Notificação"
-
-#~ msgid "-"
-#~ msgstr "-"
-
-#, fuzzy
-#~| msgid "User Groups"
-#~ msgid "%d Group"
-#~ msgid_plural "%d Groups"
-#~ msgstr[0] "Grupos de Usuários"
-#~ msgstr[1] "Grupos de Usuários"
-
-#~ msgid "The calendar lets you see your posts over a customizable date range."
-#~ msgstr ""
-#~ "O calendário permite visualizar quando todo seu conteúdo será publicado."
-
-#, fuzzy
-#~| msgid ""
-#~| "PublishPress’s calendar lets you see your posts over a customizable date "
-#~| "range. Filter by status or click on the post title to see its details. "
-#~| "Drag and drop posts between days to change their publication date date."
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date."
-#~ msgstr ""
-#~ "O calendário PublishPress permite ver suas mensagens durante um período "
-#~ "de datas personalizável. Filtre por estado ou clique no título do post "
-#~ "para ver seus detalhes. Arraste e solte posts entre os dias para alterar "
-#~ "sua data de publicação."
-
-#~ msgid ""
-#~ "Click here for a single screen that shows the publication status of all "
-#~ "your content."
-#~ msgstr "Ver os status de todo seu conteúdo de uma vez ."
-
-#~ msgid ""
-#~ "Use the content overview to see how content on your site is progressing. "
-#~ "Filter by specific categories or date ranges to see details about each "
-#~ "post in progress."
-#~ msgstr ""
-#~ "Use o histórico de orçamento para ver como o conteúdo do seu site está "
-#~ "progredindo. Filtre por categorias específicas ou intervalos de data para "
-#~ "ver os detalhes do progresso de cada post."
-
-#~ msgid ""
-#~ "Create custom post statuses to define the stages of your publishing "
-#~ "workflow."
-#~ msgstr ""
-#~ "Criar status de posts personalizados para definir os estágios do seu "
-#~ "fluxo de trabalho."
-
-#~ msgid ""
-#~ "Create your own post statuses to add structure your publishing workflow. "
-#~ "You can change existing or add new ones anytime, and drag and drop to "
-#~ "change their order."
-#~ msgstr ""
-#~ "Crie seus própios status de publicação para agregar a estrutura ao seu "
-#~ "fluxo de trabalho editorial. Você pode modificar os existentes ou "
-#~ "adicionar novos a qualquer momento, e arrastar e soltar para alterar a "
-#~ "ordem."
-
-#~ msgid "Track your content from the WordPress dashboard."
-#~ msgstr "Seguir seu conteúdo desde o painel do WordPress."
-
-#~ msgid ""
-#~ "Enable dashboard widgets to quickly get an overview of what state your "
-#~ "content is in."
-#~ msgstr ""
-#~ "Habilitar widgets do painel para ter uma rápida visão geral do estado do "
-#~ "seu conteúdo."
-
-#~ msgid "Edit Custom Statuses"
-#~ msgstr "Editar status personalizados"
-
-#~ msgid "Share internal notes with your team."
-#~ msgstr "Compartilhar notas internas com sua equipe"
-
-#~ msgid ""
-#~ "Use editorial comments to hold a private discussion about a post. "
-#~ "Communicate directly with your writers or editors about what works and "
-#~ "what needs to be improved for each piece."
-#~ msgstr ""
-#~ "Utilizar comentários editoriais para manter uma discussão sobre o post. "
-#~ "Comunique-se diretamente com seus escritores ou editores sobre o que "
-#~ "funciona e o que precisa ser melhorado para cada peça."
-
-#~ msgid ""
-#~ "With Metadata you can customize the extra data that’s tracked for your "
-#~ "content."
-#~ msgstr ""
-#~ "Com Metadados você pode rastrear detalhes sobre seus posts em progresso."
-
-#~ msgid ""
-#~ "Log details on every assignment using configurable editorial metadata. "
-#~ "It’s completely customizable; create fields for everything from due date "
-#~ "to location to contact information to role assignments."
-#~ msgstr ""
-#~ "Registre detalhes para cada atribuição usando metadados editoriais "
-#~ "configuráveis. É completamente customizável; crie campos deste data de "
-#~ "vencimento a local para conseguir informações para atribuições de função."
-
-#~ msgid "Name conflicts with slug for another term. Please choose again."
-#~ msgstr "Nome conflita com o slug de outro termo. Por favor, escolha outro."
-
-#~ msgid "Could not update the term: %s "
-#~ msgstr "Não foi possível atualizar o termo: %s "
-
-#~ msgid "Quick Edit"
-#~ msgstr "Quick Edit"
-
-#~ msgid "Quick Edit"
-#~ msgstr "Edição Rápida"
-
-#, fuzzy
-#~| msgid "Pro Add-ons for PublishPress"
-#~ msgid "Improved notifications for PublishPress"
-#~ msgstr "Pro Add-ons para PublishPress"
-
-#, fuzzy
-#~| msgid "Pro Add-ons for PublishPress"
-#~ msgid "Improved Notifications for PublishPress"
-#~ msgstr "Pro Add-ons para PublishPress"
-
-#~ msgid ""
-#~ "This tab contains settings for key features including notifications, "
-#~ "dashboard widgets, and comments."
-#~ msgstr ""
-#~ "Esta aba contém configurações para funcionalidades chave, incluindo "
-#~ "notificações, widgets do painel de controle, e comentários."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with your content."
-#~ msgstr "Atualize sua equipe sobre alterações importantes no seu conteúdo."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with a given content. Each status change or editorial comment sends out a "
-#~ "message to users subscribed to a post. User groups can be used to manage "
-#~ "who receives notifications on what."
-#~ msgstr ""
-#~ "Com as notificações por email, você pode manter todos atualizados sobre o "
-#~ "que está acontecendo com determinado conteúdo. Cada alteração de status "
-#~ "ou comentário editorial dispara uma notificação por email para os "
-#~ "usuários que assinaram o post. Grupos de usuários podem ser usados para "
-#~ "gerenciar quem recebe as notificações e sobre o quê."
-
-#~ msgid "Following"
-#~ msgstr "Seguindo"
-
-#~ msgid "Follow updates to this post"
-#~ msgstr "Seguir as atualizações deste post"
-
-#~ msgid "Follow"
-#~ msgstr "Seguir"
-
-#~ msgid ""
-#~ "Nonce check failed. Please ensure you can add users or user groups to a "
-#~ "post."
-#~ msgstr ""
-#~ "Verificação Nonce fracassou. Por favor, certifique-se que você pode "
-#~ "adicionar usuários ou grupos de usuários ao post."
-
-#~ msgid ""
-#~ "Organize your users into groups who can take different roles in your "
-#~ "publishing workflow."
-#~ msgstr ""
-#~ "Organize seus usuários em grupos para mimetizar sua estrutura "
-#~ "organizacional."
-
-#~ msgid ""
-#~ "Configure user groups to organize all of the users on your site. Each "
-#~ "user can be in many user groups and you can change them at any time."
-#~ msgstr ""
-#~ "Configure grupos de usuários para organizar todos os usuários do seu "
-#~ "site. Cada usuário pode estar em vários grupos de usuários, que podem ser "
-#~ "alterados a qualquer momento."
-
-#~ msgid "Are you sure you want to delete the user group?"
-#~ msgstr "Tem certeza que deseja excluir este grupo?"
-
-#~ msgid "Error adding usergroup."
-#~ msgstr "Erro ao adicionar o grupo de usuários."
-
-#~ msgid "Error updating user group."
-#~ msgstr "Erro ao atualizar o grupo de usuários."
-
-#~ msgid "Error deleting user group."
-#~ msgstr "Erro ao excluir o grupo de usuários."
-
-#~ msgid "The name is used to identify the user group."
-#~ msgstr "O nome é utilizado para identificar o grupo de usuários."
-
-#~ msgid ""
-#~ "The description is primarily for administrative use, to give you some "
-#~ "context on what the user group is to be used for."
-#~ msgstr ""
-#~ "A descrição é primariamente usada para fins administrativos, provendo "
-#~ "algum contexto acerca do uso do grupo."
-
-#~ msgid "Update User Group"
-#~ msgstr "Atualizar grupo de usuários"
-
-#~ msgid ""
-#~ "Please note that checking a box will add all user groups to that post "
-#~ "type."
-#~ msgstr ""
-#~ "Por favor note que selecionando uma caixa irá adicionar todos os grupos "
-#~ "de usuários para o respectivo tipo de Post."
-
-#~ msgid "Add New User Group"
-#~ msgstr "Adicionar novo grupo"
-
-#~ msgid "Usergroups"
-#~ msgstr "Grupos de usuários"
-
-#~ msgid "Select the user groups that you would like to be a part of:"
-#~ msgstr "Selecionar os grupos que você gostaria de participar:"
-
-#~ msgid "Select the user groups that this user should be a part of:"
-#~ msgstr "Selecione os grupos de usuários que este usuário deve fazer parte:"
-
-#~ msgid "No user groups were found."
-#~ msgstr "Nenhum grupo de usuários foi encontrado."
-
-#~ msgid "Add a new user group. Opens new window."
-#~ msgstr "Adicionar novo grupo de usuário. Abre uma nova janela."
-
-#~ msgid "Add a User Group"
-#~ msgstr "Adicionar um grupo de usuários"
-
-#~ msgid "Unpublished"
-#~ msgstr "Não publicado"
-
-#~ msgid "Please enter a name for the status."
-#~ msgstr "Por favor, insira um nome para o status."
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Este nome de status é restrito. Por favor, escolha outro."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Este status já existe. Por favor, escolha outro nome."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Não foi possível atualizar o status: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Responder a este post"
-
-#~ msgid "Submit Response"
-#~ msgstr "Enviar resposta"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Sempre notificar o administrador do blog"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Não foi possível atualizar o grupo de usuários: %s "
-
-#~ msgid "Featured"
-#~ msgstr "Destacado"
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "PublishPress é o plugin essencial para qualquer site WordPress com "
-#~ "multiplos escritores."
-
-#~ msgid ""
-#~ "Click here to see a calendar view of all your content, organized by "
-#~ "publication date."
-#~ msgstr ""
-#~ "Clique aqui para ver todo seu conteúdo em um calendário, organizado pela "
-#~ "data de publicação."
-
-#~ msgid ""
-#~ "Click here to see a list of all your content, organized by status, "
-#~ "category or author."
-#~ msgstr ""
-#~ "Clique aqui para verruma lista de todo seu conteúdo, organizado por "
-#~ "estado, categoria ou autor."
-
-#~ msgid "PressShack"
-#~ msgstr "PressShack"
-
-#~ msgid "Calendar Options"
-#~ msgstr "Opções do calendário"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Número de Semanas: "
-
-#~ msgid "%s Title"
-#~ msgstr "%s Título"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Número de semanas para exibir"
-
-#~ msgid "Post types to create directly from calendar"
-#~ msgstr "Tipo de post para criar diretamente do calendário"
-
-#~ msgid "Invalid post metadata type"
-#~ msgstr "Tipo de metadados do post inválida"
-
-#~ msgid "Error updating post author."
-#~ msgstr "Erro ao alterar autor do post."
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "Excluir um status de post irá atribuir todos os posts para o status "
-#~ "padrão."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Responder a este Post"
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Marque se esta publicação precisar de uma foto."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Tamanho do post requerido em palavras."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Não é um módulo registrado do PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Módulo não habilitado. Por favor, ative-o na Página de "
-#~ "configuração do PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Ativar"
+# Copyright (C) 2013
+# This file is distributed under the same license as the package.
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/publishpress\n"
+"POT-Creation-Date: 2022-03-24T12:31:36-03:00\n"
+"PO-Revision-Date: 2023-08-15 14:39+0000\n"
+"Last-Translator: Anderson Grudtner Martins \n"
+"Language-Team: Portuguese (Brazil)\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-SearchPath-0: .\n"
+"X-Poedit-SearchPathExcluded-0: vendor\n"
+"X-Poedit-SearchPathExcluded-1: node_modules\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr " Programado"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr " Programado, mas atrasado"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "\"Me avise\""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1951
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" foi movido para a lixeira por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1998
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" foi publicado por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1968
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" foi restaurado da lixeira por %4$s %5$s"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2015
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" foi despublicado por %4$s %5$s"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2114
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s (%2$s ) dito em %3$s a %4$s:"
+
+#: modules/content-overview/content-overview.php:1012
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2056
+msgid "%1$s => %2$s"
+msgstr "%1$s => %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1892
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+msgid "%1$s at %2$s"
+msgstr "%1$s às %2$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+msgid "%1$s last updated on %2$s"
+msgstr "%1$s atualizado pela última vez em %2$s"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "%d Função"
+msgstr[1] "%d Funções"
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "Usuário %d"
+msgstr[1] "Usuários %d"
+
+#: modules/calendar/calendar.php:830
+msgid "%d week"
+msgstr "%d semana"
+
+#: modules/calendar/calendar.php:831
+msgid "%d weeks"
+msgstr "%d semanas"
+
+#: modules/notifications-log/notifications-log.php:271
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "%s notificação encontrada."
+msgstr[1] "%s notificações encontradas."
+
+#: modules/calendar/calendar.php:4028
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] "%s semana"
+msgstr[1] "%s semanas"
+
+#: modules/calendar/calendar.php:2141
+msgid "«"
+msgstr "«"
+
+#: modules/calendar/calendar.php:2154
+msgid "‹"
+msgstr "‹"
+
+#: modules/calendar/calendar.php:2110
+msgid "»"
+msgstr "»"
+
+#: modules/calendar/calendar.php:2093
+msgid "›"
+msgstr "›"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(sem título)"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "- qualquer status -"
+
+#: modules/calendar/calendar.php:210
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+" Para mais informações
Documentação do Calendário
"
+"PublishPress no "
+"Github
"
+
+#: modules/custom-status/custom-status.php:118
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+" Para mais informações
Documentação do status "
+"personalizado
Fórum PublishPress p>
Editar Flow no Github
"
+
+#: modules/editorial-comments/editorial-comments.php:87
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+" Para mais informações
Documentação dos "
+"Comentários Editoriais
Fórum PublishPress PublishPress no Github
"
+
+#: modules/editorial-metadata/editorial-metadata.php:125
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+" Para mais informações
Documentação dos Metadados "
+"Editoriais
"
+"PublishPress no Github
"
+
+#: modules/notifications/notifications.php:99
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+"Para mais informações:
Documentação de Notificações "
+"
"
+"PublishPress no Github
"
+
+#: modules/editorial-comments/editorial-comments.php:82
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"Comentários editoriais ajudam a reduzir a sobrecarga de email e manter a "
+"conversação acerca do que verdadeiramente importa: seu conteúdo. Comentar no "
+"admin, similar ao que se encontra ao final de um post do blog, permite aos "
+"escritores e editores deixar um feedback privado e discutir o que deve ser "
+"alterado antes da publicação.
Qualquer pessoa que tenha acceso a ver "
+"a história em progreso também terá a possibilidade de fazer comentários a "
+"respeito. Se você habilitou as notificações, os que seguirem o post "
+"receberão um email cada vez que um comentario é deixado.
"
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+"Acompanhe detalhes importantes sobre seu conteúdo com metadados "
+"editoriais. Este recurso permite que você crie tantos campos de data, texto, "
+"número, etc. quantos você desejar. Então você poderá usá-los para armazenar "
+"informações como detalhes de contato ou o local de uma entrevista.
"
+"Depois de definir seus campos, os metadados editoriais se integram ao "
+"calendário e à visão geral do conteúdo. Torne um item de metadados editorial "
+"visível para que ele apareça para o resto da sua equipe. Mantenha-o oculto "
+"para restringir a informação entre o redator e seu editor.
"
+
+#: modules/notifications/notifications.php:94
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"As notificações garantem que você mantenha-se atualizado sobre o "
+"progresso de seus conteúdos mais importantes. Os usuários podem ser "
+"adicionados para receber notificações ou funções de usuários.
Quando "
+"ativas, as notificações podem ser enviadas quando houver uma alteração no "
+"status o post ou um comentário editorial for deixado por um redator ou um "
+"editor.
"
+
+#: modules/custom-status/custom-status.php:113
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+"Status personalizados do PublishPress permitem definir as etapas mais "
+"importantes do seu fluxo de trabalho editorial. Fora da caixa, WordPress só "
+"oferece \"Rascunho\" e \"Revisão Pendente\" como status de post. Com status "
+"personalizados, você pode criar seus próprios status, como \"Em andamento\", "
+"\"Em campo\" ou \"Esperando edição\" e conservar ou eliminar os originais. "
+"Também é possível arrastar e soltar os status para estabelecer a melhor "
+"ordem para seu fluxo de trabalho.
Os status personalizados estão "
+"plenamente integrados com o restante do PublishPress e a administração do "
+"WordPress. No calendário e no histórico de orçamento, é possível filtrar "
+"apenas os posts de um status específico. Além disso, as notificações de "
+"email poder ser enviadas a um grupo específico de usuários quando o post "
+"teve seu status alterado."
+
+#: modules/calendar/calendar.php:205
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+"O calendário é uma visualização semana-a-semana ou mês-a-mês conveniente "
+"para seu conteúdo. Veja rapidamente quais histórias estão encaminhadas para "
+"serem publicadas a tempo, e quais precisarão de um esforço extra.
"
+
+#: modules/custom-status/custom-status.php:518
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+"Nota: Seu navegador não suporta JavaScript ou o JavaScript "
+"está desativado. Você não será capaz de acessar ou alterar o status do post."
+
+#: modules/notifications/notifications.php:2064
+msgid "== %s Details =="
+msgstr "== Detalhes %s =="
+
+#: modules/notifications/notifications.php:2083
+#: modules/notifications/notifications.php:2136
+msgid "== Actions =="
+msgstr "== Ações =="
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1991
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s Publicado: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1961
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] %2$s Restaurados (da lixeira): \"%3$s”"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2025
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$s status alterado para \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1944
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s Movido para a lixeira: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2008
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s Despublicado: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1927
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] Novo %2$s Criado: \"%3$s\""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2100
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] Novo comentário editorial: \"%2$s\""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1934
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr "Um novo %1$s (#%2$s \"%3$s\" ) foi criado por %4$s %5$s"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2107
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr "Um novo comentário editorial foi adicionado a %3$s #%1$s \"%2$s\""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr "Acesso Negado"
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr "O identificador 'nonce' da ação não foi encontrado."
+
+#: modules/notifications/notifications.php:676
+msgid "Active Notifications"
+msgstr "Notificações Ativas"
+
+#: modules/notifications/notifications.php:1785
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+"Adicione uma lista de slugs de taxonomias separadas por vírgula que não "
+"devem ser carregadas pelo filtro de conteúdo Taxonomia ao adicionar um novo "
+"fluxo de trabalho de notificação."
+
+#: modules/editorial-comments/editorial-comments.php:520
+#: modules/editorial-comments/editorial-comments.php:524
+msgid "Add an editorial comment"
+msgstr "Adicionar comentário editorial"
+
+#: modules/editorial-metadata/editorial-metadata.php:2075
+#: modules/editorial-metadata/editorial-metadata.php:2436
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:542
+msgid "Add Comment"
+msgstr "Adicionar comentários"
+
+#: modules/calendar/calendar.php:802
+msgid "Add content for %s"
+msgstr "Adicionar conteúdo para %s"
+
+#: modules/notifications/notifications.php:2085
+#: modules/notifications/notifications.php:2142
+msgid "Add editorial comment: %s"
+msgstr "Adicionar comentário editorial: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:1798
+#: modules/custom-status/custom-status.php:2112
+msgid "Add New"
+msgstr "Adicionar novo"
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "Add New Editorial Metadata"
+msgstr "Adicionar novo metadado editorial"
+
+#: modules/editorial-metadata/editorial-metadata.php:2571
+msgid "Add New Metadata Term"
+msgstr "Adicionar novo termo de metadado"
+
+#: publishpress.php:1238
+msgid "Add New Notification"
+msgstr "Adicionar Nova Notificação"
+
+#: modules/notifications/notifications.php:382
+msgid "Add New Notify Email"
+msgstr "Adicionar novo Notificar Email"
+
+#: modules/notifications/notifications.php:347
+msgid "Add New Notify Role"
+msgstr "Adicionar Novo Notificar Papel"
+
+#: modules/notifications/notifications.php:312
+msgid "Add New Notify User"
+msgstr "Adicionar Notificar Usuário"
+
+#: modules/custom-status/custom-status.php:2208
+msgid "Add New Status"
+msgstr "Adicionar novo status"
+
+#: modules/notifications/notifications.php:385
+msgid "Add or remove notify emails"
+msgstr "Adicionar ou remover Notificar Emails"
+
+#: modules/notifications/notifications.php:350
+msgid "Add or remove notify roles"
+msgstr "Adicionar ou remover Notificar Papéis"
+
+#: modules/notifications/notifications.php:315
+msgid "Add or remove notify users"
+msgstr "Adicionar ou remover Notificar Usuário"
+
+#: modules/editorial-metadata/editorial-metadata.php:2155
+#: modules/editorial-metadata/editorial-metadata.php:2522
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:93
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr "Todos"
+
+#: modules/content-overview/content-overview.php:1254
+#: modules/content-overview/content-overview.php:1257
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Actions"
+msgstr "Todas as Ações"
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:3976
+#: modules/content-overview/content-overview.php:1276
+#: modules/content-overview/content-overview.php:1279
+msgid "All authors"
+msgstr "Todos os autores"
+
+#: modules/calendar/calendar.php:826
+msgid "All categories"
+msgstr "Todas as categorias"
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Channels"
+msgstr "Todos os Canais"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr "Todos os canais"
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "All Editorial Metadata"
+msgstr "Todos os metadaddos editoriais"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr "Todos os Eventos"
+
+#: modules/notifications/notifications.php:376
+msgid "All Notify Emails"
+msgstr "Todos Notificar Emails"
+
+#: modules/notifications/notifications.php:341
+msgid "All Notify Roles"
+msgstr "Todos Notificar Papéis"
+
+#: modules/notifications/notifications.php:306
+msgid "All Notify Users"
+msgstr "Todos Notificar Usuários"
+
+#: modules/editorial-metadata/editorial-metadata.php:1267
+#: modules/editorial-metadata/editorial-metadata.php:1437
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1306
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr "Todos os posts"
+
+#: modules/calendar/calendar.php:2846
+msgid "All posts"
+msgstr "Todos os posts"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr "Todos os receptores"
+
+#: modules/notifications-log/notifications-log.php:208
+msgid "All Statuses"
+msgstr "Todos os Status"
+
+#: modules/calendar/calendar.php:825 modules/calendar/calendar.php:3920
+#: modules/content-overview/content-overview.php:1232
+msgid "All statuses"
+msgstr "Todos os status"
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3955
+msgid "All tags"
+msgstr "Todas as tags"
+
+#: modules/calendar/calendar.php:829 modules/calendar/calendar.php:4003
+msgid "All types"
+msgstr "Todos os tipos"
+
+#: modules/editorial-comments/editorial-comments.php:210
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Workflows"
+msgstr "Todos os Workflows"
+
+#: modules/notifications/notifications.php:1649
+msgid "Always notify the author of the content:"
+msgstr "Sempre notifique o autor do conteúdo:"
+
+#: modules/notifications/notifications.php:1657
+msgid "Always notify users who have edited the content:"
+msgstr "Sempre notifique os usuários que editaram o conteúdo:"
+
+#: modules/calendar/calendar.php:2576
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1022
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "Apr"
+msgstr "Abr"
+
+#: modules/custom-status/custom-status.php:409
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+"Tem certeza que deseja excluir este status de post? Todos os posts com este "
+"status serão atribuídos ao status padrão."
+
+#: modules/editorial-metadata/editorial-metadata.php:366
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+"Tem certeza que deseja excluir este termo? Qualquer metadado para este termo "
+"irá permanecer, mas não será visível a menos que este termo seja "
+"readicionado."
+
+#: modules/custom-status/custom-status.php:195
+msgid "Assigned"
+msgstr "Atribuído"
+
+#: modules/editorial-metadata/editorial-metadata.php:216
+msgid "Assignment"
+msgstr "Atribuição"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "Notificações Assíncronas"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr "assíncrono"
+
+#: modules/calendar/calendar.php:2595
+msgid "At least one post type must be selected"
+msgstr "Pelo menos um tipo de postagem deve ser selecionado"
+
+#: modules/editorial-comments/editorial-comments.php:530
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Aug"
+msgstr "Ago"
+
+#: modules/calendar/calendar.php:1949 modules/calendar/calendar.php:3443
+#: modules/calendar/calendar.php:3533
+#: modules/content-overview/content-overview.php:629
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] "Autor"
+msgstr[1] "Autor"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2069
+msgid "Author: %1$s (%2$s )"
+msgstr "Autor: %1$s (%2$s )"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "Autores"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "Autores do conteúdo"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr "Rascunho automático"
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Available fields"
+msgstr "Campos disponíveis"
+
+#: modules/calendar/calendar.php:2133
+msgid "Back %d weeks"
+msgstr "Voltar %d semanas"
+
+#: modules/calendar/calendar.php:2145
+msgid "Back 1 week"
+msgstr "Voltar 1 semana"
+
+#: modules/notifications/notifications.php:393
+msgid "Back to notify emails"
+msgstr "Voltar para Notificar Emails"
+
+#: modules/notifications/notifications.php:358
+msgid "Back to notify roles"
+msgstr "Voltar para Notificar Papéis"
+
+#: modules/notifications/notifications.php:323
+msgid "Back to notify users"
+msgstr "Voltar para Notificar Usuário"
+
+#: modules/modules-settings/modules-settings.php:241
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1665
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "Taxonomias na lista negra para notificações"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr "Blog ID: %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr "Blog: "
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr "Corpo"
+
+#: modules/calendar/calendar.php:170
+msgid "Calendar"
+msgstr "Calendário"
+
+#: modules/editorial-metadata/editorial-metadata.php:2210
+#: modules/custom-status/custom-status.php:2078
+#: modules/content-overview/content-overview.php:1028
+#: modules/editorial-comments/editorial-comments.php:546
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: modules/custom-status/custom-status.php:1212
+msgid "Cannot reassign to the status you want to delete"
+msgstr "Não é possível alterar para o status que você quer excluir"
+
+#: modules/calendar/calendar.php:3543
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "Categories"
+
+#: modules/calendar/calendar.php:3448
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Categoria"
+msgstr[1] "Categoria"
+
+#: modules/content-overview/content-overview.php:1029
+msgid "Change"
+msgstr "Alterar"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:408
+#: modules/improved-notifications/improved-notifications.php:1116
+msgid "Channels"
+msgstr "Canais"
+
+#: publishpress.php:660
+msgid "Cheatin’ uh?"
+msgstr "Trapaceando hein?"
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Checkbox"
+msgstr "Checkbox"
+
+#: modules/notifications/notifications.php:386
+msgid "Choose from the most used notify emails"
+msgstr "Escolher entre Notificar Emails mais utilizados"
+
+#: modules/notifications/notifications.php:351
+msgid "Choose from the most used notify roles"
+msgstr "Selecione a partir dos Notificar Papéis mais utilizados"
+
+#: modules/notifications/notifications.php:316
+msgid "Choose from the most used notify users"
+msgstr "Selecione a partir dos Notificar Usuário mais utilizados"
+
+#: modules/editorial-comments/editorial-comments.php:77
+msgid "Choose Post Types"
+msgstr "Escolha os tipos de post"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:402
+#: modules/improved-notifications/improved-notifications.php:1110
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+"Escolha os canais nos quais cada fluxo de trabalho enviará notificações:"
+
+#: modules/improved-notifications/improved-notifications.php:947
+msgid "Click here to read more about shortcode options..."
+msgstr "Clique aqui para ler mais sobre as opções do shortcode..."
+
+#: modules/calendar/calendar.php:1426
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr "Clique aqui para assinar no iCal ou Google Calendar"
+
+#: modules/calendar/calendar.php:794 modules/calendar/calendar.php:796
+msgid "Click to add"
+msgstr "Clique para adicionar"
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+"Clique para excluir o arquivo de histórico. Tenha cuidado, esta operação não "
+"pode ser desfeita. "
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:943
+msgid "Click to start being notified on updates for this post"
+msgstr "Clique para receber notificações sobre as atualizações deste post"
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:937
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+"Clique para não receber mais notificações sobre atualizações deste post"
+
+#: modules/content-overview/content-overview.php:1481
+msgid "Click to toggle"
+msgstr "Clique para alternar"
+
+#: modules/calendar/calendar.php:798
+msgid "Close"
+msgstr "Fechar"
+
+#: modules/custom-status/custom-status.php:2029
+#: modules/custom-status/custom-status.php:2161
+msgid "Color"
+msgstr "Cor"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1106
+msgid "Comment author name field:"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr "Comentário: %s (%d)"
+
+#: publishpress.php:656
+msgid "Configure"
+msgstr "Configurar"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3560
+#: modules/improved-notifications/improved-notifications.php:933
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr "Conteúdo"
+
+#: modules/calendar/calendar.php:408 modules/calendar/calendar.php:425
+#: modules/calendar/calendar.php:426
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:141
+#: modules/content-overview/content-overview.php:508
+#: modules/content-overview/content-overview.php:525
+#: modules/content-overview/content-overview.php:526
+msgid "Content Overview"
+msgstr "Histórico de orçamento"
+
+#: modules/notifications-log/notifications-log.php:821
+msgid "Content:"
+msgstr "Conteúdo:"
+
+#: modules/calendar/calendar.php:1420
+msgid "Copy to the clipboard"
+msgstr "Copie para a área de transferência"
+
+#: modules/custom-status/custom-status.php:1591
+msgid "Could not add status: "
+msgstr "Não foi possível adicionar o status: "
+
+#: modules/custom-status/custom-status.php:1766
+msgid "Could not delete the status: "
+msgstr "Não foi possível excluir o status: "
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr "Criado em"
+
+#: modules/calendar/calendar.php:1343
+msgid "Current week"
+msgstr "Semana atual"
+
+#: modules/custom-status/custom-status.php:1965
+msgid "Custom Status"
+msgstr "Status personalizado"
+
+#: modules/custom-status/custom-status.php:1130
+msgid "Custom status doesn't exist."
+msgstr "Status personalizado não existe."
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard"
+msgstr "Widgets do Painel"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "Nota de Painel de Controle"
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+#: modules/calendar/calendar.php:3432
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr "Data"
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr "Debug"
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr "Dados de depuração"
+
+#: modules/calendar/calendar.php:824
+msgid "Dec"
+msgstr "Dez"
+
+#: modules/custom-status/custom-status.php:2907
+msgid "Default"
+msgstr "Padrão"
+
+#: modules/improved-notifications/improved-notifications.php:229
+msgid "Default notification channels:"
+msgstr "Canais de notificação padrão:"
+
+#: modules/editorial-metadata/editorial-metadata.php:2037
+#: modules/editorial-metadata/editorial-metadata.php:2067
+#: modules/editorial-metadata/editorial-metadata.php:2398
+#: modules/editorial-metadata/editorial-metadata.php:2428
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:104
+msgid "Default post status has been changed."
+msgstr "Status padrão do post alterado."
+
+#: modules/calendar/calendar.php:2552
+msgid "Default publish time for items created in the calendar"
+msgstr "Tempo de publicação padrão para itens criados no calendário"
+
+#: modules/editorial-metadata/editorial-metadata.php:2040
+#: modules/editorial-metadata/editorial-metadata.php:2070
+#: modules/editorial-metadata/editorial-metadata.php:2401
+#: modules/editorial-metadata/editorial-metadata.php:2431
+#: modules/editorial-metadata/editorial-metadata.php:2827
+#: modules/custom-status/custom-status.php:2924
+#: modules/editorial-comments/editorial-comments.php:611
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr "Excluir"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr "Excluir todos"
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr "Excluir arquivo"
+
+#: modules/editorial-metadata/editorial-metadata.php:1912
+#: modules/editorial-metadata/editorial-metadata.php:2259
+#: modules/editorial-metadata/editorial-metadata.php:2689
+#: modules/custom-status/custom-status.php:2007
+#: modules/custom-status/custom-status.php:2141
+#: modules/custom-status/custom-status.php:2778
+msgid "Description"
+msgstr "Descrição"
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Disabled"
+msgstr "Desativado"
+
+#: modules/settings/settings.php:381
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+"Desabilitado, pois add_post_type_support('%1$s', '%2$s') está incluído em um "
+"arquivo carregado."
+
+#: modules/editorial-metadata/editorial-metadata.php:2028
+#: modules/editorial-metadata/editorial-metadata.php:2059
+#: modules/editorial-metadata/editorial-metadata.php:2389
+#: modules/editorial-metadata/editorial-metadata.php:2420
+msgid "Display Label"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1413
+msgid "Download .ics file"
+msgstr "Baixar o arquivo .ics"
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:881
+#: modules/custom-status/custom-status.php:995
+msgid "Draft"
+msgstr "Projeto"
+
+#: modules/editorial-metadata/editorial-metadata.php:1995
+#: modules/editorial-metadata/editorial-metadata.php:2358
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:221
+msgid "Duplicated notification threshold:"
+msgstr "Limite de notificação duplicada:"
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr "E-mails"
+
+#: modules/editorial-metadata/editorial-metadata.php:2807
+#: modules/custom-status/custom-status.php:2920
+#: modules/calendar/calendar.php:1804 modules/calendar/calendar.php:3465
+#: modules/content-overview/content-overview.php:1880
+#: modules/editorial-comments/editorial-comments.php:600
+msgid "Edit"
+msgstr "Editar"
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Edit Editorial Metadata"
+msgstr "Editar metadados editoriais"
+
+#: modules/efmigration/efmigration.php:287
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+"Edit Flow não deveria ser utilizado juntamente com o PublishPress. Se você "
+"deseja ativá-lo, desative PublishPress antes."
+
+#: publishpress.php:1239
+msgid "Edit Notification"
+msgstr "Editar Notificação"
+
+#: modules/notifications/notifications.php:379
+msgid "Edit Notify Email"
+msgstr "Editar Notificar Email"
+
+#: modules/notifications/notifications.php:344
+msgid "Edit Notify Role"
+msgstr "Editar Notificar Papel"
+
+#: modules/notifications/notifications.php:309
+msgid "Edit Notify User"
+msgstr "Editar Notificar Usuário"
+
+#: modules/custom-status/custom-status.php:99
+msgid "Edit Statuses"
+msgstr "Editar status"
+
+#: modules/calendar/calendar.php:1804
+msgid "Edit this item"
+msgstr "Editar este item"
+
+#: modules/content-overview/content-overview.php:1876
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr "Editar este post"
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+msgid "Edit: %s"
+msgstr "Editar: %s"
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "Editorial Comment"
+msgstr "Comentário editorial"
+
+#: modules/editorial-comments/editorial-comments.php:62
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:233
+#: modules/editorial-comments/editorial-comments.php:425
+msgid "Editorial Comments"
+msgstr "Comentários Editoriais"
+
+#: modules/editorial-metadata/editorial-metadata.php:95
+#: modules/editorial-metadata/editorial-metadata.php:1774
+#: modules/editorial-metadata/editorial-metadata.php:1775
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Editorial Notifications"
+msgstr "Notificações Editoriais"
+
+#: modules/calendar/calendar.php:1393
+msgid "Eight months"
+msgstr "Oito meses"
+
+#: modules/calendar/calendar.php:1399
+msgid "Eleven months"
+msgstr "Onze meses"
+
+#: modules/editorial-comments/editorial-comments.php:1136
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "E-mail"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "e-mail"
+
+#: modules/notifications/notifications.php:1641
+msgid "Email from:"
+msgstr "E-mail de:"
+
+#: modules/editorial-comments/editorial-comments.php:1099
+msgid "Enable for these post types:"
+msgstr "Habilitar para estes tipos de post:"
+
+#: modules/custom-status/custom-status.php:1890
+#: modules/calendar/calendar.php:2627 modules/dashboard/dashboard.php:369
+#: modules/dashboard/dashboard.php:392 modules/dashboard/dashboard.php:426
+msgid "Enabled"
+msgstr "Ativado"
+
+#: modules/modules-settings/modules-settings.php:219
+msgid "Enabled features"
+msgstr "Recursos ativados"
+
+#: modules/calendar/calendar.php:1361
+msgid "End date"
+msgstr "Data final"
+
+#: modules/notifications/notifications.php:636
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+"Informe os usuários, funções ou endereços de e-mail que devem receber "
+"notificações de fluxos de trabalho."
+
+#: modules/editorial-metadata/editorial-metadata.php:2000
+#: modules/editorial-metadata/editorial-metadata.php:2361
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr "Erro"
+
+#: modules/editorial-metadata/editorial-metadata.php:1368
+msgid "Error adding term."
+msgstr "Erro ao adicionar o termo."
+
+#: modules/editorial-metadata/editorial-metadata.php:1645
+msgid "Error deleting term."
+msgstr "Erro ao excluir o term."
+
+#: modules/custom-status/custom-status.php:1719
+msgid "Error updating post status."
+msgstr "Erro ao atualizar o status do post."
+
+#: modules/editorial-metadata/editorial-metadata.php:1531
+#: modules/editorial-metadata/editorial-metadata.php:1579
+msgid "Error updating term."
+msgstr "Erro ao atualizar o termo."
+
+#: modules/custom-status/custom-status.php:1182
+msgid "Error while updating the status"
+msgstr "Erro ao atualizar o status do post"
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr "Evento: %s, Workflow ID: %s, Post ID: %s, ID do Usuário: %s"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr "Falhou"
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr "Recursos"
+
+#: modules/calendar/calendar.php:814
+msgid "Feb"
+msgstr "Fev"
+
+#: modules/modules-settings/modules-settings.php:213
+msgid "Feel free to select only the features you need."
+msgstr "Sinta-se livre para selecionar somente os recursos de que precisa."
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid "field"
+msgstr "campo"
+
+#: modules/calendar/calendar.php:2560
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+"Campo usado para classificar os itens do calendário em uma célula do dia"
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr "Informação do arquivo"
+
+#: modules/content-overview/content-overview.php:1144
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr "Filtrar"
+
+#: modules/notifications/notifications.php:389
+msgid "Filter by notify email"
+msgstr "Filtrar por Notificar Emails"
+
+#: modules/notifications/notifications.php:354
+msgid "Filter by notify role"
+msgstr "Filtrar por Notificar Papéis"
+
+#: modules/notifications/notifications.php:319
+msgid "Filter by notify user"
+msgstr "Filtrar por Notificar Usuário"
+
+#: lib/Notifications/Plugin.php:58
+msgid "Filter the content?"
+msgstr "Filtrar o conteúdo?"
+
+#: modules/editorial-metadata/editorial-metadata.php:1960
+#: modules/editorial-metadata/editorial-metadata.php:2324
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:208
+msgid "First Draft Date"
+msgstr "Primeira data do rascunho"
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1387
+msgid "Five months"
+msgstr "Cinco meses"
+
+#: modules/calendar/calendar.php:1353
+msgid "Five months ago"
+msgstr "Cinco meses atrás"
+
+#: modules/improved-notifications/improved-notifications.php:787
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr "Para qual conteúdo?"
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Format"
+msgstr "Formato"
+
+#: modules/calendar/calendar.php:2099
+msgid "Forward %d weeks"
+msgstr "Avançar %d semanas"
+
+#: modules/calendar/calendar.php:2084
+msgid "Forward 1 week"
+msgstr "Avançar 1 semana"
+
+#: modules/calendar/calendar.php:1385
+msgid "Four months"
+msgstr "Quatro meses"
+
+#: modules/calendar/calendar.php:1351
+msgid "Four months ago"
+msgstr "Quatro meses atrás"
+
+#: modules/calendar/calendar.php:1372
+msgid "Four weeks"
+msgstr "Quatro semanas"
+
+#: modules/calendar/calendar.php:811
+msgid "Fri"
+msgstr "Sex"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr "A partir da data"
+
+#: modules/editorial-metadata/editorial-metadata.php:2810
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr "Metadados ocultos podem ser vistos somente na edição do post."
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:196
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+"Chave secreta iCal regenerada. Por favor, informar a todos os usuários que "
+"deverão assinar novamente."
+
+#: modules/custom-status/custom-status.php:2047
+#: modules/custom-status/custom-status.php:2175
+#: modules/custom-status/custom-status.php:2779
+msgid "Icon"
+msgstr "Ícone"
+
+#: modules/calendar/calendar.php:3427 lib/Notifications/Table/Workflows.php:143
+#: lib/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr "ID"
+
+#: modules/custom-status/custom-status.php:188
+msgid "Idea proposed; waiting for acceptance."
+msgstr "Ideia proposta; esperando aprovação."
+
+#: modules/editorial-metadata/editorial-metadata.php:2098
+#: modules/editorial-metadata/editorial-metadata.php:2462
+#: modules/editorial-metadata/editorial-metadata.php:2817
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2122
+#: modules/editorial-metadata/editorial-metadata.php:2488
+msgid ""
+"If enabled, this metadata will be available as a filter option on the "
+"Content Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2146
+#: modules/editorial-metadata/editorial-metadata.php:2514
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:270
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "Se você gosta do %s por favor nos deixe uma avaliação %s. Obrigado!"
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"Se você encontrou algum erro ou procura informações sobre a PublishPress, "
+"não hesite em entrar em contato com a equipe de suporte. Envie-nos um e-mail:"
+
+#: modules/custom-status/custom-status.php:205
+msgid "In Progress"
+msgstr "Em progresso"
+
+#: modules/editorial-metadata/editorial-metadata.php:1988
+#: modules/editorial-metadata/editorial-metadata.php:2353
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2297
+msgid "Indicate the type of editorial metadata."
+msgstr "Indica o tipo de metadado editorial."
+
+#: modules/calendar/calendar.php:1494
+msgid "Initializing the calendar. Please wait..."
+msgstr "Inicializando o calendário. Por favor aguarde…"
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr "Integre com o plugin The Events Calendar"
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr "Nonce de ação inválido."
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr "Canal inválido para a notificação"
+
+#: modules/editorial-comments/editorial-comments.php:723
+#: modules/editorial-comments/editorial-comments.php:864
+#: modules/editorial-comments/editorial-comments.php:996
+msgid "Invalid comment data"
+msgstr "Dados inválidos do comentário"
+
+#: modules/calendar/calendar.php:3167
+msgid "Invalid date"
+msgstr "Data inválida"
+
+#: modules/calendar/calendar.php:3147
+msgid "Invalid input"
+msgstr "Entrada inválida"
+
+#: core/Error.php:80 modules/calendar/calendar.php:3138
+msgid "Invalid nonce"
+msgstr "Nonce inválido"
+
+#: modules/calendar/calendar.php:3726
+msgid "Invalid Publish Date supplied."
+msgstr "Data de publicação inválida fornecida."
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr "Destinatário inválido para a notificação"
+
+#: modules/calendar/calendar.php:3702
+msgid "Invalid Status supplied."
+msgstr "Status inválido fornecido."
+
+#: modules/calendar/calendar.php:1498
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+"Parece que está demorando muito. Por favor, tente atualizar a página "
+"novamente e verifique se há erros no console do navegador."
+
+#: modules/calendar/calendar.php:813
+msgid "Jan"
+msgstr "Jan"
+
+#: modules/calendar/calendar.php:819
+msgid "Jul"
+msgstr "Jul"
+
+#: modules/calendar/calendar.php:818
+msgid "Jun"
+msgstr "Jun"
+
+#: modules/content-overview/content-overview.php:631
+msgid "Last Modified"
+msgstr "Última modificação"
+
+#: modules/editorial-comments/editorial-comments.php:1135
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:793
+msgid "Loading item..."
+msgstr "Carregando item..."
+
+#: modules/calendar/calendar.php:792
+#: modules/notifications-log/notifications-log.php:210
+msgid "Loading..."
+msgstr "Carregando..."
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Location"
+msgstr "Localização"
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr "Log de Debug"
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr "Arquivo do histórico"
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr "Arquivo de log não encontrado."
+
+#: modules/editorial-metadata/editorial-metadata.php:2814
+msgid "Make Hidden"
+msgstr "Ocultar"
+
+#: modules/editorial-metadata/editorial-metadata.php:2825
+msgid "Make Viewable"
+msgstr "Tornar visível"
+
+#: modules/calendar/calendar.php:815
+msgid "Mar"
+msgstr "Mar"
+
+#: modules/calendar/calendar.php:2568
+msgid "Max visible posts per date"
+msgstr "Máximo de postagens visíveis por data"
+
+#: modules/calendar/calendar.php:817
+msgid "May"
+msgstr "Mai"
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "Mensagem"
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Meta fields"
+msgstr "Meta campos"
+
+#: modules/editorial-metadata/editorial-metadata.php:2022
+#: modules/editorial-metadata/editorial-metadata.php:2053
+#: modules/editorial-metadata/editorial-metadata.php:2383
+#: modules/editorial-metadata/editorial-metadata.php:2414
+msgid "Meta Value"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:505
+msgid "Metadata"
+msgstr "Metadados"
+
+#: modules/editorial-metadata/editorial-metadata.php:1460
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+"O nome do metadado conflita com um termo existente. Por favor, escolha outro."
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Metadata order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term added."
+msgstr "Termo de metadado adicionado."
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Metadata term deleted."
+msgstr "Termo de metadado excluído."
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term doesn't exist."
+msgstr "Termo de metadado não existe."
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term updated."
+msgstr "Termo de metadado atualizado."
+
+#: modules/editorial-metadata/editorial-metadata.php:2688
+msgid "Metadata Type"
+msgstr "Tipo de metadado"
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Metadata visibility changed."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:351
+msgid "minutes"
+msgstr "minutos"
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr "Modificado em"
+
+#: modules/calendar/calendar.php:807
+msgid "Mon"
+msgstr "Seg"
+
+#: modules/notifications/notifications.php:392
+msgid "Most Used Notify Email"
+msgstr "Notificar Emails mais utilizados"
+
+#: modules/notifications/notifications.php:357
+msgid "Most Used Notify Role"
+msgstr "Notificar Papel mais utilizado"
+
+#: modules/notifications/notifications.php:322
+msgid "Most Used Notify User"
+msgstr "Notificar Usuário mais utilizados"
+
+#: modules/content-overview/content-overview.php:1888
+msgid "Move this item to the Trash"
+msgstr "Mover este item para a lixeira"
+
+#: modules/calendar/calendar.php:795
+msgid "Moving the item..."
+msgstr "Movendo o item..."
+
+#: modules/editorial-metadata/editorial-metadata.php:1971
+#: modules/editorial-metadata/editorial-metadata.php:2333
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1097
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Muted"
+msgstr "Mudo"
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr "Posts que sigo"
+
+#: modules/editorial-metadata/editorial-metadata.php:2228
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: modules/custom-status/custom-status.php:2123
+#: modules/custom-status/custom-status.php:2777
+msgid "Name"
+msgstr "Nome"
+
+#: modules/editorial-metadata/editorial-metadata.php:1296
+#: modules/editorial-metadata/editorial-metadata.php:1469
+msgid "Name already in use. Please choose another."
+msgstr "Este nome já está em uso. Por favor escolha outro."
+
+#: modules/editorial-metadata/editorial-metadata.php:1306
+#: modules/editorial-metadata/editorial-metadata.php:1313
+#: modules/editorial-metadata/editorial-metadata.php:1482
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+"O nome não pode ter mais de 200 caracteres. Por favor, tente um nome mais "
+"curto."
+
+#: modules/editorial-metadata/editorial-metadata.php:1289
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+"Nome entra em conflito com o termo existente. Por favor, escolha outro."
+
+#: modules/editorial-metadata/editorial-metadata.php:1474
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr "O nome conflita com o slug para outro termo. Por favor, escolha outro."
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "Novo"
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "New Editorial Metadata"
+msgstr "Novo metadado editorial"
+
+#: modules/notifications/notifications.php:383
+msgid "New Notify Email"
+msgstr "Novo Notificar Email"
+
+#: modules/notifications/notifications.php:348
+msgid "New Notify Role"
+msgstr "Novo Notificar Papel"
+
+#: modules/notifications/notifications.php:313
+msgid "New Notify User"
+msgstr "Novo Notificar Usuário"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr "Novo status: %s"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "Novo status"
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1395
+msgid "Nine months"
+msgstr "Nove meses"
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2752
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr "Não"
+
+#: modules/notifications/notifications.php:705
+msgid "No active notifications found for this %s."
+msgstr "Não foram encontradas notificações ativas para este %s."
+
+#: modules/custom-status/custom-status.php:2801
+msgid "No custom statuses found."
+msgstr "Nenhum status personalizado encontrado."
+
+#: modules/calendar/calendar.php:3661
+msgid "No date supplied."
+msgstr "Nenhuma data informada."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2783
+msgid "No editorial metadata found."
+msgstr "Nenhum metadado editorial encontrado."
+
+#: modules/calendar/calendar.php:3158
+msgid "No enough permissions"
+msgstr "Sem permissões suficientes"
+
+#: publishpress.php:1243 publishpress.php:1244
+msgid "No notification found"
+msgstr "Nenhuma notificação encontrada"
+
+#: modules/notifications-log/notifications-log.php:283
+msgid "No notifications found."
+msgstr "Nenhuma notificação foi encontrada."
+
+#: modules/notifications/notifications.php:387
+#: modules/notifications/notifications.php:388
+msgid "No notify emails"
+msgstr "Nenhum Notificar Emails"
+
+#: modules/notifications/notifications.php:352
+#: modules/notifications/notifications.php:353
+msgid "No notify roles"
+msgstr "Nenhum Notificar Papéis"
+
+#: modules/notifications/notifications.php:317
+#: modules/notifications/notifications.php:318
+msgid "No notify users"
+msgstr "Nenhum Notificar Usuário"
+
+#: modules/calendar/calendar.php:833
+msgid "No terms"
+msgstr "Sem termos"
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "Nenhum workflow foi encontrado."
+
+#: modules/editorial-comments/editorial-comments.php:715
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+"Revisão Nonce falhou. Por favor tenha certeza que você pode adicionar "
+"comentários editoriais."
+
+#: modules/editorial-comments/editorial-comments.php:853
+#: modules/editorial-comments/editorial-comments.php:985
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+"A checagem do Nonce falhou. Por favor tenha certeza que você pode adicionar "
+"comentários editoriais."
+
+#: modules/calendar/calendar.php:1784
+#: modules/content-overview/content-overview.php:1773
+msgid "None"
+msgstr "Nenhum"
+
+#: lib/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr "Não filtrado"
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr "Bloco de notas"
+
+#: publishpress.php:1237 publishpress.php:1242
+#: modules/notifications-log/notifications-log.php:209
+msgid "Notification"
+msgstr "Notificação"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "Registro de notificação não encontrado"
+
+#: publishpress.php:1236 publishpress.php:1241
+#: modules/notifications/notifications.php:72
+#: modules/notifications/notifications.php:600
+msgid "Notifications"
+msgstr "Notificações"
+
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:262
+#: modules/notifications-log/notifications-log.php:485
+#: modules/notifications-log/notifications-log.php:486
+msgid "Notifications Log"
+msgstr "Registro de notificações"
+
+#: modules/notifications/notifications.php:370
+#: modules/notifications/notifications.php:373
+#: modules/notifications/notifications.php:390
+#: modules/notifications/notifications.php:391
+msgid "Notify Email"
+msgstr "Notificar Email"
+
+#: modules/notifications/notifications.php:372
+msgid "Notify Emails"
+msgstr "Notificar Emails"
+
+#: modules/notifications/notifications.php:574
+#: modules/notifications/notifications.php:942
+msgid "Notify me"
+msgstr "Me avise"
+
+#: modules/improved-notifications/improved-notifications.php:306
+msgid "Notify on editorial comments"
+msgstr "Notifique em novos comentários editoriais"
+
+#: modules/notifications/notifications.php:335
+#: modules/notifications/notifications.php:338
+#: modules/notifications/notifications.php:355
+#: modules/notifications/notifications.php:356
+msgid "Notify Role"
+msgstr "Notificar Papel"
+
+#: modules/notifications/notifications.php:337
+msgid "Notify Roles"
+msgstr "Notificar Papéis"
+
+#: modules/notifications/notifications.php:300
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:320
+#: modules/notifications/notifications.php:321
+msgid "Notify User"
+msgstr "Notificar Usuário"
+
+#: modules/notifications/notifications.php:302
+msgid "Notify Users"
+msgstr "Notificar Usuários"
+
+#: modules/improved-notifications/improved-notifications.php:272
+msgid "Notify when content is published"
+msgstr "Notifique quando o conteúdo for publicado"
+
+#: modules/calendar/calendar.php:823
+msgid "Nov"
+msgstr "Nov"
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Number"
+msgstr "Número"
+
+#: modules/content-overview/content-overview.php:689
+msgid "Number of Columns: "
+msgstr "Número de Colunas: "
+
+#: modules/calendar/calendar.php:822
+msgid "Oct"
+msgstr "Out"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr "Status de post antigo: %s"
+
+#: modules/improved-notifications/improved-notifications.php:941
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+"Em cada shortcode você pode selecionar um ou mais campos. Se forem mais de "
+"um, eles serão exibidos separados por \",\"."
+
+#: modules/calendar/calendar.php:1378
+msgid "One month"
+msgstr "Um mês"
+
+#: modules/calendar/calendar.php:1345
+msgid "One month ago"
+msgstr "Um mês atrás"
+
+#: modules/calendar/calendar.php:1366
+msgid "One week"
+msgstr "Uma semana"
+
+#: modules/custom-status/custom-status.php:2105
+msgid "Options"
+msgstr "Opções"
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+#: modules/custom-status/custom-status.php:112
+#: modules/calendar/calendar.php:204
+#: modules/editorial-comments/editorial-comments.php:81
+#: modules/notifications/notifications.php:93
+msgid "Overview"
+msgstr "Visão geral"
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Paragraph"
+msgstr "Parágrafo"
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email"
+msgstr "Notificar Email pai"
+
+#: modules/notifications/notifications.php:378
+msgid "Parent Notify Email:"
+msgstr "Notificar Email pai:"
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role"
+msgstr "Notificar Papel pai"
+
+#: modules/notifications/notifications.php:343
+msgid "Parent Notify Role:"
+msgstr "Notificar Papel pai:"
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User"
+msgstr "Notificar Usuário pai"
+
+#: modules/notifications/notifications.php:308
+msgid "Parent Notify User:"
+msgstr "Notificar Usuário pai:"
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr "Caminho"
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr "Pendente de revisão"
+
+#: modules/custom-status/custom-status.php:900
+msgid "Pending review"
+msgstr "Revisão pendente"
+
+#: modules/custom-status/custom-status.php:185
+msgid "Pitch"
+msgstr "Passo"
+
+#: publishpress.php:575
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:659
+msgid "Please correct your form errors below and try again."
+msgstr "Por favor, corrija os erros do seguinte formulário e envie novamente."
+
+#: modules/editorial-comments/editorial-comments.php:746
+#: modules/editorial-comments/editorial-comments.php:910
+msgid "Please enter a comment."
+msgstr "Por favor insira um comentário."
+
+#: modules/editorial-metadata/editorial-metadata.php:1446
+msgid "Please enter a name for the editorial metadata"
+msgstr "Por favor insira um nome para os metadados editoriais"
+
+#: modules/editorial-metadata/editorial-metadata.php:1276
+msgid "Please enter a name for the editorial metadata."
+msgstr "Por favor, insira um nome para os metadados editoriais."
+
+#: modules/custom-status/custom-status.php:1533
+#: modules/custom-status/custom-status.php:1643
+msgid "Please enter a name for the status"
+msgstr "Por favor, insira o nome do status"
+
+#: modules/editorial-metadata/editorial-metadata.php:1283
+msgid "Please enter a slug for the editorial metadata."
+msgstr "Por favor insira o slug para os metadados editoriais."
+
+#: modules/editorial-metadata/editorial-metadata.php:1451
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+"Por favor insira um nome válido, não-numérico para os metadados editoriais."
+
+#: modules/custom-status/custom-status.php:1537
+#: modules/custom-status/custom-status.php:1647
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr "Por favor insira um nome válido, não númerico para o status."
+
+#: modules/custom-status/custom-status.php:2222
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+"Por favor note que selecionando uma caixa irá aplicar todos os status para o "
+"determinado tipo de Post."
+
+#: modules/editorial-metadata/editorial-metadata.php:1323
+msgid "Please select a valid metadata type."
+msgstr "Selecione um tipo de metadada válido."
+
+#: lib/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr "Selecione pelo menos um evento"
+
+#: modules/calendar/calendar.php:805
+msgid "Please, wait! Loading the form fields..."
+msgstr "Por favor, aguarde! Carregando os campos do formulário..."
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "Popular Editorial Metadata"
+msgstr "Metados editoriais populares"
+
+#: modules/notifications/notifications.php:375
+msgid "Popular Notify Emails"
+msgstr "Notificar Emails populares"
+
+#: modules/notifications/notifications.php:340
+msgid "Popular Notify Roles"
+msgstr "Notificar Papéis populares"
+
+#: modules/notifications/notifications.php:305
+msgid "Popular Notify Users"
+msgstr "Popular Notificar Usuários"
+
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2776
+msgid "Position"
+msgstr "Posição"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3802
+msgid "Post could not be created"
+msgstr "Post não pôde ser criado"
+
+#: modules/calendar/calendar.php:3795
+msgid "Post created successfully"
+msgstr "Post criado com sucesso"
+
+#: modules/content-overview/content-overview.php:630
+msgid "Post Date"
+msgstr "Data da publicação"
+
+#: modules/calendar/calendar.php:187
+msgid "Post date updated."
+msgstr "Data do post atualizada."
+
+#: publishpress.php:665
+msgid "Post does not exist"
+msgstr "Post não existe"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr "Post ID: %d"
+
+#: modules/custom-status/custom-status.php:198
+msgid "Post idea assigned to writer."
+msgstr "Ideia de publicação atribuída a um escritor."
+
+#: modules/calendar/calendar.php:3153
+msgid "Post not found"
+msgstr "Artigo não encontrado"
+
+#: modules/calendar/calendar.php:2791 modules/calendar/calendar.php:3438
+#: modules/calendar/calendar.php:3518
+msgid "Post Status"
+msgstr "Status do post"
+
+#: modules/custom-status/custom-status.php:101
+msgid "Post status created."
+msgstr "Status de post criado."
+
+#: modules/custom-status/custom-status.php:106
+msgid "Post status deleted."
+msgstr "Status do post excluído."
+
+#: modules/custom-status/custom-status.php:103
+msgid "Post status doesn't exist."
+msgstr "Status de post não existe."
+
+#: modules/custom-status/custom-status.php:102
+#: modules/custom-status/custom-status.php:105
+msgid "Post status updated."
+msgstr "Status do post atualizado."
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr "Widget de status de post"
+
+#: modules/calendar/calendar.php:1957 modules/calendar/calendar.php:3422
+#: modules/content-overview/content-overview.php:628
+msgid "Post Type"
+msgstr "Tipo de post"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "Tipo de post"
+
+#: modules/calendar/calendar.php:803
+msgid "Post type not found"
+msgstr "Tipo de post não encontrado"
+
+#: modules/calendar/calendar.php:804
+msgid "Post type:"
+msgstr "Tipo de post:"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr "Tipo de post: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "Tipos de post"
+
+#: modules/calendar/calendar.php:2520
+msgid "Post types to show"
+msgstr "Tipos de publicação para exibir"
+
+#: modules/content-overview/content-overview.php:298
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr "Posts a um relance"
+
+#: modules/calendar/calendar.php:2544
+msgid "Posts publish time format"
+msgstr "Formato de hora de publicação de Posts"
+
+#: modules/calendar/calendar.php:1828 modules/calendar/calendar.php:3482
+#: modules/content-overview/content-overview.php:1921
+msgid "Preview"
+msgstr "Pré-visualizar"
+
+#: modules/calendar/calendar.php:1825
+#: modules/content-overview/content-overview.php:1918
+msgid "Preview “%s”"
+msgstr "Pré-visualizar “ %s”"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "Status anterior"
+
+#: modules/content-overview/content-overview.php:1170
+msgid "Print"
+msgstr "Imprimir"
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr "Privado"
+
+#: modules/custom-status/custom-status.php:938
+msgid "Privately Published"
+msgstr "Publicado privadamente"
+
+#: modules/calendar/calendar.php:3524
+msgid "Publish Time"
+msgstr "Tempo de publicação"
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:957
+#: modules/calendar/calendar.php:1970
+msgid "Published"
+msgstr "Publicado"
+
+#: modules/calendar/calendar.php:2790
+msgid "Publishing Time"
+msgstr "Hora de publicação"
+
+#. Author of the plugin
+#: modules/settings/settings.php:60 modules/calendar/calendar.php:1332
+msgid "PublishPress"
+msgstr "PublishPress"
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr "Histórico de depuração do PublishPress"
+
+#. Name of the plugin
+#: modules/settings/settings.php:267
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+#, fuzzy
+#| msgid ""
+#| "PublishPress helps you plan and publish content with WordPress. Features "
+#| "include a content calendar, notifications, and custom statuses."
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+"PublishPress é o plugin essencial para qualquer site WordPress com multiplos "
+"escritores."
+
+#: publishpress.php:1283
+#, fuzzy
+#| msgid ""
+#| "PublishPress tried to load multiple times. Please, deactivate and remove "
+#| "other instances of PublishPress, specially if you are using PublishPress "
+#| "Pro."
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+"PublishPress tentou ser carregado múltiplas vezes. Por favor, desative ou "
+"remova outras instâncias do plugin PublishPress, especialmente se você está "
+"utilizando PublishPress Pro."
+
+#: modules/settings/settings.php:140
+msgid "PublishPress Settings"
+msgstr "Configurações do PublishPress"
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "Receiver"
+msgstr "Destinatário"
+
+#: modules/calendar/calendar.php:2645
+msgid "Regenerate calendar feed secret"
+msgstr "Regenerar o feed secreto do calendário"
+
+#: modules/editorial-metadata/editorial-metadata.php:1692
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/editorial-comments.php:687
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:591
+msgid "Reply"
+msgstr "Responder"
+
+#: modules/editorial-comments/editorial-comments.php:588
+msgid "Reply to this comment"
+msgstr "Responder a este comentário"
+
+#: modules/notifications/notifications.php:2138
+msgid "Reply: %s"
+msgstr "Resposta: %s"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr "Reprogramar"
+
+#: modules/calendar/calendar.php:2076
+#: modules/content-overview/content-overview.php:1025
+#: modules/content-overview/content-overview.php:1146
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: modules/custom-status/custom-status.php:1240
+msgid "Restricted status "
+msgstr "Status restrito "
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr "Revisões"
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr "Função"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr "papel:%s"
+
+#: common/php/class-module.php:680
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "Funções"
+
+#: modules/calendar/calendar.php:812
+msgid "Sat"
+msgstr "Sáb"
+
+#: modules/calendar/calendar.php:799 modules/calendar/calendar.php:1854
+msgid "Save"
+msgstr "Salvar"
+
+#: modules/calendar/calendar.php:1848
+msgid "Save “%s”"
+msgstr "Salvar “%s”"
+
+#: modules/calendar/calendar.php:801
+msgid "Save and edit"
+msgstr "Salvar e editar"
+
+#: modules/calendar/calendar.php:800
+msgid "Saving..."
+msgstr "Salvando..."
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:919
+#: modules/calendar/calendar.php:1965
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr "Programado"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr "Agendado para %d receptores. Clique aqui para exibi-los."
+
+#: modules/content-overview/content-overview.php:271
+msgid "Screen Layout"
+msgstr "Layout da tela"
+
+#: modules/content-overview/content-overview.php:1049
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+#: modules/content-overview/content-overview.php:1323
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:281
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Search Editorial Metadata"
+msgstr "Buscar metadados editoriais"
+
+#: publishpress.php:1240
+msgid "Search Notifications"
+msgstr "Pesquisar Notificação"
+
+#: modules/notifications/notifications.php:374
+msgid "Search Notify Emails"
+msgstr "Pesquisar Notificar Emails"
+
+#: modules/notifications/notifications.php:339
+msgid "Search Notify Roles"
+msgstr "Pesquisar Notificar Papéis"
+
+#: modules/notifications/notifications.php:304
+msgid "Search Notify Users"
+msgstr "Pesquisar Notificar Usuários"
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:269
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:925
+msgid "Select at least one option for each section."
+msgstr "Selecione pelo menos uma opção para cada seção."
+
+#: modules/custom-status/custom-status.php:2061
+#: modules/custom-status/custom-status.php:2190
+msgid "Select Icon"
+msgstr "Selecionar ícone"
+
+#: modules/editorial-metadata/editorial-metadata.php:1948
+#: modules/editorial-metadata/editorial-metadata.php:2310
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1966
+#: modules/editorial-metadata/editorial-metadata.php:2329
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr "Enviado"
+
+#: modules/calendar/calendar.php:821
+msgid "Sep"
+msgstr "Set"
+
+#: modules/notifications/notifications.php:384
+msgid "Separate notify emails with commas"
+msgstr "Separe Notificar Emails com vírgulas"
+
+#: modules/notifications/notifications.php:349
+msgid "Separate notify roles with commas"
+msgstr "Separar Notificar Papéis com vírugla"
+
+#: modules/notifications/notifications.php:314
+msgid "Separate notify users with commas"
+msgstr "Separe usuários a notificar com vírgula"
+
+#: modules/settings/settings.php:141
+msgid "Settings"
+msgstr "Configurações"
+
+#: modules/settings/settings.php:123
+msgid "settings"
+msgstr "configurações"
+
+#: modules/calendar/calendar.php:1391
+msgid "Seven months"
+msgstr "Sete meses"
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "shortcode"
+msgstr "shortcode"
+
+#: modules/editorial-metadata/editorial-metadata.php:2107
+#: modules/editorial-metadata/editorial-metadata.php:2470
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:983
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2131
+#: modules/editorial-metadata/editorial-metadata.php:2496
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2179
+#: modules/editorial-metadata/editorial-metadata.php:2545
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1633
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+"Mostrar os links \"Me avise\" e \"Pare de me avisar\" para esses tipos de "
+"post:"
+
+#: modules/custom-status/custom-status.php:1863
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr "Mostrar o menu dropdown na tela de edição de posts:"
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Single Select"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "Administrador do site"
+
+#: modules/calendar/calendar.php:1389
+msgid "Six months"
+msgstr "Seis meses"
+
+#: modules/calendar/calendar.php:1355
+msgid "Six months ago"
+msgstr "Seis meses atrás"
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr "Tamanho"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr "Pular usuário atual"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr "Pular notificação para o usuário que disparou a ação"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr "Ignorado"
+
+#: modules/editorial-metadata/editorial-metadata.php:1899
+#: modules/editorial-metadata/editorial-metadata.php:2242
+#: modules/custom-status/custom-status.php:1986
+msgid "Slug"
+msgstr "Slug"
+
+#: modules/editorial-metadata/editorial-metadata.php:1300
+msgid "Slug already in use. Please choose another."
+msgstr "Este slug já está em uso. Por favor, escolha outro."
+
+#: modules/notifications/notifications.php:1779
+msgid "slug1,slug2"
+msgstr "slug1,slug2"
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "Desculpe! Você não assinou nenhum post!"
+
+#: modules/editorial-comments/editorial-comments.php:1048
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+"Desculpe, você não pode excluir este comentário editorial porque ele tem "
+"algumas respostas."
+
+#: modules/custom-status/custom-status.php:1754
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+"Desculpe, mas você não tem permissão para editar os status personalizados."
+
+#: modules/editorial-comments/editorial-comments.php:736
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Desculpe, você não tem privilégios para adicionar comentários editoriais. "
+"Por favor, fale com seu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:1027
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+"Desculpe, você não tem privilégios para excluir este comentário editorial. "
+"Por favor, fale com seu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:879
+#: modules/editorial-comments/editorial-comments.php:1011
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Desculpe, você não tem privilégios para editarW comentários editoriais. Por "
+"favor, fale com seu administrador."
+
+#: modules/editorial-comments/editorial-comments.php:897
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+"Desculpe, você não tem privilégios para editar este comentário editorial. "
+"Por favor, fale com seu administrador."
+
+#: modules/calendar/calendar.php:1339
+msgid "Start date"
+msgstr "Data de início"
+
+#: modules/custom-status/custom-status.php:1450
+#: modules/content-overview/content-overview.php:627
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr "Status"
+
+#: modules/custom-status/custom-status.php:1761
+msgid "Status does not exist."
+msgstr "Status não existe."
+
+#: modules/custom-status/custom-status.php:1554
+#: modules/custom-status/custom-status.php:1664
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+"O status não pode ter mais de 20 caracteres. Por favor, tente um nome mais "
+"curto."
+
+#: modules/custom-status/custom-status.php:1687
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+"Nome do status está em conflito com um status já existente. Por favor, "
+"escolha outro."
+
+#: modules/custom-status/custom-status.php:1562
+#: modules/custom-status/custom-status.php:1678
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+"Nome do status está em conflito com um termo já existente. Por favor, "
+"escolha outro."
+
+#: modules/custom-status/custom-status.php:1569
+#: modules/custom-status/custom-status.php:1694
+msgid "Status name is restricted. Please choose another name."
+msgstr "Nome do status é restrito. Por favor, escolha outro nome."
+
+#: modules/custom-status/custom-status.php:107
+msgid "Status order updated."
+msgstr "Status do post atualizado."
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2032
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "O status foi alterado para %1$s #%2$s \"%3$s\" por %4$s %5$s"
+
+#: modules/custom-status/custom-status.php:83
+#: modules/custom-status/custom-status.php:304
+msgid "Statuses"
+msgstr "Status personalizados"
+
+#: modules/calendar/calendar.php:2536
+msgid "Statuses to display publish time"
+msgstr "Status para exibir tempo de publicação"
+
+#: modules/notifications/notifications.php:570
+#: modules/notifications/notifications.php:936
+msgid "Stop notifying me"
+msgstr "Pare de me avisar"
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr "Assunto"
+
+#: modules/notifications-log/notifications-log.php:813
+msgid "Subject:"
+msgstr "Assunto:"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1334
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "Assinar no iCal ou Google Calendar"
+
+#: modules/calendar/calendar.php:2528
+msgid "Subscription in iCal or Google Calendar"
+msgstr "Assinar no iCal ou Google Calendar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr "Sucesso"
+
+#: modules/calendar/calendar.php:806
+msgid "Sun"
+msgstr "Dom"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr "síncrono"
+
+#: modules/calendar/calendar.php:3453
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Etiqueta"
+msgstr[1] "Etiquetas"
+
+#: modules/calendar/calendar.php:3552
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: modules/content-overview/content-overview.php:306
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr "Taxonomia"
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr "Metadados"
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr "Metadado"
+
+#: modules/calendar/calendar.php:1397
+msgid "Ten months"
+msgstr "Dez meses"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "Termos"
+
+#: modules/editorial-metadata/editorial-metadata.php:1604
+#: modules/custom-status/custom-status.php:1821
+msgid "Terms not set."
+msgstr "Termos não definidos."
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Text"
+msgstr "Texto"
+
+#: modules/editorial-metadata/editorial-metadata.php:2251
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+"O \"slug\" é uma versão amigável da URL para o nome. É geralmente em caixa "
+"baixa e contém somente letras, números e hífens."
+
+#: modules/custom-status/custom-status.php:2041
+#: modules/custom-status/custom-status.php:2170
+msgid "The color is used to identify the status."
+msgstr "A cor é usada para identificar o status."
+
+#: modules/editorial-metadata/editorial-metadata.php:1920
+#: modules/editorial-metadata/editorial-metadata.php:2268
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+"A descrição pode ser usada para comunicação com sua equipe sobre o assunto "
+"do metadado."
+
+#: modules/custom-status/custom-status.php:2020
+#: modules/custom-status/custom-status.php:2153
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+"A descrição é primariamente para uso administrativo, para lhe dar algum "
+"contexto em o que os status customizados estão sendo usados."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr "Integração com The Events Calendar"
+
+#: modules/custom-status/custom-status.php:2067
+#: modules/custom-status/custom-status.php:2196
+msgid "The icon is used to visually represent the status."
+msgstr "O ícone é usado para representar visualmente o status."
+
+#: modules/editorial-metadata/editorial-metadata.php:1934
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+"O tipo de metadado não pode ser alterado uma vez que tenha sido criado."
+
+#: modules/editorial-metadata/editorial-metadata.php:1894
+#: modules/editorial-metadata/editorial-metadata.php:2237
+msgid "The name is for labeling the metadata field."
+msgstr "O nome serve para marcar o campo de metadado."
+
+#: modules/custom-status/custom-status.php:1977
+#: modules/custom-status/custom-status.php:2133
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr "O nome é utilizado para identificar o status. (Max.: 20 caracteres)"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+"A notificação foi definida como \"Agendada\", mas a tarefa agendada não foi "
+"encontrada"
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+"O módulo de notificações precisará ser ativado para que esta widget seja "
+"exibida."
+
+#: modules/calendar/calendar.php:2612
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+"O número de semanas mostradas no calendário pode mudar para cada usuário "
+"usando as opções de visualização do calendário."
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "O log pai foi excluído ou provavelmente reagendado"
+
+#: modules/calendar/calendar.php:3672
+msgid "The selected post type is not enabled for the calendar."
+msgstr "O tipo de post não está configurado para o calendário."
+
+#: modules/calendar/calendar.php:4151
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+"O usuário selecionado não tem permissões suficientes para ser definido como "
+"autor do post."
+
+#: modules/editorial-metadata/editorial-metadata.php:1904
+msgid "The slug cannot be changed once the term has been created."
+msgstr "O slug não pode ser alterado uma vez que o termo tenha sido criado."
+
+#: modules/custom-status/custom-status.php:1998
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+"O slug é um identificador único para o status e é alterado quando nome é "
+"alterado."
+
+#: modules/content-overview/content-overview.php:1540
+msgid "There are no posts in the range or filter specified."
+msgstr "Não há postagens no intervalo ou filtro especificados."
+
+#: modules/settings/settings.php:290
+msgid "There are no PublishPress modules registered"
+msgstr "Não há módulos do PublishPress registrados"
+
+#: modules/editorial-comments/editorial-comments.php:833
+#: modules/editorial-comments/editorial-comments.php:963
+#: modules/editorial-comments/editorial-comments.php:1073
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr "Ocorreu algum problema. Tente novamente ou contate seu administrador."
+
+#: modules/calendar/calendar.php:188
+msgid "There was an error updating the post. Please try again."
+msgstr "Ocorreu um erro ao atualizar o post. Por favor, tente novamente."
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2043
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "Esta ação foi tomada em %1$s às %2$s %3$s"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr "Este tipo de metadado editorial ainda não é suportado."
+
+#: modules/notifications/notifications.php:1056
+msgid "This email was sent %s."
+msgstr "Este email foi enviado %s."
+
+#: modules/notifications-log/notifications-log.php:831
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+"Esta é uma prévia da mensagem agendada. O conteúdo ainda pode ser modificado "
+"até que a notificação seja enviada."
+
+#: modules/editorial-metadata/editorial-metadata.php:2160
+#: modules/editorial-metadata/editorial-metadata.php:2526
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2184
+#: modules/editorial-metadata/editorial-metadata.php:2549
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:438
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+"Esta notificação é muito semelhante a outra enviada há menos de %d minutos "
+"para o mesmo destinatário"
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr "Este post foi atualizado pela última vez sobre "
+
+#: modules/improved-notifications/improved-notifications.php:355
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:662
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+"Isso não terá efeito a menos que você tenha pelo menos um fluxo de trabalho "
+"para a caixa \"Me avise\"."
+
+#: modules/calendar/calendar.php:1383
+msgid "Three months"
+msgstr "Três meses"
+
+#: modules/calendar/calendar.php:1349
+msgid "Three months ago"
+msgstr "Três meses atrás"
+
+#: modules/calendar/calendar.php:1370
+msgid "Three weeks"
+msgstr "Três semanas"
+
+#: modules/calendar/calendar.php:810
+msgid "Thu"
+msgstr "Qui"
+
+#: modules/calendar/calendar.php:3513
+#: modules/content-overview/content-overview.php:626
+#: lib/Notifications/Table/Workflows.php:142
+#: lib/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr "Título"
+
+#: modules/notifications/notifications.php:2065
+msgid "Title: %s"
+msgstr "Título: %s"
+
+#: modules/content-overview/content-overview.php:1389
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr "Até a data"
+
+#: modules/calendar/calendar.php:832 modules/calendar/calendar.php:2124
+msgid "Today"
+msgstr "Hoje"
+
+#: modules/calendar/calendar.php:2118
+msgid "Today is %s"
+msgstr "Hoje é %s"
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1814
+#: modules/calendar/calendar.php:3472
+#: modules/content-overview/content-overview.php:1892
+msgid "Trash"
+msgstr "Lixo"
+
+#: modules/calendar/calendar.php:808
+msgid "Tue"
+msgstr "Ter"
+
+#: modules/calendar/calendar.php:1401
+msgid "Twelve months"
+msgstr "Doze meses"
+
+#: modules/calendar/calendar.php:1381
+msgid "Two months"
+msgstr "Dois meses"
+
+#: modules/calendar/calendar.php:1347
+msgid "Two months ago"
+msgstr "Dois meses atrás"
+
+#: modules/calendar/calendar.php:1368
+msgid "Two weeks"
+msgstr "Duas semanas"
+
+#: modules/editorial-metadata/editorial-metadata.php:1929
+#: modules/editorial-metadata/editorial-metadata.php:2276
+msgid "Type"
+msgstr "Tipo"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr "Um erro não definido foi encontrado"
+
+#: modules/calendar/calendar.php:1457
+#: modules/content-overview/content-overview.php:1076
+msgid "Undo"
+msgstr "Desfazer"
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr "Conteúdo não publicado"
+
+#: modules/calendar/calendar.php:797 modules/calendar/calendar.php:3678
+msgid "Untitled"
+msgstr "Sem título"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Update Editorial Metadata"
+msgstr "Atualizar metadados editoriais"
+
+#: modules/editorial-metadata/editorial-metadata.php:2207
+msgid "Update Metadata Term"
+msgstr "Atualizar termo do metadado"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "Atualizar nota"
+
+#: modules/notifications/notifications.php:381
+msgid "Update Notify Email"
+msgstr "Atualizar Notificar Email"
+
+#: modules/notifications/notifications.php:346
+msgid "Update Notify Role"
+msgstr "Atualizar Notificar Papel"
+
+#: modules/notifications/notifications.php:311
+msgid "Update Notify User"
+msgstr "Atualizar Notificar Usuário"
+
+#: modules/custom-status/custom-status.php:2074
+msgid "Update Status"
+msgstr "Atualizar status"
+
+#: modules/calendar/calendar.php:192
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+"Atualizar a data a publicação do post dinamicamente não funciona para "
+"conteúdo publicado. Por favor edite o post ."
+
+#: includes.php:159
+msgid "Upgrade to Pro"
+msgstr "Atualize para a versão Pro"
+
+#: modules/custom-status/custom-status.php:1856
+msgid "Use on these post types:"
+msgstr "Utilizar neste tipo de posts:"
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "User"
+msgstr "Usuário"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "usuário"
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "User making changes or comments"
+msgstr "Usuário fazendo alterações ou comentários"
+
+#: modules/editorial-metadata/editorial-metadata.php:1940
+#: modules/editorial-metadata/editorial-metadata.php:2302
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1137
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr "Usuário: %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "Usuários"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr "Usuários que selecionaram \"Me avise\" para o conteúdo"
+
+#: modules/calendar/calendar.php:1838 modules/calendar/calendar.php:3479
+#: modules/content-overview/content-overview.php:1908
+msgid "View"
+msgstr "Ver"
+
+#: modules/calendar/calendar.php:1832
+#: modules/content-overview/content-overview.php:1902
+msgid "View “%s”"
+msgstr "Ver “%s”"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+msgid "View “%s” on Google Maps"
+msgstr "Ver “%s” no Google Maps"
+
+#: modules/calendar/calendar.php:3937
+msgid "View all categories"
+msgstr "Ver todas as categorias"
+
+#: modules/notifications/notifications.php:380
+msgid "View Notify Email"
+msgstr "Novo Notificar Email"
+
+#: modules/notifications/notifications.php:345
+msgid "View Notify Role"
+msgstr "Visualizar Notificar Papel"
+
+#: modules/notifications/notifications.php:310
+msgid "View Notify User"
+msgstr "Visualizar Notificar Usuário"
+
+#: modules/notifications/notifications.php:2089
+#: modules/notifications/notifications.php:2146
+msgid "View: %s"
+msgstr "Ver: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:2083
+#: modules/editorial-metadata/editorial-metadata.php:2443
+#: modules/editorial-metadata/editorial-metadata.php:2690
+msgid "Viewable"
+msgstr "Visível"
+
+#: publishpress.php:1291
+msgid "Warning"
+msgstr "Aviso"
+
+#: modules/calendar/calendar.php:809
+msgid "Wed"
+msgstr "Qua"
+
+#: modules/editorial-metadata/editorial-metadata.php:219
+msgid "What the post needs to cover."
+msgstr "O que o post precisa cobrir."
+
+#: modules/improved-notifications/improved-notifications.php:807
+msgid "What to say?"
+msgstr "O que dizer?"
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "Quando um comentário editorial é adicionado"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "Quando o conteúdo é movido para um novo status"
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr "Quando o conteúdo é atualizado"
+
+#: modules/editorial-metadata/editorial-metadata.php:211
+msgid "When the first draft needs to be ready."
+msgstr "Quando o primeiro rascunho precisa estar pronto."
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "Status padrão do post alterado"
+
+#: lib/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:777
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr "Quando notificar?"
+
+#: lib/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:797
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr "A quem notificar?"
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr "Opções de widget"
+
+#: modules/notifications/notifications.php:1918
+msgid "WordPress Scheduler"
+msgstr "WordPress Scheduler"
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Workflow"
+msgstr "Fluxo de trabalho"
+
+#: modules/improved-notifications/improved-notifications.php:739
+msgid "Workflow Settings"
+msgstr "Configurações de workflow"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr "Workflow: %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+msgid "Workflows"
+msgstr "Fluxos de Trabalho"
+
+#: modules/custom-status/custom-status.php:208
+msgid "Writer is working on the post."
+msgstr "O escritor está trabalhando no post."
+
+#: modules/editorial-metadata/editorial-metadata.php:2088
+#: modules/editorial-metadata/editorial-metadata.php:2112
+#: modules/editorial-metadata/editorial-metadata.php:2136
+#: modules/editorial-metadata/editorial-metadata.php:2447
+#: modules/editorial-metadata/editorial-metadata.php:2474
+#: modules/editorial-metadata/editorial-metadata.php:2500
+#: modules/editorial-metadata/editorial-metadata.php:2750
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr "Sim"
+
+#: modules/notifications/notifications.php:1051
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr "Você está recebendo este email porque está inscrito em “%s”."
+
+#: modules/improved-notifications/improved-notifications.php:929
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+"Você pode adicionar informações dinâmicas no Assunto ou Corpo de Texto "
+"usando os seguintes shortcodes:"
+
+#: modules/editorial-comments/editorial-comments.php:500
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+"Você pode adicionar comentários editoriais ao post uma vez que você o salvou "
+"pela primeira vez."
+
+#: modules/notifications/notifications.php:2149
+msgid "You can see all editorial comments on this %s here: "
+msgstr "Você pode ver todos os comentário editoriais neste %s aqui: "
+
+#: publishpress.php:661
+msgid "You do not have necessary permissions to complete this action."
+msgstr "Você não tem as permissões necessárias para completar esta ação."
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "Você não tem nenhuma notificação"
+
+#: includes.php:127
+#, fuzzy
+#| msgid ""
+#| "You're using PublishPress Free. The Pro version has more features and "
+#| "support. %sUpgrade to Pro%s"
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
+"Você está utilizando a versão gratuita do PublishPress. A versão Pro tem "
+"mais funcionalidades e suporte. %sAtualize para o Pro%s"
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.mo b/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.mo
index cf6641a25..7563d3a02 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.po b/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.po
index e97fd84fa..d5f7c8012 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-pt_PT.po
@@ -1,3009 +1,3090 @@
-# Copyright (C) 2013
-# This file is distributed under the same license as the package.
-msgid ""
-msgstr ""
-"Project-Id-Version: PublishPress\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:04-0300\n"
-"Last-Translator: Angelo \n"
-"Language-Team: Douglas Araujo de Moura \n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.7\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: common/php/class-module.php:92
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-#| msgid "Filter"
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-#| msgid "M d Y H:i"
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-#| msgid "Notifications"
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-#| msgid "Notifications"
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-#| msgid "Notifications"
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-#| msgid "Notifications"
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-#| msgid "Notifications"
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-#| msgid "Notifications"
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-#| msgid "Post moved to the trash."
-#| msgid_plural "%d posts moved to the trash."
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-#| msgid "Post restored from the Trash."
-#| msgid_plural "%d posts restored from the Trash."
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-#| msgid "Please select a valid metadata type."
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-#| msgid "View"
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-#| msgid "== Actions =="
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-#| msgid "First Draft Date"
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-#| msgid "Preview"
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-#| msgid "%1$s at %2$s"
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-#| msgid "Show %d more"
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-#| msgid "No user groups found."
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-#| msgid "Filter"
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-#| msgid "%1$s at %2$s"
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-#| msgid "Editorial Comments"
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-#| msgid "No user groups found."
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-#| msgid "Content Overview"
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-#| msgid "Add editorial comment: %s"
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-#| msgid "Default post status has been changed."
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-#| msgid "Add New Status"
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-#| msgid "View all categories"
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-#| msgid "Post Type"
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-#| msgid "Post Type"
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-#| msgid "Author"
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-#| msgid "User"
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-#| msgid "Disable"
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-#| msgid "Notifications"
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-#| msgid "%s week"
-#| msgid_plural "%s weeks"
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-#| msgid "%s week"
-#| msgid_plural "%s weeks"
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-#| msgid "Forward %d weeks"
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-#| msgid "Subscribe in iCal or Google Calendar"
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-#| msgid "View all statuses"
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-#| msgid "View all categories"
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-#| msgid "View all users"
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-#| msgid "View all types"
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-#| msgid "Published"
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-#| msgid "Item moved to the trash."
-#| msgid_plural "%s items moved to the trash."
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-#| msgid "Item restored from the Trash."
-#| msgid_plural "%s items restored from the Trash."
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-#| msgid "The name is used to identify the user group."
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-#| msgid "The name is used to identify the user group."
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-#| msgid "Add editorial comment: %s"
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-#| msgid "Editorial Comments"
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-#| msgid ""
-#| "Keep track of important details about your content with editorial "
-#| "metadata. This feature allows you to create as many date, text, number, "
-#| "etc. fields as you like, and then use them to store information like "
-#| "contact details, required word count, or the location of an interview."
-#| "p>
Once you’ve set your fields up, editorial metadata integrates with "
-#| "both the calendar and the content overview. Make an editorial metadata "
-#| "item visible to have it appear to the rest of your team. Keep it hidden "
-#| "to restrict the information between the writer and their editor.
"
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-#| msgid "Notifications"
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-#| msgid "Add editorial comment: %s"
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-#| msgid "Settings updated."
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-#| msgid "Editorial Comments"
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-#| msgid "Disable"
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-#| msgid "Notifications"
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-#| msgid "Change"
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-#| msgid "Notifications"
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-#| msgid ""
-#| "Notifications ensure you keep up to date with progress your most "
-#| "important content. Users can be subscribed to notifications on a post one "
-#| "by one or by selecting user groups.
When enabled, notifications can "
-#| "be sent when a post changes status or an editorial comment is left by a "
-#| "writer or an editor.
"
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-#| msgid "Click to unfollow updates to this post"
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-#| msgid "Click to unfollow updates to this post"
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-#| msgid ""
-#| "Select the users and user groups that should receive notifications when "
-#| "the status of this post is updated or when an editorial comment is added."
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-#| msgid "Use on these post types:"
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-#| msgid "Author: %1$s (%2$s)"
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No user groups found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-#| msgid "Users in Group"
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-#| msgid "User group created. Feel free to add users to the usergroup."
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-#| msgid "Post date updated."
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-#| msgid "Post does not exist"
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-#| msgid "User group deleted."
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit %s"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-#| msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the user group."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-#| msgid ""
-#| "User group name cannot exceed 40 characters. Please try a shorter name."
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-#| msgid "Error adding term."
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-#| msgid "Error adding term."
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-#| msgid "Could not delete the status: "
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-#| msgid "PublishPress"
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-#| msgid "Settings updated."
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-#| msgid "Notifications"
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-#| msgid "Notifications"
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#, fuzzy
-#~| msgid "Notifications"
-#~ msgid "Notification"
-#~ msgstr "Notificações"
-
-#, fuzzy
-#~| msgid "User Groups"
-#~ msgid "%d Group"
-#~ msgid_plural "%d Groups"
-#~ msgstr[0] "Grupos de Usuários"
-#~ msgstr[1] "Grupos de Usuários"
-
-#~ msgid "The calendar lets you see your posts over a customizable date range."
-#~ msgstr ""
-#~ "O calendário permite visualizar quando todo seu conteúdo será publicado."
-
-#, fuzzy
-#~| msgid ""
-#~| "PublishPress’s calendar lets you see your posts over a customizable date "
-#~| "range. Filter by status or click on the post title to see its details. "
-#~| "Drag and drop posts between days to change their publication date date."
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date."
-#~ msgstr ""
-#~ "O calendário PublishPress permite ver suas mensagens durante um período "
-#~ "de datas personalizável. Filtre por estado ou clique no título do post "
-#~ "para ver seus detalhes. Arraste e solte posts entre os dias para alterar "
-#~ "sua data de publicação."
-
-#~ msgid ""
-#~ "Click here for a single screen that shows the publication status of all "
-#~ "your content."
-#~ msgstr "Ver os status de todo seu conteúdo de uma vez ."
-
-#~ msgid ""
-#~ "Use the content overview to see how content on your site is progressing. "
-#~ "Filter by specific categories or date ranges to see details about each "
-#~ "post in progress."
-#~ msgstr ""
-#~ "Use o histórico de orçamento para ver como o conteúdo do seu site está "
-#~ "progredindo. Filtre por categorias específicas ou intervalos de data para "
-#~ "ver os detalhes do progresso de cada post."
-
-#~ msgid ""
-#~ "Create custom post statuses to define the stages of your publishing "
-#~ "workflow."
-#~ msgstr ""
-#~ "Criar status de posts personalizados para definir os estágios do seu "
-#~ "fluxo de trabalho."
-
-#~ msgid ""
-#~ "Create your own post statuses to add structure your publishing workflow. "
-#~ "You can change existing or add new ones anytime, and drag and drop to "
-#~ "change their order."
-#~ msgstr ""
-#~ "Crie seus própios status de publicação para agregar a estrutura ao seu "
-#~ "fluxo de trabalho editorial. Você pode modificar os existentes ou "
-#~ "adicionar novos a qualquer momento, e arrastar e soltar para alterar a "
-#~ "ordem."
-
-#~ msgid "Track your content from the WordPress dashboard."
-#~ msgstr "Seguir seu conteúdo desde o painel do WordPress."
-
-#~ msgid ""
-#~ "Enable dashboard widgets to quickly get an overview of what state your "
-#~ "content is in."
-#~ msgstr ""
-#~ "Habilitar widgets do painel para ter uma rápida visão geral do estado do "
-#~ "seu conteúdo."
-
-#~ msgid "Edit Custom Statuses"
-#~ msgstr "Editar status personalizados"
-
-#~ msgid "Share internal notes with your team."
-#~ msgstr "Compartilhar notas internas com sua equipe."
-
-#~ msgid ""
-#~ "Use editorial comments to hold a private discussion about a post. "
-#~ "Communicate directly with your writers or editors about what works and "
-#~ "what needs to be improved for each piece."
-#~ msgstr ""
-#~ "Utilizar comentários editoriais para manter uma discussão sobre o post. "
-#~ "Comunique-se diretamente com seus escritores ou editores sobre o que "
-#~ "funciona e o que precisa ser melhorado para cada peça."
-
-#~ msgid ""
-#~ "With Metadata you can customize the extra data that’s tracked for your "
-#~ "content."
-#~ msgstr ""
-#~ "Com Metadados você pode rastrear detalhes sobre seus posts em progresso."
-
-#~ msgid ""
-#~ "Log details on every assignment using configurable editorial metadata. "
-#~ "It’s completely customizable; create fields for everything from due date "
-#~ "to location to contact information to role assignments."
-#~ msgstr ""
-#~ "Registre detalhes para cada atribuição usando metadados editoriais "
-#~ "configuráveis. É completamente customizável; crie campos deste data de "
-#~ "vencimento a local para conseguir informações para atribuições de função."
-
-#~ msgid "Name conflicts with slug for another term. Please choose again."
-#~ msgstr "Nome conflita com o slug de outro termo. Por favor, escolha outro."
-
-#~ msgid "Could not update the term: %s "
-#~ msgstr "Não foi possível atualizar o termo: %s "
-
-#~ msgid "Quick Edit"
-#~ msgstr "Quick Edit"
-
-#~ msgid "Quick Edit"
-#~ msgstr "Edição Rápida"
-
-#, fuzzy
-#~| msgid "Pro Add-ons for PublishPress"
-#~ msgid "Improved notifications for PublishPress"
-#~ msgstr "Pro Add-ons para PublishPress"
-
-#, fuzzy
-#~| msgid "Pro Add-ons for PublishPress"
-#~ msgid "Improved Notifications for PublishPress"
-#~ msgstr "Pro Add-ons para PublishPress"
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with your content."
-#~ msgstr "Atualize sua equipe sobre alterações importantes no seu conteúdo."
-
-#~ msgid ""
-#~ "With notifications, you can keep everyone updated about what’s happening "
-#~ "with a given content. Each status change or editorial comment sends out a "
-#~ "message to users subscribed to a post. User groups can be used to manage "
-#~ "who receives notifications on what."
-#~ msgstr ""
-#~ "Com as notificações, você pode manter todos atualizados sobre o que está "
-#~ "acontecendo com determinado conteúdo. Cada alteração de status ou "
-#~ "comentário editorial dispara uma notificação para os usuários que "
-#~ "assinaram o post. Grupos de usuários podem ser usados para gerenciar quem "
-#~ "recebe as notificações e sobre o quê."
-
-#~ msgid "Following"
-#~ msgstr "Seguindo"
-
-#~ msgid "Follow updates to this post"
-#~ msgstr "Seguir as atualizações deste post"
-
-#~ msgid "Follow"
-#~ msgstr "Seguir"
-
-#~ msgid ""
-#~ "Nonce check failed. Please ensure you can add users or user groups to a "
-#~ "post."
-#~ msgstr ""
-#~ "Verificação Nonce fracassou. Por favor, certifique-se que você pode "
-#~ "adicionar usuários ou grupos de usuários ao post."
-
-#~ msgid ""
-#~ "Organize your users into groups who can take different roles in your "
-#~ "publishing workflow."
-#~ msgstr ""
-#~ "Organize seus usuários em grupos para mimetizar sua estrutura "
-#~ "organizacional."
-
-#~ msgid ""
-#~ "Configure user groups to organize all of the users on your site. Each "
-#~ "user can be in many user groups and you can change them at any time."
-#~ msgstr ""
-#~ "Configure grupos de usuários para organizar todos os usuários do seu "
-#~ "site. Cada usuário pode estar em vários grupos de usuários, que podem ser "
-#~ "alterados a qualquer momento."
-
-#~ msgid "Are you sure you want to delete the user group?"
-#~ msgstr "Tem certeza que deseja excluir este grupo?"
-
-#~ msgid "Error adding usergroup."
-#~ msgstr "Erro ao adicionar o grupo de usuários."
-
-#~ msgid "Error updating user group."
-#~ msgstr "Erro ao atualizar o grupo de usuários."
-
-#~ msgid "Error deleting user group."
-#~ msgstr "Erro ao excluir o grupo de usuários."
-
-#~ msgid "The name is used to identify the user group."
-#~ msgstr "O nome é utilizado para identificar o grupo de usuários."
-
-#~ msgid ""
-#~ "The description is primarily for administrative use, to give you some "
-#~ "context on what the user group is to be used for."
-#~ msgstr ""
-#~ "A descrição é primariamente usada para fins administrativos, provendo "
-#~ "algum contexto acerca do uso do grupo."
-
-#~ msgid "Update User Group"
-#~ msgstr "Atualizar grupo de usuários"
-
-#~ msgid "Add New User Group"
-#~ msgstr "Adicionar novo grupo"
-
-#~ msgid "Usergroups"
-#~ msgstr "Grupos de usuários"
-
-#~ msgid "Select the user groups that you would like to be a part of:"
-#~ msgstr "Selecionar os grupos que você gostaria de participar:"
-
-#~ msgid "Select the user groups that this user should be a part of:"
-#~ msgstr "Selecione os grupos de usuários que este usuário deve fazer parte:"
-
-#~ msgid "No user groups were found."
-#~ msgstr "Nenhum grupo de usuários foi encontrado."
-
-#~ msgid "Add a new user group. Opens new window."
-#~ msgstr "Adicionar novo grupo de usuário. Abre uma nova janela."
-
-#~ msgid "Add a User Group"
-#~ msgstr "Adicionar um grupo de usuários"
-
-#~ msgid "Unpublished"
-#~ msgstr "Não publicado"
-
-#~ msgid "Please enter a name for the status."
-#~ msgstr "Por favor, insira um nome para o status."
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Este nome de status é restrito. Por favor, escolha outro."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Este status já existe. Por favor, escolha outro nome."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Não foi possível atualizar o status: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Responder a este post"
-
-#~ msgid "Submit Response"
-#~ msgstr "Enviar resposta"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Sempre notificar o administrador do blog"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Não foi possível atualizar o grupo de usuários: %s "
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "PublishPress é o plugin essencial para qualquer site WordPress com "
-#~ "multiplos escritores."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Opções do calendário"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Número de Semanas: "
-
-#~ msgid "%s Title"
-#~ msgstr "%s Título"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Número de semanas para exibir"
-
-#~ msgid "Post types to create directly from calendar"
-#~ msgstr "Tipo de post para criar diretamente do calendário"
-
-#~ msgid "Invalid post metadata type"
-#~ msgstr "Tipo de metadados do post inválida"
-
-#~ msgid "Error updating post author."
-#~ msgstr "Erro ao alterar autor do post."
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "Excluir um status de post irá atribuir todos os posts para o status "
-#~ "padrão."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Responder a este Post"
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Marque se esta publicação precisar de uma foto."
-
-#~ msgid "Required post length in words."
-#~ msgstr "Tamanho do post requerido em palavras."
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Não é um módulo registrado do PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Módulo não habilitado. Por favor, ative-o na Página de "
-#~ "configuração do PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Ativar"
+# Copyright (C) 2013
+# This file is distributed under the same license as the package.
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
+"POT-Creation-Date: 2018-05-14 13:02-0300\n"
+"PO-Revision-Date: 2023-01-16 13:14+0000\n"
+"Last-Translator: Anderson Grudtner Martins \n"
+"Language-Team: Portuguese (Portugal)\n"
+"Language: pt_PT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Loco https://localise.biz/\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+#| msgid "%1$s (%2$s) said on %3$s at %4$s:"
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, php-format
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, php-format
+#| msgid "User"
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr ""
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr ""
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr ""
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+#| msgid ""
+#| "Keep track of important details about your content with editorial "
+#| "metadata. This feature allows you to create as many date, text, number, "
+#| "etc. fields as you like, and then use them to store information like "
+#| "contact details, required word count, or the location of an interview.
"
+#| "Once you’ve set your fields up, editorial metadata integrates with "
+#| "both the calendar and the content overview. Make an editorial metadata "
+#| "item visible to have it appear to the rest of your team. Keep it hidden "
+#| "to restrict the information between the writer and their editor.
"
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:93
+#| msgid ""
+#| "Notifications ensure you keep up to date with progress your most "
+#| "important content. Users can be subscribed to notifications on a post one "
+#| "by one or by selecting user groups.
When enabled, notifications can "
+#| "be sent when a post changes status or an editorial comment is left by a "
+#| "writer or an editor.
"
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+
+#: modules/notifications/notifications.php:2063
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+#| msgid "[%1$s] %2$s Restored (from Trash): \"%3$s\""
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+#| msgid "A new %1$s (#%2$s \"%3$s\") was created by %4$s %5$s"
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+#| msgid "Add editorial comment: %s"
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+#| msgid "Editorial Comments"
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr ""
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr ""
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/calendar.php:825
+#| msgid "View all categories"
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr ""
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+#| msgid "View all statuses"
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+#| msgid "View all types"
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr ""
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+#| msgid "Notifications"
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+#, fuzzy
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+#| msgid "Author: %1$s (%2$s)"
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+#| msgid "Author"
+msgid "Authors"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:944
+#| msgid "Disable"
+msgid "Available fields"
+msgstr ""
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr ""
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr ""
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr ""
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+#| msgid "View all categories"
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+#, fuzzy
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+#| msgid "Change"
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr ""
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/calendar.php:1425
+#| msgid "Subscribe in iCal or Google Calendar"
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+#| msgid "Click to unfollow updates to this post"
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+#| msgid "Click to unfollow updates to this post"
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr ""
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+#| msgid "Content Overview"
+msgid "Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr ""
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:933
+#| msgid "Editorial Comments"
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+#| msgid "Notifications"
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1640
+msgid "Email from:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:218
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/calendar.php:1360
+msgid "End date"
+msgstr ""
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr ""
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr ""
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+#| msgid "Filter"
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1352
+msgid "Five months ago"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr ""
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1350
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1371
+#| msgid "Forward %d weeks"
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr ""
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr ""
+
+#: modules/calendar/calendar.php:1493
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr ""
+
+#: modules/calendar/calendar.php:3146
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1497
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr ""
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "May"
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+#| msgid "Add New Status"
+msgid "New status"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:704
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3660
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3157
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr ""
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+#| msgid "No user groups found."
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:305
+#| msgid "Add editorial comment: %s"
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr ""
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr ""
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/calendar.php:1377
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1365
+#| msgid "%s week"
+#| msgid_plural "%s weeks"
+msgid "One week"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr ""
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr ""
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:188
+#| msgid "Please select a valid metadata type."
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3801
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/calendar.php:3794
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr ""
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+#| msgid "Post Type"
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+#| msgid "Post Type"
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr ""
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+#| msgid "PublishPress"
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr ""
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/calendar.php:811
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+msgid "Save “%s”"
+msgstr ""
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr ""
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+#| msgid "Settings updated."
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr ""
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+#| msgid "Use on these post types:"
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+msgid "Start date"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+#| msgid "The name is used to identify the user group."
+msgid "The color is used to identify the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+#| msgid "The name is used to identify the user group."
+msgid "The icon is used to visually represent the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/calendar.php:3671
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1348
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr ""
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr ""
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1346
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1367
+#| msgid "%s week"
+#| msgid_plural "%s weeks"
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr ""
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr ""
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr ""
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr ""
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+#| msgid "Add editorial comment: %s"
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+#| msgid "Default post status has been changed."
+msgid "When the status is changed"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:738
+#| msgid "Settings updated."
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.mo b/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.mo
index e720afc4b..83218f996 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.po b/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.po
index ca9f23713..441c4701c 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-ru_RU.po
@@ -1,2738 +1,3045 @@
-# Translation of PublishPress plugin in Russian. Improved and edited.
-# Copyright (c) 2015 by Alexey Chumakov (http://chumakov.ru).
-# Inspired by previous translation (C) 2012-2013 by Teplitsa of Social Technologies (te-st.ru, Russian (ru) ).
-# This file is distributed under the same license as the PublishPress plugin package.
-# FIRST AUTHOR Katya Golubina kgolubina ET_SIGN googlemail.com, YEAR 2012.
-msgid ""
-msgstr ""
-"Project-Id-Version: PublishPress\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: 2018-05-14 13:03-0300\n"
-"Last-Translator: Alexey Chumakov \n"
-"Language-Team: alex@chumakov.ru\n"
-"Language: ru_RU\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.0.7\n"
-
-#: common/php/class-module.php:92
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Plugin.php:171
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Table/Base.php:736
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-# Шапка календаря
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#~ msgid "Unpublished"
-#~ msgstr "Не опубликован"
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr ""
-#~ "Использование названия статуса ограничено. Пожалуйста выберите другое "
-#~ "название."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Статус уже существует. Пожалуйста, выберите другое название."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Не удается обновить статус: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Комментировать эту запись"
-
-#~ msgid "Submit Response"
-#~ msgstr "Отправить комментарий"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Всегда оповещать администратора блога"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Не удалось обновить группу пользователей: %s "
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr ""
-#~ "Плагин PublishPress позволяет по-новому организовать редакционно-"
-#~ "издательскую работу в WordPress."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Параметры"
-
-#~ msgid ""
-#~ "For more information:
Calendar Documentation
PublishPress "
-#~ "Forum
PublishPress on Github
"
-#~ msgstr ""
-#~ "Дополнительная информация:
Документация о календаре "
-#~ "p>
Форум "
-#~ "PublishPress
О плагине PublishPress на Github
"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Количество недель: "
-
-#~ msgctxt "post type name"
-#~ msgid "%s Title"
-#~ msgstr "%s - заголовок"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Количество недель"
-
-#~ msgid "Post types to create directly from calendar"
-#~ msgstr "Создавать прямо из календаря"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr "При удалении статуса записям будет назначен статус по умолчанию."
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Отмечается, если для записи нужна фотография"
-
-#~ msgid "Required post length in words."
-#~ msgstr "Нужное количество слов в записи"
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Это не зарегистрированный модуль PublishPress"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Модуль не включен. Пожалуйста, включите его со страницы "
-#~ "настроек PublishPress ."
-
-#~ msgid "Enable"
-#~ msgstr "Включить"
-
-#~ msgid "Remixing the WordPress admin for better editorial workflow options."
-#~ msgstr ""
-#~ "Переработка консоли WordPress для организации редакционного-издательского "
-#~ "процесса"
-
-#~ msgid ""
-#~ "Daniel Bachhuber, Scott Bressler, Mohammad Jangda, Automattic, and others"
-#~ msgstr ""
-#~ "Daniel Bachhuber, Scott Bressler, Mohammad Jangda, Automattic и другие. "
-#~ "Перевод — Алексей Чумаков."
-
-#~ msgid ""
-#~ "PublishPress’s calendar lets you see your posts over a customizable date "
-#~ "range. Filter by status or click on the post title to see its details. "
-#~ "Drag and drop posts between days to change their publication date date."
-#~ msgstr ""
-#~ "Календарь плагина PublishPress позволяет просматривать записи за "
-#~ "определенный период. Фильтруйте по статусу или нажимайте на заголовок "
-#~ "записи, чтобы увидеть подробности. Перетаскивайте записи между днями, "
-#~ "чтобы изменить дату публикации."
-
-#~ msgid "Invalid post metadata type"
-#~ msgstr "Недопустимый тип пометки записи"
-
-#~ msgid "Error updating post author."
-#~ msgstr "Ошибка при обновлении автора записи."
-
-#~ msgid "Respond to this Post"
-#~ msgstr "Откликнуться на эту запись"
+# Translation of PublishPress plugin in Russian. Improved and edited.
+# Copyright (c) 2015 by Alexey Chumakov (http://chumakov.ru).
+# Inspired by previous translation (C) 2012-2013 by Teplitsa of Social Technologies (te-st.ru, Russian (ru) ).
+# This file is distributed under the same license as the PublishPress plugin package.
+# FIRST AUTHOR Katya Golubina kgolubina ET_SIGN googlemail.com, YEAR 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
+"POT-Creation-Date: 2018-05-14 13:02-0300\n"
+"PO-Revision-Date: 2023-01-16 13:15+0000\n"
+"Last-Translator: Alexey Chumakov \n"
+"Language-Team: Russian\n"
+"Language: ru_RU\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Loco https://localise.biz/"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, php-format
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, php-format
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr ""
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr ""
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr ""
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:93
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+
+#: modules/notifications/notifications.php:2063
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr ""
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr ""
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/calendar.php:825
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr ""
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr ""
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+#, fuzzy
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:944
+msgid "Available fields"
+msgstr ""
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr ""
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr ""
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr ""
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+#, fuzzy
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr ""
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/calendar.php:1425
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr ""
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+msgid "Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr ""
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:933
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1640
+msgid "Email from:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:218
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/calendar.php:1360
+msgid "End date"
+msgstr ""
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr ""
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr ""
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1352
+msgid "Five months ago"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr ""
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1350
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1371
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr ""
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr ""
+
+#: modules/calendar/calendar.php:1493
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr ""
+
+#: modules/calendar/calendar.php:3146
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1497
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr ""
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "May"
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:704
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3660
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3157
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr ""
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:305
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr ""
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr ""
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/calendar.php:1377
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1365
+msgid "One week"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr ""
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr ""
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3801
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/calendar.php:3794
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr ""
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr ""
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr ""
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/calendar.php:811
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+msgid "Save “%s”"
+msgstr ""
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr ""
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr ""
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+msgid "Start date"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+msgid "The color is used to identify the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+msgid "The icon is used to visually represent the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/calendar.php:3671
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1348
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr ""
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr ""
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1346
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1367
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr ""
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr ""
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr ""
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr ""
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:738
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.mo b/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.mo
index 0156df79b..15fc5c2cd 100644
Binary files a/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.mo and b/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.po b/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.po
index a00b7968f..448b7563c 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.po
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-sv_SE.po
@@ -1,3951 +1,3041 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PublishPress\n"
-"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
-"POT-Creation-Date: 2018-05-14 13:02-0300\n"
-"PO-Revision-Date: \n"
-"Last-Translator: Tom Stone \n"
-"Language-Team: Tom Stone \n"
-"Language: sv_SE\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-Basepath: .\n"
-"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
-"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-SearchPath-0: ..\n"
-
-#: common/php/class-module.php:92
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:93
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:198 common/php/class-module.php:275
-#: libraries/Notifications/Traits/PublishPress_Module.php:67
-#: modules/custom-status/custom-status.php:186
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:204 common/php/class-module.php:278
-#: libraries/Notifications/Traits/PublishPress_Module.php:73
-#: modules/custom-status/custom-status.php:196
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:210 common/php/class-module.php:274
-#: libraries/Notifications/Traits/PublishPress_Module.php:79
-#: modules/calendar/calendar.php:1553 modules/calendar/calendar.php:2577
-#: modules/custom-status/custom-status.php:801
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:276 modules/calendar/calendar.php:1547
-#: modules/calendar/calendar.php:2571
-#: modules/custom-status/custom-status.php:823
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:277
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:279 modules/calendar/calendar.php:1435
-#: modules/content-overview/content-overview.php:938
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:324
-msgid "M dd yy"
-msgstr ""
-
-#: common/php/class-module.php:492
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:659
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:30
-#: modules/roles/roles.php:71 modules/roles/roles.php:702
-#: modules/roles/roles.php:703
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:662
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:666
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:27
-#: modules/roles/roles.php:790
-msgid "Users"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:59
-#: modules/improved-notifications/improved-notifications.php:569
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:60
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:61
-#: modules/improved-notifications/improved-notifications.php:589
-msgid "Who to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:103
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:105
-#: libraries/Notifications/Plugin.php:106
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:107
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:108
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:109
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:110
-#, php-format
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:111
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:134
-#, php-format
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:135
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:136
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:137
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:138
-#, php-format
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:139
-#, php-format
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:171
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:205
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:170
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:171
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:623
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:625
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:636
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:694
-#: libraries/Notifications/Table/Base.php:1184
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:736
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:748
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:756
-#: libraries/Notifications/Table/Base.php:760
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:766
-#, php-format
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:775
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:787
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:860
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1042
-#: libraries/Notifications/Table/Base.php:1303
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1155
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1370
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1372
-msgid "All dates"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1386
-#, php-format
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1440
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1441
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1442
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1448
-#: libraries/Notifications/Table/Base.php:1462
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1462
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1477
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:60
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:64
-#: libraries/Notifications/Table/Workflows.php:64
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:72
-#: libraries/Notifications/Table/Workflows.php:72
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:75
-#: libraries/Notifications/Table/Workflows.php:75
-msgid "Y/m/d"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:90
-#: libraries/Notifications/Table/Workflows.php:90
-#: modules/calendar/calendar.php:1190
-#: modules/content-overview/content-overview.php:311
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:91
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:92
-#: modules/editorial-metadata/editorial-metadata.php:249
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:93
-#: libraries/Notifications/Table/Workflows.php:91
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:224
-#: libraries/Notifications/Table/Workflows.php:211
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:237
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:224
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:27
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1193
-#: modules/improved-notifications/improved-notifications.php:626
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:27
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:60
-msgid "\"New\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:28
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:25
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:35
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:35
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:25
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:27
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:73
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:27
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:161
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:178
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:25
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:71
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:174
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:71 modules/addons/addons.php:149
-#: modules/addons/addons.php:150 modules/addons/addons.php:164
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:72
-msgid "Pro Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:173
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:174
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:180
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:181
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:187
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:188
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:194
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:195
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:201
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:202
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collabratively."
-msgstr ""
-
-#: modules/addons/addons.php:208
-msgid "Multi-site and Multiple support"
-msgstr ""
-
-#: modules/addons/addons.php:209
-msgid ""
-"Enables PublishPress to support multiple WordPress sites. Write on one site, "
-"but publish to many sites."
-msgstr ""
-
-#: modules/addons/addons.php:213
-msgid "Zapier support"
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid ""
-"Integrates PublishPress with Zapier, so you can send comment and status "
-"changes notifications directly to Zapier."
-msgstr ""
-
-#: modules/addons/addons.php:223
-msgid "Active"
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Installed"
-msgstr ""
-
-#: modules/addons/addons.php:225
-msgid "Get Pro Add-ons!"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid "Coming soon"
-msgstr ""
-
-#: modules/addons/addons.php:227
-msgid "Available"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:75
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/calendar/calendar.php:127 modules/calendar/calendar.php:312
-#: modules/calendar/calendar.php:313 modules/calendar/calendar.php:878
-#: publishpress.php:383
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:141
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:142
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:143
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:144
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:149 modules/custom-status/custom-status.php:91
-#: modules/editorial-comments/editorial-comments.php:67
-#: modules/editorial-metadata/editorial-metadata.php:97
-#: modules/notifications/notifications.php:80
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:150
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:152
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:460
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:904 modules/settings/settings.php:51
-#: modules/settings/settings.php:212 publishpress.php:384
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:905
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:909
-#| msgid "Start Date:"
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:912
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:913
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:914
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:915
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:916
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:917
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:918
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:923
-#| msgid "End Date"
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:925
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:926
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:927
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:928
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:929
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:932
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:933
-#| msgid "One Comment"
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:935
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:936
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:937
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:938
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:939
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:940
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:941
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:942
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:943
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:944
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:945
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:955
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:964
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:987
-#: modules/content-overview/content-overview.php:559
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:992
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1130
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1151
-#, php-format
-msgid "Show %d more"
-msgstr ""
-
-#: modules/calendar/calendar.php:1162
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1170
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1173
-#: modules/editorial-metadata/editorial-metadata.php:1610
-#: modules/editorial-metadata/editorial-metadata.php:1725
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1201
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1204 modules/calendar/calendar.php:1433
-#: modules/content-overview/content-overview.php:933
-#: modules/custom-status/custom-status.php:2237
-#: modules/custom-status/custom-status.php:2567
-#: modules/editorial-metadata/editorial-metadata.php:1924
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:777
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1420
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1433
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1435
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1439
-#: modules/content-overview/content-overview.php:947
-#: modules/custom-status/custom-status.php:2323
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1442
-#: modules/content-overview/content-overview.php:944
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#, php-format
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1445
-#: modules/custom-status/custom-status.php:906
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1528
-#: modules/content-overview/content-overview.php:313
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1537
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1670
-#: modules/content-overview/content-overview.php:602
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1677
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1679
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1682
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1684
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1689
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1691
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1696
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1698
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1701
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1703
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1934
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1983
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:1984
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2000
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2014
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2025
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:297 modules/dashboard/dashboard.php:319
-#: modules/dashboard/dashboard.php:351
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2026
-#: modules/custom-status/custom-status.php:1728
-#: modules/dashboard/dashboard.php:298 modules/dashboard/dashboard.php:320
-#: modules/dashboard/dashboard.php:352
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2148
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2160
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2169
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2217
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2347
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2358
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2442
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2457
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2471
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2485
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2499
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2522
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2568
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2580
-msgid "Publish on"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:112
-#: modules/content-overview/content-overview.php:258
-#: modules/content-overview/content-overview.php:259
-#: modules/content-overview/content-overview.php:405
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:169
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:312
-#: modules/custom-status/custom-status.php:1266
-msgid "Status"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:314
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:315
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:531
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:534
-#: modules/content-overview/content-overview.php:537
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:536
-#: modules/custom-status/custom-status.php:1857
-#: modules/editorial-comments/editorial-comments.php:255
-#: modules/editorial-metadata/editorial-metadata.php:1649
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:557
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:565
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:609
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:635
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:650
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:662
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:695
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:722
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:933
-#: modules/dashboard/dashboard.php:262
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:938
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:61
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:78
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:80
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:81
-#: modules/custom-status/custom-status.php:84
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:82
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:83
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:85
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:86
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:94
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:156
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:159
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:166
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:176
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:199
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:420
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:453
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:812
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:905
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:971
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1056
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1354
-#: modules/custom-status/custom-status.php:1452
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1359
-#: modules/custom-status/custom-status.php:1457
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1364
-#: modules/custom-status/custom-status.php:1462
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1369
-#: modules/custom-status/custom-status.php:1475
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1374
-#: modules/custom-status/custom-status.php:1487
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1482
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1509
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1546
-#: modules/custom-status/custom-status.php:1588
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1552
-#: modules/custom-status/custom-status.php:1594
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1566
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1602
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1608
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1678
-#: modules/editorial-metadata/editorial-metadata.php:1425
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1704
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1705
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1807
-#: modules/custom-status/custom-status.php:1919
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1812
-#: modules/editorial-metadata/editorial-metadata.php:1590
-#: modules/editorial-metadata/editorial-metadata.php:1705
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1816
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1821
-#: modules/custom-status/custom-status.php:1923
-#: modules/custom-status/custom-status.php:2430
-#: modules/editorial-metadata/editorial-metadata.php:1600
-#: modules/editorial-metadata/editorial-metadata.php:1715
-#: modules/editorial-metadata/editorial-metadata.php:1828
-#: modules/user-groups/user-groups.php:747
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1929
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1933
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1837
-#: modules/custom-status/custom-status.php:1940
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1944
-#: modules/custom-status/custom-status.php:2431
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1848
-#: modules/custom-status/custom-status.php:1953
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1854
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1884
-#: modules/editorial-metadata/editorial-metadata.php:1664
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1890
-#: modules/editorial-metadata/editorial-metadata.php:1670
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1897
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1913
-#: modules/custom-status/custom-status.php:2429
-#: modules/editorial-metadata/editorial-metadata.php:1582
-#: modules/editorial-metadata/editorial-metadata.php:1695
-#: modules/editorial-metadata/editorial-metadata.php:1826
-#: modules/user-groups/user-groups.php:746
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1960
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-#: modules/custom-status/custom-status.php:2234
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2207
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2237
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2428
-#: modules/editorial-metadata/editorial-metadata.php:1825
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2455
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2552
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2570
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2575
-#: modules/editorial-metadata/editorial-metadata.php:1930
-#: modules/roles/lib/list_table.php:142 modules/user-groups/user-groups.php:778
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:58
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:72
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:166
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:172 modules/dashboard/dashboard.php:286
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:178 modules/dashboard/dashboard.php:285
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:202
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:263
-msgid "This post was last updated on"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:267
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:284
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:339
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:49
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:123
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:140
-msgid "Update Note"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:49
-#: modules/editorial-comments/editorial-comments.php:153
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:63
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:68
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:219
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:240
-#: modules/editorial-comments/editorial-comments.php:241
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:252
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:300
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:328
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:356
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:370
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:377
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:435
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:448
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:73
-#: modules/editorial-metadata/editorial-metadata.php:384
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:87
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:88
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:89
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:90
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:91
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:92
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:100
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:164
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:167
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:170
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:173
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:248
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:341
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:360
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:361
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:362
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:363
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:390 publishpress.php:417
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:401
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:418
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:420
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:462
-#: modules/editorial-metadata/editorial-metadata.php:519
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:480
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:492
-#: modules/editorial-metadata/editorial-metadata.php:569
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:543
-#: modules/editorial-metadata/editorial-metadata.php:1020
-#: modules/editorial-metadata/editorial-metadata.php:1625
-#: modules/editorial-metadata/editorial-metadata.php:1749
-#: modules/editorial-metadata/editorial-metadata.php:1874
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:544
-#: modules/editorial-metadata/editorial-metadata.php:1018
-#: modules/editorial-metadata/editorial-metadata.php:1626
-#: modules/editorial-metadata/editorial-metadata.php:1750
-#: modules/editorial-metadata/editorial-metadata.php:1872
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:591
-#: modules/editorial-metadata/editorial-metadata.php:641
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:593
-#: modules/editorial-metadata/editorial-metadata.php:646
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1004
-#: modules/notifications/notifications.php:1341
-#, php-format
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1215
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1219
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1222
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1226
-#: modules/editorial-metadata/editorial-metadata.php:1326
-#: modules/roles/roles.php:846
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1230
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1235
-#: modules/editorial-metadata/editorial-metadata.php:1336
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1240
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1264
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1309
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1314
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1320
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1331
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1358
-#: modules/editorial-metadata/editorial-metadata.php:1400
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1464
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1482
-#: modules/user-groups/user-groups.php:249
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1586
-#: modules/editorial-metadata/editorial-metadata.php:1701
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1595
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1605
-#: modules/editorial-metadata/editorial-metadata.php:1721
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1615
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1620
-#: modules/editorial-metadata/editorial-metadata.php:1745
-#: modules/editorial-metadata/editorial-metadata.php:1829
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1638
-#: modules/editorial-metadata/editorial-metadata.php:1763
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1646
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1679
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1711
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1741
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1769
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1827
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1905
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1926
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1928
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:69
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:152
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:158
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:406
-#: modules/efmigration/efmigration.php:409
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:247
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:311
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:318
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:89
-#: publishpress.php:670
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:241
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:275
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:540
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:549
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:579
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:599
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:624
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:625
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:627
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:629
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:630
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:631
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:632
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:633
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:634
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:635
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:768
-#: modules/improved-notifications/improved-notifications.php:782
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:780
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:781
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:783
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:784
-msgid "Channels"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:48
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:181
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:182
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:187
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:60
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:81
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:84
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:357
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:358
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:361
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:362
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:387
-msgid "Notify"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-msgid ""
-"Select the users and roles that should receive notifications from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:430
-msgid "Click to read more about notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:677
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:680
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1159
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1167
-#| msgid "Email: "
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1175
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1183
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1367
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1375
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1378
-#, php-format
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1383
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1386
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1390
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1393
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1397
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1399
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1404
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1407
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1411
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1414
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1418
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1421
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1426
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1436
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1442
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1443
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1446
-#, php-format
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1458
-#: modules/notifications/notifications.php:1498
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1459
-#: modules/notifications/notifications.php:1501
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1461
-#: modules/notifications/notifications.php:1503
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1462
-#: modules/notifications/notifications.php:1504
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1471
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1475
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1478
-#, php-format
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1499
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1506
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-#| msgid "No featured modules found."
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:79
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:80
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:81
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:82
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:266
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:278
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:783
-#| msgid "Add New FAQ"
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:784
-#| msgid "Edit followers"
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:785
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:786
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:787
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:788
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:791
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:840
-#| msgid "Please enter a name for the status."
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:850
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:855 modules/roles/roles.php:929
-#| msgid "Please enter a name for the status."
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:860 modules/roles/roles.php:933
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:874
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:947
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:951 modules/roles/roles.php:1026
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1019
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:88
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:89
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:215
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:231
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:297
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:298
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:320
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:350 publishpress.php:421
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:72
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:86
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:471
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:99
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:136
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:137
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:140
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:141
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:144
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:145
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:148
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:149
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:424
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:520
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:735
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:748
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:420
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:422
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: publishpress.php:423
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:632
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:671 publishpress.php:676
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:672
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:673
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:674
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:675
-msgid "Notifications"
-msgstr ""
-
-#: publishpress.php:677 publishpress.php:678
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-#| msgid ""
-#| "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-msgid "The essential plugin for any WordPress site with multiple writers"
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
-
-#~ msgid "Unpublished"
-#~ msgstr "Opublicerat"
-
-#~ msgid "Status name is restricted. Please chose another name."
-#~ msgstr "Statusnamnet är skyddat. Välj ett annat namn."
-
-#~ msgid "Status already exists. Please choose another name."
-#~ msgstr "Statusen finns redan. Välj ett annat namn."
-
-#~ msgid "Could not update the status: %s "
-#~ msgstr "Det gick inte att uppdatera statusen: %s "
-
-#~ msgid "Respond to this post"
-#~ msgstr "Diskutera detta inlägg"
-
-#~ msgid "Submit Response"
-#~ msgstr "Posta kommentaren"
-
-#~ msgid "Always notify blog admin"
-#~ msgstr "Meddela alltid administratören"
-
-#~ msgid "Could not update the user group: %s "
-#~ msgstr "Kunde inte uppdatera användargruppen: %s "
-
-#~ msgid "Featured"
-#~ msgstr "Intressanta"
-
-#~ msgid ""
-#~ "PublishPress helps you plan and publish content with WordPress. Features include a content calendar, notifications, and custom statuses."
-#~ msgstr "PublishPress omdefinierar arbetsflödet med WordPress."
-
-#~ msgid "Calendar Options"
-#~ msgstr "Kalenderinställningar"
-
-#~ msgid ""
-#~ "For more information:
Calendar Documentation
PublishPress "
-#~ "Forum
PublishPress on Github
"
-#~ msgstr ""
-#~ "För mer information:
Inläggskalenderns dokumentation"
-#~ "a>
PublishPress på Github
"
-
-#~ msgid "Number of Weeks: "
-#~ msgstr "Antal veckor:"
-
-#~ msgctxt "post type name"
-#~ msgid "%s Title"
-#~ msgstr "%s Titel"
-
-#~ msgctxt "post type name"
-#~ msgid "Edit %s"
-#~ msgstr "Redigera %s"
-
-#~ msgid "Number of weeks to show"
-#~ msgstr "Välj antal veckor att visa."
-
-#~ msgid "Post types to create directly from calendar"
-#~ msgstr "Posttyp att skapa direkt från kalendern"
-
-#~ msgid "Custom Statuses"
-#~ msgstr "Anpassad Status"
-
-#~ msgid ""
-#~ "Deleting a post status will assign all posts to the default post status."
-#~ msgstr ""
-#~ "Radering av poststatus kommer att överföra alla dess inlägg till "
-#~ "grundinställd status."
-
-#~ msgid "Checked if this post needs a photo."
-#~ msgstr "Behöver Foto"
-
-#~ msgid "Required post length in words."
-#~ msgstr "Önskad längd i antal ord."
-
-#~ msgid "Followers"
-#~ msgstr "Följare"
-
-#~ msgid "Not a registered PublishPress module"
-#~ msgstr "Ej en registrerad PublishPress-modul"
-
-#~ msgid ""
-#~ "Module not enabled. Please enable it from the PublishPress settings page ."
-#~ msgstr ""
-#~ "Modulen är inte aktiverad. Aktivera den från PublishPresss inställningssida ."
-
-#~ msgid "Enable"
-#~ msgstr "Aktivera"
-
-#, fuzzy
-#~ msgid "Respond to this Post"
-#~ msgstr "Postfält"
-
-#~ msgid "404: Page Not Found"
-#~ msgstr "404: Sidan hittas ej"
-
-#~ msgid "The page you are looking for is not here!"
-#~ msgstr "Sidan du söker finns ej här"
-
-#~ msgid "Please try top navigation for what you are looking for!"
-#~ msgstr ""
-#~ "Beklagar att sidan inte finns. Försök gärna med navigationsmenyn ovanför!"
-
-#, fuzzy
-#~ msgid "SAVE ALL CHANGES"
-#~ msgstr "Alla"
-
-#~ msgid "RESET"
-#~ msgstr "Nollställ"
-
-#~ msgid "Upload Image"
-#~ msgstr "Ladda upp bild"
-
-#~ msgid "Remove"
-#~ msgstr "Ta bort"
-
-#~ msgid "Header"
-#~ msgstr "Header"
-
-#~ msgid "Logo"
-#~ msgstr "Logo"
-
-#, fuzzy
-#~ msgid "Upload logo for your Website."
-#~ msgstr "Har ditt företag en hemsida?"
-
-#~ msgid "Favicon"
-#~ msgstr "Favicon"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload a 16px by 16px PNG image that will represent your website favicon."
-#~ msgstr ""
-#~ "Upload a 16px by 16px PNG image that will represent your website favicon."
-
-#~ msgid "Address Text"
-#~ msgstr "Adresstext"
-
-#, fuzzy
-#~ msgid "Provide header address text."
-#~ msgstr "Adresstext"
-
-#~ msgid "Las Angeles, AV 123456 - 123.456.7800"
-#~ msgstr "Las Angeles, AV 123456 - 123.456.7800"
-
-#, fuzzy
-#~ msgid "Reservation Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide header reservation text."
-#~ msgstr "Provide header reservation text."
-
-#~ msgid "Call 023 7526 8539 or Make Online Reservation"
-#~ msgstr "Ring 08-667 25 00 eller boka online"
-
-#, fuzzy
-#~ msgid "Reservation Button Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide header reservation button text."
-#~ msgstr "Provide header reservation button text."
-
-#, fuzzy
-#~ msgid "MAKE RESERVATION NOW"
-#~ msgstr "MAKE RESERVATION NOW"
-
-#, fuzzy
-#~ msgid "Reservation Button Target Link"
-#~ msgstr "Reservation Button Target Link"
-
-#, fuzzy
-#~ msgid "Provide header reservation button target link."
-#~ msgstr "Provide header reservation button target link."
-
-#~ msgid "#"
-#~ msgstr "#"
-
-#~ msgid "Tracking Code"
-#~ msgstr "Tracking-kod"
-
-#, fuzzy
-#~ msgid "Paste Google Analytics (or other) tracking code here."
-#~ msgstr "Paste Google Analytics (or other) tracking code here."
-
-#~ msgid "Slider"
-#~ msgstr "Slider"
-
-#~ msgid "Slide Image Size"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "1st Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 1st slide image for homepage slider."
-#~ msgstr "Upload 1st slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "1st Slide Target Link"
-#~ msgstr "1st Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 1st slide target link."
-#~ msgstr "Provide 1st slide target link."
-
-#, fuzzy
-#~ msgid "2nd Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 2nd slide image for homepage slider."
-#~ msgstr "Upload 2nd slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "2nd Slide Target Link"
-#~ msgstr "2nd Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 2nd slide target link."
-#~ msgstr "Provide 2nd slide target link."
-
-#, fuzzy
-#~ msgid "3rd Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 3rd slide image for homepage slider."
-#~ msgstr "Upload 3rd slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "3rd Slide Target Link"
-#~ msgstr "3rd Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 3rd slide target link."
-#~ msgstr "Provide 3rd slide target link."
-
-#, fuzzy
-#~ msgid "4th Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 4th slide image for homepage slider."
-#~ msgstr "Upload 4th slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "4th Slide Target Link"
-#~ msgstr "4th Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 4th slide target link."
-#~ msgstr "Provide 4th slide target link."
-
-#, fuzzy
-#~ msgid "5th Slide Image"
-#~ msgstr "Slider bildstorlek"
-
-#, fuzzy
-#~ msgid "Upload 5th slide image for homepage slider."
-#~ msgstr "Upload 5th slide image for homepage slider."
-
-#, fuzzy
-#~ msgid "5th Slide Target Link"
-#~ msgstr "5th Slide Target Link"
-
-#, fuzzy
-#~ msgid "Provide 5th slide target link."
-#~ msgstr "Provide 5th slide target link."
-
-#~ msgid "Home"
-#~ msgstr "Hem"
-
-#, fuzzy
-#~ msgid "Do you want to display three columns section on homepage ?"
-#~ msgstr "Do you want to display three columns section on homepage ?"
-
-#, fuzzy
-#~ msgid "1st Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Heading Text."
-#~ msgstr "Provide 1st Column Heading Text."
-
-#~ msgid "About Elegantia"
-#~ msgstr "Om Elegantia"
-
-#, fuzzy
-#~ msgid "1st Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 1st column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 1st column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "1st Column Sub Heading"
-#~ msgstr "1st Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Sub Heading Text."
-#~ msgstr "Provide 1st Column Sub Heading Text."
-
-#~ msgid "Elegantia Introduction"
-#~ msgstr "Elegantia Introduktion"
-
-#, fuzzy
-#~ msgid "1st Column Text Content"
-#~ msgstr "1st Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Text Content."
-#~ msgstr "Provide 1st Column Text Content."
-
-#, fuzzy
-#~ msgid "1st Column Read More Text"
-#~ msgstr "1st Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Read More Text."
-#~ msgstr "Provide 1st Column Read More Text."
-
-#~ msgid "READ MORE"
-#~ msgstr "LÄS MER"
-
-#, fuzzy
-#~ msgid "1st Column Read More Link"
-#~ msgstr "1st Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 1st Column Read More link."
-#~ msgstr "Provide 1st Column Read More link."
-
-#, fuzzy
-#~ msgid "2nd Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Heading Text."
-#~ msgstr "Provide 2nd Column Heading Text."
-
-#, fuzzy
-#~ msgid "Our Menu"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "2nd Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 2nd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 2nd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "2nd Column Sub Heading"
-#~ msgstr "2nd Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Sub Heading Text."
-#~ msgstr "Provide 2nd Column Sub Heading Text."
-
-#~ msgid "Elegantia Food"
-#~ msgstr "Elegantia Mat"
-
-#, fuzzy
-#~ msgid "2nd Column Text Content"
-#~ msgstr "2nd Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Text Content."
-#~ msgstr "Provide 2nd Column Text Content."
-
-#, fuzzy
-#~ msgid "2nd Column Read More Text"
-#~ msgstr "2nd Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Read More Text."
-#~ msgstr "Provide 2nd Column Read More Text."
-
-#, fuzzy
-#~ msgid "2nd Column Read More Link"
-#~ msgstr "2nd Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 2nd Column Read More link."
-#~ msgstr "Provide 2nd Column Read More link."
-
-#, fuzzy
-#~ msgid "3rd Column Heading"
-#~ msgstr "Rubrik"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Heading Text."
-#~ msgstr "Provide 3rd Column Heading Text."
-
-#, fuzzy
-#~ msgid "Special Events"
-#~ msgstr "Händelser"
-
-#, fuzzy
-#~ msgid "3rd Column Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid ""
-#~ "Upload 3rd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-#~ msgstr ""
-#~ "Upload 3rd column image for homepage. Recommended image size is 226px by "
-#~ "116px."
-
-#, fuzzy
-#~ msgid "3rd Column Sub Heading"
-#~ msgstr "3rd Column Sub Heading"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Sub Heading Text."
-#~ msgstr "Provide 3rd Column Sub Heading Text."
-
-#, fuzzy
-#~ msgid "Elegantia Events"
-#~ msgstr "Elegantia: Kommande Event"
-
-#, fuzzy
-#~ msgid "3rd Column Text Content"
-#~ msgstr "3rd Column Text Content"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Text Content."
-#~ msgstr "Provide 3rd Column Text Content."
-
-#, fuzzy
-#~ msgid "3rd Column Read More Text"
-#~ msgstr "3rd Column Read More Text"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Read More Text."
-#~ msgstr "Provide 3rd Column Read More Text."
-
-#, fuzzy
-#~ msgid "3rd Column Read More Link"
-#~ msgstr "3rd Column Read More Link"
-
-#, fuzzy
-#~ msgid "Provide 3rd Column Read More link."
-#~ msgstr "Provide 3rd Column Read More link."
-
-#, fuzzy
-#~ msgid "Do you want to display featured menu items on homepage ?"
-#~ msgstr "Do you want to display featured menu items on homepage ?"
-
-#, fuzzy
-#~ msgid "Testimonial Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide testimonial text here."
-#~ msgstr "Skriv Copyright-text för Footer här"
-
-#, fuzzy
-#~ msgid "Testimonial Author"
-#~ msgstr "Författarnamn"
-
-#, fuzzy
-#~ msgid "Provide testimonial author name here."
-#~ msgstr "Provide testimonial author name here."
-
-#~ msgid "Styling"
-#~ msgstr "Styling"
-
-#, fuzzy
-#~ msgid "Body Background"
-#~ msgstr "Body Background"
-
-#, fuzzy
-#~ msgid "Body Text Color"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Choose a Body Text Color. Base Theme Color is #909090"
-#~ msgstr "Choose a Body Text Color. Base Theme Color is #909090"
-
-#~ msgid "Headings Color"
-#~ msgstr "Headings Color"
-
-#, fuzzy
-#~ msgid ""
-#~ "Choose a Color for h1, h2, h3, h4, h5 and h6 tags. Base Theme Color is "
-#~ "#824328"
-#~ msgstr ""
-#~ "Choose a Color for h1, h2, h3, h4, h5 and h6 tags. Base Theme Color is "
-#~ "#824328"
-
-#, fuzzy
-#~ msgid "Selection Background Color"
-#~ msgstr "Headings Color"
-
-#, fuzzy
-#~ msgid "Choose a Background Selection Color. Base Theme Color is #f8dda8"
-#~ msgstr "Choose a Background Selection Color. Base Theme Color is #f8dda8"
-
-#, fuzzy
-#~ msgid "Choose a Link Color. Base Theme Color is #d3af80"
-#~ msgstr "Choose a Link Color. Base Theme Color is #d3af80"
-
-#, fuzzy
-#~ msgid "Link Hover Color"
-#~ msgstr "Länkfärg"
-
-#, fuzzy
-#~ msgid "Choose a Link Hover Color. Base Theme Color is #824328"
-#~ msgstr "Choose a Link Hover Color. Base Theme Color is #824328"
-
-#, fuzzy
-#~ msgid ""
-#~ "Just want to do some quick CSS changes? Enter them here, they will be "
-#~ "applied to the theme. If you need to change major portions of the theme "
-#~ "please use the custom.css file."
-#~ msgstr ""
-#~ "Just want to do some quick CSS changes? Enter them here, they will be "
-#~ "applied to the theme. If you need to change major portions of the theme "
-#~ "please use the custom.css file."
-
-#~ msgid "Social Navigation"
-#~ msgstr "Social Navigation"
-
-#, fuzzy
-#~ msgid "Do you want to show social navigation ?"
-#~ msgstr "Do you want to show social navigation ?"
-
-#~ msgid "Facebook"
-#~ msgstr "Facebook"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Facebook link to display its icon in footer social navigation."
-#~ msgstr "Give Facebook link to display its icon in footer social navigation."
-
-#~ msgid "Twitter"
-#~ msgstr "Twitter"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Twitter link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#~ msgid "Email Address"
-#~ msgstr "Emailadress"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide your email address to display its icon in footer social "
-#~ "navigation."
-#~ msgstr ""
-#~ "Give your email address to display its icon in footer social navigation."
-
-#~ msgid "Google Plus"
-#~ msgstr "Google Plus"
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Google Plus link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Linked In link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Pinterest link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid ""
-#~ "Provide Instagram link to display its icon in footer social navigation."
-#~ msgstr "Give Twitter link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid "Provide Yahoo link to display its icon in footer social navigation."
-#~ msgstr "Give Facebook link to display its icon in footer social navigation."
-
-#, fuzzy
-#~ msgid "Provide VK link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#~ msgid "RSS"
-#~ msgstr "RSS"
-
-#, fuzzy
-#~ msgid "Provide RSS link to display its icon in footer social navigation."
-#~ msgstr "Give RSS link to display its icon in footer social navigation."
-
-#~ msgid "Blog"
-#~ msgstr "Blogg"
-
-#, fuzzy
-#~ msgid "Provide the heading words for blog page."
-#~ msgstr "Provide the heading words for blog page."
-
-#, fuzzy
-#~ msgid "Our News"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "Do you want to open blog post image in lightbox ?"
-#~ msgstr "Do you want to open blog post image in lightbox ?"
-
-#, fuzzy
-#~ msgid "Our Menu Title"
-#~ msgstr "Vårt Team"
-
-#, fuzzy
-#~ msgid "Provide the heading text for Our Menu related pages."
-#~ msgstr "Provide the heading text for Our Menu related pages."
-
-#, fuzzy
-#~ msgid "Do you want to open Our Menu item image in lightbox ?"
-#~ msgstr "Do you want to open Our Menu item image in lightbox ?"
-
-#~ msgid "Events"
-#~ msgstr "Händelser"
-
-#~ msgid "Event Main Title"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Provide the heading text for Event related pages."
-#~ msgstr "Provide the heading text for Event related pages."
-
-#, fuzzy
-#~ msgid "Do you want to open Event image in lightbox ?"
-#~ msgstr "Do you want to open Event image in lightbox ?"
-
-#, fuzzy
-#~ msgid "Do you want to show Google Map on contact page template?"
-#~ msgstr "Do you want to show Google Map on contact page template?"
-
-#~ msgid "Google Map Latitude"
-#~ msgstr "Ange Google Map Latitude"
-
-#~ msgid "Enter Google Map Latitude"
-#~ msgstr "Ange Google Map Latitude"
-
-#~ msgid "Google Map Longitude"
-#~ msgstr "Google Map Longitude"
-
-#~ msgid "Enter Google Map Longitude"
-#~ msgstr "Ange Google Map Longitude"
-
-#~ msgid "Google Map Zoom"
-#~ msgstr "Google Map Zoom"
-
-#~ msgid "Enter Google Map Zoom Level. Example: 17"
-#~ msgstr "Ange Google Map Zoom Level. Exempel: 17"
-
-#~ msgid "Address"
-#~ msgstr "Adress"
-
-#, fuzzy
-#~ msgid "This address will appear above contact form section."
-#~ msgstr "This address will appear above contact form section."
-
-#~ msgid "Contact Form Heading"
-#~ msgstr "Kontaktsformulär Rubrik"
-
-#~ msgid "Enter heading for your contact form."
-#~ msgstr "Ange rubrik för ditt kontaktformulär"
-
-#~ msgid "Contact Us"
-#~ msgstr "Kontakta oss"
-
-#~ msgid "Contact Form Text Below Heading"
-#~ msgstr "Kontaktsformulär, text under rubrik"
-
-#, fuzzy
-#~ msgid "Enter text that will appear below heading and above contact form."
-#~ msgstr "Enter text that will appear below heading and above contact form."
-
-#, fuzzy
-#~ msgid ""
-#~ "Fill out the form below to send us a message and we will get back to you "
-#~ "ASAP."
-#~ msgstr ""
-#~ "Fill out the form below to send us a message and we will get back to you "
-#~ "ASAP."
-
-#~ msgid "Contact Email"
-#~ msgstr "Kontakt Email"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter target email address that will receive messages from contact form."
-#~ msgstr ""
-#~ "Enter target email address that will receive messages from contact form."
-
-#, fuzzy
-#~ msgid "Reservation Form Heading"
-#~ msgstr "Ange rubrik för ditt reservationsformulär"
-
-#~ msgid "Enter heading for your reservation form."
-#~ msgstr "Ange rubrik för ditt reservationsformulär"
-
-#, fuzzy
-#~ msgid "Make Reservation Now"
-#~ msgstr "Make Reservation Now"
-
-#, fuzzy
-#~ msgid "Reservation Form Text Below Heading"
-#~ msgstr "Kontaktsformulär, text under rubrik"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter text that will appear below heading and above reservation form."
-#~ msgstr ""
-#~ "Enter text that will appear below heading and above reservation form."
-
-#, fuzzy
-#~ msgid "Fill out the form below to make reservation"
-#~ msgstr "Fill out the form below to make reservation"
-
-#, fuzzy
-#~ msgid "Reservation Email"
-#~ msgstr "E-post:"
-
-#, fuzzy
-#~ msgid ""
-#~ "Enter target email address that will receive reservation requests from "
-#~ "customers."
-#~ msgstr ""
-#~ "Enter target email address that will receive reservation requests from "
-#~ "customers."
-
-#~ msgid "Footer"
-#~ msgstr "Sidfot"
-
-#, fuzzy
-#~ msgid "Footer Address Text"
-#~ msgstr "Adresstext"
-
-#, fuzzy
-#~ msgid "Enter text that will appear on the right side of footer."
-#~ msgstr "Enter text that will appear on the right side of footer."
-
-#~ msgid "Copyright Text"
-#~ msgstr "Copyright-text"
-
-#~ msgid "Enter Footer Copyright Text here."
-#~ msgstr "Skriv Copyright-text för Footer här"
-
-#~ msgid "All posts tagged "
-#~ msgstr "Alla poster märkta"
-
-#~ msgid "Archive for"
-#~ msgstr "Arkiv för"
-
-#~ msgid "All posts by"
-#~ msgstr "Alla poster av"
-
-#~ msgid "Blog Archives"
-#~ msgstr "Bloggarkiv"
-
-#~ msgid ""
-#~ "This post is password protected. Enter the password to view any comments."
-#~ msgstr ""
-#~ "Det här inlägget är lösenordsskyddat. Ange lösenordet för att se "
-#~ "eventuella kommentarer."
-
-#~ msgid "(%) Comments"
-#~ msgstr "(%) kommentarer"
-
-#~ msgid "Comments are closed."
-#~ msgstr "Kommentarer inaktiverade."
-
-#~ msgid "Wrong Code!"
-#~ msgstr "Fel kod!"
-
-#, fuzzy
-#~ msgid "You Have Received a Message From "
-#~ msgstr "You Have Received a Message From "
-
-#, fuzzy
-#~ msgid "You have Received a message from: "
-#~ msgstr "You Have Received a Message From "
-
-#, fuzzy
-#~ msgid "Their additional message is as follows."
-#~ msgstr "Meddelande:"
-
-#, fuzzy
-#~ msgid " via email, "
-#~ msgstr "E-post:"
-
-#~ msgid "Message Sent Successfully!"
-#~ msgstr "Sändning av meddelandet lyckades!"
-
-#, fuzzy
-#~ msgid "Server Error: WordPress mail method failed!"
-#~ msgstr "Server Error: WordPress mail method failed!"
-
-#~ msgid "Invalid Request !"
-#~ msgstr "Ogiltig förfrågan!"
-
-#, fuzzy
-#~ msgid "You Have Received an Reservation Request From : "
-#~ msgstr "You Have Received an Reservation Request From : "
-
-#, fuzzy
-#~ msgid "You have Received an Reservation Request From "
-#~ msgstr "You Have Received an Reservation Request From : "
-
-#~ msgid "Name: "
-#~ msgstr "Namn:"
-
-#~ msgid "Phone: "
-#~ msgstr "Telefon"
-
-#, fuzzy
-#~ msgid "Reservation Date: "
-#~ msgstr "Datum"
-
-#, fuzzy
-#~ msgid "Reservation Time: "
-#~ msgstr "Tid"
-
-#~ msgid " via email "
-#~ msgstr "via e-post:"
-
-#~ msgid " OR via phone "
-#~ msgstr "eller via telefon"
-
-#~ msgid "Pingback:"
-#~ msgstr "Pingback: "
-
-#~ msgid "(Edit)"
-#~ msgstr "(Redigera)"
-
-#~ msgid "%s"
-#~ msgstr "%s"
-
-#~ msgid "Your comment is awaiting moderation."
-#~ msgstr "Din kommentar inväntar granskning."
-
-#, fuzzy
-#~ msgid "Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Edit Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "New Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "View Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "Search Event"
-#~ msgstr "Event huvudrubrik"
-
-#, fuzzy
-#~ msgid "No Events found in Trash"
-#~ msgstr "Inga poster återfanns i Trash"
-
-#, fuzzy
-#~ msgid "Event Time"
-#~ msgstr "Tid"
-
-#, fuzzy
-#~ msgid "Event Thumbnail"
-#~ msgstr "Miniatyrbild"
-
-#~ msgid "No Image"
-#~ msgstr "Ingen bild"
-
-#, fuzzy
-#~ msgid "Event Date and Time"
-#~ msgstr "Datum/Tid"
-
-#~ msgid "Use 24h format (7pm = 19:00)"
-#~ msgstr "Använd 24-timmarsformat (7pm = 19:00)"
-
-#~ msgid "End Time"
-#~ msgstr "Sluttid"
-
-#~ msgid "FAQs"
-#~ msgstr "FAQs"
-
-#~ msgid "FAQ"
-#~ msgstr "FAQ"
-
-#~ msgid "New FAQ"
-#~ msgstr "Nytt FAQ"
-
-#~ msgid "Search FAQ"
-#~ msgstr "Sök FAQ"
-
-#~ msgid "No FAQs found in Trash"
-#~ msgstr "Inga FAQs återfanns i Trash"
-
-#~ msgid "faq"
-#~ msgstr "faq"
-
-#~ msgid "Gallery Items"
-#~ msgstr "Galleriobjekt"
-
-#~ msgid "Gallery Item"
-#~ msgstr "Galleriobjekt"
-
-#~ msgid "Add New Gallery Item"
-#~ msgstr "Lägg till nytt galleriobjekt"
-
-#~ msgid "Edit Gallery Item"
-#~ msgstr "Redigera galleriobjekt"
-
-#~ msgid "New Gallery Item"
-#~ msgstr "Nytt galleriobjekt"
-
-#~ msgid "Search Gallery Items"
-#~ msgstr "Sök galleriobjekt"
-
-#~ msgid "No Gallery Item found"
-#~ msgstr "Inga galleriobjekt återfanns"
-
-#~ msgid "No Gallery Item found in Trash"
-#~ msgstr "Inga galleriobjekt funna i Trash"
-
-#~ msgid "gallery-item"
-#~ msgstr "galleriobjekt"
-
-#~ msgid "Gallery Item Types"
-#~ msgstr "Galleriobjektstyper"
-
-#~ msgid "Gallery Item Type"
-#~ msgstr "Galleriobjektstyp"
-
-#~ msgid "Search Gallery Item Types"
-#~ msgstr "Sök galleriobjektstyper"
-
-#~ msgid "Popular Gallery Item Types"
-#~ msgstr "Populära galleriobjektstyper"
-
-#~ msgid "All Gallery Item Types"
-#~ msgstr "Alla galleriobjektstyper"
-
-#, fuzzy
-#~ msgid "Parent Gallery Item Type"
-#~ msgstr "Galleriobjektstyp"
-
-#, fuzzy
-#~ msgid "Parent Gallery Item Type:"
-#~ msgstr "Galleriobjektstyp"
-
-#~ msgid "Edit Gallery Item Type"
-#~ msgstr "Redigera galleriobjektstyp"
-
-#~ msgid "Update Gallery Item Type"
-#~ msgstr "Uppdatera Galleriobjektstyp"
-
-#~ msgid "Add New Gallery Item Type"
-#~ msgstr "Lägg till ny typ av galleriobjekt"
-
-#~ msgid "New Gallery Item Type Name"
-#~ msgstr "Nytt galleriobjekttypnamn"
-
-#, fuzzy
-#~ msgid "Separate Gallery Item Types with commas"
-#~ msgstr "Galleriobjektstyper"
-
-#~ msgid "Add or Remove Gallery Item Types"
-#~ msgstr "Lägg till/ta bort galleriobjektstyp"
-
-#~ msgid "Choose from the most used Gallery Item Types"
-#~ msgstr "Välj från de mest använda Galleriobjektstyperna"
-
-#~ msgid "gallery-item-type"
-#~ msgstr "galleryobjektstyp"
-
-#~ msgid "Gallery Item Title"
-#~ msgstr "Galleriobjektets titel"
-
-#~ msgid "Thumbnail"
-#~ msgstr "Miniatyr"
-
-#~ msgid "No Thumbnail"
-#~ msgstr "Ingen miniatyrbild"
-
-#, fuzzy
-#~ msgid "Food Menu"
-#~ msgstr "Elegantia Mat"
-
-#~ msgid "Menu Item"
-#~ msgstr "Menypost"
-
-#, fuzzy
-#~ msgid "New Menu Item"
-#~ msgstr "Lägg till ny menyobjekt"
-
-#, fuzzy
-#~ msgid "View Menu Item"
-#~ msgstr "Se Galleriobjekt"
-
-#, fuzzy
-#~ msgid "Search Menu Items"
-#~ msgstr "Sök galleriobjekt"
-
-#, fuzzy
-#~ msgid "No Menu Item found in Trash"
-#~ msgstr "Inga galleriobjekt funna i Trash"
-
-#, fuzzy
-#~ msgid "menu-item"
-#~ msgstr "Menypost"
-
-#, fuzzy
-#~ msgid "Menu Item Types"
-#~ msgstr "Alla menyobjektstyper"
-
-#, fuzzy
-#~ msgid "Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Search Menu Item Types"
-#~ msgstr "Sök galleriobjektstyper"
-
-#, fuzzy
-#~ msgid "Popular Menu Item Types"
-#~ msgstr "Populära galleriobjektstyper"
-
-#~ msgid "All Menu Item Types"
-#~ msgstr "Alla menyobjektstyper"
-
-#, fuzzy
-#~ msgid "Parent Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Parent Menu Item Type:"
-#~ msgstr "Redigera menyobjektstyp"
-
-#~ msgid "Edit Menu Item Type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#~ msgid "Add New Menu Item Type"
-#~ msgstr "Lägg till ny typ av menyobjekt"
-
-#, fuzzy
-#~ msgid "New Menu Item Type Name"
-#~ msgstr "Lägg till ny typ av menyobjekt"
-
-#, fuzzy
-#~ msgid "Separate Menu Item Types with commas"
-#~ msgstr "Alla menyobjektstyper"
-
-#~ msgid "Add or Remove Menu Item Types"
-#~ msgstr "Lägg till/ta bort menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Choose from the most used Menu Item Types"
-#~ msgstr "Välj från de mest använda Galleriobjektstyperna"
-
-#, fuzzy
-#~ msgid "menu-item-type"
-#~ msgstr "Redigera menyobjektstyp"
-
-#, fuzzy
-#~ msgid "Menu Item Title"
-#~ msgstr "Menypost"
-
-#~ msgid "Pic"
-#~ msgstr "Bild"
-
-#~ msgid "Price"
-#~ msgstr "Pris"
-
-#~ msgid "Additional Information"
-#~ msgstr "Ytterligare information"
-
-#, fuzzy
-#~ msgid "Menu Item Price"
-#~ msgstr "Pris"
-
-#, fuzzy
-#~ msgid ""
-#~ "Please add Menu Item price with related currency sign. Example: "
-#~ "15.50$ "
-#~ msgstr ""
-#~ "Please add Menu Item price with related currency sign. Example: "
-#~ "15.50$ "
-
-#, fuzzy
-#~ msgid ""
-#~ "Mark this Menu Item as Featured if you want to display it on homepage."
-#~ msgstr ""
-#~ "Mark this Menu Item as Featured if you want to display it on homepage."
-
-#, fuzzy
-#~ msgid "Provide Team Member Designation Here."
-#~ msgstr "Provide Team Member Designation Here."
-
-#~ msgid "Special"
-#~ msgstr "Special"
-
-#, fuzzy
-#~ msgid ""
-#~ "Mark this Team Member as Special if you want to display it on top of the "
-#~ "team page with big image."
-#~ msgstr ""
-#~ "Mark this Team Member as Special if you want to display it on top of the "
-#~ "team page with big image."
-
-#~ msgid "Testimonial Settings"
-#~ msgstr "Inställningar Vitsord"
-
-#~ msgid "Testimonial"
-#~ msgstr "Vitsord"
-
-#, fuzzy
-#~ msgid "Provide Testimonial Text"
-#~ msgstr "text"
-
-#, fuzzy
-#~ msgid "Provide Name of Author"
-#~ msgstr "Författarnamn"
-
-#, fuzzy
-#~ msgid "Testimonial Author Link"
-#~ msgstr "Länk till vitsordet"
-
-#, fuzzy
-#~ msgid "Provide The URL to author website or page."
-#~ msgstr "Provide The URL to author website or page."
-
-#, fuzzy
-#~ msgid "Related Department"
-#~ msgstr "Related Department"
-
-#, fuzzy
-#~ msgid "Provide the name of related department."
-#~ msgstr "Provide the name of related department."
-
-#~ msgid "Team Members"
-#~ msgstr "Team-medlemmar"
-
-#~ msgid "Team Member"
-#~ msgstr "Team-medlem"
-
-#~ msgid "Add New Team Member"
-#~ msgstr "Skapa ny team-medlem"
-
-#~ msgid "Edit Team Member"
-#~ msgstr "Redigera team-medlem"
-
-#~ msgid "New Team Member"
-#~ msgstr "Ny team-medlem"
-
-#~ msgid "View Team Member"
-#~ msgstr "Granska team-medlem"
-
-#~ msgid "Search Team Member"
-#~ msgstr "Sök team-medlemmar"
-
-#~ msgid "No Team Member found"
-#~ msgstr "Ingen team-medlem återfanns"
-
-#~ msgid "No Team Member found in Trash"
-#~ msgstr "Inga team-medlemmar återfanns i Trash"
-
-#~ msgid "team-member"
-#~ msgstr "team-medlem"
-
-#~ msgid "Team Member Name"
-#~ msgstr "Team-medlem namn"
-
-#~ msgid "NA"
-#~ msgstr "NA"
-
-#~ msgid "Go to..."
-#~ msgstr "Gå till..."
-
-#~ msgid "Search results for"
-#~ msgstr "Sökresultat för"
-
-#~ msgid "No Posts Found, Please try another search term!"
-#~ msgstr "Inga poster återfanns. Testa en annan sökfras!"
-
-#~ msgid "Gallery Items with Type "
-#~ msgstr "Galleriobjekt med typ"
-
-#~ msgid "All"
-#~ msgstr "Alla"
-
-#~ msgid "View all Gallery Items filed under %s"
-#~ msgstr "Se alla galleriobjekt inom %s"
-
-#~ msgid "Dates:"
-#~ msgstr "Datum:"
-
-#~ msgid "Time:"
-#~ msgstr "Tid:"
-
-#~ msgid "Our Team"
-#~ msgstr "Vårt Team"
-
-#~ msgid "Posted in:"
-#~ msgstr "Postad i:"
-
-#~ msgid "Your Name"
-#~ msgstr "Ditt namn"
-
-#~ msgid "* Please enter your email address"
-#~ msgstr "* Skriv din emailadress"
-
-#~ msgid "* Please enter your message"
-#~ msgstr "* Skriv meddelande"
-
-#~ msgid "Are you human?"
-#~ msgstr "Är du mänsklig?"
-
-#~ msgid "* Please enter the code characters displayed in image!"
-#~ msgstr "* Skriv bokstäverna som syns i bilden"
-
-#, fuzzy
-#~ msgid "Send Message"
-#~ msgstr "Skicka Test"
-
-#, fuzzy
-#~ msgid "No Event Found !"
-#~ msgstr "Event huvudrubrik"
-
-#~ msgid "* Please enter your Name"
-#~ msgstr "* Skriv ditt namn"
-
-#~ msgid "Phone"
-#~ msgstr "Telefon"
-
-#~ msgid "* Please enter your Email address"
-#~ msgstr "* Skriv din emailadress"
-
-#~ msgid "* Please choose Date"
-#~ msgstr "* Välj datum"
-
-#~ msgid "Time"
-#~ msgstr "Tid"
-
-#~ msgid "* Please specify Time"
-#~ msgstr "* Ange tid"
-
-#, fuzzy
-#~ msgid "Special Request"
-#~ msgstr "Ogiltig förfrågan!"
-
-#~ msgid "* Please enter the code characters displayed in image"
-#~ msgstr "* Skriv bokstäverna som syns i bilden"
-
-#, fuzzy
-#~ msgid "MAKE RESERVATION NOW"
-#~ msgstr "MAKE RESERVATION NOW"
-
-#~ msgid "Loading..."
-#~ msgstr "Laddar..."
-
-#, fuzzy
-#~ msgid "Displays list of featured menu items."
-#~ msgstr "Elegantia: Featured menyobjekt"
-
-#~ msgid "Elegantia: Featured Menu Items"
-#~ msgstr "Elegantia: Featured menyobjekt"
-
-#, fuzzy
-#~ msgid "Number of Menu Items to display"
-#~ msgstr "Antal poster att visa"
-
-#, fuzzy
-#~ msgid "Displays List of Menu Types with links to their archive pages."
-#~ msgstr "Displays List of Menu Types with links to their archive pages."
-
-#, fuzzy
-#~ msgid ""
-#~ "Show Recent or Popular or Random posts from your blog with thumbnails."
-#~ msgstr ""
-#~ "Show Recent or Popular or Random posts from your blog with thumbnails."
-
-#~ msgid "Elegantia: Recent Posts With Thumbnail"
-#~ msgstr "Elegantia: Senaste poster med småbilder"
-
-#, fuzzy
-#~ msgid "Sort them by"
-#~ msgstr "Sort them by"
-
-#~ msgid "Most Popular"
-#~ msgstr "Mest populära"
-
-#~ msgid "Most Recent"
-#~ msgstr "Senaste"
-
-#~ msgid "Random"
-#~ msgstr "Slumpvis"
-
-#~ msgid "Number of posts to display"
-#~ msgstr "Antal poster att visa"
-
-#, fuzzy
-#~ msgid "Displays list of Upcoming Events."
-#~ msgstr "Elegantia: Kommande Event"
-
-#~ msgid "Elegantia: Upcoming Events"
-#~ msgstr "Elegantia: Kommande Event"
-
-#, fuzzy
-#~ msgid "Number of Upcoming Events to display"
-#~ msgstr "Elegantia: Kommande Event"
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress\n"
+"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/PublishPress\n"
+"POT-Creation-Date: 2018-05-14 13:02-0300\n"
+"PO-Revision-Date: 2023-01-16 13:14+0000\n"
+"Last-Translator: Anderson Grudtner Martins \n"
+"Language-Team: Swedish\n"
+"Language: sv_SE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
+"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Poedit-SearchPath-0: ..\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1950
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1997
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1967
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2014
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2113
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1011
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2055
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1891
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:337
+#, php-format
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:176
+#, php-format
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:152
+#, php-format
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:829
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/calendar.php:830
+msgid "%d weeks"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:270
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:4027
+#, php-format
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:2140
+msgid "«"
+msgstr ""
+
+#: modules/calendar/calendar.php:2153
+msgid "‹"
+msgstr ""
+
+#: modules/calendar/calendar.php:2109
+msgid "»"
+msgstr ""
+
+#: modules/calendar/calendar.php:2092
+msgid "›"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/calendar/calendar.php:209
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:117
+msgid ""
+"For more information:
Custom Status "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:86
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:124
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:98
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:81
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:119
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:93
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:112
+msgid ""
+"PublishPress’s custom statuses allow you to define the most important "
+"stages of your editorial workflow. Out of the box, WordPress only offers "
+"“Draft” and “Pending Review” as post states. With custom statuses, you can "
+"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
+"Edit” and keep or delete the originals. You can also drag and drop statuses "
+"to set the best order for your workflow.
Custom statuses are fully "
+"integrated into the rest of PublishPress and the WordPress admin. On the "
+"calendar and content overview, you can filter your view to see only posts of "
+"a specific post state. Furthermore, email notifications can be sent to a "
+"specific group of users when a post changes state.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:204
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:517
+msgid ""
+"Note: Your browser does not support JavaScript or has "
+"JavaScript disabled. You will not be able to access or change the post "
+"status."
+msgstr ""
+
+#: modules/notifications/notifications.php:2063
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2082
+#: modules/notifications/notifications.php:2135
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1990
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1960
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2024
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1943
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2007
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1926
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2099
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1933
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2106
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:357
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:675
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1784
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:519
+#: modules/editorial-comments/editorial-comments.php:523
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2074
+#: modules/editorial-metadata/editorial-metadata.php:2435
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/calendar.php:801
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2084
+#: modules/notifications/notifications.php:2141
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1797
+#: modules/custom-status/custom-status.php:2111
+msgid "Add New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Add New Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2570
+msgid "Add New Metadata Term"
+msgstr ""
+
+#: publishpress.php:1217
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:381
+msgid "Add New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:346
+msgid "Add New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:311
+msgid "Add New Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2207
+msgid "Add New Status"
+msgstr ""
+
+#: modules/notifications/notifications.php:384
+msgid "Add or remove notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:349
+msgid "Add or remove notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:314
+msgid "Add or remove notify users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2154
+#: modules/editorial-metadata/editorial-metadata.php:2521
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:92
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1253
+#: modules/content-overview/content-overview.php:1256
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/calendar.php:827 modules/calendar/calendar.php:3975
+#: modules/content-overview/content-overview.php:1275
+#: modules/content-overview/content-overview.php:1278
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/calendar.php:825
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "All Editorial Metadata"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr ""
+
+#: modules/notifications/notifications.php:375
+msgid "All Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:340
+msgid "All Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "All Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1266
+#: modules/editorial-metadata/editorial-metadata.php:1436
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1305
+msgid "All post types"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:203
+#: modules/editorial-comments/editorial-comments.php:208
+#: modules/editorial-comments/library/EditorialCommentsTable.php:182
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/calendar.php:2845
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:824 modules/calendar/calendar.php:3919
+#: modules/content-overview/content-overview.php:1231
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:826 modules/calendar/calendar.php:3954
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/calendar.php:828 modules/calendar/calendar.php:4002
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:209
+#: modules/editorial-comments/library/EditorialCommentsTable.php:197
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:204
+msgid "All Workflows"
+msgstr ""
+
+#: modules/notifications/notifications.php:1648
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1656
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:2575
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1021
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/calendar.php:815
+msgid "Apr"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:408
+msgid ""
+"Are you sure you want to delete the post status? All posts with this status "
+"will be assigned to the default status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:365
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:194
+msgid "Assigned"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:2594
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:529
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/calendar.php:819
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:1948 modules/calendar/calendar.php:3442
+#: modules/calendar/calendar.php:3532
+#: modules/content-overview/content-overview.php:628
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+#, fuzzy
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2068
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:944
+msgid "Available fields"
+msgstr ""
+
+#: modules/calendar/calendar.php:2132
+#, php-format
+msgid "Back %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2144
+msgid "Back 1 week"
+msgstr ""
+
+#: modules/notifications/notifications.php:392
+msgid "Back to notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:357
+msgid "Back to notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:322
+msgid "Back to notify users"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:240
+msgid "Basic Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1664
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Body"
+msgstr ""
+
+#: modules/calendar/calendar.php:169
+msgid "Calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2209
+#: modules/custom-status/custom-status.php:2077
+#: modules/content-overview/content-overview.php:1027
+#: modules/editorial-comments/editorial-comments.php:545
+msgid "Cancel"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1211
+msgid "Cannot reassign to the status you want to delete"
+msgstr ""
+
+#: modules/calendar/calendar.php:3542
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/calendar.php:3447
+#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
+#, fuzzy
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/content-overview/content-overview.php:1028
+msgid "Change"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1115
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:632
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:281
+msgid "Checkbox"
+msgstr ""
+
+#: modules/notifications/notifications.php:385
+msgid "Choose from the most used notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+msgid "Choose from the most used notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:315
+msgid "Choose from the most used notify users"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:76
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1109
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:946
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/calendar.php:1425
+msgid "Click here to Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:793 modules/calendar/calendar.php:795
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:307
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:572
+#: modules/notifications/notifications.php:942
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:568
+#: modules/notifications/notifications.php:936
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1480
+msgid "Click to toggle"
+msgstr ""
+
+#: modules/calendar/calendar.php:797
+msgid "Close"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2028
+#: modules/custom-status/custom-status.php:2160
+msgid "Color"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:230
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1105
+msgid "Comment author name field:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:628
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/calendar/calendar.php:3559
+#: modules/improved-notifications/improved-notifications.php:932
+#: libraries/Notifications/Workflow/Step/Content/Main.php:28
+msgid "Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:407 modules/calendar/calendar.php:424
+#: modules/calendar/calendar.php:425
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:140
+#: modules/content-overview/content-overview.php:507
+#: modules/content-overview/content-overview.php:524
+#: modules/content-overview/content-overview.php:525
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:820
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/calendar.php:1419
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1590
+msgid "Could not add status: "
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1765
+msgid "Could not delete the status: "
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1342
+msgid "Current week"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1964
+msgid "Custom Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1129
+msgid "Custom status doesn't exist."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:55
+msgid "Dashboard"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+#: modules/calendar/calendar.php:3431
+#: libraries/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:67
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/calendar.php:823
+msgid "Dec"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2906
+msgid "Default"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:228
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2036
+#: modules/editorial-metadata/editorial-metadata.php:2066
+#: modules/editorial-metadata/editorial-metadata.php:2397
+#: modules/editorial-metadata/editorial-metadata.php:2427
+msgid "Default option"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:103
+msgid "Default post status has been changed."
+msgstr ""
+
+#: modules/calendar/calendar.php:2551
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2039
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2400
+#: modules/editorial-metadata/editorial-metadata.php:2430
+#: modules/editorial-metadata/editorial-metadata.php:2826
+#: modules/custom-status/custom-status.php:2923
+#: modules/editorial-comments/editorial-comments.php:610
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1911
+#: modules/editorial-metadata/editorial-metadata.php:2258
+#: modules/editorial-metadata/editorial-metadata.php:2688
+#: modules/custom-status/custom-status.php:2006
+#: modules/custom-status/custom-status.php:2140
+#: modules/custom-status/custom-status.php:2777
+msgid "Description"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1888
+#: modules/calendar/calendar.php:2625 modules/dashboard/dashboard.php:367
+#: modules/dashboard/dashboard.php:390 modules/dashboard/dashboard.php:424
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1132
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/calendar.php:1412
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:268 modules/custom-status/custom-status.php:880
+#: modules/custom-status/custom-status.php:994
+msgid "Draft"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1994
+#: modules/editorial-metadata/editorial-metadata.php:2357
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:282
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:220
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:701
+msgid "E-mails"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2806
+#: modules/custom-status/custom-status.php:2919
+#: modules/calendar/calendar.php:1803 modules/calendar/calendar.php:3464
+#: modules/content-overview/content-overview.php:1878
+#: modules/editorial-comments/editorial-comments.php:599
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Edit Editorial Metadata"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:286
+msgid ""
+"Edit Flow should not be used alongside PublishPress. If you want to use it, "
+"deactive PublishPress first."
+msgstr ""
+
+#: publishpress.php:1218
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:378
+msgid "Edit Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:343
+msgid "Edit Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:308
+msgid "Edit Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:98
+msgid "Edit Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:1803
+msgid "Edit this item"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1874
+#: modules/dashboard/dashboard.php:298
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2087
+#: modules/notifications/notifications.php:2144
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:933
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:61
+#: modules/editorial-comments/editorial-comments.php:231
+#: modules/editorial-comments/editorial-comments.php:232
+#: modules/editorial-comments/editorial-comments.php:424
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:94
+#: modules/editorial-metadata/editorial-metadata.php:1773
+#: modules/editorial-metadata/editorial-metadata.php:1774
+msgid "Editorial Metadata"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:400
+#: modules/improved-notifications/improved-notifications.php:1108
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/calendar.php:1392
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1398
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1135
+#: libraries/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1640
+#| msgid "Email: "
+msgid "Email from:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1098
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1889
+#: modules/calendar/calendar.php:2626 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:218
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/calendar.php:1360
+#| msgid "End Date"
+msgid "End date"
+msgstr ""
+
+#: modules/notifications/notifications.php:635
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1999
+#: modules/editorial-metadata/editorial-metadata.php:2360
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1367
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1644
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1718
+msgid "Error updating post status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1530
+#: modules/editorial-metadata/editorial-metadata.php:1578
+msgid "Error updating term."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1181
+msgid "Error while updating the status"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:172
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:49
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/calendar.php:813
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:212
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:939
+msgid "field"
+msgstr ""
+
+#: modules/calendar/calendar.php:2559
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:291
+msgid "File info"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1143
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:211
+msgid "Filter"
+msgstr ""
+
+#: modules/notifications/notifications.php:388
+msgid "Filter by notify email"
+msgstr ""
+
+#: modules/notifications/notifications.php:353
+msgid "Filter by notify role"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+msgid "Filter by notify user"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:58
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1959
+#: modules/editorial-metadata/editorial-metadata.php:2323
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:207
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1133
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:1386
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1352
+msgid "Five months ago"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:786
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:936
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/calendar.php:2098
+#, php-format
+msgid "Forward %d weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:2083
+msgid "Forward 1 week"
+msgstr ""
+
+#: modules/calendar/calendar.php:1384
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1350
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1371
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:810
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2809
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:195
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2046
+#: modules/custom-status/custom-status.php:2174
+#: modules/custom-status/custom-status.php:2778
+msgid "Icon"
+msgstr ""
+
+#: modules/calendar/calendar.php:3426
+#: libraries/Notifications/Table/Workflows.php:143
+#: libraries/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:187
+msgid "Idea proposed; waiting for acceptance."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2461
+#: modules/editorial-metadata/editorial-metadata.php:2816
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2487
+msgid ""
+"If enabled, this metadata will be available as filter option on the Content "
+"Overview screen."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2513
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:204
+msgid "In Progress"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1987
+#: modules/editorial-metadata/editorial-metadata.php:2352
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2296
+msgid "Indicate the type of editorial metadata."
+msgstr ""
+
+#: modules/calendar/calendar.php:1493
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: modules/debug/debug.php:364
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:722
+#: modules/editorial-comments/editorial-comments.php:863
+#: modules/editorial-comments/editorial-comments.php:995
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/calendar.php:3166
+msgid "Invalid date"
+msgstr ""
+
+#: modules/calendar/calendar.php:3146
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/calendar.php:3137
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/calendar.php:3725
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/calendar.php:3701
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1497
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/calendar.php:812
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/calendar.php:818
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/calendar.php:817
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:630
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/calendar.php:792
+msgid "Loading item..."
+msgstr ""
+
+#: modules/calendar/calendar.php:791
+#: modules/notifications-log/notifications-log.php:209
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:302
+msgid "Log file not found."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2813
+msgid "Make Hidden"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Viewable"
+msgstr ""
+
+#: modules/calendar/calendar.php:814
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2567
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/calendar/calendar.php:816
+msgid "May"
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:945
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:504
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1459
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:108
+msgid "Metadata term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Metadata term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2687
+msgid "Metadata Type"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:350
+msgid "minutes"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/calendar.php:806
+msgid "Mon"
+msgstr ""
+
+#: modules/notifications/notifications.php:391
+msgid "Most Used Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:356
+msgid "Most Used Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:321
+msgid "Most Used Notify User"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1886
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:794
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2332
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:405
+#: modules/improved-notifications/improved-notifications.php:1096
+#: modules/improved-notifications/improved-notifications.php:1113
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:182 modules/dashboard/dashboard.php:345
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2227
+#: modules/editorial-metadata/editorial-metadata.php:2685
+#: modules/custom-status/custom-status.php:2122
+#: modules/custom-status/custom-status.php:2776
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1295
+#: modules/editorial-metadata/editorial-metadata.php:1468
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1305
+#: modules/editorial-metadata/editorial-metadata.php:1312
+#: modules/editorial-metadata/editorial-metadata.php:1481
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1288
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1473
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "New Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:382
+msgid "New Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:347
+msgid "New Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:312
+msgid "New Notify User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+msgid "New post status: %s"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1130
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/calendar.php:1394
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2086
+#: modules/editorial-metadata/editorial-metadata.php:2110
+#: modules/editorial-metadata/editorial-metadata.php:2134
+#: modules/editorial-metadata/editorial-metadata.php:2445
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2498
+#: modules/editorial-metadata/editorial-metadata.php:2751
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:704
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2800
+msgid "No custom statuses found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3660
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:159
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2782
+msgid "No editorial metadata found."
+msgstr ""
+
+#: modules/calendar/calendar.php:3157
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1222 publishpress.php:1223
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:282
+msgid "No notifications found."
+msgstr ""
+
+#: modules/notifications/notifications.php:386
+#: modules/notifications/notifications.php:387
+msgid "No notify emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:351
+#: modules/notifications/notifications.php:352
+msgid "No notify roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:316
+#: modules/notifications/notifications.php:317
+msgid "No notify users"
+msgstr ""
+
+#: modules/calendar/calendar.php:832
+msgid "No terms"
+msgstr ""
+
+#: libraries/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:714
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:852
+#: modules/editorial-comments/editorial-comments.php:984
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/calendar/calendar.php:1783
+#: modules/content-overview/content-overview.php:1772
+msgid "None"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:173 modules/dashboard/dashboard.php:352
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1216 publishpress.php:1221
+#: modules/notifications-log/notifications-log.php:208
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1215 publishpress.php:1220
+#: modules/notifications/notifications.php:71
+#: modules/notifications/notifications.php:599
+msgid "Notifications"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:74
+#: modules/notifications-log/notifications-log.php:261
+#: modules/notifications-log/notifications-log.php:484
+#: modules/notifications-log/notifications-log.php:485
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:369
+#: modules/notifications/notifications.php:372
+#: modules/notifications/notifications.php:389
+#: modules/notifications/notifications.php:390
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:371
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:941
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:305
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+#: modules/notifications/notifications.php:354
+#: modules/notifications/notifications.php:355
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:299
+#: modules/notifications/notifications.php:302
+#: modules/notifications/notifications.php:319
+#: modules/notifications/notifications.php:320
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:301
+msgid "Notify Users"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:271
+msgid "Notify when content is published"
+msgstr ""
+
+#: modules/calendar/calendar.php:822
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+msgid "Number"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:688
+msgid "Number of Columns: "
+msgstr ""
+
+#: modules/calendar/calendar.php:821
+msgid "Oct"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:940
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/calendar.php:1377
+#| msgid "One Comment"
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/calendar.php:1344
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1365
+msgid "One week"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2027
+#: modules/editorial-metadata/editorial-metadata.php:2058
+#: modules/editorial-metadata/editorial-metadata.php:2388
+#: modules/editorial-metadata/editorial-metadata.php:2419
+msgid "Option label"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2021
+#: modules/editorial-metadata/editorial-metadata.php:2052
+#: modules/editorial-metadata/editorial-metadata.php:2382
+#: modules/editorial-metadata/editorial-metadata.php:2413
+msgid "Option value"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2104
+msgid "Options"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:118
+#: modules/custom-status/custom-status.php:111
+#: modules/calendar/calendar.php:203
+#: modules/editorial-comments/editorial-comments.php:80
+#: modules/notifications/notifications.php:92
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Paragraph"
+msgstr ""
+
+#: modules/notifications/notifications.php:376
+msgid "Parent Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email:"
+msgstr ""
+
+#: modules/notifications/notifications.php:341
+msgid "Parent Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role:"
+msgstr ""
+
+#: modules/notifications/notifications.php:306
+msgid "Parent Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User:"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:271
+msgid "Pending Review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:899
+msgid "Pending review"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:184
+msgid "Pitch"
+msgstr ""
+
+#: publishpress.php:547
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:631
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:745
+#: modules/editorial-comments/editorial-comments.php:909
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Please enter a name for the editorial metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1275
+msgid "Please enter a name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1532
+#: modules/custom-status/custom-status.php:1642
+msgid "Please enter a name for the status"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+msgid "Please enter a slug for the editorial metadata."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1450
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1536
+#: modules/custom-status/custom-status.php:1646
+msgid "Please enter a valid, non-numeric name for the status."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2221
+msgid ""
+"Please note that checking a box will apply all statuses to that post type."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1322
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/calendar.php:804
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgid "Popular Editorial Metadata"
+msgstr ""
+
+#: modules/notifications/notifications.php:374
+msgid "Popular Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:339
+msgid "Popular Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:304
+msgid "Popular Notify Users"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2684
+#: modules/custom-status/custom-status.php:2775
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:232
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/calendar.php:3801
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/calendar.php:3794
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:629
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:186
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:637
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:197
+msgid "Post idea assigned to writer."
+msgstr ""
+
+#: modules/calendar/calendar.php:3152
+msgid "Post not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:2790 modules/calendar/calendar.php:3437
+#: modules/calendar/calendar.php:3517
+msgid "Post Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:100
+msgid "Post status created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:105
+msgid "Post status deleted."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:102
+msgid "Post status doesn't exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:101
+#: modules/custom-status/custom-status.php:104
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:338
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:1956 modules/calendar/calendar.php:3421
+#: modules/content-overview/content-overview.php:627
+msgid "Post Type"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/calendar.php:802
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/calendar.php:803
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2686
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/calendar.php:2519
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:297
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:210
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/calendar.php:2543
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/calendar/calendar.php:1827 modules/calendar/calendar.php:3481
+#: modules/content-overview/content-overview.php:1919
+msgid "Preview"
+msgstr ""
+
+#: modules/calendar/calendar.php:1824
+#: modules/content-overview/content-overview.php:1916
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1169
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:270
+msgid "Private"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:937
+msgid "Privately Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:3523
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:267 modules/custom-status/custom-status.php:956
+#: modules/calendar/calendar.php:1969
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/calendar.php:2789
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:59 modules/settings/settings.php:266
+#: modules/calendar/calendar.php:1331
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:227 modules/debug/debug.php:290
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+
+#: publishpress.php:1254
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: modules/settings/settings.php:139
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:937
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/calendar.php:2644
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1691
+msgid "Register metadata for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:207
+#: modules/editorial-comments/editorial-comments.php:686
+msgid "Remove"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:590
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2137
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/calendar.php:2075
+#: modules/content-overview/content-overview.php:1024
+#: modules/content-overview/content-overview.php:1145
+msgid "Reset"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1239
+msgid "Restricted status "
+msgstr ""
+
+#: modules/reviews/reviews.php:65
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:683
+msgid "Role"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:147
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:100
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:680
+#: libraries/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/calendar.php:811
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/calendar.php:798 modules/calendar/calendar.php:1853
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/calendar.php:1847
+#, php-format
+msgid "Save “%s”"
+msgstr ""
+
+#: modules/calendar/calendar.php:800
+msgid "Save and edit"
+msgstr ""
+
+#: modules/calendar/calendar.php:799
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:269 modules/custom-status/custom-status.php:918
+#: modules/calendar/calendar.php:1964
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:270
+msgid "Screen Layout"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1048
+msgid "Search"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1047
+#: modules/content-overview/content-overview.php:1322
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:280
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgid "Search Editorial Metadata"
+msgstr ""
+
+#: publishpress.php:1219
+msgid "Search Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:373
+msgid "Search Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:338
+msgid "Search Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+msgid "Search Notify Users"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:268
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:924
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2060
+#: modules/custom-status/custom-status.php:2189
+msgid "Select Icon"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1947
+#: modules/editorial-metadata/editorial-metadata.php:2309
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1965
+#: modules/editorial-metadata/editorial-metadata.php:2328
+msgid "Select Type"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/calendar.php:820
+msgid "Sep"
+msgstr ""
+
+#: modules/notifications/notifications.php:383
+msgid "Separate notify emails with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:348
+msgid "Separate notify roles with commas"
+msgstr ""
+
+#: modules/notifications/notifications.php:313
+msgid "Separate notify users with commas"
+msgstr ""
+
+#: modules/settings/settings.php:140
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:122
+msgid "settings"
+msgstr ""
+
+#: modules/calendar/calendar.php:1390
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:938
+msgid "shortcode"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2106
+#: modules/editorial-metadata/editorial-metadata.php:2469
+msgid "Show as Content Overview filters"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:982
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2130
+#: modules/editorial-metadata/editorial-metadata.php:2495
+msgid "Show on Content Calendar form"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2178
+#: modules/editorial-metadata/editorial-metadata.php:2544
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/notifications/notifications.php:1632
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1862
+msgid "Show the status dropdown menu on the post editing screen:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1969
+#: modules/editorial-metadata/editorial-metadata.php:2331
+msgid "Single Select"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/calendar.php:1388
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1354
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Size"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1898
+#: modules/editorial-metadata/editorial-metadata.php:2241
+#: modules/custom-status/custom-status.php:1985
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1778
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:315
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1047
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1753
+msgid "Sorry, you do not have permission to edit custom statuses."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:735
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1026
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:878
+#: modules/editorial-comments/editorial-comments.php:1010
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:896
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:1338
+#| msgid "Start Date:"
+msgid "Start date"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1449
+#: modules/content-overview/content-overview.php:626
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1760
+msgid "Status does not exist."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1553
+#: modules/custom-status/custom-status.php:1663
+msgid "Status name cannot exceed 20 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1686
+msgid "Status name conflicts with existing status. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1561
+#: modules/custom-status/custom-status.php:1677
+msgid "Status name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1568
+#: modules/custom-status/custom-status.php:1693
+msgid "Status name is restricted. Please choose another name."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:106
+msgid "Status order updated."
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2031
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:82
+#: modules/custom-status/custom-status.php:303
+msgid "Statuses"
+msgstr ""
+
+#: modules/calendar/calendar.php:2535
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:935
+msgid "Stop notifying me"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Content/Main.php:52
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:812
+msgid "Subject:"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:234
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/calendar.php:1333
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/calendar/calendar.php:2527
+msgid "Subscription in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/calendar.php:805
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/calendar.php:3452
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/calendar.php:3551
+msgid "Tags"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:305
+msgid "Taxonomies to show:"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:444
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:445
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr ""
+
+#: modules/calendar/calendar.php:1396
+msgid "Ten months"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Term order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Term visibility changed."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1603
+#: modules/custom-status/custom-status.php:1820
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2250
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2040
+#: modules/custom-status/custom-status.php:2169
+msgid "The color is used to identify the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1919
+#: modules/editorial-metadata/editorial-metadata.php:2267
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2019
+#: modules/custom-status/custom-status.php:2152
+msgid ""
+"The description is primarily for administrative use, to give you some "
+"context on what the custom status is to be used for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:51
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2066
+#: modules/custom-status/custom-status.php:2195
+msgid "The icon is used to visually represent the status."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1933
+msgid "The metadata type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1893
+#: modules/editorial-metadata/editorial-metadata.php:2236
+msgid "The name is for labeling the metadata field."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1976
+#: modules/custom-status/custom-status.php:2132
+msgid "The name is used to identify the status. (Max: 20 characters)"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:409
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/calendar/calendar.php:2611
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/calendar.php:3671
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:4150
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1903
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1997
+msgid ""
+"The slug is the unique ID for the status and is changed when the name is "
+"changed."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1539
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:832
+#: modules/editorial-comments/editorial-comments.php:962
+#: modules/editorial-comments/editorial-comments.php:1072
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:187
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2042
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1055
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:830
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2159
+#: modules/editorial-metadata/editorial-metadata.php:2525
+msgid "This metadata will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2183
+#: modules/editorial-metadata/editorial-metadata.php:2548
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:437
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:304
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:354
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:661
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+
+#: modules/calendar/calendar.php:1382
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1348
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1369
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/calendar.php:809
+msgid "Thu"
+msgstr ""
+
+#: modules/calendar/calendar.php:3512
+#: modules/content-overview/content-overview.php:625
+#: libraries/Notifications/Table/Workflows.php:142
+#: libraries/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:1388
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/calendar.php:831 modules/calendar/calendar.php:2123
+msgid "Today"
+msgstr ""
+
+#: modules/calendar/calendar.php:2117
+#, php-format
+msgid "Today is %s"
+msgstr ""
+
+#: common/php/class-module.php:272 modules/calendar/calendar.php:1813
+#: modules/calendar/calendar.php:3471
+#: modules/content-overview/content-overview.php:1890
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/calendar.php:807
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/calendar.php:1400
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1380
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/calendar.php:1346
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/calendar.php:1367
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1928
+#: modules/editorial-metadata/editorial-metadata.php:2275
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1456
+#: modules/content-overview/content-overview.php:1075
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:164
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/calendar.php:796 modules/calendar/calendar.php:3677
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "Update Editorial Metadata"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2206
+msgid "Update Metadata Term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr ""
+
+#: modules/notifications/notifications.php:380
+msgid "Update Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:345
+msgid "Update Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:310
+msgid "Update Notify User"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:2073
+msgid "Update Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:191
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:157
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:1855
+msgid "Use on these post types:"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "User"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:934
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2301
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1136
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1131
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:691
+#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/calendar/calendar.php:1837 modules/calendar/calendar.php:3478
+#: modules/content-overview/content-overview.php:1906
+msgid "View"
+msgstr ""
+
+#: modules/calendar/calendar.php:1831
+#: modules/content-overview/content-overview.php:1900
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: modules/calendar/calendar.php:3936
+msgid "View all categories"
+msgstr ""
+
+#: modules/notifications/notifications.php:379
+msgid "View Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:344
+msgid "View Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:309
+msgid "View Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2082
+#: modules/editorial-metadata/editorial-metadata.php:2442
+#: modules/editorial-metadata/editorial-metadata.php:2689
+msgid "Viewable"
+msgstr ""
+
+#: publishpress.php:1264
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/calendar.php:808
+msgid "Wed"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:218
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:806
+msgid "What to say?"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:210
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:776
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr ""
+
+#: libraries/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:796
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:69
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:1917
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:935
+msgid "Workflow"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:738
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1114
+msgid "Workflows"
+msgstr ""
+
+#: modules/custom-status/custom-status.php:207
+msgid "Writer is working on the post."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:2087
+#: modules/editorial-metadata/editorial-metadata.php:2111
+#: modules/editorial-metadata/editorial-metadata.php:2135
+#: modules/editorial-metadata/editorial-metadata.php:2446
+#: modules/editorial-metadata/editorial-metadata.php:2473
+#: modules/editorial-metadata/editorial-metadata.php:2499
+#: modules/editorial-metadata/editorial-metadata.php:2749
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1050
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:928
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:499
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: publishpress.php:633
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: libraries/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:128
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.mo b/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.mo
new file mode 100644
index 000000000..8bf0c6219
Binary files /dev/null and b/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.mo differ
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.po b/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.po
new file mode 100644
index 000000000..13d6e8aa1
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/languages/publishpress-tr_TR.po
@@ -0,0 +1,3019 @@
+# Copyright (C) 2024 PublishPress
+# This file is distributed under the same license as the PublishPress Planner plugin.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress Planner 4.0.2\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n"
+"POT-Creation-Date: 2024-01-23 11:07+0000\n"
+"PO-Revision-Date: 2024-03-27 22:00+0300\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: tr_TR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.4.2\n"
+"X-Domain: publishpress\n"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:257
+msgid " Scheduled"
+msgstr " Planlandı"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:255
+msgid " Scheduled, but late"
+msgstr " Planlandı, ancak gecikti"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr "\"Beni bilgilendir\""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1951
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr " %4$s %5$s tarafından %1$s #%2$s “%3$s” çöp kutusuna taşındı"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1998
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr " %4$s %5$s tarafından %1$s #%2$s “%3$s” yayınlandı"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1968
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr "%1$s #%2$s \"%3$s\" çöp kutusundan %4$s %5$s tarafından geri yüklendi"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2015
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr " %4$s %5$s tarafından %1$s #%2$s “%3$s” yayınlanmadı"
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2114
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr "%1$s (%2$s ) %4$s te %3$s söyledi:"
+
+#: modules/content-overview/content-overview.php:1012
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to %2$s"
+msgstr " %1$s den %2$s"
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2056
+#, php-format
+msgid "%1$s => %2$s"
+msgstr "%1$s => %2$s"
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1892
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#: modules/editorial-comments/library/EditorialCommentsTable.php:336
+#, php-format
+msgid "%1$s at %2$s"
+msgstr "%2$s de %1$s"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr "%1$s en son %2$s tarihinde güncellendi"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] "%d Rol"
+msgstr[1] "%d Rolleri"
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] "%d Kullanıcı"
+msgstr[1] "%d Kullanıcılar"
+
+#: modules/calendar/calendar.php:835
+msgid "%d week"
+msgstr "%d hafta"
+
+#: modules/calendar/calendar.php:836
+msgid "%d weeks"
+msgstr "%d haftalar"
+
+#: modules/notifications-log/notifications-log.php:272
+#, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] "%s bildirimi bulundu."
+msgstr[1] "%s bildirimleri bulundu."
+
+#: modules/calendar/calendar.php:4163
+#, php-format
+msgid "%s week"
+msgid_plural "%s weeks"
+msgstr[0] "%s hafta"
+msgstr[1] "%s hafta"
+
+#: modules/calendar/calendar.php:2175
+msgid "«"
+msgstr "«"
+
+#: modules/calendar/calendar.php:2188
+msgid "‹"
+msgstr "‹"
+
+#: modules/calendar/calendar.php:2144
+msgid "»"
+msgstr "»"
+
+#: modules/calendar/calendar.php:2127
+msgid "›"
+msgstr "›"
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr "(başlık yok)"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr "- herhangi bir durum -"
+
+#: modules/calendar/calendar.php:212
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on Github"
+"a>
"
+msgstr ""
+"Daha fazla bilgi için:
Takvim Dokümantasyonu
PublishPress Github da"
+"a>
"
+
+#: modules/editorial-comments/editorial-comments.php:88
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Daha fazla bilgi için:
Editoryal Yorumlar "
+"Dokümantasyonu
PublishPress Github da
"
+
+#: modules/editorial-metadata/editorial-metadata.php:126
+msgid ""
+"For more information:
Editorial Metadata "
+"Documentation
PublishPress on Github
"
+msgstr ""
+"Daha fazla bilgi için:
Editoryal Metadata "
+"Dokümantasyonu
PublishPress Githubda
"
+
+#: modules/notifications/notifications.php:99
+msgid ""
+"For more information:
Notifications Documentation "
+"p>
PublishPress on "
+"Github
"
+msgstr ""
+"Daha fazla bilgi için:
Bildirim Dokümantasyonu "
+"p>
PublishPress "
+"Githubda
"
+
+#: modules/editorial-comments/editorial-comments.php:83
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+"Editoryal yorumlar, aşırı e-posta yükünü azaltmanıza ve konuşmayı önemli "
+"olan yere yakın tutmanıza yardımcı olur: yani kendi içeriğinize. Bir blog "
+"yazısının sonunda bulduğunuza benzer şekilde, yöneticideki konu bazlı "
+"yorumlar, yazarların ve editörlerin özel olarak geri bildirim bırakmasına ve "
+"yayınlanmadan önce nelerin değiştirilmesi gerektiğini tartışmasına olanak "
+"tanır.
Devam etmekte olan hikayeyi görüntüleme erişimi olan herkes "
+"aynı zamanda bu hikaye hakkında yorum yapabilecektir. Bildirimleri "
+"etkinleştirdiyseniz, gönderiyi takip edenler her yorum bırakıldığında bir e-"
+"posta alacaktır.
"
+
+#: modules/editorial-metadata/editorial-metadata.php:121
+msgid ""
+"Keep track of important details about your content with editorial "
+"metadata. This feature allows you to create as many date, text, number, etc. "
+"fields as you like, and then use them to store information like contact "
+"details or the location of an interview.
Once you’ve set your fields "
+"up, editorial metadata integrates with both the calendar and the content "
+"overview. Make an editorial metadata item visible to have it appear to the "
+"rest of your team. Keep it hidden to restrict the information between the "
+"writer and their editor.
"
+msgstr ""
+"Editoryal metaverilerle içeriğinizle ilgili önemli ayrıntıları takip "
+"edin. Bu özellik, istediğiniz kadar tarih, metin, sayı vb. alan "
+"oluşturmanıza ve ardından bunları iletişim bilgileri veya bir röportajın "
+"konumu gibi bilgileri depolamak için kullanmanıza olanak tanır."
+"p>
Alanlarınızı ayarladıktan sonra, editoryal metaveriler hem takvim hem "
+"de içeriğe genel bakış ile entegre olur. Ekibinizin geri kalanına görünmesi "
+"için bir editoryal meta veri öğesini görünür hale getirin. Bilgileri yazar "
+"ve onların editörü arasında kısıtlamak için gizli tutun.
"
+
+#: modules/notifications/notifications.php:94
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+"Bildirimler, en önemli içeriklerinizdeki zaman içindeki gelişmelerden "
+"haberdar olmanızı sağlar. Kullanıcılar tek tek veya rol seçerek bir "
+"gönderiyle ilgili bildirimlere abone olabilir.
Etkinleştirildiğinde, "
+"bir gönderinin durumu değiştiğinde veya bir yazar ya da editör tarafından "
+"editoryal bir yorum bırakıldığında bildirimler gönderilebilir.
"
+
+#: modules/calendar/calendar.php:207
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+"Takvim, içeriğinizi hafta hafta veya ay ay görüntülemek için kullanışlı "
+"bir araçtır. Hangi hikayelerin zamanında yayınlanma yolunda olduğunu ve "
+"hangilerinin ekstra çaba gerektireceğini hızlıca görün.
"
+
+#: modules/notifications/notifications.php:2064
+#, php-format
+msgid "== %s Details =="
+msgstr "== %s Ayrıntılar =="
+
+#: modules/notifications/notifications.php:2083
+#: modules/notifications/notifications.php:2136
+msgid "== Actions =="
+msgstr "== Eylemler =="
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1991
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr "[%1$s] %2$s Yayınlandı: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1961
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr "[%1$s] %2$s Geri yüklendi (Çöp Kutusundan): \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2025
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr "[%1$s] %2$s \"%3$s\" için Durum Değiştirildi"
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1944
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr "[%1$s] %2$s Çöpe atıldı: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2008
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr "[%1$s] %2$s Yayınlanmadı: \"%3$s\""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:1927
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr "[%1$s] Yeni %2$s Oluşturuldu: \"%3$s\""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2100
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr "[%1$s] Yeni Editoryal Yorum: \"%2$s\""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:1934
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr " %4$s %5$s tarafından yeni bir %1$s (#%2$s \"%3$s\" ) oluşturuldu"
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2107
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr " %3$s #%1$s “%2$s” e yeni bir editoryal yorum eklenti"
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr "Hakkında"
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr "Erişim reddedildi"
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr "Tek seferlik eylem bulunamadı."
+
+#: modules/notifications/notifications.php:676
+msgid "Active Notifications"
+msgstr "Bildirimleri Etkinleştir"
+
+#: modules/notifications/notifications.php:1785
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+"Yeni bir Bildirim İş Akışı eklerken Taksonomi içerik filtresi tarafından "
+"yüklenmemesi gereken, virgülle ayrılmış taksonomi-sluglar listesini ekleyin."
+
+#: modules/editorial-comments/editorial-comments.php:552
+#: modules/editorial-comments/editorial-comments.php:556
+msgid "Add an editorial comment"
+msgstr "Bir editoryal bir yorum ekleyin"
+
+#: modules/editorial-metadata/editorial-metadata.php:2085
+#: modules/editorial-metadata/editorial-metadata.php:2446
+msgid "Add Another Option"
+msgstr "Başka Bir Seçenek Ekle"
+
+#: modules/editorial-comments/editorial-comments.php:574
+msgid "Add Comment"
+msgstr "Yorum Ekle"
+
+#: modules/calendar/calendar.php:807
+#, php-format
+msgid "Add content for %s"
+msgstr " %s için içerik ekleyin"
+
+#: modules/notifications/notifications.php:2085
+#: modules/notifications/notifications.php:2142
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr "Editoryal yorum ekle: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:1799
+msgid "Add New"
+msgstr "Yeni Ekle"
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "Add New Editorial Metadata"
+msgstr "Yeni Editoryal Meta Veriler Ekle"
+
+#: modules/editorial-metadata/editorial-metadata.php:2581
+msgid "Add New Metadata Term"
+msgstr "Yeni Meta Veri Terimi Ekle"
+
+#: publishpress.php:1310
+msgid "Add New Notification"
+msgstr "Yeni Bildirim Ekle"
+
+#: modules/notifications/notifications.php:382
+msgid "Add New Notify Email"
+msgstr "Bildirim yapılacak yeni bir e-posta ekle"
+
+#: modules/notifications/notifications.php:347
+msgid "Add New Notify Role"
+msgstr "Bildirim yapılacak yeni rolü ekle"
+
+#: modules/notifications/notifications.php:312
+msgid "Add New Notify User"
+msgstr "Yeni Bildirim Yapılacak Kullanıcı Ekle"
+
+#: modules/notifications/notifications.php:385
+msgid "Add or remove notify emails"
+msgstr "Bildirim yapılacak e-postaları ekle veya kaldır"
+
+#: modules/notifications/notifications.php:350
+msgid "Add or remove notify roles"
+msgstr "Bildirim yapılacak rolleri ekle veya kaldır"
+
+#: modules/notifications/notifications.php:315
+msgid "Add or remove notify users"
+msgstr "Bildirim yapılacak kullanıcıları ekle veya kaldır"
+
+#: modules/editorial-metadata/editorial-metadata.php:2165
+#: modules/editorial-metadata/editorial-metadata.php:2532
+msgid "Add to post types"
+msgstr "Gönderi türlerine ekle"
+
+#: modules/improved-notifications/improved-notifications.php:94
+msgid "Advanced Notifications"
+msgstr "Gelişmiş Bildirimler"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:511
+msgid "All"
+msgstr "Tümü"
+
+#: modules/content-overview/content-overview.php:1278
+#: modules/content-overview/content-overview.php:1281
+#, php-format
+msgid "All %s"
+msgstr "Tüm %s"
+
+#: modules/notifications-log/notifications-log.php:206
+msgid "All Actions"
+msgstr "Tüm Eylemler"
+
+#: modules/calendar/calendar.php:833 modules/calendar/calendar.php:4111
+#: modules/content-overview/content-overview.php:1300
+#: modules/content-overview/content-overview.php:1303
+msgid "All authors"
+msgstr "Tüm Yazarlar"
+
+#: modules/calendar/calendar.php:831
+msgid "All categories"
+msgstr "Tüm kategoriler"
+
+#: modules/notifications-log/notifications-log.php:207
+msgid "All Channels"
+msgstr "Tüm Kanallar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:601
+msgid "All channels"
+msgstr "Tüm kanallar"
+
+#: modules/editorial-metadata/editorial-metadata.php:450
+msgid "All Editorial Metadata"
+msgstr "Tüm Editoryal Metaveriler"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:584
+msgid "All events"
+msgstr "Bütün etkinlikler"
+
+#: modules/notifications/notifications.php:376
+msgid "All Notify Emails"
+msgstr "Tüm Bildirim Yapılan E-postaları"
+
+#: modules/notifications/notifications.php:341
+msgid "All Notify Roles"
+msgstr "Tüm Bildirim Yapılan Rolleri"
+
+#: modules/notifications/notifications.php:306
+msgid "All Notify Users"
+msgstr "Tüm Bildirim Yapılan Kullanıcıları"
+
+#: modules/editorial-metadata/editorial-metadata.php:1268
+#: modules/editorial-metadata/editorial-metadata.php:1438
+msgid "All options value and labels are required."
+msgstr "Tüm seçenek değerleri ve etiketler gereklidir."
+
+#: modules/content-overview/content-overview.php:1330
+msgid "All post types"
+msgstr "Tüm gönderi türleri"
+
+#: modules/notifications-log/notifications-log.php:204
+#: modules/editorial-comments/editorial-comments.php:212
+#: modules/editorial-comments/library/EditorialCommentsTable.php:181
+msgid "All Posts"
+msgstr "Tüm Yazılar"
+
+#: modules/calendar/calendar.php:2973
+msgid "All posts"
+msgstr "Tüm gönderiler"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:634
+msgid "All Receivers"
+msgstr "Tüm Alıcılar"
+
+#: modules/notifications-log/notifications-log.php:208
+msgid "All Statuses"
+msgstr "Tüm Durumlar"
+
+#: modules/calendar/calendar.php:830 modules/calendar/calendar.php:4055
+#: modules/content-overview/content-overview.php:1256
+msgid "All statuses"
+msgstr "Tüm durumlar"
+
+#: modules/calendar/calendar.php:832 modules/calendar/calendar.php:4090
+msgid "All tags"
+msgstr "Tüm Etiketler"
+
+#: modules/calendar/calendar.php:834 modules/calendar/calendar.php:4138
+msgid "All types"
+msgstr "Tüm Türler"
+
+#: modules/editorial-comments/editorial-comments.php:213
+#: modules/editorial-comments/library/EditorialCommentsTable.php:196
+msgid "All Users"
+msgstr "Tüm Kullanıcılar"
+
+#: modules/notifications-log/notifications-log.php:205
+msgid "All Workflows"
+msgstr "Tüm İş Akışları"
+
+#: modules/calendar/calendar.php:2577
+msgid "Allow public access to subscriptions in iCal or Google Calendar"
+msgstr "ICal veya Google Takvimdeki aboneliklere herkesin erişimine izin ver"
+
+#: modules/notifications/notifications.php:1649
+msgid "Always notify the author of the content:"
+msgstr "Her zaman içeriğin yazarını bilgilendirin:"
+
+#: modules/notifications/notifications.php:1657
+msgid "Always notify users who have edited the content:"
+msgstr "İçeriği düzenleyen kullanıcıları her zaman bilgilendirin:"
+
+#: modules/calendar/calendar.php:2625
+msgid "Always show complete post titles"
+msgstr "Her zaman tamamlanmış gönderi başlıklarını göster"
+
+#: modules/content-overview/content-overview.php:1022
+msgid "Apply"
+msgstr "Uygula"
+
+#: modules/calendar/calendar.php:821
+msgid "Apr"
+msgstr "Nisan"
+
+#: modules/editorial-metadata/editorial-metadata.php:367
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+"Bu terimi silmek istediğinizden emin misiniz? Bu terim için tüm meta veriler "
+"kalacak ancak bu terim yeniden eklenmediği sürece görünmeyecektir."
+
+#: modules/editorial-metadata/editorial-metadata.php:217
+msgid "Assignment"
+msgstr "Ödev"
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr "Eşzamansız Bildirimler"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "asynchronous"
+msgstr "eşzamansız"
+
+#: modules/calendar/calendar.php:2644
+msgid "At least one post type must be selected"
+msgstr "En az bir gönderi türü seçilmesi gerekir"
+
+#: modules/editorial-comments/editorial-comments.php:562
+msgid "Attach file"
+msgstr "Dosya eki"
+
+#: modules/calendar/calendar.php:825
+msgid "Aug"
+msgstr "Ağustos"
+
+#: modules/calendar/calendar.php:1983 modules/calendar/calendar.php:3578
+#: modules/calendar/calendar.php:3668
+#: modules/content-overview/content-overview.php:629
+#: modules/editorial-comments/library/EditorialCommentsTable.php:228
+msgid "Author"
+msgid_plural "Authors"
+msgstr[0] "Yazar"
+msgstr[1] "Yazarlar"
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2069
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr "Yazar: %1$s (%2$s )"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr "Yazarlar"
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr "İçeriği yazan yazarlar"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr "Otomatik taslak kaydedici"
+
+#: modules/improved-notifications/improved-notifications.php:983
+msgid "Available fields"
+msgstr "Seçilebilir Kutular"
+
+#: modules/calendar/calendar.php:2167
+msgid "Back %d weeks"
+msgstr " %d hafta geri"
+
+#: modules/calendar/calendar.php:2179
+msgid "Back 1 week"
+msgstr "1 hafta geri"
+
+#: modules/notifications/notifications.php:393
+msgid "Back to notify emails"
+msgstr "E-postaları bildirimlerine geri dön"
+
+#: modules/notifications/notifications.php:358
+msgid "Back to notify roles"
+msgstr "Rol bildirimlerine geri dön"
+
+#: modules/notifications/notifications.php:323
+msgid "Back to notify users"
+msgstr "Kullanıcı bildimlerine geri dönün"
+
+#: modules/modules-settings/modules-settings.php:241
+msgid "Basic Notifications"
+msgstr "Temel Bildirimler"
+
+#: modules/notifications/notifications.php:1665
+msgid "Blacklisted taxonomies for Notifications"
+msgstr "Bildirimler için kara listeye alınmış taksonomiler"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+msgid "Blog ID: %d"
+msgstr "Blog ID: %d"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:377
+msgid "Blog: "
+msgstr "Blog: "
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr "Gövde"
+
+#: modules/editorial-metadata/editorial-metadata.php:2220
+#: modules/content-overview/content-overview.php:1028
+#: modules/editorial-comments/editorial-comments.php:578
+msgid "Cancel"
+msgstr "İptal"
+
+#: modules/calendar/calendar.php:3678
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr "Kategoriler"
+
+#: modules/calendar/calendar.php:3583
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] "Kategori"
+msgstr[1] "Kategoriler"
+
+#: modules/content-overview/content-overview.php:1029
+msgid "Change"
+msgstr "Değiştir"
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:408
+#: modules/improved-notifications/improved-notifications.php:1154
+msgid "Channels"
+msgstr "Kanallar"
+
+#: publishpress.php:669
+msgid "Cheatin’ uh?"
+msgstr "Hile’ ha?"
+
+#: modules/editorial-metadata/editorial-metadata.php:283
+msgid "Checkbox"
+msgstr "Onay Kutusu"
+
+#: modules/notifications/notifications.php:386
+msgid "Choose from the most used notify emails"
+msgstr "En çok kullanılan bildirim e-postaları arasından seçim yap"
+
+#: modules/notifications/notifications.php:351
+msgid "Choose from the most used notify roles"
+msgstr "En çok kullanılan bildirim rollerinden birini seç"
+
+#: modules/notifications/notifications.php:316
+msgid "Choose from the most used notify users"
+msgstr "En çok kullanılan kullanıcı bildirimlerinden birini seç"
+
+#: modules/editorial-comments/editorial-comments.php:78
+msgid "Choose Post Types"
+msgstr "Gönderi Türlerini Seç"
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:402
+#: modules/improved-notifications/improved-notifications.php:1148
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr "Her bir iş akışının bildirim göndereceği kanalları seç:"
+
+#: modules/improved-notifications/improved-notifications.php:985
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+"Kısa kod seçenekleri hakkında daha fazla bilgi okumak için buraya tıklayın..."
+
+#: modules/calendar/calendar.php:1444
+msgid "Click here to subscribe in iCal or Google Calendar"
+msgstr "ICal veya Google Takvim'e abone olmak için buraya tıklayın"
+
+#: modules/calendar/calendar.php:798
+msgid "Click to add"
+msgstr "Eklemek için tıklayın"
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+"Günlük dosyasını silmek için tıklayın. Dikkatli olun, bu işlem geri "
+"alınamaz. "
+
+#: modules/notifications/notifications.php:573
+#: modules/notifications/notifications.php:943
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+"Bu yazıda yapılan güncellemelerden haberdar olmaya başlamak için tıklayın"
+
+#: modules/notifications/notifications.php:569
+#: modules/notifications/notifications.php:937
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+"Bu yazıda yapılan güncellemelerden haberdar olmayı durdurmak için tıklayın"
+
+#: modules/content-overview/content-overview.php:1505
+msgid "Click to toggle"
+msgstr "Geçiş yapmak için tıklayın"
+
+#: modules/calendar/calendar.php:803
+msgid "Close"
+msgstr "Kapat"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Comment"
+msgstr "Yorum"
+
+#: modules/editorial-comments/editorial-comments.php:1239
+msgid "Comment author name field:"
+msgstr "Yorum yazanın ad alanı:"
+
+#: modules/editorial-comments/editorial-comments.php:1181
+msgid "Comment deleted successfully."
+msgstr "Yorum başarıyla silindi."
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr "Yorum yap: %s (%d)"
+
+#: publishpress.php:665
+msgid "Configure"
+msgstr "Yapılandır"
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr "İletişim"
+
+#: modules/calendar/calendar.php:3695
+#: modules/improved-notifications/improved-notifications.php:971
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr "İçerik"
+
+#: modules/calendar/calendar.php:170 modules/calendar/calendar.php:410
+#: modules/calendar/calendar.php:427 modules/calendar/calendar.php:428
+msgid "Content Calendar"
+msgstr "İçerik Takvimi"
+
+#: modules/content-overview/content-overview.php:141
+#: modules/content-overview/content-overview.php:508
+#: modules/content-overview/content-overview.php:525
+#: modules/content-overview/content-overview.php:526
+msgid "Content Overview"
+msgstr "İçeriğe Genel Bakış"
+
+#: modules/notifications-log/notifications-log.php:825
+msgid "Content:"
+msgstr "İçerik:"
+
+#: modules/calendar/calendar.php:1438
+msgid "Copy to the clipboard"
+msgstr "Panoya kopyala"
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr "Oluşturulma Tarihi"
+
+#: modules/calendar/calendar.php:1361
+msgid "Current week"
+msgstr "Bu hafta"
+
+#: statuses-intro.php:142
+#, php-format
+msgid ""
+"Custom statuses are disabled until you activate the %1$sPublishPress "
+"Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+msgstr ""
+"Özel durumlar, %1$sPublishPress Durumlar%2$s eklentisini etkinleştirene "
+"kadar devre dışıdır. Ayrıntılar için %3$sPlanlayıcı > Ayarlar%4$s bölümüne "
+"bakın."
+
+#: statuses-intro.php:150
+#, php-format
+msgid ""
+"Custom statuses are disabled until you install the %1$sPublishPress "
+"Statuses%2$s plugin. See %3$sPlanner > Settings%4$s for details."
+msgstr ""
+"Özel durumlar, %1$sPublishPress Durumlar%2$s eklentisini yüklenene kadar "
+"devre dışıdır. Ayrıntılar için %3$sPlanlayıcı > Ayarlar%4$s bölümüne bakın."
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard"
+msgstr "Kontrol Paneli"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr "Kontrol Paneli Notu"
+
+#: modules/editorial-metadata/editorial-metadata.php:285
+#: modules/calendar/calendar.php:3567
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/notifications-log/library/NotificationsLogTable.php:490
+msgid "Date"
+msgstr "Tarih"
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr "Hata ayıklama"
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr "Hata ayıklama verileri"
+
+#: modules/calendar/calendar.php:829
+msgid "Dec"
+msgstr "Aralık"
+
+#: modules/improved-notifications/improved-notifications.php:229
+msgid "Default notification channels:"
+msgstr "Varsayılan bildirim kanalları:"
+
+#: modules/editorial-metadata/editorial-metadata.php:2047
+#: modules/editorial-metadata/editorial-metadata.php:2077
+#: modules/editorial-metadata/editorial-metadata.php:2408
+#: modules/editorial-metadata/editorial-metadata.php:2438
+msgid "Default option"
+msgstr "Varsayılan seçenek"
+
+#: modules/calendar/calendar.php:2601
+msgid "Default publish time for items created in the calendar"
+msgstr "Takvimde oluşturulan öğeler için varsayılan yayınlama zamanı"
+
+#: modules/editorial-metadata/editorial-metadata.php:2050
+#: modules/editorial-metadata/editorial-metadata.php:2080
+#: modules/editorial-metadata/editorial-metadata.php:2411
+#: modules/editorial-metadata/editorial-metadata.php:2441
+#: modules/editorial-metadata/editorial-metadata.php:2837
+#: modules/editorial-comments/editorial-comments.php:643
+#: modules/notifications-log/library/NotificationsLogTable.php:370
+#: modules/notifications-log/library/NotificationsLogTable.php:401
+#: modules/editorial-comments/library/EditorialCommentsTable.php:434
+msgid "Delete"
+msgstr "Sil"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:402
+msgid "Delete All"
+msgstr "Hepsini Sil"
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr "Dosyayı silin"
+
+#: modules/editorial-metadata/editorial-metadata.php:1922
+#: modules/editorial-metadata/editorial-metadata.php:2269
+#: modules/editorial-metadata/editorial-metadata.php:2699
+msgid "Description"
+msgstr "Açıklama"
+
+#: lib/Legacy/Util.php:236
+msgid "Detailed documentation is also available on the plugin website."
+msgstr "Eklentinin web sitesinde ayrıntılı belgeler mevcut."
+
+#: modules/calendar/calendar.php:2675 modules/dashboard/dashboard.php:368
+#: modules/dashboard/dashboard.php:391 modules/dashboard/dashboard.php:425
+msgid "Disabled"
+msgstr "Devre dışı"
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+"Yüklü bir dosyaya add_post_type_support('%1$s', '%2$s') dahil edildiği için "
+"devre dışı bırakıldı."
+
+#: modules/editorial-metadata/editorial-metadata.php:2038
+#: modules/editorial-metadata/editorial-metadata.php:2069
+#: modules/editorial-metadata/editorial-metadata.php:2399
+#: modules/editorial-metadata/editorial-metadata.php:2430
+msgid "Display Label"
+msgstr "Etiketi Göster"
+
+#: modules/editorial-comments/editorial-comments.php:1266
+msgid "Display Name"
+msgstr "Adı Göster"
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr "Belgeler"
+
+#: modules/calendar/calendar.php:1431
+msgid "Download .ics file"
+msgstr " .ics dosyasını indir"
+
+#: common/php/class-module.php:263
+msgid "Draft"
+msgstr "Taslak"
+
+#: modules/editorial-metadata/editorial-metadata.php:2005
+#: modules/editorial-metadata/editorial-metadata.php:2368
+msgid "Dropdown Option"
+msgstr "Açılır Menü Seçenekleri"
+
+#: modules/editorial-metadata/editorial-metadata.php:284
+msgid "Dropdown Select"
+msgstr "Açılır Liste Seçimi"
+
+#: modules/improved-notifications/improved-notifications.php:221
+msgid "Duplicated notification threshold:"
+msgstr "Bildirim eşiği tekrarı:"
+
+#: common/php/class-module.php:696
+msgid "E-mails"
+msgstr "E-postalar"
+
+#: modules/editorial-metadata/editorial-metadata.php:2817
+#: modules/calendar/calendar.php:1838 modules/calendar/calendar.php:3600
+#: modules/content-overview/content-overview.php:1904
+#: modules/editorial-comments/editorial-comments.php:632
+msgid "Edit"
+msgstr "Düzenle"
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgid "Edit Editorial Metadata"
+msgstr "Editoryal Meta Verileri Düzenle"
+
+#: modules/efmigration/efmigration.php:288
+msgid ""
+"Edit Flow should not be used alongside PublishPress Planner. If you want to "
+"use PublishPress Planner, please complete Edit Flow data migration and then "
+"deactivate Edit Flow."
+msgstr ""
+"Edit Flow Eklentisi, PublishPress Planlayıcı ile birlikte kullanılmamalıdır. "
+"PublishPress Planner'ı kullanmak istiyorsanız, lütfen Edit Flow veri taşıma "
+"işlemini tamamlayın ve ardından Edit Flow'u devre dışı bırakın."
+
+#: publishpress.php:1311
+msgid "Edit Notification"
+msgstr "Bildirimi Düzenle"
+
+#: modules/notifications/notifications.php:379
+msgid "Edit Notify Email"
+msgstr "E-posta Bildirimini Düzenle"
+
+#: modules/notifications/notifications.php:344
+msgid "Edit Notify Role"
+msgstr "Rol Bildirimini Düzenle"
+
+#: modules/notifications/notifications.php:309
+msgid "Edit Notify User"
+msgstr "Kullanıcı Bildirimini Düzenle"
+
+#: modules/calendar/calendar.php:1838
+msgid "Edit this item"
+msgstr "Bu öğeyi düzenle"
+
+#: modules/content-overview/content-overview.php:1900
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr "Bu gönderiyi düzenle"
+
+#: modules/notifications/notifications.php:2088
+#: modules/notifications/notifications.php:2145
+#, php-format
+msgid "Edit: %s"
+msgstr "Düzenle: %s"
+
+#: modules/improved-notifications/improved-notifications.php:972
+msgid "Editorial Comment"
+msgstr "Editoryal Yorum"
+
+#: modules/editorial-comments/editorial-comments.php:63
+#: modules/editorial-comments/editorial-comments.php:235
+#: modules/editorial-comments/editorial-comments.php:236
+#: modules/editorial-comments/editorial-comments.php:457
+msgid "Editorial Comments"
+msgstr "Editoryal Yorumlar"
+
+#: modules/editorial-metadata/editorial-metadata.php:96
+#: modules/editorial-metadata/editorial-metadata.php:1775
+#: modules/editorial-metadata/editorial-metadata.php:1776
+msgid "Editorial Metadata"
+msgstr "Editoryal Meta Veriler"
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:401
+#: modules/improved-notifications/improved-notifications.php:1147
+msgid "Editorial Notifications"
+msgstr "Editoryal Bildirimler"
+
+#: modules/calendar/calendar.php:1411
+msgid "Eight months"
+msgstr "Sekiz ay"
+
+#: modules/calendar/calendar.php:1417
+msgid "Eleven months"
+msgstr "On bir ay"
+
+#: modules/editorial-comments/editorial-comments.php:1269
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr "E-posta"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr "eposta"
+
+#: modules/notifications/notifications.php:1641
+msgid "Email from:"
+msgstr "E-postayı gönderen:"
+
+#: modules/editorial-comments/editorial-comments.php:1232
+msgid "Enable for these post types:"
+msgstr "Bu gönderi türleri için etkinleştir:"
+
+#: modules/calendar/calendar.php:2569
+msgid "Enable subscriptions in iCal or Google Calendar"
+msgstr "iCal veya Google Takvim'de abonelikleri etkinleştir"
+
+#: modules/calendar/calendar.php:2676 modules/dashboard/dashboard.php:369
+#: modules/dashboard/dashboard.php:392 modules/dashboard/dashboard.php:426
+msgid "Enabled"
+msgstr "Etkinleştirildi"
+
+#: modules/modules-settings/modules-settings.php:219
+msgid "Enabled features"
+msgstr " Özellikler etkilendirilmiş"
+
+#: modules/calendar/calendar.php:1379
+msgid "End date"
+msgstr "Bitiş Tarihi"
+
+#: lib/Legacy/Util.php:203
+msgid "Enhance the power of PublishPress Planner with the Pro version:"
+msgstr "PublishPress Planlayıcı’nın gücünü Pro sürümü ile artırın:"
+
+#: modules/notifications/notifications.php:636
+msgid ""
+"Enter any users, roles, or email address that should receive notifications "
+"from workflows."
+msgstr ""
+"İş akışlarından bildirim alması gereken tüm kullanıcıları, rolleri veya e-"
+"posta adreslerini girin."
+
+#: modules/editorial-metadata/editorial-metadata.php:2010
+#: modules/editorial-metadata/editorial-metadata.php:2371
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+"Açılır seçenek değerini ve etiketini girin. Sıralarını değiştirmek için "
+"seçenekleri taşıyabilirsiniz."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:276
+#: modules/notifications-log/library/NotificationsLogTable.php:527
+msgid "Error"
+msgstr "Hata"
+
+#: modules/editorial-metadata/editorial-metadata.php:1369
+msgid "Error adding term."
+msgstr "Terim eklenirken hata oluştu."
+
+#: modules/editorial-metadata/editorial-metadata.php:1646
+msgid "Error deleting term."
+msgstr "Terim silinirken hata oluştu."
+
+#: modules/editorial-metadata/editorial-metadata.php:1532
+#: modules/editorial-metadata/editorial-metadata.php:1580
+msgid "Error updating term."
+msgstr "Terim güncellenirken hata oluştu."
+
+#: modules/async-notifications/async-notifications.php:172
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+"Etkinlik: %s, İş Akışı Kimliği: %s, Gönderi IDsi: %s, Kullanıcı Kimliği: %s"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:271
+#: modules/notifications-log/library/NotificationsLogTable.php:287
+msgid "Failed"
+msgstr "Başarısız Oldu."
+
+#: lib/Legacy/Util.php:210
+msgid "Fast, professional support"
+msgstr "Hızlı, profesyonel destek"
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr "Özellikler"
+
+#: modules/calendar/calendar.php:819
+msgid "Feb"
+msgstr "Şubat"
+
+#: modules/modules-settings/modules-settings.php:213
+msgid "Feel free to select only the features you need."
+msgstr ""
+"Yalnızca ihtiyacınız olan özellikleri seçmekten çekinmeyin, rahat olun."
+
+#: modules/improved-notifications/improved-notifications.php:978
+msgid "field"
+msgstr "alan"
+
+#: modules/calendar/calendar.php:2609
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr " Alan, gün hücresindeki takvim öğelerini sıralamak için kullanılır"
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr "Dosya bilgisi"
+
+#: modules/content-overview/content-overview.php:1145
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+#: modules/editorial-comments/library/EditorialCommentsTable.php:210
+msgid "Filter"
+msgstr "Filtre"
+
+#: modules/notifications/notifications.php:389
+msgid "Filter by notify email"
+msgstr "E-posta bildirimine göre filtrele"
+
+#: modules/notifications/notifications.php:354
+msgid "Filter by notify role"
+msgstr "Rol bildirimine göre filtrele"
+
+#: modules/notifications/notifications.php:319
+msgid "Filter by notify user"
+msgstr "Kullanıcı bildirimine göre filtrele"
+
+#: lib/Notifications/Plugin.php:58
+msgid "Filter the content?"
+msgstr "İçeriği filtrelemek mi istiyorsunuz?"
+
+#: modules/editorial-metadata/editorial-metadata.php:1970
+#: modules/editorial-metadata/editorial-metadata.php:2334
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+"Editoryal metadaki kullanıcıların listesini seçilen rollerdeki kullanıcılara "
+"göre filtreleyin."
+
+#: modules/editorial-metadata/editorial-metadata.php:209
+msgid "First Draft Date"
+msgstr "İlk Taslak Tarihi"
+
+#: modules/editorial-comments/editorial-comments.php:1267
+msgid "First Name"
+msgstr "İlk İsim"
+
+#: modules/calendar/calendar.php:1405
+msgid "Five months"
+msgstr "Beş ay"
+
+#: modules/calendar/calendar.php:1371
+msgid "Five months ago"
+msgstr "Beş ay önce"
+
+#: modules/modules-settings/modules-settings.php:260
+#, php-format
+msgid ""
+"For custom post statuses, activate the %1$sPublishPress Statuses%2$s plugin. "
+"%3$sLearn more...%4$s"
+msgstr ""
+"Özel yazı durumları için %1$sPublishPress Durumlar%2$s eklentisini "
+"etkinleştirin. %3$sDaha fazla bilgi edinin...%4$s"
+
+#: modules/modules-settings/modules-settings.php:268
+#, php-format
+msgid ""
+"For custom post statuses, install the %1$sPublishPress Statuses%2$s plugin. "
+"%3$sLearn more...%4$s"
+msgstr ""
+"Özel yazı durumları için %1$sPublishPress Durumlar%2$s eklentisini yükleyin. "
+"%3$sDaha fazla bilgi edinin...%4$s"
+
+#: modules/improved-notifications/improved-notifications.php:823
+#: modules/notifications-log/library/NotificationsLogTable.php:492
+msgid "For which content?"
+msgstr "Hangi içerik için düşünüyorsunuz?"
+
+#: modules/improved-notifications/improved-notifications.php:975
+msgid "Format"
+msgstr "Biçim"
+
+#: modules/calendar/calendar.php:2133
+msgid "Forward %d weeks"
+msgstr "İleri %d hafta sonra"
+
+#: modules/calendar/calendar.php:2118
+msgid "Forward 1 week"
+msgstr "1 hafta sonra"
+
+#: modules/calendar/calendar.php:1403
+msgid "Four months"
+msgstr "Dört ay sonra"
+
+#: modules/calendar/calendar.php:1369
+msgid "Four months ago"
+msgstr "Dört ay önce"
+
+#: modules/calendar/calendar.php:1390
+msgid "Four weeks"
+msgstr "Dört hafta"
+
+#: modules/calendar/calendar.php:816
+msgid "Fri"
+msgstr "Cuma"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:620
+msgid "From date"
+msgstr "Tarihden itibaren"
+
+#: modules/editorial-metadata/editorial-metadata.php:2820
+msgid "Hidden metadata can only be viewed on the edit post view."
+msgstr ""
+"Gizli meta veriler yalnızca gönderiyi düzenle görünümündeyken "
+"görüntülenebilir."
+
+#: modules/calendar/calendar.php:800
+#, php-format
+msgid "Hide the %s last items"
+msgstr " %s son öğelerini gizle"
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr "https://publishpress.com"
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr "https://publishpress.com/"
+
+#: modules/calendar/calendar.php:198
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+"iCal gizli anahtarı yeniden oluşturuldu. Lütfen tüm kullanıcıları yeniden "
+"abone olmaları gerektiği konusunda bilgilendirin."
+
+#: modules/calendar/calendar.php:3562 lib/Notifications/Table/Workflows.php:143
+#: lib/Notifications/Table/Notifications.php:159
+msgid "ID"
+msgstr "ID"
+
+#: modules/editorial-metadata/editorial-metadata.php:2108
+#: modules/editorial-metadata/editorial-metadata.php:2472
+#: modules/editorial-metadata/editorial-metadata.php:2827
+msgid ""
+"If enabled, this metadata can be seen on the Content Calendar and Content "
+"Overview screens."
+msgstr ""
+"Etkinleştirildiğinde, bu meta veriler İçerik Takvimi ve İçeriğe Genel Bakış "
+"ekranlarında görülebilir."
+
+#: modules/editorial-metadata/editorial-metadata.php:2132
+#: modules/editorial-metadata/editorial-metadata.php:2498
+msgid ""
+"If enabled, this metadata will be available as a filter option on the "
+"Content Overview screen."
+msgstr ""
+"Etkinleştirildiğinde, bu meta veri İçeriğe Genel Bakış ekranında bir filtre "
+"seçeneği olarak kullanılabilir."
+
+#: modules/editorial-metadata/editorial-metadata.php:2156
+#: modules/editorial-metadata/editorial-metadata.php:2524
+msgid ""
+"If enabled, this metadata will be available when adding new posts on the "
+"Content Calendar screen."
+msgstr ""
+"Etkinleştirildiğinde, İçerik Takvimi ekranında yeni gönderiler eklenirken bu "
+"meta veriler kullanılabilir."
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr "Eğer %s beğendiyseniz lütfen bize %s puan bırakın. Teşekkür ederiz!"
+
+#: lib/Legacy/Util.php:225
+msgid "If you need help or have a new feature request, let us know."
+msgstr ""
+"Yardıma ihtiyacınız varsa veya yeni bir özellik talebiniz varsa, bize "
+"bildirin."
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+"PublishPress ile ilgili herhangi bir hata görürseniz veya bilgi ararsanız, "
+"lütfen destek ekibiyle iletişime geçmekten çekinmeyin. Bize e-posta gönderin:"
+
+#: modules/editorial-metadata/editorial-metadata.php:1998
+#: modules/editorial-metadata/editorial-metadata.php:2363
+msgid "Indicate the select type."
+msgstr "Seçim türünü belirtin."
+
+#: modules/editorial-metadata/editorial-metadata.php:2307
+msgid "Indicate the type of editorial metadata."
+msgstr "Editoryal meta veri türünü belirtin."
+
+#: modules/calendar/calendar.php:1512
+msgid "Initializing the calendar. Please wait..."
+msgstr "Takvim başlatılıyor. Lütfen bekleyin..."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr "Events Calendar eklentisi ile entegre edin"
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr "Tek seferlik eylem geçersiz"
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr "Bildirim için geçersiz kanal"
+
+#: modules/editorial-comments/editorial-comments.php:755
+#: modules/editorial-comments/editorial-comments.php:896
+#: modules/editorial-comments/editorial-comments.php:1028
+#: modules/editorial-comments/editorial-comments.php:1144
+msgid "Invalid comment data"
+msgstr "Geçersiz yorum verileri"
+
+#: modules/calendar/calendar.php:3302
+msgid "Invalid date"
+msgstr "Geçersiz tarih"
+
+#: modules/calendar/calendar.php:3282
+msgid "Invalid input"
+msgstr "Giriş Geçersiz"
+
+#: core/Error.php:80 modules/calendar/calendar.php:3273
+msgid "Invalid nonce"
+msgstr "Geçersiz doğrulama"
+
+#: modules/calendar/calendar.php:3861
+msgid "Invalid Publish Date supplied."
+msgstr "Geçersiz Yayın Tarihi girildi."
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr "Bildirim için geçersiz alıcı"
+
+#: modules/calendar/calendar.php:3837
+msgid "Invalid Status supplied."
+msgstr "Geçersiz Durum sağlandı."
+
+#: modules/calendar/calendar.php:1516
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+"Çok uzun sürüyor gibi görünüyor. Lütfen, sayfayı yeniden yüklemeyi deneyin "
+"ve tarayıcı konsolunda hata olup olmadığını kontrol edin."
+
+#: modules/calendar/calendar.php:818
+msgid "Jan"
+msgstr "Ocak"
+
+#: modules/calendar/calendar.php:824
+msgid "Jul"
+msgstr "Temmuz"
+
+#: modules/calendar/calendar.php:823
+msgid "Jun"
+msgstr "Haziran"
+
+#: modules/content-overview/content-overview.php:631
+msgid "Last Modified"
+msgstr "Son Düzenleme"
+
+#: modules/editorial-comments/editorial-comments.php:1268
+msgid "Last Name"
+msgstr "Soyadı"
+
+#: modules/calendar/calendar.php:797
+msgid "Loading item..."
+msgstr "Öğe yükleniyor..."
+
+#: modules/calendar/calendar.php:796
+#: modules/notifications-log/notifications-log.php:210
+msgid "Loading..."
+msgstr "Yükleniyor..."
+
+#: modules/editorial-metadata/editorial-metadata.php:286
+msgid "Location"
+msgstr "Konum"
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr "Günlük İçerik"
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr "Günlük Dosyası"
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr "Günlük dosyası bulunamadı."
+
+#: modules/editorial-metadata/editorial-metadata.php:2824
+msgid "Make Hidden"
+msgstr "Gizli Yap"
+
+#: modules/editorial-metadata/editorial-metadata.php:2835
+msgid "Make Viewable"
+msgstr "Görüntülenebilir Yap"
+
+#: modules/calendar/calendar.php:820
+msgid "Mar"
+msgstr "Mart"
+
+#: modules/calendar/calendar.php:2617
+msgid "Max visible posts per date"
+msgstr "Tarih başına maksimum görülebilir gönderi"
+
+#: modules/calendar/calendar.php:822
+msgid "May"
+msgstr "Mayıs"
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr "Mesaj"
+
+#: modules/improved-notifications/improved-notifications.php:984
+msgid "Meta fields"
+msgstr "Meta alanlar"
+
+#: modules/editorial-metadata/editorial-metadata.php:2032
+#: modules/editorial-metadata/editorial-metadata.php:2063
+#: modules/editorial-metadata/editorial-metadata.php:2393
+#: modules/editorial-metadata/editorial-metadata.php:2424
+msgid "Meta Value"
+msgstr "Meta Değeri"
+
+#: modules/editorial-metadata/editorial-metadata.php:506
+msgid "Metadata"
+msgstr "Meta veri"
+
+#: modules/editorial-metadata/editorial-metadata.php:1461
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr "Meta veri adı mevcut terimle çakışıyor. Lütfen başka bir terim seçin."
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Metadata order updated."
+msgstr "Meta veri sırası güncellendi."
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Metadata term added."
+msgstr "Meta veri terimi eklendi."
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Metadata term deleted."
+msgstr "Meta veri terimi silindi."
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Metadata term doesn't exist."
+msgstr "Meta veri terimi mevcut değil."
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Metadata term updated."
+msgstr "Meta veri terimi güncellendi."
+
+#: modules/editorial-metadata/editorial-metadata.php:2698
+msgid "Metadata Type"
+msgstr "Meta Veri Türü"
+
+#: modules/editorial-metadata/editorial-metadata.php:115
+msgid "Metadata visibility changed."
+msgstr "Meta veri görünürlüğü değişti."
+
+#: modules/improved-notifications/improved-notifications.php:351
+msgid "minutes"
+msgstr "dakika"
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr "Değişiklik zamanı"
+
+#: modules/calendar/calendar.php:812
+msgid "Mon"
+msgstr "Pazartesi"
+
+#: modules/notifications/notifications.php:392
+msgid "Most Used Notify Email"
+msgstr "En Çok Kullanılan E-posta Bildirimi"
+
+#: modules/notifications/notifications.php:357
+msgid "Most Used Notify Role"
+msgstr "En Çok Kullanılan Rol Bildirimi"
+
+#: modules/notifications/notifications.php:322
+msgid "Most Used Notify User"
+msgstr "En Çok Kullanılan Kullanıcı Bildirimi"
+
+#: modules/content-overview/content-overview.php:1912
+msgid "Move this item to the Trash"
+msgstr "Bu öğeyi Çöp Kutusuna taşı"
+
+#: modules/calendar/calendar.php:799
+msgid "Moving the item..."
+msgstr "Öğe taşıyor..."
+
+#: modules/editorial-metadata/editorial-metadata.php:1981
+#: modules/editorial-metadata/editorial-metadata.php:2343
+msgid "Multiple Select"
+msgstr "Çoklu Seçim"
+
+#: modules/improved-notifications/improved-notifications.php:406
+#: modules/improved-notifications/improved-notifications.php:1135
+#: modules/improved-notifications/improved-notifications.php:1152
+msgid "Muted"
+msgstr "Sessiz"
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr "İçerik Bildirimlerim"
+
+#: modules/editorial-metadata/editorial-metadata.php:2238
+#: modules/editorial-metadata/editorial-metadata.php:2696
+msgid "Name"
+msgstr "İsim"
+
+#: modules/editorial-metadata/editorial-metadata.php:1297
+#: modules/editorial-metadata/editorial-metadata.php:1470
+msgid "Name already in use. Please choose another."
+msgstr "İsim zaten kullanılmış. Lütfen başka bir isim seçiniz."
+
+#: modules/editorial-metadata/editorial-metadata.php:1307
+#: modules/editorial-metadata/editorial-metadata.php:1314
+#: modules/editorial-metadata/editorial-metadata.php:1483
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr "İsim 200 karakteri geçemez. Lütfen daha kısa bir isim deneyin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1290
+msgid "Name conflicts with existing term. Please choose another."
+msgstr "İsim mevcut şartla çakışıyor. Lütfen başka bir isim seçin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1475
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr "İsim başka bir şartın slugı ile çakışıyor. Lütfen başka bir şey seçin."
+
+#: lib/Legacy/Util.php:220
+msgid "Need PublishPress Planner Support?"
+msgstr "PublishPress Planlayıcı Desteğine mi İhtiyacınız Var?"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr "Yeni"
+
+#: modules/editorial-metadata/editorial-metadata.php:454
+msgid "New Editorial Metadata"
+msgstr "Yeni Editoryal Meta Veri"
+
+#: modules/notifications/notifications.php:383
+msgid "New Notify Email"
+msgstr "Yeni E-posta Bildirimi"
+
+#: modules/notifications/notifications.php:348
+msgid "New Notify Role"
+msgstr "Yeni Rol Bildirimi"
+
+#: modules/notifications/notifications.php:313
+msgid "New Notify User"
+msgstr "Yeni Kullanıcı Bildirimi"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr "Yeni gönderi durumu: %s"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr "Yeni durum"
+
+#: modules/editorial-comments/editorial-comments.php:1264
+msgid "Nickname"
+msgstr "Takma Adı"
+
+#: modules/calendar/calendar.php:1413
+msgid "Nine months"
+msgstr "Dokuz ay"
+
+#: modules/editorial-metadata/editorial-metadata.php:2097
+#: modules/editorial-metadata/editorial-metadata.php:2121
+#: modules/editorial-metadata/editorial-metadata.php:2145
+#: modules/editorial-metadata/editorial-metadata.php:2456
+#: modules/editorial-metadata/editorial-metadata.php:2483
+#: modules/editorial-metadata/editorial-metadata.php:2509
+#: modules/editorial-metadata/editorial-metadata.php:2762
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+msgid "No"
+msgstr "Hayır"
+
+#: modules/notifications/notifications.php:705
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr "Bu %s için hiçbir aktif bildirim bulunamadı."
+
+#: modules/calendar/calendar.php:3796
+msgid "No date supplied."
+msgstr "Hiçbir tarih belirtilmemiş."
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:158
+msgid "No editorial comments."
+msgstr "Hiçbir editoryal yorum yok."
+
+#: modules/editorial-metadata/editorial-metadata.php:2793
+msgid "No editorial metadata found."
+msgstr "Hiçbir editoryal meta veri bulunamadı."
+
+#: modules/calendar/calendar.php:3293
+msgid "No enough permissions"
+msgstr "Yeterli izinler yok"
+
+#: publishpress.php:1315 publishpress.php:1316
+msgid "No notification found"
+msgstr "Bildirim bulunamadı"
+
+#: modules/notifications-log/notifications-log.php:284
+msgid "No notifications found."
+msgstr "Bildirimler bulunamadı."
+
+#: modules/notifications/notifications.php:387
+#: modules/notifications/notifications.php:388
+msgid "No notify emails"
+msgstr "Bilgilendirilecek e-posta yok"
+
+#: modules/notifications/notifications.php:352
+#: modules/notifications/notifications.php:353
+msgid "No notify roles"
+msgstr "Bildirilecek Roller yok"
+
+#: modules/notifications/notifications.php:317
+#: modules/notifications/notifications.php:318
+msgid "No notify users"
+msgstr "Bilgilendirilecek kullanıcı yok"
+
+#: modules/calendar/calendar.php:838
+msgid "No terms"
+msgstr "Şart yok"
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr "Hiçbir İş akışı bulunamadı."
+
+#: modules/editorial-comments/editorial-comments.php:747
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+"Tek seferlik kontrolü başarısız oldu. Lütfen editoryal yorumlar eklemeniz "
+"gerektiğinden emin olun."
+
+#: modules/editorial-comments/editorial-comments.php:885
+#: modules/editorial-comments/editorial-comments.php:1017
+#: modules/editorial-comments/editorial-comments.php:1134
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+"Tek seferlik deneme kontrolü başarısız oldu. Lütfen editoryal yorumları "
+"düzenliyor olmanız gerektiğinden emin olun."
+
+#: modules/calendar/calendar.php:1818
+#: modules/content-overview/content-overview.php:1797
+msgid "None"
+msgstr "Hiçbiri"
+
+#: lib/Notifications/Plugin.php:221
+msgid "Not filtered"
+msgstr "Filtrelenmemiş"
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr "Not Defteri"
+
+#: publishpress.php:1309 publishpress.php:1314
+#: modules/notifications-log/notifications-log.php:209
+msgid "Notification"
+msgstr "Bildirim"
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr "Bildirim günlüğü bulunamadı"
+
+#: publishpress.php:1308 publishpress.php:1313
+#: modules/notifications/notifications.php:72
+#: modules/notifications/notifications.php:600
+msgid "Notifications"
+msgstr "Bildirimler"
+
+#: modules/improved-notifications/improved-notifications.php:741
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:263
+#: modules/notifications-log/notifications-log.php:489
+#: modules/notifications-log/notifications-log.php:490
+msgid "Notifications Log"
+msgstr "Bildirim Günlüğü"
+
+#: modules/notifications/notifications.php:370
+#: modules/notifications/notifications.php:373
+#: modules/notifications/notifications.php:390
+#: modules/notifications/notifications.php:391
+msgid "Notify Email"
+msgstr "E-postaya Bildir"
+
+#: modules/notifications/notifications.php:372
+msgid "Notify Emails"
+msgstr "E-postalara bildir"
+
+#: modules/notifications/notifications.php:574
+#: modules/notifications/notifications.php:942
+msgid "Notify me"
+msgstr "Beni bilgilendir"
+
+#: modules/improved-notifications/improved-notifications.php:306
+msgid "Notify on editorial comments"
+msgstr "Editoryal yorumları üzerinden bildir"
+
+#: modules/notifications/notifications.php:335
+#: modules/notifications/notifications.php:338
+#: modules/notifications/notifications.php:355
+#: modules/notifications/notifications.php:356
+msgid "Notify Role"
+msgstr "Rolü Bilgilendir"
+
+#: modules/notifications/notifications.php:337
+msgid "Notify Roles"
+msgstr "Rolleri Bilgilendir"
+
+#: modules/notifications/notifications.php:300
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:320
+#: modules/notifications/notifications.php:321
+msgid "Notify User"
+msgstr "Kullanıcıyı Bilgilendir"
+
+#: modules/notifications/notifications.php:302
+msgid "Notify Users"
+msgstr "Kullanıcıları Bilgilendir"
+
+#: modules/improved-notifications/improved-notifications.php:272
+msgid "Notify when content is published"
+msgstr "İçerik yayınlandığında bildir"
+
+#: modules/calendar/calendar.php:828
+msgid "Nov"
+msgstr "Kas"
+
+#: modules/editorial-metadata/editorial-metadata.php:287
+msgid "Number"
+msgstr "Numara"
+
+#: modules/content-overview/content-overview.php:689
+msgid "Number of Columns: "
+msgstr "Sütun Sayısı: "
+
+#: modules/calendar/calendar.php:827
+msgid "Oct"
+msgstr "Ekim"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr "Eski yazı durumu: %s"
+
+#: modules/improved-notifications/improved-notifications.php:979
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+"Her kısa kodda bir veya daha fazla alan seçebilirsiniz. Birden fazla ise, "
+"onlar “, \" ile ayrılmış olarak görüntülenecektir."
+
+#: modules/calendar/calendar.php:1396
+msgid "One month"
+msgstr "Bir ay"
+
+#: modules/calendar/calendar.php:1363
+msgid "One month ago"
+msgstr "Bir ay önce"
+
+#: modules/calendar/calendar.php:1384
+msgid "One week"
+msgstr "Bir hafta"
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+#: modules/calendar/calendar.php:206
+#: modules/editorial-comments/editorial-comments.php:82
+#: modules/notifications/notifications.php:93
+msgid "Overview"
+msgstr "Genel Bakış"
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Paragraph"
+msgstr "Paragraf"
+
+#: modules/notifications/notifications.php:377
+msgid "Parent Notify Email"
+msgstr "Ana Bildirim E-postası"
+
+#: modules/notifications/notifications.php:378
+msgid "Parent Notify Email:"
+msgstr "Ana Bildirim E-postası:"
+
+#: modules/notifications/notifications.php:342
+msgid "Parent Notify Role"
+msgstr "Üst Role Bildir"
+
+#: modules/notifications/notifications.php:343
+msgid "Parent Notify Role:"
+msgstr "Üst Role Bildir:"
+
+#: modules/notifications/notifications.php:307
+msgid "Parent Notify User"
+msgstr "Üst Kullanıcıya Bildir"
+
+#: modules/notifications/notifications.php:308
+msgid "Parent Notify User:"
+msgstr "Üst Kullanıcıya Bildir:"
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr "Yol"
+
+#: common/php/class-module.php:266
+msgid "Pending Review"
+msgstr "Bekleyen yorum"
+
+#: publishpress.php:584
+msgid "Planner"
+msgstr "Planlayıcı"
+
+#: publishpress.php:668
+msgid "Please correct your form errors below and try again."
+msgstr "Lütfen form hatalarınızı aşağıda düzeltin ve tekrar deneyin."
+
+#: modules/editorial-comments/editorial-comments.php:778
+#: modules/editorial-comments/editorial-comments.php:942
+msgid "Please enter a comment."
+msgstr "Lütfen bir yorum ekleyin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1447
+msgid "Please enter a name for the editorial metadata"
+msgstr "Lütfen editoryal meta veri için bir ad girin"
+
+#: modules/editorial-metadata/editorial-metadata.php:1277
+msgid "Please enter a name for the editorial metadata."
+msgstr "Lütfen editoryal meta veri için bir ad girin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1284
+msgid "Please enter a slug for the editorial metadata."
+msgstr "Lütfen editoryal meta veri için bir slug girin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1452
+msgid "Please enter a valid, non-numeric name for the editorial metadata."
+msgstr "Lütfen editoryal meta veri için geçerli, sayısal olmayan bir ad girin."
+
+#: modules/editorial-metadata/editorial-metadata.php:1324
+msgid "Please select a valid metadata type."
+msgstr "Lütfen geçerli bir meta veri türü seçin."
+
+#: lib/Notifications/Plugin.php:188
+msgid "Please select at least one event"
+msgstr "Lütfen en az bir etkinlik seçin"
+
+#: modules/calendar/calendar.php:810
+msgid "Please, wait! Loading the form fields..."
+msgstr "Lütfen, bekleyin! Form alanları yükleniyor..."
+
+#: modules/editorial-metadata/editorial-metadata.php:449
+msgid "Popular Editorial Metadata"
+msgstr "Popüler Editoryal Meta Veriler"
+
+#: modules/notifications/notifications.php:375
+msgid "Popular Notify Emails"
+msgstr "Popüler Bildirim E-postaları"
+
+#: modules/notifications/notifications.php:340
+msgid "Popular Notify Roles"
+msgstr "Popüler Bildirim Rolleri"
+
+#: modules/notifications/notifications.php:305
+msgid "Popular Notify Users"
+msgstr "Popüler Bildirim Kullanıcıları"
+
+#: modules/editorial-metadata/editorial-metadata.php:2695
+msgid "Position"
+msgstr "Pozisyon"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:231
+msgid "Post"
+msgstr "Yazı"
+
+#: modules/calendar/calendar.php:3937
+msgid "Post could not be created"
+msgstr "Yazı oluşturulamadı"
+
+#: modules/calendar/calendar.php:3930
+msgid "Post created successfully"
+msgstr "Yazı başarıyla oluşturuldu"
+
+#: modules/content-overview/content-overview.php:630
+msgid "Post Date"
+msgstr "Yazı Tarihi"
+
+#: modules/calendar/calendar.php:188
+msgid "Post date updated."
+msgstr "Yazı tarihi güncellendi."
+
+#: publishpress.php:674
+msgid "Post does not exist"
+msgstr "Yazı mevcut değil"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:154
+msgid "Post ID: %d"
+msgstr "Gönderi ID: %d"
+
+#: modules/calendar/calendar.php:3288
+msgid "Post not found"
+msgstr "Gönderi bulunamadı"
+
+#: modules/calendar/calendar.php:2918 modules/calendar/calendar.php:3573
+#: modules/calendar/calendar.php:3653
+msgid "Post Status"
+msgstr "Gönderi Durumu"
+
+#: modules/calendar/calendar.php:189
+msgid "Post status updated."
+msgstr "Gönderi durumu güncellendi."
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr "Gönderi Durumu Widgeti"
+
+#: modules/calendar/calendar.php:1991 modules/calendar/calendar.php:3557
+#: modules/content-overview/content-overview.php:628
+msgid "Post Type"
+msgstr "Yazı Tipi"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr "Gönderi Türü"
+
+#: modules/calendar/calendar.php:808
+msgid "Post type not found"
+msgstr "Gönderi türü bulunamadı"
+
+#: modules/calendar/calendar.php:809
+msgid "Post type:"
+msgstr "Gönderi tipi:"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:151
+#, php-format
+msgid "Post type: %s"
+msgstr "Gönderi türü: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:2697
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr "İçerik Türleri"
+
+#: modules/calendar/calendar.php:2561
+msgid "Post types to show"
+msgstr "Gösterilecek gönderi türleri"
+
+#: modules/content-overview/content-overview.php:298
+msgid "Post types to show:"
+msgstr "Gösterilecek gönderi türleri:"
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr "Gönderilere Hızlı Bakış"
+
+#: modules/calendar/calendar.php:2593
+msgid "Posts publish time format"
+msgstr "Gönderilerin yayınlanma zamanı formatı"
+
+#: modules/calendar/calendar.php:1862 modules/calendar/calendar.php:3617
+#: modules/content-overview/content-overview.php:1945
+msgid "Preview"
+msgstr "Önizleme"
+
+#: modules/calendar/calendar.php:1859
+#: modules/content-overview/content-overview.php:1942
+#, php-format
+msgid "Preview “%s”"
+msgstr "Önizleme “%s”"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr "Önceki durum"
+
+#: modules/content-overview/content-overview.php:1194
+msgid "Print"
+msgstr "Yazdır"
+
+#: common/php/class-module.php:265
+msgid "Private"
+msgstr "Gizli"
+
+#: modules/calendar/calendar.php:3659
+msgid "Publish Time"
+msgstr "Yayınlanma Zamanı"
+
+#: common/php/class-module.php:262 modules/calendar/calendar.php:2004
+msgid "Published"
+msgstr "Yayınlandı"
+
+#: modules/calendar/calendar.php:2917
+msgid "Publishing Time"
+msgstr "Yayınlanma Zamanı"
+
+#. Author of the plugin
+#: modules/settings/settings.php:61 modules/calendar/calendar.php:1350
+msgid "PublishPress"
+msgstr "PublishPress"
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr "PublishPress Hata Ayıklama Günlüğü"
+
+#. Name of the plugin
+#: modules/settings/settings.php:266
+msgid "PublishPress Planner"
+msgstr "PublishPress Planlayıcı Pro"
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content with WordPress. "
+"Features include a content calendar, notifications, and custom statuses."
+msgstr ""
+"PublishPress Planlayıcı, WordPress ile içerik planlamanıza ve yayınlamanıza "
+"yardımcı olur. Özellikler arasında bir içerik takvimi, bildirimler ve özel "
+"durumlar bulunur."
+
+#: publishpress.php:1355
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+"PublishPress Planlayıcı birden çok kez yüklenmeye çalışıldı. Lütfen, "
+"özellikle PublishPress Pro kullanıyorsanız, PublishPress'in diğer "
+"örneklerini devre dışı bırakın ve kaldırın."
+
+#: modules/settings/settings.php:141
+msgid "PublishPress Settings"
+msgstr "PublishPress Ayarları"
+
+#: modules/improved-notifications/improved-notifications.php:976
+msgid "Receiver"
+msgstr "Alıcı"
+
+#: modules/calendar/calendar.php:2694
+msgid "Regenerate calendar feed secret"
+msgstr "Takvim özet akışı parolasını yeniden oluştur"
+
+#: modules/editorial-metadata/editorial-metadata.php:1693
+msgid "Register metadata for these post types:"
+msgstr "Bu gönderi türleri için metaverileri kaydet:"
+
+#: modules/editorial-comments/editorial-comments.php:211
+#: modules/editorial-comments/editorial-comments.php:719
+msgid "Remove"
+msgstr "Kaldır"
+
+#: lib/Legacy/Util.php:209
+msgid "Remove PublishPress ads and branding"
+msgstr "PublishPress reklamlarını ve markasını kaldır"
+
+#: modules/editorial-comments/editorial-comments.php:623
+msgid "Reply"
+msgstr "Yanıtla"
+
+#: modules/editorial-comments/editorial-comments.php:620
+msgid "Reply to this comment"
+msgstr "Bu yoruma yanıt yaz"
+
+#: modules/notifications/notifications.php:2138
+#, php-format
+msgid "Reply: %s"
+msgstr "Yanıt: %s"
+
+#: lib/Legacy/Util.php:227
+msgid "Request Support"
+msgstr "İstek Destek"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:355
+#: modules/notifications-log/library/NotificationsLogTable.php:400
+msgid "Reschedule"
+msgstr "Yeniden zamanlamak"
+
+#: modules/calendar/calendar.php:2110
+#: modules/content-overview/content-overview.php:1025
+#: modules/content-overview/content-overview.php:1147
+msgid "Reset"
+msgstr "Sıfırla"
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr "Değerlendirmeler"
+
+#: common/php/class-module.php:678
+msgid "Role"
+msgstr "Rol"
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+#, php-format
+msgid "role:%s"
+msgstr "rol:%s"
+
+#: common/php/class-module.php:675
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr "Roller"
+
+#: modules/calendar/calendar.php:817
+msgid "Sat"
+msgstr "Cumartesi"
+
+#: modules/calendar/calendar.php:804 modules/calendar/calendar.php:1888
+msgid "Save"
+msgstr "Kaydet"
+
+#: modules/calendar/calendar.php:1882
+#, php-format
+msgid "Save “%s”"
+msgstr "Kaydet “%s”"
+
+#: modules/calendar/calendar.php:806
+msgid "Save and edit"
+msgstr "Kaydet ve eüzenle"
+
+#: modules/calendar/calendar.php:805
+msgid "Saving..."
+msgstr "Kaydediliyor..."
+
+#: common/php/class-module.php:264 modules/calendar/calendar.php:1999
+#: modules/notifications-log/library/NotificationsLogTable.php:523
+msgid "Scheduled"
+msgstr "Planlandı"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:227
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr " %d alıcısı için planlandı. Onları görüntülemek için buraya tıklayın."
+
+#: modules/content-overview/content-overview.php:271
+msgid "Screen Layout"
+msgstr "Ekran Düzeni"
+
+#: modules/content-overview/content-overview.php:1049
+msgid "Search"
+msgstr "Ara"
+
+#: modules/content-overview/content-overview.php:1048
+#: modules/content-overview/content-overview.php:1347
+msgid "Search box"
+msgstr "Arama kutusu"
+
+#: modules/editorial-comments/editorial-comments.php:289
+msgid "Search Comments"
+msgstr "Yorumlarda Ara"
+
+#: modules/editorial-metadata/editorial-metadata.php:448
+msgid "Search Editorial Metadata"
+msgstr "Editoryal Meta Verilerinde Ara"
+
+#: publishpress.php:1312
+msgid "Search Notifications"
+msgstr "Bildirimlerde Ara"
+
+#: modules/notifications/notifications.php:374
+msgid "Search Notify Emails"
+msgstr " E-postaları Bildirimlerinde Ara"
+
+#: modules/notifications/notifications.php:339
+msgid "Search Notify Roles"
+msgstr "Roller Bildirimlerinde Ara"
+
+#: modules/notifications/notifications.php:304
+msgid "Search Notify Users"
+msgstr "Kullanıcı Bildiriminde Ara"
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:276
+#, php-format
+msgid "Search results for “%s”"
+msgstr "“%s” için arama sonuçları"
+
+#: modules/improved-notifications/improved-notifications.php:963
+msgid "Select at least one option for each section."
+msgstr "Her bölüm için en az bir seçenek seçiniz."
+
+#: modules/editorial-metadata/editorial-metadata.php:1958
+#: modules/editorial-metadata/editorial-metadata.php:2320
+msgid "Select roles..."
+msgstr "Rolleri seçin..."
+
+#: modules/editorial-metadata/editorial-metadata.php:1976
+#: modules/editorial-metadata/editorial-metadata.php:2339
+msgid "Select Type"
+msgstr "Tür Seç"
+
+#: lib/Legacy/Util.php:207
+msgid "Send reminder notifications"
+msgstr "Hatırlatma bildirimleri gönder"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+msgid "Sent"
+msgstr "Gönderildi"
+
+#: modules/calendar/calendar.php:826
+msgid "Sep"
+msgstr "Eylül"
+
+#: modules/notifications/notifications.php:384
+msgid "Separate notify emails with commas"
+msgstr "Bildirim yapılacak e-postaları virgülle ayırın"
+
+#: modules/notifications/notifications.php:349
+msgid "Separate notify roles with commas"
+msgstr "Bildirim yapılacak rolleri virgülle ayırın"
+
+#: modules/notifications/notifications.php:314
+msgid "Separate notify users with commas"
+msgstr "Bildirim yapılacak kullanıcılarını virgülle ayırın"
+
+#: modules/settings/settings.php:142
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: modules/settings/settings.php:124
+msgid "settings"
+msgstr "ayarlar"
+
+#: modules/calendar/calendar.php:1409
+msgid "Seven months"
+msgstr "Yedi ay"
+
+#: modules/improved-notifications/improved-notifications.php:977
+msgid "shortcode"
+msgstr "kısakod"
+
+#: modules/calendar/calendar.php:801
+#, php-format
+msgid "Show %s more"
+msgstr " %s daha fazla göster"
+
+#: modules/editorial-metadata/editorial-metadata.php:2117
+#: modules/editorial-metadata/editorial-metadata.php:2480
+msgid "Show as Content Overview filters"
+msgstr "İçeriğe Genel Bakış filtreleri olarak göster"
+
+#: modules/content-overview/content-overview.php:983
+msgid "Show content from"
+msgstr "Buradaki içerikleri göster"
+
+#: modules/editorial-metadata/editorial-metadata.php:2141
+#: modules/editorial-metadata/editorial-metadata.php:2506
+msgid "Show on Content Calendar form"
+msgstr "İçerik Takvimi formunda göster"
+
+#: modules/editorial-metadata/editorial-metadata.php:2189
+#: modules/editorial-metadata/editorial-metadata.php:2555
+msgid "Show on Post Types screen"
+msgstr "Gönderi Türleri ekranında göster"
+
+#: modules/notifications/notifications.php:1633
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+"Bu gönderi türleri için \"Bana bildir\" ve \"Bana bildirmeyi durdur\" "
+"bağlantılarını gösterin:"
+
+#: modules/editorial-metadata/editorial-metadata.php:1980
+#: modules/editorial-metadata/editorial-metadata.php:2342
+msgid "Single Select"
+msgstr "Tekli Seçim"
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr "Site Yöneticisi"
+
+#: modules/calendar/calendar.php:1407
+msgid "Six months"
+msgstr "Altı ay"
+
+#: modules/calendar/calendar.php:1373
+msgid "Six months ago"
+msgstr "Altı ay önce"
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr "Boyut"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr "Geçerli kullanıcıyı atla"
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr "Eylemi tetikleyen kullanıcı için bildirimleri atla"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:285
+#: modules/notifications-log/library/NotificationsLogTable.php:519
+msgid "Skipped"
+msgstr "Atlandı"
+
+#: lib/Legacy/Util.php:206
+msgid "Slack integration for notifications"
+msgstr "Bildirimler için Slack entegrasyonu"
+
+#: modules/editorial-metadata/editorial-metadata.php:1909
+#: modules/editorial-metadata/editorial-metadata.php:2252
+msgid "Slug"
+msgstr "Slug"
+
+#: modules/editorial-metadata/editorial-metadata.php:1301
+msgid "Slug already in use. Please choose another."
+msgstr "Slug zaten kullanılıyor. Lütfen başka bir tane seçin."
+
+#: modules/notifications/notifications.php:1779
+msgid "slug1,slug2"
+msgstr "slug1,slug2"
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr "Üzgünüz! Hiçbir gönderiye abone değilsiniz!"
+
+#: modules/editorial-comments/editorial-comments.php:1080
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+"Üzgünüz, bu editoryal yorumu silemezsiniz çünkü bu yoruma verilmiş bazı "
+"yanıtlar var."
+
+#: modules/editorial-comments/editorial-comments.php:768
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Üzgünüz, editoryal yorum ekleme ayrıcalıklarına sahip değilsiniz. Lütfen "
+"Yöneticinizle iletişime geçiniz."
+
+#: modules/editorial-comments/editorial-comments.php:1059
+#: modules/editorial-comments/editorial-comments.php:1163
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+"Üzgünüz, bu editoryal yorumu silme yetkisine sahip değilsiniz. Lütfen "
+"Yöneticinizle iletişime geçiniz."
+
+#: modules/editorial-comments/editorial-comments.php:911
+#: modules/editorial-comments/editorial-comments.php:1043
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+"Üzgünüz, editoryal yorumları düzenleme ayrıcalıklarına sahip değilsiniz. "
+"Lütfen Yöneticinizle iletişime geçiniz."
+
+#: modules/editorial-comments/editorial-comments.php:929
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+"Üzgünüz, bu editoryal yorumu düzenleme yetkisine sahip değilsiniz. Lütfen "
+"Yöneticinizle iletişime geçiniz."
+
+#: modules/calendar/calendar.php:1357
+msgid "Start date"
+msgstr "Başlangıç tarihi"
+
+#: modules/content-overview/content-overview.php:627
+#: modules/notifications-log/library/NotificationsLogTable.php:494
+msgid "Status"
+msgstr "Durum"
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2032
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr "Durum %1$s #%2$s \"%3$s\" için %4$s %5$s tarafından değiştirildi"
+
+#: modules/calendar/calendar.php:2585
+msgid "Statuses to display publish time"
+msgstr "Yayınlanma zamanı görüntülenecek durumlar"
+
+#: modules/notifications/notifications.php:570
+#: modules/notifications/notifications.php:936
+msgid "Stop notifying me"
+msgstr "Beni bilgilendirmeyi durdur"
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr "Konu"
+
+#: modules/notifications-log/notifications-log.php:817
+msgid "Subject:"
+msgstr "Konu:"
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:233
+msgid "Submitted on"
+msgstr "Gönderme tarihi"
+
+#: modules/calendar/calendar.php:1352
+msgid "Subscribe in iCal or Google Calendar"
+msgstr "ICal veya Google Takvime abone olun"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:515
+msgid "Success"
+msgstr "Başarılı"
+
+#: modules/calendar/calendar.php:811
+msgid "Sun"
+msgstr "Pazar"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:298
+msgid "synchronous"
+msgstr " eşzamanlı"
+
+#: modules/calendar/calendar.php:3588
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] "Etiket"
+msgstr[1] "Etiketler"
+
+#: modules/calendar/calendar.php:3687
+msgid "Tags"
+msgstr "Etiketler"
+
+#: modules/content-overview/content-overview.php:306
+msgid "Taxonomies to show:"
+msgstr "Gösterilecek taksonomiler:"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr "Taksonomi"
+
+#: modules/editorial-metadata/editorial-metadata.php:446
+msgctxt "taxonomy general name"
+msgid "Metadata"
+msgstr "Metadata"
+
+#: modules/editorial-metadata/editorial-metadata.php:447
+msgctxt "taxonomy singular name"
+msgid "Metadata"
+msgstr "Metadata"
+
+#: modules/calendar/calendar.php:1415
+msgid "Ten months"
+msgstr "On ay"
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr "Şartlar"
+
+#: modules/editorial-metadata/editorial-metadata.php:1605
+msgid "Terms not set."
+msgstr "Şartlar ayarlanmamış."
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "Text"
+msgstr "Metin"
+
+#: modules/editorial-metadata/editorial-metadata.php:2261
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+" \"Slug” , ismin URL-dostu versiyonudur. Genellikle hepsi küçüktür ve "
+"yalnızca harf, sayı ve kısa çizgiler içerir. Türkçe karakter içermez."
+
+#: modules/editorial-metadata/editorial-metadata.php:1930
+#: modules/editorial-metadata/editorial-metadata.php:2278
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+"Açıklama, metaverilerin ne işe yaradığı konusunda ekibinizle iletişim kurmak "
+"ve fikir alışverişi yapmak için kullanılabilir."
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr "Etkinlik Takvimi Entegrasyonu"
+
+#: modules/editorial-metadata/editorial-metadata.php:1944
+msgid "The metadata type cannot be changed once created."
+msgstr "Metaveri türü oluşturulduktan sonra değiştirilemez."
+
+#: modules/editorial-metadata/editorial-metadata.php:1904
+#: modules/editorial-metadata/editorial-metadata.php:2247
+msgid "The name is for labeling the metadata field."
+msgstr " Ad, meta veri alanını etiketlemek içindir."
+
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+"Bildirim \"Zamanlandı\" olarak ayarlandı ancak ileri dönük çalışmasını "
+"sağlayacak görev, komut bulunamadı"
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+"Bu widgetin görüntülenmesi için bildirimler modülünün etkinleştirilmesi "
+"gerekir."
+
+#: modules/calendar/calendar.php:2661
+msgid ""
+"The number of weeks shown on the calendar can be changed on a user-by-user "
+"basis using the calendar's screen options."
+msgstr ""
+"Takvim üzerinde gösterilen hafta sayısı, takvimin ekran seçenekleri "
+"kullanılarak bir kullanıcı-kullanıcı bazında değiştirilebilir."
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr "Ana günlük silindi veya muhtemelen yeniden planlandı"
+
+#: modules/calendar/calendar.php:3807
+msgid "The selected post type is not enabled for the calendar."
+msgstr "Seçilen gönderi türü takvim için etkinleştirilmemiş."
+
+#: modules/calendar/calendar.php:4286
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+"Seçilen kullanıcının, gönderi yazarı olarak ayarlanmak için yeterli izinleri "
+"yok."
+
+#: modules/editorial-metadata/editorial-metadata.php:1914
+msgid "The slug cannot be changed once the term has been created."
+msgstr "Koşul oluşturulduktan sonra slug değiştirilemez."
+
+#: modules/content-overview/content-overview.php:1564
+msgid "There are no posts in the range or filter specified."
+msgstr "Belirtilen aralıkta veya filtrede hiç gönderi yok."
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr "Kayıtlı PublishPress modülü yok"
+
+#: modules/editorial-comments/editorial-comments.php:865
+#: modules/editorial-comments/editorial-comments.php:995
+#: modules/editorial-comments/editorial-comments.php:1105
+#: modules/editorial-comments/editorial-comments.php:1189
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+"Bir tür sorun oluştu. Tekrar deneyin veya yöneticinizle iletişime geçin."
+
+#: modules/calendar/calendar.php:190
+msgid "There was an error updating the post. Please try again."
+msgstr "Gönderi güncellenirken bir hata oluştu. Lütfen tekrar deneyiniz."
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2043
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr "Bu işlem %2$s %3$s de %1$s adresinde gerçekleştirilmiştir"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial metadata type is not yet supported."
+msgstr "Bu editoryal meta veri türü henüz desteklenmemektedir."
+
+#: modules/notifications/notifications.php:1056
+#, php-format
+msgid "This email was sent %s."
+msgstr "Bu e-posta %s gönderildi."
+
+#: modules/notifications-log/notifications-log.php:835
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+"Bu, zamanlanmış mesajın bir önizlemesidir. Bildirim gönderilinceye kadar "
+"içerik değiştirilebilir."
+
+#: modules/editorial-metadata/editorial-metadata.php:2170
+#: modules/editorial-metadata/editorial-metadata.php:2536
+msgid "This metadata will be available for these post types."
+msgstr "Bu meta veriler, bu gönderi türleri için kullanılabilir olacaktır."
+
+#: modules/editorial-metadata/editorial-metadata.php:2194
+#: modules/editorial-metadata/editorial-metadata.php:2559
+msgid ""
+"This metadata will be viewable on the overview screens for these post types."
+msgstr ""
+"Bu meta veriler, bu gönderi türleri için genel bakış ekranlarında "
+"görüntülenebilir olacaktır."
+
+#: modules/notifications-log/notifications-log.php:442
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+"Bu bildirim, aynı alıcı için %d dakikadan daha kısa bir süre önce gönderilen "
+"başka bir bildirime çok benziyor"
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr "Bu gönderi en son şu tarihte güncellenmiştir "
+
+#: modules/improved-notifications/improved-notifications.php:355
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+"Bu, aynı veya benzer etkinlikler için çok fazla bildirim gönderilmesini "
+"önleyecektir. Yinelenen e-postalar alıyorsanız bunu daha yüksek bir sayıya "
+"ayarlayın."
+
+#: modules/notifications/notifications.php:662
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Notify me\" box."
+msgstr ""
+" \"Bana bildir\" kutusunu hedefleyen en az bir iş akışınız olmadığı sürece "
+"bunun herhangi bir etkisi olmayacaktır."
+
+#: modules/calendar/calendar.php:1401
+msgid "Three months"
+msgstr "Üç ay"
+
+#: modules/calendar/calendar.php:1367
+msgid "Three months ago"
+msgstr "Üç ay önce"
+
+#: modules/calendar/calendar.php:1388
+msgid "Three weeks"
+msgstr "Üç hafta"
+
+#: modules/calendar/calendar.php:815
+msgid "Thu"
+msgstr "Per"
+
+#: modules/calendar/calendar.php:3648
+#: modules/content-overview/content-overview.php:626
+#: lib/Notifications/Table/Workflows.php:142
+#: lib/Notifications/Table/Notifications.php:156
+msgid "Title"
+msgstr "Başlık"
+
+#: modules/notifications/notifications.php:2065
+#, php-format
+msgid "Title: %s"
+msgstr "Başlık: %s"
+
+#: modules/content-overview/content-overview.php:1413
+msgid "to"
+msgstr "için"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "To date"
+msgstr "Tarihine kadar"
+
+#: modules/calendar/calendar.php:837 modules/calendar/calendar.php:2158
+msgid "Today"
+msgstr "Bugün"
+
+#: modules/calendar/calendar.php:2152
+#, php-format
+msgid "Today is %s"
+msgstr "Bugün %s"
+
+#: common/php/class-module.php:267 modules/calendar/calendar.php:1848
+#: modules/calendar/calendar.php:3607
+#: modules/content-overview/content-overview.php:1916
+msgid "Trash"
+msgstr "Çöpe At"
+
+#: modules/calendar/calendar.php:813
+msgid "Tue"
+msgstr "Sal"
+
+#: modules/calendar/calendar.php:1419
+msgid "Twelve months"
+msgstr "On iki ay"
+
+#: modules/calendar/calendar.php:1399
+msgid "Two months"
+msgstr "İki ay"
+
+#: modules/calendar/calendar.php:1365
+msgid "Two months ago"
+msgstr "İki ay önce"
+
+#: modules/calendar/calendar.php:1386
+msgid "Two weeks"
+msgstr "İki hafta"
+
+#: modules/editorial-metadata/editorial-metadata.php:1939
+#: modules/editorial-metadata/editorial-metadata.php:2286
+msgid "Type"
+msgstr "Tip"
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr "Tanımlanmamış hata bulundu"
+
+#: modules/calendar/calendar.php:1475
+#: modules/content-overview/content-overview.php:1076
+msgid "Undo"
+msgstr "Geri al"
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr "Yayınlanmamış İçerik"
+
+#: modules/calendar/calendar.php:802 modules/calendar/calendar.php:3813
+msgid "Untitled"
+msgstr "Başlıksız"
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgid "Update Editorial Metadata"
+msgstr "Editoryal Meta Verileri Güncelle"
+
+#: modules/editorial-metadata/editorial-metadata.php:2217
+msgid "Update Metadata Term"
+msgstr "Metaveri Terimini Güncelle"
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr "Güncelleme Notu"
+
+#: modules/notifications/notifications.php:381
+msgid "Update Notify Email"
+msgstr "Bildirilecek Epostayı Güncelle"
+
+#: modules/notifications/notifications.php:346
+msgid "Update Notify Role"
+msgstr "Bildirilecek Rolü Güncelle"
+
+#: modules/notifications/notifications.php:311
+msgid "Update Notify User"
+msgstr "Bildirilecek Kullanıcıyı Güncelle"
+
+#: modules/calendar/calendar.php:194
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+"Gönderi tarihini dinamik olarak güncellemek, yayınlanan içerik için "
+"çalışmaz. Lütfen gönderiyi düzenleyin ."
+
+#: includes.php:159 lib/Legacy/Util.php:213
+msgid "Upgrade to Pro"
+msgstr "Pro ya yükselt"
+
+#: lib/Legacy/Util.php:198
+msgid "Upgrade to PublishPress Planner Pro"
+msgstr "PublishPress Planner Proya Yükselt"
+
+#: lib/Legacy/Util.php:208
+msgid "Use post meta in notifications"
+msgstr "Bildirimlerde posta metasını kullan"
+
+#: modules/editorial-metadata/editorial-metadata.php:290
+msgid "User"
+msgstr "Kullanıcı"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr "kullanıcı"
+
+#: modules/improved-notifications/improved-notifications.php:973
+msgid "User making changes or comments"
+msgstr "Değişiklikler veya yorumlar yapan kullanıcı"
+
+#: modules/editorial-metadata/editorial-metadata.php:1950
+#: modules/editorial-metadata/editorial-metadata.php:2312
+msgid "User role"
+msgstr "Kullanıcı Rolü"
+
+#: modules/editorial-comments/editorial-comments.php:1270
+msgid "User Url"
+msgstr "Kullanıcı URL"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:122
+#, php-format
+msgid "User: %s (%d)"
+msgstr "Kullanıcı: %s (%d)"
+
+#: modules/editorial-comments/editorial-comments.php:1265
+msgid "Username"
+msgstr "Kullanıcı Adı"
+
+#: common/php/class-module.php:686
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr "Kullanıcılar"
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr "İçerik için \"Bana bildir\" seçeneğini işaretleyen kullanıcılar"
+
+#: modules/calendar/calendar.php:1872 modules/calendar/calendar.php:3614
+#: modules/content-overview/content-overview.php:1932
+msgid "View"
+msgstr "Göster"
+
+#: modules/calendar/calendar.php:1866
+#: modules/content-overview/content-overview.php:1926
+#, php-format
+msgid "View “%s”"
+msgstr " “%s” Göster"
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr "Google Haritalarda “%s” göster"
+
+#: modules/calendar/calendar.php:4072
+msgid "View all categories"
+msgstr "Tüm kategorileri göster"
+
+#: lib/Legacy/Util.php:238
+msgid "View Knowledge Base"
+msgstr "Bilgi Tabanını Göster"
+
+#: modules/notifications/notifications.php:380
+msgid "View Notify Email"
+msgstr "E posta Bildirimini Göster"
+
+#: modules/notifications/notifications.php:345
+msgid "View Notify Role"
+msgstr "Bildirilecek Rolü Göster"
+
+#: modules/notifications/notifications.php:310
+msgid "View Notify User"
+msgstr "Bildirilecek Kullanıcıyı Göster"
+
+#: modules/notifications/notifications.php:2089
+#: modules/notifications/notifications.php:2146
+#, php-format
+msgid "View: %s"
+msgstr "Görünüm: %s"
+
+#: modules/editorial-metadata/editorial-metadata.php:2093
+#: modules/editorial-metadata/editorial-metadata.php:2453
+#: modules/editorial-metadata/editorial-metadata.php:2700
+msgid "Viewable"
+msgstr "Görüntülenebilir"
+
+#: publishpress.php:1363
+msgid "Warning"
+msgstr "Uyarı"
+
+#: modules/calendar/calendar.php:814
+msgid "Wed"
+msgstr "Çar"
+
+#: modules/editorial-metadata/editorial-metadata.php:220
+msgid "What the post needs to cover."
+msgstr "Gönderinin kapsaması gerekenler."
+
+#: modules/improved-notifications/improved-notifications.php:843
+msgid "What to say?"
+msgstr "Ne demeli?"
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr "Editoryal bir yorum eklendiğinde"
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr "İçerik yeni bir duruma taşındığında"
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr "İçerik güncellendiğinde"
+
+#: modules/editorial-metadata/editorial-metadata.php:212
+msgid "When the first draft needs to be ready."
+msgstr "İlk taslağın hazır olması gerektiği zaman"
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr "Durum değiştirildiği zaman"
+
+#: lib/Notifications/Plugin.php:57
+#: modules/improved-notifications/improved-notifications.php:813
+#: modules/notifications-log/library/NotificationsLogTable.php:491
+msgid "When to notify?"
+msgstr "Ne zaman bildirilecek?"
+
+#: lib/Notifications/Plugin.php:59
+#: modules/improved-notifications/improved-notifications.php:833
+#: modules/notifications-log/library/NotificationsLogTable.php:493
+msgid "Who to notify?"
+msgstr "Kime bildirilecek?"
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr "Widget Seçenekleri"
+
+#: modules/notifications/notifications.php:1918
+msgid "WordPress Scheduler"
+msgstr "WordPress Zamanlayıcısı"
+
+#: modules/improved-notifications/improved-notifications.php:974
+msgid "Workflow"
+msgstr "İş Akışı"
+
+#: modules/improved-notifications/improved-notifications.php:775
+msgid "Workflow Settings"
+msgstr "İş Akışı Ayarları"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:110
+#, php-format
+msgid "Workflow: %s"
+msgstr "İş akışı: %s"
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:407
+#: modules/improved-notifications/improved-notifications.php:1153
+msgid "Workflows"
+msgstr "İş Akışları"
+
+#: modules/editorial-metadata/editorial-metadata.php:2098
+#: modules/editorial-metadata/editorial-metadata.php:2122
+#: modules/editorial-metadata/editorial-metadata.php:2146
+#: modules/editorial-metadata/editorial-metadata.php:2457
+#: modules/editorial-metadata/editorial-metadata.php:2484
+#: modules/editorial-metadata/editorial-metadata.php:2510
+#: modules/editorial-metadata/editorial-metadata.php:2760
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+msgid "Yes"
+msgstr "Evet"
+
+#: modules/notifications/notifications.php:1051
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr " \"%s\" e abone olduğunuz için bu e-postayı alıyorsunuz."
+
+#: modules/improved-notifications/improved-notifications.php:967
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+"Aşağıdaki kısa kodları kullanarak Konu veya Gövde metnine dinamik bilgiler "
+"ekleyebilirsiniz:"
+
+#: modules/editorial-comments/editorial-comments.php:532
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+"Bir gönderiyi ilk kez kaydettikten sonra ona editoryal yorumlar "
+"ekleyebilirsiniz."
+
+#: modules/notifications/notifications.php:2149
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr "Bu konudaki tüm editoryal yorumları %s burada görebilirsiniz: "
+
+#: publishpress.php:670
+msgid "You do not have necessary permissions to complete this action."
+msgstr "Bu eylemi tamamlamak için gerekli izinlere sahip değilsiniz."
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr "Herhangi bir bildiriminiz yok"
+
+#: includes.php:127
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
+"PublishPress Planner Free kullanıyorsunuz. Pro sürümü daha fazla özelliğe ve "
+"desteğe sahiptir. %sPro ya Yükselt%s"
diff --git a/public/wp-content/plugins/publishpress/languages/publishpress.pot b/public/wp-content/plugins/publishpress/languages/publishpress.pot
index a3d0acf52..9235837c1 100644
--- a/public/wp-content/plugins/publishpress/languages/publishpress.pot
+++ b/public/wp-content/plugins/publishpress/languages/publishpress.pot
@@ -1,2838 +1,3197 @@
-#, fuzzy
-msgid ""
-msgstr ""
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-"Project-Id-Version: PublishPress\n"
-"POT-Creation-Date: 2019-08-21 09:52-0300\n"
-"PO-Revision-Date: 2019-08-21 09:51-0300\n"
-"Last-Translator: Anderson Grudtner Martins \n"
-"Language-Team: Anderson Grudtner Martins \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.3\n"
-"X-Poedit-Basepath: ..\n"
-"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
-"X-Poedit-WPHeader: publishpress.php\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
-"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
-"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
-"X-Poedit-SearchPath-0: .\n"
-"X-Poedit-SearchPathExcluded-0: *.min.js\n"
-"X-Poedit-SearchPathExcluded-1: vendor\n"
-
-#: common/php/class-module.php:89
-msgid "Post"
-msgstr ""
-
-#: common/php/class-module.php:90
-msgid "Page"
-msgstr ""
-
-#: common/php/class-module.php:197 common/php/class-module.php:273
-#: libraries/Notifications/Traits/PublishPress_Module.php:63
-#: modules/custom-status/custom-status.php:199
-msgid "Draft"
-msgstr ""
-
-#: common/php/class-module.php:203 common/php/class-module.php:276
-#: libraries/Notifications/Traits/PublishPress_Module.php:69
-#: modules/custom-status/custom-status.php:209
-msgid "Pending Review"
-msgstr ""
-
-#: common/php/class-module.php:209 common/php/class-module.php:272
-#: libraries/Notifications/Traits/PublishPress_Module.php:75
-#: modules/calendar/calendar.php:1638 modules/calendar/calendar.php:2749
-#: modules/custom-status/custom-status.php:845
-msgid "Published"
-msgstr ""
-
-#: common/php/class-module.php:274 modules/calendar/calendar.php:1633
-#: modules/calendar/calendar.php:2744
-#: modules/custom-status/custom-status.php:879
-msgid "Scheduled"
-msgstr ""
-
-#: common/php/class-module.php:275
-msgid "Private"
-msgstr ""
-
-#: common/php/class-module.php:277 modules/calendar/calendar.php:1526
-#: modules/content-overview/content-overview.php:1056
-msgid "Trash"
-msgstr ""
-
-#: common/php/class-module.php:487
-msgid "Invalid Taxonomy"
-msgstr ""
-
-#: common/php/class-module.php:676
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:32
-#: modules/roles/roles.php:80 modules/roles/roles.php:769
-#: modules/roles/roles.php:786 modules/roles/roles.php:787
-msgid "Roles"
-msgstr ""
-
-#: common/php/class-module.php:679
-msgid "Role"
-msgstr ""
-
-#: common/php/class-module.php:685
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:26
-#: modules/roles/roles.php:878
-msgid "Users"
-msgstr ""
-
-#: common/php/class-module.php:693
-msgid "E-mails"
-msgstr ""
-
-#: common/php/util.php:46
-msgid "(no title)"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:78
-#: modules/improved-notifications/improved-notifications.php:659
-msgid "When to notify?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:79
-msgid "Filter the content?"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:80
-#: modules/improved-notifications/improved-notifications.php:679
-msgid "Who to notify?"
-msgstr ""
-
-#. translators: Publish box date format, see https://secure.php.net/date
-#: libraries/Notifications/Plugin.php:120
-msgid "M j, Y @ H:i"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:122
-#: libraries/Notifications/Plugin.php:123
-msgid "Notification workflow updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:124
-msgid "Notification workflow published."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:125
-msgid "Notification workflow saved."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:126
-msgid "Notification workflow submitted."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:127
-#, php-format
-msgid "Notification workflow scheduled for: %s."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:129
-msgid "Notification workflow draft updated."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:151
-#, php-format
-msgid "%s notification workflow updated."
-msgid_plural "%s notification workflows updated."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:153
-msgid "1 notification workflow not updated, somebody is editing it."
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:154
-#, php-format
-msgid "%s notification workflow not updated, somebody is editing it."
-msgid_plural "%s notification workflows not updated, somebody is editing them."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:156
-#, php-format
-msgid "%s notification workflow permanently deleted."
-msgid_plural "%s notification workflows permanently deleted."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:158
-#, php-format
-msgid "%s notification workflow moved to the Trash."
-msgid_plural "%s notification workflows moved to the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:160
-#, php-format
-msgid "%s notification workflow restored from the Trash."
-msgid_plural "%s notification workflows restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Plugin.php:190
-msgid "Please select at least one event"
-msgstr ""
-
-#: libraries/Notifications/Plugin.php:221
-msgid "Not filtered"
-msgstr ""
-
-#: libraries/Notifications/Reviews.php:57
-#, php-format
-msgid ""
-"Hey, I noticed you have been using %sPublishPress%s for a few weeks - that's "
-"awesome! May I ask you to give it a %s5-star%s rating on WordPress? Just to "
-"help us spread the word and boost our motivation."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:182
-msgid "List View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:183
-msgid "Excerpt View"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:630
-msgid "Select bulk action"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:632
-msgid "Bulk Actions"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:642
-msgid "Apply"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:697
-#: libraries/Notifications/Table/Base.php:1158
-#, php-format
-msgid "%s item"
-msgid_plural "%s items"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:735
-msgid "First page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:746
-msgid "Previous page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:753
-#: libraries/Notifications/Table/Base.php:757
-msgid "Current Page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:763
-#, php-format
-msgctxt "paging"
-msgid "%1$s of %2$s"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:772
-msgid "Next page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:783
-msgid "Last page"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:848
-msgid "Select All"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1020
-#: libraries/Notifications/Table/Base.php:1278
-msgid "Show more details"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1132
-msgid "No items found."
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1342
-msgid "Filter by date"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1344
-msgid "All dates"
-msgstr ""
-
-#. translators: 1: month name, 2: 4-digit year
-#: libraries/Notifications/Table/Base.php:1359
-#, php-format
-msgid "%1$s %2$d"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1412
-#, php-format
-msgid "%s comment"
-msgid_plural "%s comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1413
-#, php-format
-msgid "%s approved comment"
-msgid_plural "%s approved comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1415
-#, php-format
-msgid "%s pending comment"
-msgid_plural "%s pending comments"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Table/Base.php:1422
-#: libraries/Notifications/Table/Base.php:1437
-#: libraries/Notifications/Table/Base.php:1453
-msgid "No comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1437
-msgid "No approved comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Base.php:1453
-msgid "No pending comments"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:57
-#: libraries/Notifications/Table/Workflows.php:55
-msgid "Undefined"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:60
-#: libraries/Notifications/Table/Workflows.php:57
-msgid "Y/m/d g:i:s a"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:67
-#: libraries/Notifications/Table/Workflows.php:64
-#, php-format
-msgid "%s ago"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:69
-#: libraries/Notifications/Table/Workflows.php:66
-msgid "Y/m/d"
-msgstr ""
-
-#. translators: %s = post type name
-#: libraries/Notifications/Table/Notifications.php:86
-#: libraries/Notifications/Table/Workflows.php:83
-#: modules/calendar/calendar.php:1260
-#: modules/content-overview/content-overview.php:362
-msgid "Title"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:87
-msgid "Message"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:88
-#: modules/editorial-metadata/editorial-metadata.php:251
-msgid "Date"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:89
-#: libraries/Notifications/Table/Workflows.php:84
-msgid "ID"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:218
-#: libraries/Notifications/Table/Workflows.php:202
-#, php-format
-msgid "Select %s"
-msgstr ""
-
-#: libraries/Notifications/Table/Notifications.php:231
-msgid "You don't have any notifications"
-msgstr ""
-
-#: libraries/Notifications/Table/Workflows.php:215
-msgid "No workflows found."
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Channel/Email.php:26
-msgid "Email"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:28
-#: modules/calendar/calendar.php:1264
-#: modules/improved-notifications/improved-notifications.php:717
-msgid "Content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:52
-msgid "Subject"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Content/Main.php:53
-msgid "Body"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php:26
-msgid "When an editorial comment is added"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:38
-msgid "When the status is changed"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:39
-msgid "Previous status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:40
-msgid "New status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:41
-msgid "- any status -"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:63
-msgid "New"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php:68
-msgid "Auto-draft"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event/Post_Save.php:26
-msgid "When the content is moved to a new status"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Category.php:24
-msgid "Category"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
-msgid "Categories"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
-msgid "Post Types"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php:34
-msgid "Terms"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
-msgid "Post type"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
-msgid "Taxonomy"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:26
-msgid "Authors of the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Author.php:72
-msgid "Authors"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:30
-msgid "Users who selected \"Notify me\" for the content"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Follower.php:188
-msgid "\"Notify me\""
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Role.php:177
-#, php-format
-msgid "%d Role"
-msgid_plural "%d Roles"
-msgstr[0] ""
-msgstr[1] ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
-#: libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php:69
-msgid "Site Administrator"
-msgstr ""
-
-#: libraries/Notifications/Workflow/Step/Receiver/User.php:167
-#, php-format
-msgid "%d User"
-msgid_plural "%d Users"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/addons/addons.php:72
-msgid "Add-ons for PublishPress"
-msgstr ""
-
-#: modules/addons/addons.php:144 modules/addons/addons.php:161
-#: modules/addons/addons.php:162
-msgid "Add-ons"
-msgstr ""
-
-#: modules/addons/addons.php:204
-msgid "Content Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:206
-msgid ""
-"Allows PublishPress teams to define tasks that must be complete before "
-"content is published."
-msgstr ""
-
-#: modules/addons/addons.php:214
-msgid "Slack support"
-msgstr ""
-
-#: modules/addons/addons.php:216
-msgid ""
-"PublishPress with Slack, so you can get comment and status change "
-"notifications directly on Slack."
-msgstr ""
-
-#: modules/addons/addons.php:224
-msgid "Permissions"
-msgstr ""
-
-#: modules/addons/addons.php:226
-msgid ""
-"Allows you to control which users can complete certain tasks, such as "
-"publishing content."
-msgstr ""
-
-#: modules/addons/addons.php:234
-msgid "WooCommerce Checklist"
-msgstr ""
-
-#: modules/addons/addons.php:236
-msgid ""
-"This add-on allows WooCommerce teams to define tasks that must be complete "
-"before products are published."
-msgstr ""
-
-#: modules/addons/addons.php:244
-msgid "Multiple authors support"
-msgstr ""
-
-#: modules/addons/addons.php:246
-msgid ""
-"Allows you choose multiple authors for a single post. This add-on is ideal "
-"for teams who write collaboratively."
-msgstr ""
-
-#: modules/addons/addons.php:254
-msgid "Reminders"
-msgstr ""
-
-#: modules/addons/addons.php:256
-msgid ""
-"Automatically send notifications before or after content is published. "
-"Reminders are very useful for making sure your team meets its deadlines."
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:77
-msgid "Async Notifications"
-msgstr ""
-
-#: modules/async-notifications/async-notifications.php:321
-#, php-format
-msgid "Event: %s, Post ID: %s, Channel: %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:157 modules/calendar/calendar.php:372
-#: modules/calendar/calendar.php:389 modules/calendar/calendar.php:390
-#: modules/calendar/calendar.php:921
-msgid "Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:172
-msgid "Post date updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:173
-msgid "There was an error updating the post. Please try again."
-msgstr ""
-
-#: modules/calendar/calendar.php:175
-#, php-format
-msgid ""
-"Updating the post date dynamically doesn't work for published content. "
-"Please edit the post ."
-msgstr ""
-
-#: modules/calendar/calendar.php:177
-msgid ""
-"iCal secret key regenerated. Please inform all users they will need to "
-"resubscribe."
-msgstr ""
-
-#: modules/calendar/calendar.php:183
-#: modules/custom-status/custom-status.php:101
-#: modules/editorial-comments/editorial-comments.php:66
-#: modules/editorial-metadata/editorial-metadata.php:104
-#: modules/notifications/notifications.php:92
-#: modules/user-groups/user-groups.php:96
-msgid "Overview"
-msgstr ""
-
-#: modules/calendar/calendar.php:184
-msgid ""
-"The calendar is a convenient week-by-week or month-by-month view into "
-"your content. Quickly see which stories are on track to being published on "
-"time, and which will need extra effort.
"
-msgstr ""
-
-#: modules/calendar/calendar.php:187
-msgid ""
-"For more information:
Calendar Documentation
PublishPress on Github"
-"a>
"
-msgstr ""
-
-#: modules/calendar/calendar.php:530
-msgid "Something is wrong with the format for the new date."
-msgstr ""
-
-#. Plugin Name of the plugin/theme
-#. Author of the plugin/theme
-#: modules/calendar/calendar.php:948 modules/settings/settings.php:59
-#: modules/settings/settings.php:272 publishpress.php:534
-msgid "PublishPress"
-msgstr ""
-
-#: modules/calendar/calendar.php:949
-msgid "Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:953
-msgid "Start date"
-msgstr ""
-
-#: modules/calendar/calendar.php:956
-msgid "Current week"
-msgstr ""
-
-#: modules/calendar/calendar.php:957
-msgid "One month ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:958
-msgid "Two months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:959
-msgid "Three months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:960
-msgid "Four months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:961
-msgid "Five months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:962
-msgid "Six months ago"
-msgstr ""
-
-#: modules/calendar/calendar.php:967
-msgid "End date"
-msgstr ""
-
-#: modules/calendar/calendar.php:969
-msgid "Weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:970
-msgid "One week"
-msgstr ""
-
-#: modules/calendar/calendar.php:971
-msgid "Two weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:972
-msgid "Three weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:973
-msgid "Four weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:976
-msgid "Months"
-msgstr ""
-
-#: modules/calendar/calendar.php:977
-msgid "One month"
-msgstr ""
-
-#: modules/calendar/calendar.php:979
-msgid "Two months"
-msgstr ""
-
-#: modules/calendar/calendar.php:980
-msgid "Three months"
-msgstr ""
-
-#: modules/calendar/calendar.php:981
-msgid "Four months"
-msgstr ""
-
-#: modules/calendar/calendar.php:982
-msgid "Five months"
-msgstr ""
-
-#: modules/calendar/calendar.php:983
-msgid "Six months"
-msgstr ""
-
-#: modules/calendar/calendar.php:984
-msgid "Seven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:985
-msgid "Eight months"
-msgstr ""
-
-#: modules/calendar/calendar.php:986
-msgid "Nine months"
-msgstr ""
-
-#: modules/calendar/calendar.php:987
-msgid "Ten months"
-msgstr ""
-
-#: modules/calendar/calendar.php:988
-msgid "Eleven months"
-msgstr ""
-
-#: modules/calendar/calendar.php:989
-msgid "Twelve months"
-msgstr ""
-
-#: modules/calendar/calendar.php:999
-msgid "Download .ics file"
-msgstr ""
-
-#: modules/calendar/calendar.php:1004
-msgid "Copy to the clipboard"
-msgstr ""
-
-#: modules/calendar/calendar.php:1009
-msgid "Click here to Subscribe in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:1024
-#, php-format
-msgid "Post moved to the trash."
-msgid_plural "%d posts moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1030
-#: modules/content-overview/content-overview.php:671
-msgid "Undo"
-msgstr ""
-
-#: modules/calendar/calendar.php:1035
-#, php-format
-msgid "Post restored from the Trash."
-msgid_plural "%d posts restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:1154
-msgid "Click to create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1175
-#, php-format
-msgid "Show %d more"
-msgstr ""
-
-#. translators: %1$s = post type name, %2$s = date
-#: modules/calendar/calendar.php:1187
-#, php-format
-msgid "Schedule a %1$s for %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1198
-#, php-format
-msgid "Schedule content for %1$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1202
-#: modules/editorial-metadata/editorial-metadata.php:1447
-#: modules/editorial-metadata/editorial-metadata.php:1516
-msgid "Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1217 modules/calendar/calendar.php:1617
-#: modules/content-overview/content-overview.php:364
-msgid "Author"
-msgstr ""
-
-#: modules/calendar/calendar.php:1231
-#: modules/content-overview/content-overview.php:363
-#: modules/custom-status/custom-status.php:1293
-msgid "Status"
-msgstr ""
-
-#: modules/calendar/calendar.php:1248
-msgid "Publish Time"
-msgstr ""
-
-#: modules/calendar/calendar.php:1273
-msgid "Create"
-msgstr ""
-
-#: modules/calendar/calendar.php:1277 modules/calendar/calendar.php:1522
-#: modules/content-overview/content-overview.php:1050
-#: modules/custom-status/custom-status.php:2216
-#: modules/custom-status/custom-status.php:2602
-#: modules/editorial-metadata/editorial-metadata.php:1756
-#: modules/roles/lib/list_table.php:139 modules/user-groups/user-groups.php:747
-msgid "Edit"
-msgstr ""
-
-#: modules/calendar/calendar.php:1509
-#: modules/content-overview/content-overview.php:956
-msgid "None"
-msgstr ""
-
-#: modules/calendar/calendar.php:1522
-msgid "Edit this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1525
-msgid "Trash this item"
-msgstr ""
-
-#: modules/calendar/calendar.php:1531
-#: modules/content-overview/content-overview.php:1067
-#: modules/custom-status/custom-status.php:2295
-#, php-format
-msgid "Preview “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1532
-#: modules/content-overview/content-overview.php:1068
-#: modules/custom-status/custom-status.php:2296
-msgid "Preview"
-msgstr ""
-
-#: modules/calendar/calendar.php:1534
-#: modules/content-overview/content-overview.php:1062
-#, php-format
-msgid "View “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1535
-#: modules/content-overview/content-overview.php:1063
-msgid "View"
-msgstr ""
-
-#: modules/calendar/calendar.php:1539
-#, php-format
-msgid "Save “%s”"
-msgstr ""
-
-#: modules/calendar/calendar.php:1540
-#: modules/custom-status/custom-status.php:961
-msgid "Save"
-msgstr ""
-
-#: modules/calendar/calendar.php:1625
-msgid "Post Type"
-msgstr ""
-
-#: modules/calendar/calendar.php:1737
-#: modules/content-overview/content-overview.php:645
-#: modules/content-overview/content-overview.php:711
-msgid "Reset"
-msgstr ""
-
-#: modules/calendar/calendar.php:1743
-msgid "Forward 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1745
-msgid "›"
-msgstr ""
-
-#: modules/calendar/calendar.php:1747
-#, php-format
-msgid "Forward %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1750
-msgid "»"
-msgstr ""
-
-#: modules/calendar/calendar.php:1754
-#, php-format
-msgid "Today is %s"
-msgstr ""
-
-#: modules/calendar/calendar.php:1756
-msgid "Today"
-msgstr ""
-
-#: modules/calendar/calendar.php:1761
-#, php-format
-msgid "Back %d weeks"
-msgstr ""
-
-#: modules/calendar/calendar.php:1763
-msgid "«"
-msgstr ""
-
-#: modules/calendar/calendar.php:1765
-msgid "Back 1 week"
-msgstr ""
-
-#: modules/calendar/calendar.php:1767
-msgid "‹"
-msgstr ""
-
-#: modules/calendar/calendar.php:1989
-#, php-format
-msgid "for %1$s through %2$s"
-msgstr ""
-
-#: modules/calendar/calendar.php:2039
-msgid "Post types to show"
-msgstr ""
-
-#: modules/calendar/calendar.php:2042
-msgid "Subscription in iCal or Google Calendar"
-msgstr ""
-
-#: modules/calendar/calendar.php:2047
-msgid "Display Posts publish time"
-msgstr ""
-
-#: modules/calendar/calendar.php:2054
-msgid "Posts publish time format"
-msgstr ""
-
-#: modules/calendar/calendar.php:2073
-msgid "At least one post type must be selected"
-msgstr ""
-
-#: modules/calendar/calendar.php:2088
-msgid ""
-"The number of weeks shown on the calendar can be changed on a user-by-user "
-"basis using the calendar's screen options."
-msgstr ""
-
-#: modules/calendar/calendar.php:2100
-#: modules/custom-status/custom-status.php:1726
-#: modules/dashboard/dashboard.php:309 modules/dashboard/dashboard.php:330
-#: modules/dashboard/dashboard.php:360
-msgid "Disabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2101
-#: modules/custom-status/custom-status.php:1727
-#: modules/dashboard/dashboard.php:310 modules/dashboard/dashboard.php:331
-#: modules/dashboard/dashboard.php:361
-msgid "Enabled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2114
-msgid "Regenerate calendar feed secret"
-msgstr ""
-
-#: modules/calendar/calendar.php:2134
-msgid "Show publish times"
-msgstr ""
-
-#: modules/calendar/calendar.php:2135
-msgid "Hide them"
-msgstr ""
-
-#: modules/calendar/calendar.php:2300
-msgid "No date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2311
-msgid "Please change Quick Create to use a post type viewable on the calendar."
-msgstr ""
-
-#: modules/calendar/calendar.php:2323
-msgid "Untitled"
-msgstr ""
-
-#: modules/calendar/calendar.php:2341 publishpress.php:620
-msgid "You do not have necessary permissions to complete this action."
-msgstr ""
-
-#: modules/calendar/calendar.php:2366
-msgid "Invalid Publish Date supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2372
-msgid "Invalid Status supplied."
-msgstr ""
-
-#: modules/calendar/calendar.php:2412
-msgid "Post could not be created"
-msgstr ""
-
-#: modules/calendar/calendar.php:2539
-msgid "Invalid metadata type"
-msgstr ""
-
-#: modules/calendar/calendar.php:2548
-msgid "Metadata could not be updated."
-msgstr ""
-
-#: modules/calendar/calendar.php:2627
-msgid "All statuses"
-msgstr ""
-
-#: modules/calendar/calendar.php:2641
-msgid "All categories"
-msgstr ""
-
-#: modules/calendar/calendar.php:2654
-msgid "All tags"
-msgstr ""
-
-#: modules/calendar/calendar.php:2668
-msgid "All users"
-msgstr ""
-
-#: modules/calendar/calendar.php:2681
-msgid "All types"
-msgstr ""
-
-#: modules/calendar/calendar.php:2700
-#, php-format
-msgid "%s week"
-msgid_plural "%s weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/calendar/calendar.php:2742
-msgid "Missed schedule"
-msgstr ""
-
-#: modules/calendar/calendar.php:2752
-msgid "Publish on"
-msgstr ""
-
-#: modules/calendar/calendar.php:2836
-msgid ""
-"The selected user doesn't have enough permissions to be set as the post "
-"author."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:128
-#: modules/content-overview/content-overview.php:290
-#: modules/content-overview/content-overview.php:307
-#: modules/content-overview/content-overview.php:308
-#: modules/content-overview/content-overview.php:511
-msgid "Content Overview"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:187
-msgid "Screen Layout"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:365
-msgid "Post Date"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:366
-msgid "Last Modified"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:458
-msgid "Number of Columns: "
-msgstr ""
-
-#: modules/content-overview/content-overview.php:636
-#, php-format
-msgctxt ""
-"%1$s = start date, %2$s = number of days, %3$s = translation of 'Days'"
-msgid "starting %1$s showing %2$s %3$s"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:639
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:642
-#: modules/content-overview/content-overview.php:649
-msgid "Change"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:648
-#: modules/custom-status/custom-status.php:1862
-#: modules/editorial-comments/editorial-comments.php:245
-#: modules/editorial-metadata/editorial-metadata.php:1473
-msgid "Cancel"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:667
-#, php-format
-msgid "Item moved to the trash."
-msgid_plural "%d items moved to the trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:676
-#, php-format
-msgid "Item restored from the Trash."
-msgid_plural "%d items restored from the Trash."
-msgstr[0] ""
-msgstr[1] ""
-
-#: modules/content-overview/content-overview.php:718
-msgid "Print"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:744
-msgid "View all statuses"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:758
-msgid "View all categories"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:770
-msgid "View all users"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:800
-msgid "Click to toggle"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:825
-msgid "There are no posts for this term in the range or filter specified."
-msgstr ""
-
-#: modules/content-overview/content-overview.php:1049
-#: modules/dashboard/dashboard.php:267
-msgid "Edit this post"
-msgstr ""
-
-#: modules/content-overview/content-overview.php:1055
-msgid "Move this item to the Trash"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:71
-msgid "Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:88
-msgid "Edit Statuses"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:90
-msgid "Post status created."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:91
-#: modules/custom-status/custom-status.php:94
-msgid "Post status updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:92
-msgid "Post status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:93
-msgid "Default post status has been changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:95
-msgid "Post status deleted."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:96
-msgid "Status order updated."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:102
-msgid ""
-"PublishPress’s custom statuses allow you to define the most important "
-"stages of your editorial workflow. Out of the box, WordPress only offers "
-"“Draft” and “Pending Review” as post states. With custom statuses, you can "
-"create your own post states like “In Progress”, “Pitch”, or “Waiting for "
-"Edit” and keep or delete the originals. You can also drag and drop statuses "
-"to set the best order for your workflow.
Custom statuses are fully "
-"integrated into the rest of PublishPress and the WordPress admin. On the "
-"calendar and content overview, you can filter your view to see only posts of "
-"a specific post state. Furthermore, email notifications can be sent to a "
-"specific group of users when a post changes state.
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:105
-msgid ""
-"For more information:
Custom Status Documentation"
-"a>
PublishPress "
-"on Github
"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:169
-msgid "Pitch"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:172
-msgid "Idea proposed; waiting for acceptance."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:179
-msgid "Assigned"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:182
-msgid "Post idea assigned to writer."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:189
-msgid "In Progress"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:192
-msgid "Writer is working on the post."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:202
-msgid "Post is a draft; not ready for review or publication."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:212
-msgid "Post needs to be reviewed by an editor."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:417
-msgid ""
-"Are you sure you want to delete the post status? All posts with this status "
-"will be assigned to the default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:498
-msgid ""
-"Note: Your browser does not support JavaScript or has "
-"JavaScript disabled. You will not be able to access or change the post "
-"status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:862
-msgid "Privately Published"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:960
-msgid "— No Change —"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1028
-msgid "Custom status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1081
-msgid "Cannot reassign to the status you want to delete"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1106
-msgid "Restricted status "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1376
-#: modules/custom-status/custom-status.php:1467
-msgid "Please enter a name for the status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1380
-#: modules/custom-status/custom-status.php:1471
-msgid "Please enter a valid, non-numeric name for the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1385
-#: modules/custom-status/custom-status.php:1476
-msgid "Status name cannot exceed 20 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1390
-#: modules/custom-status/custom-status.php:1488
-msgid "Status name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1395
-#: modules/custom-status/custom-status.php:1500
-msgid "Status name is restricted. Please choose another name."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1415
-msgid "Could not add status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1495
-msgid "Status name conflicts with existing status. Please choose another."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1521
-msgid "Error updating post status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1555
-#: modules/custom-status/custom-status.php:1592
-msgid "Invalid nonce for submission."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1560
-#: modules/custom-status/custom-status.php:1597
-msgid "Sorry, you do not have permission to edit custom statuses."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1572
-msgid "Status doesn't exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1604
-msgid "Status does not exist."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1609
-msgid "Cannot delete default status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1614
-msgid "Could not delete the status: "
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1672
-#: modules/editorial-metadata/editorial-metadata.php:1278
-msgid "Terms not set."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1698
-msgid "Use on these post types:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1702
-msgid "Show the status dropdown menu on the post editing screen:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1797
-msgid "Custom Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1803
-#: modules/custom-status/custom-status.php:1901
-msgid "The name is used to identify the status. (Max: 20 characters)"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1808
-#: modules/editorial-metadata/editorial-metadata.php:1433
-#: modules/editorial-metadata/editorial-metadata.php:1502
-msgid "Slug"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1814
-msgid ""
-"The slug is the unique ID for the status and is changed when the name is "
-"changed."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1819
-#: modules/custom-status/custom-status.php:1905
-#: modules/custom-status/custom-status.php:2467
-#: modules/editorial-metadata/editorial-metadata.php:1440
-#: modules/editorial-metadata/editorial-metadata.php:1509
-#: modules/editorial-metadata/editorial-metadata.php:1657
-#: modules/user-groups/user-groups.php:714
-msgid "Description"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1826
-#: modules/custom-status/custom-status.php:1912
-msgid ""
-"The description is primarily for administrative use, to give you some "
-"context on what the custom status is to be used for."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1831
-#: modules/custom-status/custom-status.php:1916
-msgid "Color"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1838
-#: modules/custom-status/custom-status.php:1923
-msgid "The color is used to identify the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1842
-#: modules/custom-status/custom-status.php:1926
-#: modules/custom-status/custom-status.php:2468
-msgid "Icon"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1855
-#: modules/custom-status/custom-status.php:1940
-msgid "The icon is used to visually represent the status."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1860
-msgid "Update Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1883
-#: modules/editorial-metadata/editorial-metadata.php:1485
-msgid "Options"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1887
-#: modules/editorial-metadata/editorial-metadata.php:1488
-msgid "Add New"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1894
-#: modules/custom-status/custom-status.php:2466
-#: modules/editorial-metadata/editorial-metadata.php:1428
-#: modules/editorial-metadata/editorial-metadata.php:1495
-#: modules/editorial-metadata/editorial-metadata.php:1655
-#: modules/user-groups/user-groups.php:713
-msgid "Name"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1945
-msgid "Add New Status"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:1953
-msgid ""
-"Please note that checking a box will apply all statuses to that post type."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2182
-#: modules/custom-status/custom-status.php:2213
-msgid "Permalink:"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2193
-msgid "Change Permalinks"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2216
-msgid "Edit permalink"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2465
-#: modules/editorial-metadata/editorial-metadata.php:1654
-msgid "Position"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2490
-msgid "No custom statuses found."
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2589
-msgid "Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2604
-msgid "Make Default"
-msgstr ""
-
-#: modules/custom-status/custom-status.php:2609
-#: modules/editorial-metadata/editorial-metadata.php:1762
-#: modules/roles/lib/list_table.php:143 modules/user-groups/user-groups.php:752
-msgid "Delete"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:56
-msgid "Dashboard"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:70
-msgid "Widget Options"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:155
-msgid "Unpublished Content"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:161 modules/dashboard/dashboard.php:296
-msgid "Notepad"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:167 modules/dashboard/dashboard.php:293
-msgid "My Content Notifications"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:190
-msgid "Posts at a Glance"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:269
-msgid "This post was last updated on "
-msgstr ""
-
-#: modules/dashboard/dashboard.php:274
-msgid "Sorry! You're not subscribed to any posts!"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:290
-msgid "Post Status Widget"
-msgstr ""
-
-#: modules/dashboard/dashboard.php:347
-msgid ""
-"The notifications module will need to be enabled for this widget to display."
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:50
-msgid "Dashboard Note"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:119
-#, php-format
-msgid "%1$s last updated on %2$s"
-msgstr ""
-
-#: modules/dashboard/widgets/dashboard-notepad.php:137
-msgid "Update Note"
-msgstr ""
-
-#: modules/debug/debug.php:63
-msgid "Debug"
-msgstr ""
-
-#: modules/debug/debug.php:187 modules/debug/debug.php:242
-msgid "PublishPress Debug Log"
-msgstr ""
-
-#: modules/debug/debug.php:199 modules/debug/debug.php:200
-msgid "Debug Log"
-msgstr ""
-
-#: modules/debug/debug.php:243
-msgid "File info"
-msgstr ""
-
-#: modules/debug/debug.php:244
-msgid "Path"
-msgstr ""
-
-#: modules/debug/debug.php:245
-msgid "Log content"
-msgstr ""
-
-#: modules/debug/debug.php:246
-msgid "Size"
-msgstr ""
-
-#: modules/debug/debug.php:247
-msgid "Created on"
-msgstr ""
-
-#: modules/debug/debug.php:248
-msgid "Modified on"
-msgstr ""
-
-#: modules/debug/debug.php:249
-msgid "Delete file"
-msgstr ""
-
-#: modules/debug/debug.php:250
-msgid "Debug data"
-msgstr ""
-
-#: modules/debug/debug.php:251
-msgid "Log File"
-msgstr ""
-
-#: modules/debug/debug.php:254
-msgid "Log file not found."
-msgstr ""
-
-#: modules/debug/debug.php:256
-msgid ""
-"If you see any error or look for information regarding PublishPress, please "
-"don't hesitate to contact the support team. E-mail us:"
-msgstr ""
-
-#: modules/debug/debug.php:260
-msgid ""
-"Click to delete the log file. Be careful, this operation can not be undone. "
-msgstr ""
-
-#: modules/debug/debug.php:303
-msgid "Action nonce not found."
-msgstr ""
-
-#: modules/debug/debug.php:310
-msgid "Invalid action nonce."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:48
-#: modules/editorial-comments/editorial-comments.php:150
-msgid "Editorial Comments"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:62
-msgid "Choose Post Types"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:67
-msgid ""
-"Editorial comments help you cut down on email overload and keep the "
-"conversation close to where it matters: your content. Threaded commenting in "
-"the admin, similar to what you find at the end of a blog post, allows "
-"writers and editors to privately leave feedback and discuss what needs to be "
-"changed before publication.
Anyone with access to view the story in "
-"progress will also have the ability to comment on it. If you have "
-"notifications enabled, those following the post will receive an email every "
-"time a comment is left.
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:70
-msgid ""
-"For more information:
Editorial Comments "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:214
-msgid ""
-"You can add editorial comments to a post once you've saved it for the first "
-"time."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:231
-#: modules/editorial-comments/editorial-comments.php:232
-msgid "Add an editorial comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:242
-msgid "Add Comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:285
-msgid "Reply to this comment"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:286
-msgid "Reply"
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:311
-#, php-format
-msgid ""
-" said on %2$s "
-"at %3$s "
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:336
-msgid ""
-"Nonce check failed. Please ensure you're supposed to be adding editorial "
-"comments."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:350
-msgid ""
-"Sorry, you don't have the privileges to add editorial comments. Please talk "
-"to your Administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:357
-msgid "Please enter a comment."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:423
-msgid ""
-"There was a problem of some sort. Try again or contact your administrator."
-msgstr ""
-
-#: modules/editorial-comments/editorial-comments.php:437
-msgid "Enable for these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:80
-#: modules/editorial-metadata/editorial-metadata.php:388
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:94
-msgid "Metadata term added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:95
-msgid "Metadata term updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:96
-msgid "Metadata term doesn't exist."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:97
-msgid "Metadata term deleted."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:98
-msgid "Term order updated."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:99
-msgid "Term visibility changed."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:105
-msgid ""
-"Keep track of important details about your content with editorial "
-"metadata. This feature allows you to create as many date, text, number, etc. "
-"fields as you like, and then use them to store information like contact "
-"details or the location of an interview.
Once you’ve set your fields "
-"up, editorial metadata integrates with both the calendar and the content "
-"overview. Make an editorial metadata item visible to have it appear to the "
-"rest of your team. Keep it hidden to restrict the information between the "
-"writer and their editor.
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:107
-msgid ""
-"For more information:
Editorial Metadata "
-"Documentation
PublishPress on Github
"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:174
-msgid "First Draft Date"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:177
-msgid "When the first draft needs to be ready."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:180
-msgid "Assignment"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:183
-msgid "What the post needs to cover."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:250
-msgid "Checkbox"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:252
-msgid "Location"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:253
-msgid "Number"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:254
-msgid "Paragraph"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:255
-msgid "Text"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:256
-msgid "User"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:343
-msgid ""
-"Are you sure you want to delete this term? Any metadata for this term will "
-"remain but will not be visible unless this term is re-added."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:364
-msgctxt "taxonomy general name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:365
-msgctxt "taxonomy singular name"
-msgid "Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:366
-msgid "Search Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:367
-msgid "Popular Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:368
-msgid "All Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:369
-msgid "Edit Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:370
-msgid "Update Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:371
-msgid "Add New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:372
-msgid "New Editorial Metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:393 publishpress.php:615
-msgid "Configure"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:405
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:267
-msgid "Not set"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:422
-msgid "No editorial metadata available."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:424
-#, php-format
-msgid " Add fields to get started ."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:426
-msgid ""
-" Encourage your site administrator to configure your editorial workflow by "
-"adding editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:479
-msgid "M d Y"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:481
-msgid "M d Y H:i"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1068
-msgid "Please enter a name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1072
-msgid "Please enter a slug for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1075
-msgid "Name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1079
-#: modules/editorial-metadata/editorial-metadata.php:1179
-#: modules/roles/roles.php:934
-msgid "Name already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1083
-msgid "Slug already in use. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1088
-#: modules/editorial-metadata/editorial-metadata.php:1189
-msgid "Name cannot exceed 200 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1093
-msgid "Please select a valid metadata type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1117
-msgid "Error adding term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1162
-msgid "Please enter a name for the editorial metadata"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1167
-msgid "Please enter a valid, non-numeric name for the editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1173
-msgid "Metadata name conflicts with existing term. Please choose another."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1184
-msgid ""
-"Name conflicts with slug for another term. Please choose something else."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1211
-#: modules/editorial-metadata/editorial-metadata.php:1253
-msgid "Error updating term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1317
-msgid "Error deleting term."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1335
-#: modules/user-groups/user-groups.php:246
-msgid "Add to these post types:"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1430
-#: modules/editorial-metadata/editorial-metadata.php:1499
-msgid "The name is for labeling the metadata field."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1436
-msgid "The slug cannot be changed once the term has been created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1443
-#: modules/editorial-metadata/editorial-metadata.php:1513
-msgid ""
-"The description can be used to communicate with your team about what the "
-"metadata is for."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1450
-msgid "The metadata type cannot be changed once created."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1454
-#: modules/editorial-metadata/editorial-metadata.php:1529
-#: modules/editorial-metadata/editorial-metadata.php:1658
-msgid "Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1458
-#: modules/editorial-metadata/editorial-metadata.php:1532
-#: modules/editorial-metadata/editorial-metadata.php:1705
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:78
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:112
-msgid "No"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1459
-#: modules/editorial-metadata/editorial-metadata.php:1533
-#: modules/editorial-metadata/editorial-metadata.php:1703
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:79
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:111
-msgid "Yes"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1466
-#: modules/editorial-metadata/editorial-metadata.php:1541
-#: modules/editorial-metadata/editorial-metadata.php:1760
-msgid ""
-"When viewable, metadata can be seen on views other than the edit post view "
-"(e.g. calendar, manage posts, content overview, etc.)"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1472
-msgid "Update Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1506
-msgid ""
-"The \"slug\" is the URL-friendly version of the name. It is usually all "
-"lowercase and contains only letters, numbers, and hyphens."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1526
-msgid "Indicate the type of editorial metadata."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1546
-msgid "Add New Metadata Term"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1552
-msgid ""
-"Please note that checking a box will apply all metadata to that post type."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1656
-msgid "Metadata Type"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1736
-msgid "No editorial metadata found."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1758
-msgid "Hidden metadata can only be viewed on the edit post view."
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1758
-msgid "Make Hidden"
-msgstr ""
-
-#: modules/editorial-metadata/editorial-metadata.php:1760
-msgid "Make Viewable"
-msgstr ""
-
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:154
-#: modules/notifications/notifications.php:1624
-#, php-format
-msgid "%1$s at %2$s"
-msgstr ""
-
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:129
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:151
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:171
-msgid "This editorial metadata type is not yet supported."
-msgstr ""
-
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:56
-#, php-format
-msgid "View “%s” on Google Maps"
-msgstr ""
-
-#: modules/editorial-metadata/input-handlers/editorial-metadata-input-user-handler.php:59
-msgid "-- Select a user --"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:67
-msgid "Edit Flow Migration"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:68
-msgid "Migrate data from Edit Flow into PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:149
-msgid ""
-"This migration will import all of your data and settings from Edit Flow."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:151
-msgid ""
-"Heads up! Importing data from EditFlow will overwrite any current data in "
-"PublishPress."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:153
-msgid "Start"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:154
-msgid "Plugin and Modules Options"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:155
-msgid "User Meta-data"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:156
-msgid "Finished!"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:157
-msgid "Please, wait while we migrate your legacy data..."
-msgstr ""
-
-#: modules/efmigration/efmigration.php:159
-msgid "Error"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:160
-msgid "If needed, feel free to"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:161
-msgid "contact the support team"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:162
-msgid "Back to PublishPress"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:191
-#: modules/efmigration/efmigration.php:386
-#: modules/efmigration/efmigration.php:388
-msgid "Access Denied"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:243
-#, php-format
-msgid ""
-"We have found Edit Flow and its data! Would you like to import the data into "
-"PublishPress? Yes, import the data | Dismiss "
-msgstr ""
-
-#: modules/efmigration/efmigration.php:300
-msgid "Unknown step"
-msgstr ""
-
-#: modules/efmigration/efmigration.php:306
-msgid "Undefined migration method"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:92
-#: publishpress.php:1115
-msgid "Notification Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:247
-msgid "Default notification channels:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:286
-msgid "Notify when content is published"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:348
-#: modules/improved-notifications/improved-notifications.php:879
-msgid "Editorial Notifications"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:349
-#: modules/improved-notifications/improved-notifications.php:880
-msgid "Choose the channels where each workflow will send notifications to:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:351
-#: modules/improved-notifications/improved-notifications.php:867
-#: modules/improved-notifications/improved-notifications.php:882
-msgid "Muted"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:352
-#: modules/improved-notifications/improved-notifications.php:883
-msgid "Workflows"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:353
-#: modules/improved-notifications/improved-notifications.php:884
-msgid "Channels"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:376
-msgid "Notify on editorial comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:628
-msgid "Workflow Settings"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:637
-msgid "Help"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:669
-msgid "For which content?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:689
-msgid "What to say?"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:714
-msgid "Select at least one option for each section."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:715
-msgid ""
-"You can add dynamic information to the Subject or Body text using the "
-"following shortcodes:"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:718
-msgid "Editorial Comment"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:719
-msgid "User making changes or comments"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:720
-msgid "Workflow"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:721
-msgid "Format"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:722
-msgid "Receiver"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:723
-msgid "shortcode"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:724
-msgid "field"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:725
-msgid ""
-"On each shortcode, you can select one or more fields. If more than one, they "
-"will be displayed separated by \", \"."
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:727
-msgid "Available fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:728
-msgid "Meta fields"
-msgstr ""
-
-#: modules/improved-notifications/improved-notifications.php:729
-msgid "Click here to read more about shortcode options..."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:49
-msgid "General"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:99
-msgid "Display PublishPress branding:"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:205
-msgid "Features"
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:206
-msgid "Feel free to select only the features you need."
-msgstr ""
-
-#: modules/modules-settings/modules-settings.php:211
-msgid "Enabled features"
-msgstr ""
-
-#: modules/notifications/notifications.php:71
-msgid "Default Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:94
-msgid ""
-"Notifications ensure you keep up to date with progress your most "
-"important content. Users can be subscribed to notifications on a post one by "
-"one or by selecting roles.
When enabled, notifications can be sent "
-"when a post changes status or an editorial comment is left by a writer or an "
-"editor.
"
-msgstr ""
-
-#: modules/notifications/notifications.php:99
-msgid ""
-"For more information:
Notifications Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/notifications/notifications.php:408
-msgid "Click to stop being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:409
-msgid "Stop notifying me"
-msgstr ""
-
-#: modules/notifications/notifications.php:412
-msgid "Click to start being notified on updates for this post"
-msgstr ""
-
-#: modules/notifications/notifications.php:413
-msgid "Notify me"
-msgstr ""
-
-#: modules/notifications/notifications.php:439 publishpress.php:1120
-msgid "Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:464
-msgid ""
-"Enter any users, roles, or email address that should receive notifications "
-"from workflows."
-msgstr ""
-
-#: modules/notifications/notifications.php:485
-msgid "Active Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:497
-msgid ""
-"This won't have any effect unless you have at least one workflow targeting "
-"the \"Notify me\" box."
-msgstr ""
-
-#: modules/notifications/notifications.php:815
-#, php-format
-msgid "You are receiving this email because you are subscribed to \"%s\"."
-msgstr ""
-
-#: modules/notifications/notifications.php:819
-#, php-format
-msgid "This email was sent %s."
-msgstr ""
-
-#: modules/notifications/notifications.php:1401
-msgid ""
-"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1409
-msgid "Email from:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1417
-msgid "Always notify the author of the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1425
-msgid "Always notify users who have edited the content:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1433
-msgid "Blacklisted taxonomies for Notifications"
-msgstr ""
-
-#: modules/notifications/notifications.php:1547
-msgid "slug1,slug2"
-msgstr ""
-
-#: modules/notifications/notifications.php:1552
-msgid ""
-"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
-"the Taxonomy content filter when adding a new Notification Workflow."
-msgstr ""
-
-#: modules/notifications/notifications.php:1651
-msgid "WordPress Scheduler"
-msgstr ""
-
-#: modules/notifications/notifications.php:1660
-#, php-format
-msgid "[%1$s] New %2$s Created: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1667
-#, php-format
-msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1677
-#, php-format
-msgid "[%1$s] %2$s Trashed: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1684
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1694
-#, php-format
-msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1701
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
-msgstr ""
-
-#. translators: 1: site name, 2: post type, 3. post title
-#: modules/notifications/notifications.php:1710
-#, php-format
-msgid "[%1$s] %2$s Scheduled: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1713
-#, php-format
-msgid ""
-"%1$s #%2$s \"%3$s\" was scheduled by %4$s %5$s. It will be published on %6$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1724
-#, php-format
-msgid "[%1$s] %2$s Published: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1731
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1741
-#, php-format
-msgid "[%1$s] %2$s Unpublished: \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1748
-#, php-format
-msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1758
-#, php-format
-msgid "[%1$s] %2$s Status Changed for \"%3$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1765
-#, php-format
-msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1776
-#, php-format
-msgid "This action was taken on %1$s at %2$s %3$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1789
-#, php-format
-msgid "%1$s => %2$s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1797
-#, php-format
-msgid "== %s Details =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1798
-#, php-format
-msgid "Title: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1802
-#, php-format
-msgid "Author: %1$s (%2$s )"
-msgstr ""
-
-#: modules/notifications/notifications.php:1816
-#: modules/notifications/notifications.php:1869
-msgid "== Actions =="
-msgstr ""
-
-#: modules/notifications/notifications.php:1818
-#: modules/notifications/notifications.php:1875
-#, php-format
-msgid "Add editorial comment: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1821
-#: modules/notifications/notifications.php:1878
-#, php-format
-msgid "Edit: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1822
-#: modules/notifications/notifications.php:1879
-#, php-format
-msgid "View: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1833
-#, php-format
-msgid "[%1$s] New Editorial Comment: \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1840
-#, php-format
-msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
-msgstr ""
-
-#: modules/notifications/notifications.php:1847
-#, php-format
-msgid "%1$s (%2$s ) said on %3$s at %4$s:"
-msgstr ""
-
-#: modules/notifications/notifications.php:1871
-#, php-format
-msgid "Reply: %s"
-msgstr ""
-
-#: modules/notifications/notifications.php:1882
-#, php-format
-msgid "You can see all editorial comments on this %s here: "
-msgstr ""
-
-#: modules/roles/lib/list_table.php:101
-msgid "No roles found."
-msgstr ""
-
-#: modules/roles/lib/list_table.php:112
-msgid "Display Name"
-msgstr ""
-
-#: modules/roles/lib/list_table.php:113
-msgid "Users in this role"
-msgstr ""
-
-#: modules/roles/roles.php:88
-msgid "Role created. Feel free to add users to the role."
-msgstr ""
-
-#: modules/roles/roles.php:89
-msgid "Role updated."
-msgstr ""
-
-#: modules/roles/roles.php:90
-msgid "Role doesn't exist."
-msgstr ""
-
-#: modules/roles/roles.php:91
-msgid "Role deleted."
-msgstr ""
-
-#: modules/roles/roles.php:276
-msgid ""
-"PublishPress detected legacy data which needs to be migrated. This task "
-"should run in the background in the next few minutes."
-msgstr ""
-
-#: modules/roles/roles.php:289
-msgid "PublishPress finished migrating the legacy data."
-msgstr ""
-
-#: modules/roles/roles.php:869
-msgid "Add New Role"
-msgstr ""
-
-#: modules/roles/roles.php:870
-msgid "Edit Role"
-msgstr ""
-
-#: modules/roles/roles.php:871
-msgid "Display name"
-msgstr ""
-
-#: modules/roles/roles.php:872
-msgid "This is the name that users will see."
-msgstr ""
-
-#: modules/roles/roles.php:873
-msgid "Developer Name (ID)"
-msgstr ""
-
-#: modules/roles/roles.php:875
-msgid ""
-"This is the name that developers can use to interact with this role. Only "
-"use A-Z letters and the \"-\" sign."
-msgstr ""
-
-#: modules/roles/roles.php:879
-msgid "Add users to this role."
-msgstr ""
-
-#: modules/roles/roles.php:928
-msgid "Please enter a name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:939
-msgid "Role name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:946 modules/roles/roles.php:1025
-msgid "Please enter a display name for the role."
-msgstr ""
-
-#: modules/roles/roles.php:953 modules/roles/roles.php:1030
-msgid ""
-"Role's display name cannot exceed 40 characters. Please try a shorter name."
-msgstr ""
-
-#: modules/roles/roles.php:968
-msgid "Error adding role."
-msgstr ""
-
-#: modules/roles/roles.php:1045
-msgid "Error loading role."
-msgstr ""
-
-#: modules/roles/roles.php:1049 modules/roles/roles.php:1124
-msgid "Role not found. Can't edit."
-msgstr ""
-
-#: modules/roles/roles.php:1117
-msgid "You can't delete the administrator role."
-msgstr ""
-
-#: modules/settings/settings.php:120
-msgid "settings"
-msgstr ""
-
-#: modules/settings/settings.php:137
-msgid "PublishPress Settings"
-msgstr ""
-
-#: modules/settings/settings.php:138
-msgid "Settings"
-msgstr ""
-
-#: modules/settings/settings.php:275
-#, php-format
-msgid "If you like %s please leave us a %s rating. Thank you!"
-msgstr ""
-
-#: modules/settings/settings.php:291
-msgid "There are no PublishPress modules registered"
-msgstr ""
-
-#: modules/settings/settings.php:358
-msgid "Posts"
-msgstr ""
-
-#: modules/settings/settings.php:359
-msgid "Pages"
-msgstr ""
-
-#: modules/settings/settings.php:381
-#, php-format
-msgid ""
-"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
-"loaded file."
-msgstr ""
-
-#: modules/settings/settings.php:405 publishpress.php:619
-msgid "Cheatin’ uh?"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:71
-msgid "User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:85
-msgid "User group created. Feel free to add users to the usergroup."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:87
-msgid "User group updated."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:88
-#: modules/user-groups/user-groups.php:463
-msgid "User group doesn't exist."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:89
-msgid "User group deleted."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:92
-msgid "Manage User Groups"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:97
-msgid ""
-"For those with many people involved in the publishing process, user "
-"groups helps you keep them organized.
Currently, user groups are "
-"primarily used for subscribing a set of users to a post for notifications."
-"p>"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:100
-msgid ""
-"
For more information:
User Groups Documentation "
-"p>
PublishPress on "
-"Github
"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:138
-msgid "Copy Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:139
-msgid "Making sure the quality is top-notch."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:142
-msgid "Photographers"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:143
-msgid "Capturing the story visually."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:146
-msgid "Reporters"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:147
-msgid "Out in the field, writing stories."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:150
-msgid "Section Editors"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:151
-msgid "Providing feedback and direction."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:292
-msgid "The User Groups module is deprecated"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:417
-msgid "New user groups must have a name"
-msgstr ""
-
-#: modules/user-groups/user-groups.php:511
-msgid "Invalid users variable. Should be array."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:702
-msgid "No user groups found."
-msgstr ""
-
-#: modules/user-groups/user-groups.php:715
-msgid "Users in Group"
-msgstr ""
-
-#: publishpress.php:369
-msgid "PUBLISHPRESS_VERSION"
-msgstr ""
-
-#: publishpress.php:373
-msgid "PUBLISHPRESS_BASE_PATH"
-msgstr ""
-
-#: publishpress.php:377
-msgid "PUBLISHPRESS_FILE_PATH"
-msgstr ""
-
-#: publishpress.php:381
-msgid "PUBLISHPRESS_URL"
-msgstr ""
-
-#: publishpress.php:385
-msgid "PUBLISHPRESS_SETTINGS_PAGE"
-msgstr ""
-
-#: publishpress.php:389
-msgid "PUBLISHPRESS_LIBRARIES_PATH"
-msgstr ""
-
-#: publishpress.php:393
-msgid "PUBLISHPRESS_BASENAME"
-msgstr ""
-
-#: publishpress.php:397
-msgid "WP_CONTENT_DIR"
-msgstr ""
-
-#: publishpress.php:401
-msgid "WP_CONTENT_URL"
-msgstr ""
-
-#: publishpress.php:405
-msgid "WP Date Format"
-msgstr ""
-
-#: publishpress.php:409
-msgid "WP Time Format"
-msgstr ""
-
-#: publishpress.php:413
-msgid "WP Timezone String"
-msgstr ""
-
-#: publishpress.php:417
-msgid "WP GMT Offset"
-msgstr ""
-
-#: publishpress.php:421
-msgid "date_default_timezone_get"
-msgstr ""
-
-#: publishpress.php:425
-msgid "Framework::FRAMEWORK_BASE_PATH"
-msgstr ""
-
-#: publishpress.php:429
-msgid "Framework::TWIG_PATH"
-msgstr ""
-
-#: publishpress.php:433
-msgid "Framework::ASSETS_BASE_URL"
-msgstr ""
-
-#: publishpress.php:437
-msgid "Framework::PLUGIN_NAME"
-msgstr ""
-
-#: publishpress.php:441
-msgid "Framework::PLUGIN_TITLE"
-msgstr ""
-
-#: publishpress.php:618
-msgid "Please correct your form errors below and try again."
-msgstr ""
-
-#: publishpress.php:622
-msgid "Post does not exist"
-msgstr ""
-
-#: publishpress.php:854
-msgid ""
-"Edit Flow was deactivated by PublishPress. If you want to activate it, "
-"deactive PublishPress first."
-msgstr ""
-
-#: publishpress.php:1116 publishpress.php:1121
-msgid "Notification Workflow"
-msgstr ""
-
-#: publishpress.php:1117
-msgid "Add New Notification Workflow"
-msgstr ""
-
-#: publishpress.php:1118
-msgid "Edit Notification Workflow"
-msgstr ""
-
-#: publishpress.php:1119
-msgid "Search Workflows"
-msgstr ""
-
-#: publishpress.php:1122 publishpress.php:1123
-msgid "No Workflow found"
-msgstr ""
-
-#. Plugin URI of the plugin/theme
-msgid "https://publishpress.com/"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid ""
-"PublishPress helps you plan and publish content with WordPress. Features "
-"include a content calendar, notifications, and custom statuses."
-msgstr ""
-
-#. Author URI of the plugin/theme
-msgid "https://publishpress.com"
-msgstr ""
+# Copyright (C) 2024 PublishPress
+# This file is distributed under the same license as the PublishPress Planner plugin.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PublishPress Planner 4.0.2\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/project\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"POT-Creation-Date: 2025-03-13 09:56+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-Domain: publishpress\n"
+"Language: \n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
+
+#: modules/notifications-log/library/NotificationsLogTable.php:263
+msgid " Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:261
+msgid " Scheduled, but late"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:177
+msgid "\"Notify me\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2043
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was moved to the trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2090
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was published by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2060
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was restored from trash by %4$s %5$s"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2107
+#, php-format
+msgid "%1$s #%2$s \"%3$s\" was unpublished by %4$s %5$s"
+msgstr ""
+
+#. 1: comment author, 2: author email, 3: date, 4: time
+#: modules/notifications/notifications.php:2206
+#, php-format
+msgid "%1$s (%2$s ) said on %3$s at %4$s:"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:538
+#: modules/content-overview/library/content-overview-utilities.php:643
+#, php-format
+msgctxt "%1$s = start date, %2$s = end date"
+msgid " %1$s to
%2$s"
+msgstr ""
+
+#. 1: old status, 2: new status
+#: modules/notifications/notifications.php:2148
+#, php-format
+msgid "%1$s => %2$s"
+msgstr ""
+
+#. 1: Comment date, 2: Comment time.
+#: modules/notifications/notifications.php:1981
+#: modules/editorial-comments/library/EditorialCommentsTable.php:336
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-date-handler.php:201
+#, php-format
+msgid "%1$s at %2$s"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:140
+#, php-format
+msgid "%1$s last updated on %2$s"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:503
+#, php-format
+msgid "%1s weeks"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:176
+msgid "%d Role"
+msgid_plural "%d Roles"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lib/Notifications/Workflow/Step/Receiver/User.php:152
+msgid "%d User"
+msgid_plural "%d Users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/library/calendar-methods.php:1241
+#: modules/calendar/library/calendar-utilities.php:513
+msgid "%d week"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1242
+msgid "%d weeks"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:757
+#: modules/content-board/library/content-board-methods.php:253
+#, php-format
+msgid "%s could not be created"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:754
+#: modules/content-board/library/content-board-methods.php:250
+#, php-format
+msgid "%s created successfully. Edit %s "
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:279
+#, php-format
+msgid "%s notification found."
+msgid_plural "%s notifications found."
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/library/calendar-utilities.php:54
+#: modules/content-overview/library/content-overview-utilities.php:710
+msgid "(Hide all)"
+msgstr ""
+
+#: common/php/util.php:46
+msgid "(no title)"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:37
+msgid "- any status -"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-select-handler.php:255
+#, php-format
+msgid "-- Select %s --"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-user-handler.php:79
+msgid "-- Select a user --"
+msgstr ""
+
+#: modules/calendar/calendar.php:265
+msgid ""
+"For more information:
Calendar Documentation
PublishPress on "
+"Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:88
+msgid ""
+"For more information:
Editorial Comments "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:125
+msgid ""
+"For more information:
Editorial Fields "
+"Documentation
PublishPress on Github
"
+msgstr ""
+
+#: modules/notifications/notifications.php:102
+msgid ""
+"For more information:
Notifications Documentation "
+"
PublishPress "
+"on Github
"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:83
+msgid ""
+"Editorial comments help you cut down on email overload and keep the "
+"conversation close to where it matters: your content. Threaded commenting in "
+"the admin, similar to what you find at the end of a blog post, allows "
+"writers and editors to privately leave feedback and discuss what needs to be "
+"changed before publication.
Anyone with access to view the story in "
+"progress will also have the ability to comment on it. If you have "
+"notifications enabled, those following the post will receive an email every "
+"time a comment is left.
"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:120
+msgid ""
+"Keep track of important details about your content with editorial fields. "
+"This feature allows you to create as many date, text, number, etc. fields as "
+"you like, and then use them to store information like contact details or the "
+"location of an interview.
Once you’ve set your fields up, editorial "
+"fields integrates with both the calendar and the content overview. Make an "
+"editorial fields item visible to have it appear to the rest of your team. "
+"Keep it hidden to restrict the information between the writer and their "
+"editor.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:97
+msgid ""
+"Notifications ensure you keep up to date with progress your most "
+"important content. Users can be subscribed to notifications on a post one by "
+"one or by selecting roles.
When enabled, notifications can be sent "
+"when a post changes status or an editorial comment is left by a writer or an "
+"editor.
"
+msgstr ""
+
+#: modules/calendar/calendar.php:260
+msgid ""
+"The calendar is a convenient week-by-week or month-by-month view into "
+"your content. Quickly see which stories are on track to being published on "
+"time, and which will need extra effort.
"
+msgstr ""
+
+#: modules/notifications/notifications.php:2156
+#, php-format
+msgid "== %s Details =="
+msgstr ""
+
+#: modules/notifications/notifications.php:2175
+#: modules/notifications/notifications.php:2228
+msgid "== Actions =="
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2083
+#, php-format
+msgid "[%1$s] %2$s Published: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2053
+#, php-format
+msgid "[%1$s] %2$s Restored (from Trash ): \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2117
+#, php-format
+msgid "[%1$s] %2$s Status Changed for \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2036
+#, php-format
+msgid "[%1$s] %2$s Trashed: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2100
+#, php-format
+msgid "[%1$s] %2$s Unpublished: \"%3$s\""
+msgstr ""
+
+#. 1: site name, 2: post type, 3. post title
+#: modules/notifications/notifications.php:2019
+#, php-format
+msgid "[%1$s] New %2$s Created: \"%3$s\""
+msgstr ""
+
+#. 1: blog name, 2: post title
+#: modules/notifications/notifications.php:2192
+#, php-format
+msgid "[%1$s] New Editorial Comment: \"%2$s\""
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2026
+#, php-format
+msgid "A new %1$s (#%2$s \"%3$s\" ) was created by %4$s %5$s"
+msgstr ""
+
+#. 1: post id, 2: post title, 3. post type
+#: modules/notifications/notifications.php:2199
+#, php-format
+msgid "A new editorial comment was added to %3$s #%1$s \"%2$s\""
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:21
+msgid "About"
+msgstr ""
+
+#: core/Error.php:81
+msgid "Access denied"
+msgstr ""
+
+#: modules/debug/debug.php:358
+msgid "Action nonce not found."
+msgstr ""
+
+#: modules/notifications/notifications.php:663
+msgid "Active Notifications"
+msgstr ""
+
+#: modules/notifications/notifications.php:1874
+msgid ""
+"Add a list of taxonomy-slugs separated by comma that should not be loaded by "
+"the Taxonomy content filter when adding a new Notification Workflow."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:561
+#: modules/editorial-comments/editorial-comments.php:565
+msgid "Add an editorial comment"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:338
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:649
+msgid "Add Another Option"
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:61
+msgid "Add Column"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:583
+msgid "Add Comment"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1213
+#, php-format
+msgid "Add content for %s"
+msgstr ""
+
+#: modules/notifications/notifications.php:2177
+#: modules/notifications/notifications.php:2234
+#, php-format
+msgid "Add editorial comment: %s"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:618
+#: modules/content-board/library/content-board-utilities.php:399
+#: modules/content-overview/library/content-overview-utilities.php:207
+msgid "Add Filter"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:601
+#: modules/content-board/library/content-board-utilities.php:236
+#: modules/content-board/library/content-board-utilities.php:253
+#: modules/content-board/library/content-board-utilities.php:382
+#: modules/content-overview/library/content-overview-utilities.php:44
+#: modules/content-overview/library/content-overview-utilities.php:190
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:68
+msgid "Add New"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:987
+#: modules/content-overview/library/content-overview-utilities.php:314
+#, php-format
+msgid "Add New %s"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:458
+msgid "Add New Editorial Fields"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:730
+msgid "Add New Editorial fields term"
+msgstr ""
+
+#: publishpress.php:1410
+msgid "Add New Notification"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:370
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:682
+msgid "Add to post types"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:95
+msgid "Advanced Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:517
+msgid "All"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:90
+#: modules/calendar/library/calendar-utilities.php:93
+#: modules/content-board/library/content-board-utilities.php:624
+#: modules/content-board/library/content-board-utilities.php:627
+#: modules/content-overview/library/content-overview-utilities.php:746
+#: modules/content-overview/library/content-overview-utilities.php:749
+#, php-format
+msgid "All %s"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:213
+msgid "All Actions"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1239
+#: modules/calendar/library/calendar-utilities.php:117
+#: modules/calendar/library/calendar-utilities.php:120
+#: modules/content-board/library/content-board-utilities.php:649
+#: modules/content-board/library/content-board-utilities.php:652
+#: modules/content-overview/library/content-overview-utilities.php:771
+#: modules/content-overview/library/content-overview-utilities.php:774
+msgid "All authors"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1237
+msgid "All categories"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:214
+msgid "All Channels"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:607
+msgid "All channels"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:455
+msgid "All Editorial Fields"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:590
+msgid "All events"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1243
+#: modules/editorial-metadata/editorial-metadata.php:1400
+msgid "All options value and labels are required."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:150
+#: modules/content-board/library/content-board-utilities.php:681
+#: modules/content-overview/library/content-overview-utilities.php:803
+msgid "All post types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:219
+#: modules/notifications-log/notifications-log.php:211
+#: modules/editorial-comments/library/EditorialCommentsTable.php:181
+msgid "All Posts"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:479
+msgid "All posts"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:640
+msgid "All Receivers"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:370
+#: modules/content-board/library/content-board-utilities.php:895
+#: modules/content-overview/library/content-overview-utilities.php:1023
+msgid "All status"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:215
+msgid "All Statuses"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1236
+#: modules/calendar/library/calendar-utilities.php:51
+#: modules/content-board/library/content-board-utilities.php:598
+#: modules/content-overview/library/content-overview-utilities.php:707
+msgid "All statuses"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1238
+msgid "All tags"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1240
+msgid "All types"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:220
+#: modules/editorial-comments/library/EditorialCommentsTable.php:196
+msgid "All Users"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:212
+msgid "All Workflows"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:111
+msgid "Allow public access to subscriptions in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications/notifications.php:1738
+msgid "Always notify the author of the content:"
+msgstr ""
+
+#: modules/notifications/notifications.php:1746
+msgid "Always notify users who have edited the content:"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:159
+msgid "Always show complete post titles"
+msgstr ""
+
+#: modules/content-board/content-board.php:847
+#: modules/content-board/library/content-board-methods.php:39
+#: modules/content-board/library/content-board-methods.php:107
+msgid "An error occured"
+msgstr ""
+
+#: modules/content-board/content-board.php:1059
+#: modules/calendar/library/calendar-utilities.php:198
+#: modules/calendar/library/calendar-utilities.php:309
+#: modules/calendar/library/calendar-utilities.php:347
+#: modules/calendar/library/calendar-utilities.php:433
+#: modules/content-board/library/content-board-utilities.php:548
+#: modules/content-board/library/content-board-utilities.php:558
+#: modules/content-board/library/content-board-utilities.php:729
+#: modules/content-board/library/content-board-utilities.php:840
+#: modules/content-board/library/content-board-utilities.php:878
+#: modules/content-board/library/content-board-utilities.php:958
+#: modules/content-overview/library/content-overview-utilities.php:653
+#: modules/content-overview/library/content-overview-utilities.php:663
+#: modules/content-overview/library/content-overview-utilities.php:851
+#: modules/content-overview/library/content-overview-utilities.php:962
+#: modules/content-overview/library/content-overview-utilities.php:1000
+#: modules/content-overview/library/content-overview-utilities.php:1086
+msgid "Apply"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:702
+#: modules/content-board/library/content-board-utilities.php:71
+#: modules/content-board/library/content-board-utilities.php:337
+#: modules/content-board/library/content-board-utilities.php:483
+#: modules/content-overview/library/content-overview-methods.php:302
+#: modules/content-overview/library/content-overview-utilities.php:145
+#: modules/content-overview/library/content-overview-utilities.php:291
+msgid "Apply Changes"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1227
+msgid "Apr"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:372
+msgid ""
+"Are you sure you want to delete this term? Any metadata for this term will "
+"remain but will not be visible unless this term is re-added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:220
+msgid "Assignment"
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:71
+msgid "Async Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "asynchronous"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:179
+msgid "At least one post type must be selected"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:571
+msgid "Attach file"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1231
+msgid "Aug"
+msgstr ""
+
+#: modules/calendar/calendar.php:988 modules/calendar/calendar.php:1210
+#: modules/content-board/content-board.php:699
+#: modules/content-board/content-board.php:710
+#: modules/content-board/content-board.php:753
+#: modules/content-board/content-board.php:812
+#: modules/content-overview/content-overview.php:835
+#: modules/content-overview/content-overview.php:849
+#: modules/content-overview/content-overview.php:894
+#: modules/content-overview/content-overview.php:956
+#: modules/content-overview/content-overview.php:1218
+#: modules/calendar/library/calendar-methods.php:875
+#: modules/calendar/library/calendar-methods.php:1255
+#: modules/calendar/library/calendar-utilities.php:115
+#: modules/calendar/library/calendar-utilities.php:1075
+#: modules/calendar/library/calendar-utilities.php:1191
+#: modules/content-board/library/content-board-utilities.php:647
+#: modules/content-board/library/content-board-utilities.php:1180
+#: modules/content-overview/library/content-overview-utilities.php:506
+#: modules/content-overview/library/content-overview-utilities.php:769
+#: modules/editorial-comments/library/EditorialCommentsTable.php:228
+msgid "Author"
+msgstr ""
+
+#. 1: author name, 2: author email
+#: modules/notifications/notifications.php:2161
+#, php-format
+msgid "Author: %1$s (%2$s )"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:92
+msgid "Authors"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Author.php:26
+msgid "Authors of the content"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:26
+msgid "Authors of the parent page"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:64
+msgid "Auto-draft"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1110
+msgid "Available fields"
+msgstr ""
+
+#: modules/notifications/notifications.php:1754
+msgid "Blacklisted taxonomies for Notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:163
+msgid "Blog ID: %d"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:383
+msgid "Blog: "
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:54
+msgid "Body"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:587
+#: modules/content-board/library/content-board-utilities.php:554
+#: modules/content-overview/library/content-overview-utilities.php:659
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:425
+msgid "Cancel"
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:150
+msgid "Card Data updated successfully."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:885
+#: modules/content-board/library/content-board-utilities.php:1190
+#: modules/content-overview/library/content-overview-utilities.php:516
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php:34
+msgid "Categories"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1080
+#: lib/Notifications/Workflow/Step/Event_Content/Category.php:24
+msgid "Category"
+msgid_plural "Categories"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/content-board/library/content-board-utilities.php:555
+#: modules/content-overview/library/content-overview-utilities.php:660
+msgid "Change"
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:95
+#: modules/content-board/library/content-board-methods.php:123
+msgid "Changes saved!"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:15
+#: modules/improved-notifications/improved-notifications.php:478
+#: modules/improved-notifications/improved-notifications.php:1282
+msgid "Channels"
+msgstr ""
+
+#: publishpress.php:675
+msgid "Cheatin’ uh?"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:288
+msgid "Checkbox"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:329
+#: modules/content-board/library/content-board-utilities.php:860
+#: modules/content-overview/library/content-overview-utilities.php:982
+msgid "Checked"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:78
+msgid "Choose Post Types"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:6
+#: modules/improved-notifications/improved-notifications.php:472
+#: modules/improved-notifications/improved-notifications.php:1276
+msgid "Choose the channels where each workflow will send notifications to:"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1112
+msgid "Click here to read more about shortcode options..."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1321
+msgid "Click here to subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/content-board/content-board.php:744
+msgid "Click the \"Add New\" button to create new card data."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:884
+msgid "Click the \"Add New\" button to create new columns."
+msgstr ""
+
+#: modules/content-board/content-board.php:803
+#: modules/content-overview/content-overview.php:946
+#: modules/calendar/library/calendar-utilities.php:1181
+msgid "Click the \"Add New\" button to create new filters."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1204
+msgid "Click to add"
+msgstr ""
+
+#: modules/debug/debug.php:308
+msgid ""
+"Click to delete the log file. Be careful, this operation can not be undone. "
+msgstr ""
+
+#: modules/notifications/notifications.php:541
+#: modules/notifications/notifications.php:953
+msgid "Click to start being notified on updates for this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:537
+#: modules/notifications/notifications.php:947
+msgid "Click to stop being notified on updates for this post"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1209
+msgid "Close"
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:52
+msgid "Column Title"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:654
+msgid "Column updated successfully."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:229
+msgid "Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1248
+msgid "Comment author name field:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1190
+msgid "Comment deleted successfully."
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:92
+#, php-format
+msgid "Comment: %s (%d)"
+msgstr ""
+
+#: publishpress.php:671
+msgid "Configure"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:29
+msgid "Contact"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1098
+#: modules/calendar/library/calendar-methods.php:902
+#: modules/content-board/library/content-board-utilities.php:1207
+#: modules/content-overview/library/content-overview-utilities.php:533
+#: lib/Notifications/Workflow/Step/Content/Main.php:29
+msgid "Content"
+msgstr ""
+
+#: modules/content-board/content-board.php:142
+#: modules/content-board/content-board.php:379
+#: modules/content-board/content-board.php:396
+#: modules/content-board/content-board.php:397
+msgid "Content Board"
+msgstr ""
+
+#: modules/calendar/calendar.php:216 modules/calendar/calendar.php:415
+#: modules/calendar/calendar.php:432 modules/calendar/calendar.php:433
+msgid "Content Calendar"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:156
+#: modules/content-overview/content-overview.php:376
+#: modules/content-overview/content-overview.php:393
+#: modules/content-overview/content-overview.php:394
+msgid "Content Overview"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:832
+msgid "Content:"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1315
+msgid "Copy to the clipboard"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:1121
+#: modules/content-overview/library/content-overview-utilities.php:447
+#, php-format
+msgid "Create %s"
+msgstr ""
+
+#: modules/debug/debug.php:296
+msgid "Created on"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1238
+msgid "Current week"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:883
+msgid "Custom Columns"
+msgstr ""
+
+#: modules/content-board/content-board.php:802
+#: modules/content-overview/content-overview.php:945
+#: modules/calendar/library/calendar-utilities.php:1180
+msgid "Custom filters"
+msgstr ""
+
+#: modules/content-board/content-board.php:743
+msgid "Custom Items"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:32
+msgid "Customize Card Data"
+msgstr ""
+
+#: modules/content-overview/library/content-overview-methods.php:263
+msgid "Customize Columns"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:473
+#: modules/content-board/library/content-board-utilities.php:42
+#: modules/content-overview/library/content-overview-methods.php:273
+msgid "Customize Filters"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:50
+msgid "Dashboard Note"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:56
+msgid "Dashboard Widgets"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:290
+#: lib/Notifications/Table/Notifications.php:158
+#: modules/calendar/library/calendar-utilities.php:1064
+#: modules/content-board/library/content-board-utilities.php:116
+#: modules/content-overview/library/content-overview-methods.php:347
+#: modules/notifications-log/library/NotificationsLogTable.php:496
+msgid "Date"
+msgstr ""
+
+#: modules/debug/debug.php:68
+msgid "Debug"
+msgstr ""
+
+#: modules/debug/debug.php:299
+msgid "Debug data"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1235
+msgid "Dec"
+msgstr ""
+
+#: modules/content-board/content-board.php:1049
+#: modules/content-board/content-board.php:1066
+msgid "Default Date"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:222
+msgid "Default notification channels:"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:300
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:330
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:611
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:641
+msgid "Default option"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:135
+msgid "Default publish time for items created in the calendar"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:652
+#: modules/editorial-comments/library/EditorialCommentsTable.php:434
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:161
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:303
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:333
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:614
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:644
+#: modules/notifications-log/library/NotificationsLogTable.php:376
+#: modules/notifications-log/library/NotificationsLogTable.php:407
+msgid "Delete"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:408
+msgid "Delete All"
+msgstr ""
+
+#: modules/debug/debug.php:298
+msgid "Delete file"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:48
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:176
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:474
+msgid "Description"
+msgstr ""
+
+#: lib/Legacy/Util.php:239
+msgid "Detailed documentation is also available on the plugin website."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:368 modules/dashboard/dashboard.php:391
+#: modules/dashboard/dashboard.php:425
+#: modules/calendar/library/calendar-methods.php:527
+msgid "Disabled"
+msgstr ""
+
+#: modules/settings/settings.php:380
+#, php-format
+msgid ""
+"Disabled because add_post_type_support('%1$s', '%2$s') is included in a "
+"loaded file."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:291
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:322
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:602
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:633
+msgid "Display Label"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1275
+msgid "Display Name"
+msgstr ""
+
+#: modules/settings/views/footer-base.html.php:25
+msgid "Documentation"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1308
+msgid "Download .ics file"
+msgstr ""
+
+#: common/php/class-module.php:332
+msgid "Draft"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:296
+msgid "Drag to change enabled card data order."
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:104
+msgid "Drag to change enabled columns order."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:661
+#: modules/content-board/library/content-board-utilities.php:442
+#: modules/content-overview/library/content-overview-utilities.php:250
+msgid "Drag to change enabled filters order."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:258
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:571
+msgid "Dropdown Option"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:289
+msgid "Dropdown Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:214
+msgid "Duplicated notification threshold:"
+msgstr ""
+
+#: common/php/class-module.php:782
+msgid "E-mails"
+msgstr ""
+
+#: modules/content-board/content-board.php:1178
+#: modules/content-board/content-board.php:1284
+#: modules/content-overview/content-overview.php:1220
+#: modules/content-overview/content-overview.php:1703
+#: modules/editorial-comments/editorial-comments.php:641
+#: modules/calendar/library/calendar-methods.php:1246
+#: modules/calendar/library/calendar-utilities.php:1097
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:159
+msgid "Edit"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:456
+msgid "Edit Editorial Fields"
+msgstr ""
+
+#: modules/efmigration/efmigration.php:288
+msgid ""
+"Edit Flow should not be used alongside PublishPress Planner. If you want to "
+"use PublishPress Planner, please complete Edit Flow data migration and then "
+"deactivate Edit Flow."
+msgstr ""
+
+#: publishpress.php:1411
+msgid "Edit Notification"
+msgstr ""
+
+#: modules/content-board/content-board.php:1174
+#: modules/content-overview/content-overview.php:1699
+#: modules/dashboard/dashboard.php:299
+msgid "Edit this post"
+msgstr ""
+
+#: modules/notifications/notifications.php:2180
+#: modules/notifications/notifications.php:2237
+#, php-format
+msgid "Edit: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1099
+msgid "Editorial Comment"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:63
+#: modules/editorial-comments/editorial-comments.php:244
+#: modules/editorial-comments/editorial-comments.php:245
+#: modules/editorial-comments/editorial-comments.php:466
+msgid "Editorial Comments"
+msgstr ""
+
+#: modules/content-board/content-board.php:760
+#: modules/content-board/content-board.php:820
+#: modules/content-overview/content-overview.php:903
+#: modules/content-overview/content-overview.php:964
+#: modules/editorial-metadata/editorial-metadata.php:95
+#: modules/editorial-metadata/editorial-metadata.php:511
+#: modules/editorial-metadata/editorial-metadata.php:1719
+#: modules/editorial-metadata/editorial-metadata.php:1720
+#: modules/calendar/library/calendar-utilities.php:1199
+msgid "Editorial Fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:113
+msgid "Editorial fields order updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:109
+msgid "Editorial fields term added."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:112
+msgid "Editorial fields term deleted."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:111
+msgid "Editorial fields term doesn't exist."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:110
+msgid "Editorial fields term updated."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:114
+msgid "Editorial fields visibility changed."
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:1
+#: modules/improved-notifications/improved-notifications.php:471
+#: modules/improved-notifications/improved-notifications.php:1275
+msgid "Editorial Notifications"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1288
+msgid "Eight months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1294
+msgid "Eleven months"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1278
+#: lib/Notifications/Workflow/Step/Channel/Email.php:31
+msgid "Email"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:135
+msgid "email"
+msgstr ""
+
+#: modules/notifications/notifications.php:1730
+msgid "Email from:"
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:25
+msgid "Enable Columns"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:582
+#: modules/content-board/library/content-board-utilities.php:363
+#: modules/content-overview/library/content-overview-utilities.php:171
+msgid "Enable Filters"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1241
+msgid "Enable for these post types:"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:217
+msgid "Enable or Disable"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:223
+msgid "Enable or Disable Content Board Card Data."
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:369
+msgid "Enable or Disable Content Board filter."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:588
+msgid "Enable or Disable Content calendar filter."
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:177
+msgid "Enable or Disable Content Overview filter."
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:31
+msgid "Enable or Disable Content Overview table column."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:103
+msgid "Enable subscriptions in iCal or Google Calendar"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:369 modules/dashboard/dashboard.php:392
+#: modules/dashboard/dashboard.php:426
+#: modules/calendar/library/calendar-methods.php:528
+msgid "Enabled"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:223
+msgid "Enabled features"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1256
+msgid "End date"
+msgstr ""
+
+#: lib/Legacy/Util.php:203
+msgid "Enhance the power of PublishPress Planner with the Pro version:"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:263
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:574
+msgid ""
+"Enter the dropdown option value and label. You can move options to change "
+"their order."
+msgstr ""
+
+#: modules/notifications/notifications.php:606
+msgid ""
+"Enter users, roles, or email addresses that should receive notifications for "
+"this post."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:282
+#: modules/notifications-log/library/NotificationsLogTable.php:533
+msgid "Error"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1331
+msgid "Error adding term."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1590
+msgid "Error deleting term."
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:53
+msgid "Error fetching post data."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1481
+#: modules/editorial-metadata/editorial-metadata.php:1524
+msgid "Error updating term."
+msgstr ""
+
+#: modules/content-board/content-board.php:851
+#: modules/content-overview/content-overview.php:995
+#: modules/content-board/library/content-board-methods.php:43
+#: modules/content-board/library/content-board-methods.php:111
+msgid "Error validating nonce. Please reload this page and try again."
+msgstr ""
+
+#: modules/async-notifications/async-notifications.php:180
+#, php-format
+msgid "Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s"
+msgstr ""
+
+#: lib/Notifications/Table/Base.php:183
+msgid "Excerpt View"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:250
+msgid "Existing Post is updated"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:374
+#: modules/content-board/library/content-board-utilities.php:899
+#: modules/content-overview/library/content-overview-utilities.php:1027
+#: modules/notifications-log/library/NotificationsLogTable.php:277
+#: modules/notifications-log/library/NotificationsLogTable.php:293
+msgid "Failed"
+msgstr ""
+
+#: lib/Legacy/Util.php:213
+msgid "Fast, professional support"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:50
+msgid "Features"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1225
+msgid "Feb"
+msgstr ""
+
+#: modules/modules-settings/modules-settings.php:217
+msgid "Feel free to select only the features you need."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1105
+msgid "field"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:47
+msgid "Field Type"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:143
+msgid "Field used for sorting the calendar items in a day cell"
+msgstr ""
+
+#: modules/debug/debug.php:292
+msgid "File info"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:210
+#: modules/notifications-log/library/NotificationsLogTable.php:646
+msgid "Filter"
+msgstr ""
+
+#: modules/calendar/calendar.php:919
+msgid "Filter reset successfully."
+msgstr ""
+
+#: lib/Notifications/Plugin.php:65
+msgid "Filter the content?"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:223
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:537
+msgid ""
+"Filter the list of users in the editorial meta to users in the selected "
+"roles."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:609
+#: modules/content-board/library/content-board-utilities.php:390
+#: modules/content-overview/library/content-overview-utilities.php:198
+msgid "Filter Title"
+msgstr ""
+
+#: modules/calendar/calendar.php:912
+#: modules/content-overview/content-overview.php:668
+#: modules/content-board/library/content-board-methods.php:164
+msgid "Filter updated successfully."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:212
+msgid "First Draft Date"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1276
+msgid "First Name"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1282
+msgid "Five months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1248
+msgid "Five months ago"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:340
+#, php-format
+msgid "For custom Revision Statuses, upgrade to %sPublishPress Statuses Pro%s."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:308
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions Pro%s."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:309
+#, php-format
+msgid ""
+"For Revisions integration on the Content Calendar, Overview and Content "
+"Board, please update %sPublishPress Revisions%s."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:950
+#: modules/notifications-log/library/NotificationsLogTable.php:498
+msgid "For which content?"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1102
+msgid "Format"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1280
+msgid "Four months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1246
+msgid "Four months ago"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1267
+msgid "Four weeks"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1222
+msgid "Fri"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:626
+msgid "From date"
+msgstr ""
+
+#: common/php/class-module.php:764
+msgid "Group"
+msgstr ""
+
+#: common/php/class-module.php:761
+msgid "Groups"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:920
+msgid "Help"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1206
+#, php-format
+msgid "Hide the %s last items"
+msgstr ""
+
+#. Author URI of the plugin
+msgid "https://publishpress.com"
+msgstr ""
+
+#. URI of the plugin
+msgid "https://publishpress.com/"
+msgstr ""
+
+#: modules/calendar/calendar.php:251
+msgid ""
+"iCal secret key regenerated. Please inform all users they will need to "
+"resubscribe."
+msgstr ""
+
+#: lib/Notifications/Table/Notifications.php:159
+#: lib/Notifications/Table/Workflows.php:143
+#: modules/calendar/library/calendar-utilities.php:1059
+msgid "ID"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:361
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:674
+msgid ""
+"If enabled, this field will be available when adding new posts on the "
+"Content Calendar and Overview screen."
+msgstr ""
+
+#: modules/settings/settings.php:269
+#, php-format
+msgid "If you like %s please leave us a %s rating. Thank you!"
+msgstr ""
+
+#: lib/Legacy/Util.php:228
+msgid "If you need help or have a new feature request, let us know."
+msgstr ""
+
+#: modules/debug/debug.php:304
+msgid ""
+"If you see any error or look for information regarding PublishPress, please "
+"don't hesitate to contact the support team. E-mail us:"
+msgstr ""
+
+#: modules/content-board/content-board.php:750
+msgid "Inbuilt Card Data"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:890
+msgid "Inbuilt Columns"
+msgstr ""
+
+#: modules/content-board/content-board.php:809
+#: modules/content-overview/content-overview.php:952
+#: modules/calendar/library/calendar-utilities.php:1187
+msgid "Inbuilt filters"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:251
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:566
+msgid "Indicate the select type."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:511
+msgid "Indicate the type of editorial fields."
+msgstr ""
+
+#: modules/calendar/calendar.php:1159
+msgid "Initializing the calendar. Please wait..."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:53
+msgid "Integrate with the The Events Calendar plugin"
+msgstr ""
+
+#: lib/Legacy/Util.php:211
+msgid "Integration with SEO plugins"
+msgstr ""
+
+#: modules/debug/debug.php:365
+msgid "Invalid action nonce."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:55
+msgid "Invalid channel for the notification"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:764
+#: modules/editorial-comments/editorial-comments.php:905
+#: modules/editorial-comments/editorial-comments.php:1037
+#: modules/editorial-comments/editorial-comments.php:1153
+msgid "Invalid comment data"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:808
+msgid "Invalid date"
+msgstr ""
+
+#: modules/content-board/content-board.php:853
+#: modules/content-overview/content-overview.php:997
+#: modules/content-board/library/content-board-methods.php:45
+#: modules/content-board/library/content-board-methods.php:113
+msgid "Invalid form request."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:788
+msgid "Invalid input"
+msgstr ""
+
+#: core/Error.php:80 modules/calendar/library/calendar-methods.php:779
+msgid "Invalid nonce"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1759
+msgid "Invalid Publish Date supplied."
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:54
+msgid "Invalid receiver for the notification"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1735
+msgid "Invalid Status supplied."
+msgstr ""
+
+#: modules/calendar/calendar.php:1163
+msgid ""
+"It seems like it is taking too long. Please, try reloading the page again "
+"and check the browser console looking for errors."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1224
+msgid "Jan"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1230
+msgid "Jul"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1229
+msgid "Jun"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:837
+#: modules/content-overview/content-overview.php:896
+msgid "Last Modified"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1277
+msgid "Last Name"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1203
+msgid "Loading item..."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:217
+#: modules/calendar/library/calendar-methods.php:1202
+msgid "Loading..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:291
+msgid "Location"
+msgstr ""
+
+#: modules/debug/debug.php:294
+msgid "Log content"
+msgstr ""
+
+#: modules/debug/debug.php:300
+msgid "Log File"
+msgstr ""
+
+#: modules/debug/debug.php:303
+msgid "Log file not found."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1226
+msgid "Mar"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:151
+msgid "Max visible posts per date"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:63
+#: modules/content-overview/library/content-overview-methods.php:294
+msgid "Maximum number of posts to display"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1228
+msgid "May"
+msgstr ""
+
+#: modules/calendar/calendar.php:736
+#: modules/calendar/library/calendar-utilities.php:467
+#: modules/calendar/library/calendar-utilities.php:468
+#: modules/content-board/library/content-board-utilities.php:28
+#: modules/content-overview/library/content-overview-methods.php:259
+msgid "Me Mode"
+msgstr ""
+
+#: lib/Notifications/Table/Notifications.php:157
+msgid "Message"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1111
+msgid "Meta fields"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:285
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:316
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:596
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:627
+msgid "Meta Value"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1423
+msgid "Metadata name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:421
+msgid "minutes"
+msgstr ""
+
+#: lib/Legacy/Util.php:210
+msgid "Modals so you can edit posts without changing screen"
+msgstr ""
+
+#: modules/debug/debug.php:297
+msgid "Modified on"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1218
+msgid "Mon"
+msgstr ""
+
+#: modules/content-board/content-board.php:1026
+msgid "Move posts here to change their status"
+msgstr ""
+
+#: modules/content-board/content-board.php:1186
+#: modules/content-overview/content-overview.php:1711
+msgid "Move this item to the Trash"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1205
+msgid "Moving the item..."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:234
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:546
+msgid "Multiple Select"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:476
+#: modules/improved-notifications/improved-notifications.php:1263
+#: modules/improved-notifications/improved-notifications.php:1280
+msgid "Muted"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:183 modules/dashboard/dashboard.php:346
+msgid "My Content Notifications"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:45
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:443
+msgid "Name"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1272
+#: modules/editorial-metadata/editorial-metadata.php:1432
+msgid "Name already in use. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1282
+#: modules/editorial-metadata/editorial-metadata.php:1289
+#: modules/editorial-metadata/editorial-metadata.php:1445
+msgid "Name cannot exceed 200 characters. Please try a shorter name."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1265
+msgid "Name conflicts with existing term. Please choose another."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1437
+msgid ""
+"Name conflicts with slug for another term. Please choose something else."
+msgstr ""
+
+#: lib/Legacy/Util.php:223
+msgid "Need PublishPress Planner Support?"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:59
+msgid "New"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:459
+msgid "New Editorial Fields"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:84
+#: modules/content-overview/library/content-overview-methods.php:315
+msgid "New Post"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:292
+msgid "New Post is created in Draft status"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:341
+msgid "New Post is Published"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:118
+#, php-format
+msgid "New post status: %s"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:36
+msgid "New status"
+msgstr ""
+
+#: modules/content-board/content-board.php:1289
+#: modules/content-overview/content-overview.php:1225
+#: modules/calendar/library/calendar-methods.php:1251
+msgid "Next Post"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1273
+msgid "Nickname"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1290
+msgid "Nine months"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:143
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:350
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:659
+msgid "No"
+msgstr ""
+
+#: modules/notifications/notifications.php:698
+#, php-format
+msgid "No active notifications found for this %s."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1694
+msgid "No date supplied."
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:158
+msgid "No editorial comments."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:135
+msgid "No editorial fields found."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:799
+msgid "No enough permissions"
+msgstr ""
+
+#: publishpress.php:1415 publishpress.php:1416
+msgid "No notification found"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:291
+msgid "No notifications found."
+msgstr ""
+
+#: modules/content-board/content-board.php:1263
+#: modules/content-overview/content-overview.php:1194
+msgid "No results found"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1244
+msgid "No terms"
+msgstr ""
+
+#: lib/Notifications/Table/Workflows.php:217
+msgid "No workflows found."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:756
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be adding editorial "
+"comments."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:894
+#: modules/editorial-comments/editorial-comments.php:1026
+#: modules/editorial-comments/editorial-comments.php:1143
+msgid ""
+"Nonce check failed. Please ensure you're supposed to be editing editorial "
+"comments."
+msgstr ""
+
+#: modules/content-board/content-board.php:1600
+#: modules/content-overview/content-overview.php:1579
+msgid "None"
+msgstr ""
+
+#: lib/Notifications/Plugin.php:283
+msgid "Not filtered"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:174 modules/dashboard/dashboard.php:353
+msgid "Notepad"
+msgstr ""
+
+#: publishpress.php:1409 publishpress.php:1414
+#: modules/notifications-log/notifications-log.php:216
+msgid "Notification"
+msgstr ""
+
+#: modules/notifications/notifications.php:334
+#: modules/notifications/notifications.php:337
+msgid "Notification Group"
+msgstr ""
+
+#: modules/notifications/notifications.php:336
+msgid "Notification Groups"
+msgstr ""
+
+#: modules/notifications-log/library/ModuleErrors.php:56
+msgid "Notification log not found"
+msgstr ""
+
+#: publishpress.php:1408 publishpress.php:1413
+#: modules/notifications/notifications.php:75
+#: modules/notifications/notifications.php:569
+msgid "Notifications"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:868
+#: modules/notifications-log/notifications-log.php:75
+#: modules/notifications-log/notifications-log.php:270
+#: modules/notifications-log/notifications-log.php:496
+#: modules/notifications-log/notifications-log.php:497
+msgid "Notifications Log"
+msgstr ""
+
+#: modules/notifications/notifications.php:350
+#: modules/notifications/notifications.php:353
+msgid "Notify Email"
+msgstr ""
+
+#: modules/notifications/notifications.php:352
+msgid "Notify Emails"
+msgstr ""
+
+#: modules/notifications/notifications.php:542
+#: modules/notifications/notifications.php:952
+msgid "Notify me"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:376
+msgid "Notify on editorial comments"
+msgstr ""
+
+#: modules/notifications/notifications.php:318
+#: modules/notifications/notifications.php:321
+msgid "Notify Role"
+msgstr ""
+
+#: modules/notifications/notifications.php:320
+msgid "Notify Roles"
+msgstr ""
+
+#: modules/notifications/notifications.php:303
+#: modules/notifications/notifications.php:306
+msgid "Notify User"
+msgstr ""
+
+#: modules/notifications/notifications.php:305
+msgid "Notify Users"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1234
+msgid "Nov"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:292
+msgid "Number"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1233
+msgid "Oct"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:114
+#, php-format
+msgid "Old post status: %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1106
+msgid ""
+"On each shortcode, you can select one or more fields. If more than one, they "
+"will be displayed separated by \", \"."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1273
+msgid "One month"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1240
+msgid "One month ago"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1261
+msgid "One week"
+msgstr ""
+
+#: modules/content-board/content-board.php:1100
+#: modules/content-board/content-board.php:1242
+msgid "Only editable posts will be moveable."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:911
+msgid "Options"
+msgstr ""
+
+#: modules/calendar/calendar.php:259
+#: modules/editorial-comments/editorial-comments.php:82
+#: modules/editorial-metadata/editorial-metadata.php:119
+#: modules/notifications/notifications.php:96
+msgid "Overview"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:293
+msgid "Paragraph"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php:106
+msgid "Parent Page Authors"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:373
+#: modules/content-board/library/content-board-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:1026
+msgid "Passed"
+msgstr ""
+
+#: modules/debug/debug.php:293
+msgid "Path"
+msgstr ""
+
+#: common/php/class-module.php:335
+msgid "Pending Review"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:502
+#: modules/calendar/library/calendar-utilities.php:503
+msgid "Period"
+msgstr ""
+
+#: publishpress.php:590
+msgid "Planner"
+msgstr ""
+
+#: publishpress.php:674
+msgid "Please correct your form errors below and try again."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:787
+#: modules/editorial-comments/editorial-comments.php:951
+msgid "Please enter a comment."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1409
+msgid "Please enter a name for the editorial fields"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1252
+msgid "Please enter a name for the editorial fields."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1259
+msgid "Please enter a slug for the editorial fields."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1414
+msgid "Please enter a valid, non-numeric name for the editorial fields."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1299
+msgid "Please select a valid metadata type."
+msgstr ""
+
+#: lib/Notifications/Plugin.php:250
+msgid "Please select at least one event"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1216
+#: modules/content-board/library/content-board-utilities.php:1130
+#: modules/content-overview/library/content-overview-utilities.php:456
+msgid "Please, wait! Loading the form fields..."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:454
+msgid "Popular Editorial Fields"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:44
+msgid "Position"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:231
+msgid "Post"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1835
+msgid "Post could not be created"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1828
+msgid "Post created successfully"
+msgstr ""
+
+#: modules/content-board/content-board.php:1283
+#: modules/content-overview/content-overview.php:836
+#: modules/content-overview/content-overview.php:895
+#: modules/content-overview/content-overview.php:1219
+#: modules/calendar/library/calendar-methods.php:1245
+msgid "Post Date"
+msgstr ""
+
+#: modules/calendar/calendar.php:241
+msgid "Post date updated."
+msgstr ""
+
+#: publishpress.php:680
+msgid "Post does not exist"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:160
+msgid "Post ID: %d"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:794
+msgid "Post not found"
+msgstr ""
+
+#: common/php/class-module.php:1126 modules/content-board/content-board.php:811
+#: modules/content-board/content-board.php:1290
+#: modules/content-overview/content-overview.php:954
+#: modules/content-overview/content-overview.php:1226
+#: modules/calendar/library/calendar-methods.php:424
+#: modules/calendar/library/calendar-methods.php:858
+#: modules/calendar/library/calendar-methods.php:1252
+#: modules/calendar/library/calendar-utilities.php:47
+#: modules/calendar/library/calendar-utilities.php:1070
+#: modules/calendar/library/calendar-utilities.php:1189
+#: modules/content-board/library/content-board-utilities.php:594
+#: modules/content-board/library/content-board-utilities.php:1165
+#: modules/content-overview/library/content-overview-utilities.php:491
+#: modules/content-overview/library/content-overview-utilities.php:703
+msgid "Post Status"
+msgstr ""
+
+#: modules/calendar/calendar.php:242
+msgid "Post status updated."
+msgstr ""
+
+#: modules/dashboard/dashboard.php:339
+msgid "Post Status Widget"
+msgstr ""
+
+#: modules/calendar/calendar.php:989 modules/calendar/calendar.php:1218
+#: modules/content-board/content-board.php:698
+#: modules/content-board/content-board.php:711
+#: modules/content-board/content-board.php:752
+#: modules/content-board/content-board.php:813
+#: modules/content-overview/content-overview.php:834
+#: modules/content-overview/content-overview.php:850
+#: modules/content-overview/content-overview.php:893
+#: modules/content-overview/content-overview.php:957
+#: modules/calendar/library/calendar-utilities.php:146
+#: modules/calendar/library/calendar-utilities.php:1054
+#: modules/calendar/library/calendar-utilities.php:1192
+#: modules/content-board/library/content-board-utilities.php:677
+#: modules/content-board/library/content-board-utilities.php:1153
+#: modules/content-overview/library/content-overview-utilities.php:479
+#: modules/content-overview/library/content-overview-utilities.php:799
+msgid "Post Type"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event_Content/Post_Type.php:24
+msgid "Post type"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1214
+msgid "Post type not found"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1215
+msgid "Post type:"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:157
+#, php-format
+msgid "Post type: %s"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-list-table.php:46
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php:34
+msgid "Post Types"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:87
+msgid "Post types to show"
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:444
+#: modules/content-overview/library/content-overview-methods.php:167
+msgid "Post types to show:"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:211
+msgid "Posts at a Glance"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:127
+msgid "Posts publish time format"
+msgstr ""
+
+#: modules/content-board/content-board.php:1219
+#: modules/content-board/content-board.php:1286
+#: modules/content-overview/content-overview.php:1222
+#: modules/content-overview/content-overview.php:1744
+#: modules/calendar/library/calendar-methods.php:1248
+#: modules/calendar/library/calendar-utilities.php:1114
+msgid "Preview"
+msgstr ""
+
+#: modules/content-board/content-board.php:1216
+#: modules/content-overview/content-overview.php:1741
+#, php-format
+msgid "Preview “%s”"
+msgstr ""
+
+#: modules/content-board/content-board.php:1288
+#: modules/content-overview/content-overview.php:1224
+#: modules/calendar/library/calendar-methods.php:1250
+msgid "Previous Post"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:35
+msgid "Previous status"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:51
+#: modules/content-overview/library/content-overview-methods.php:282
+msgid "Print"
+msgstr ""
+
+#: common/php/class-module.php:334 modules/content-board/content-board.php:989
+msgid "Private"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:1171
+#: modules/content-overview/library/content-overview-utilities.php:497
+msgid "Publish Date"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:864
+msgid "Publish Time"
+msgstr ""
+
+#: common/php/class-module.php:331 modules/calendar/calendar.php:1231
+msgid "Published"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:423
+msgid "Publishing Time"
+msgstr ""
+
+#. Author of the plugin
+#: modules/settings/settings.php:61
+#: modules/calendar/library/calendar-utilities.php:1227
+msgid "PublishPress"
+msgstr ""
+
+#: modules/debug/debug.php:228 modules/debug/debug.php:291
+msgid "PublishPress Debug Log"
+msgstr ""
+
+#. Name of the plugin
+#: modules/settings/settings.php:266
+msgid "PublishPress Planner"
+msgstr ""
+
+#. Description of the plugin
+msgid ""
+"PublishPress Planner helps you plan and publish content inside WordPress. "
+"Features include a content calendar, kanban board, and notifications."
+msgstr ""
+
+#: publishpress.php:1456
+msgid ""
+"PublishPress Planner tried to load multiple times. Please, deactivate and "
+"remove other instances of PublishPress, specially if you are using "
+"PublishPress Pro."
+msgstr ""
+
+#: lib/Legacy/Util.php:206
+msgid "PublishPress Revisions integration"
+msgstr ""
+
+#: modules/settings/settings.php:141
+msgid "PublishPress Settings"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1103
+msgid "Receiver"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:546
+msgid "Regenerate calendar feed secret"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1637
+msgid "Register editorial fields for these post types:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:218
+#: modules/editorial-comments/editorial-comments.php:728
+msgid "Remove"
+msgstr ""
+
+#: lib/Legacy/Util.php:212
+msgid "Remove PublishPress ads and branding"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:218
+msgid "Reorder"
+msgstr ""
+
+#: modules/content-overview/library/content-overview-utilities.php:26
+msgid "Reorder Columns"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:583
+#: modules/content-board/library/content-board-utilities.php:364
+#: modules/content-overview/library/content-overview-utilities.php:172
+msgid "Reorder Filters"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:632
+msgid "Reply"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:629
+msgid "Reply to this comment"
+msgstr ""
+
+#: modules/notifications/notifications.php:2230
+#, php-format
+msgid "Reply: %s"
+msgstr ""
+
+#: lib/Legacy/Util.php:230
+msgid "Request Support"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:361
+#: modules/notifications-log/library/NotificationsLogTable.php:406
+msgid "Reschedule"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:554
+#: modules/content-board/library/content-board-utilities.php:153
+#: modules/content-board/library/content-board-utilities.php:551
+#: modules/content-overview/library/content-overview-methods.php:384
+#: modules/content-overview/library/content-overview-utilities.php:656
+msgid "Reset"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:553
+#: modules/content-board/library/content-board-utilities.php:152
+#: modules/content-overview/library/content-overview-methods.php:383
+msgid "Reset Filters"
+msgstr ""
+
+#: modules/reviews/reviews.php:66
+msgid "Reviews"
+msgstr ""
+
+#: common/php/class-module.php:1126
+#: modules/content-overview/content-overview.php:833
+#: modules/content-overview/content-overview.php:848
+#: modules/content-overview/content-overview.php:955
+#: modules/calendar/library/calendar-utilities.php:1190
+msgid "Revision Status"
+msgstr ""
+
+#: common/php/class-module.php:753
+msgid "Role"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:100
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:147
+#, php-format
+msgid "role:%s"
+msgstr ""
+
+#: common/php/class-module.php:750
+#: lib/Notifications/Workflow/Step/Receiver/Role.php:31
+msgid "Roles"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1223
+msgid "Sat"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1210
+msgid "Save"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1212
+msgid "Save and edit"
+msgstr ""
+
+#: modules/content-board/content-board.php:1291
+#: modules/content-overview/content-overview.php:1227
+#: modules/calendar/library/calendar-methods.php:1253
+msgid "Save Changes"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1211
+msgid "Saving..."
+msgstr ""
+
+#: common/php/class-module.php:333 modules/calendar/calendar.php:1226
+#: modules/content-board/content-board.php:979
+#: modules/notifications-log/library/NotificationsLogTable.php:529
+msgid "Scheduled"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:233
+msgid "Scheduled for %d receivers. Click here to display them."
+msgstr ""
+
+#: modules/calendar/calendar.php:738
+#: modules/calendar/library/calendar-utilities.php:486
+#: modules/content-board/library/content-board-utilities.php:98
+#: modules/content-overview/library/content-overview-methods.php:329
+msgid "Search"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:169
+#: modules/calendar/library/calendar-utilities.php:485
+#: modules/content-board/library/content-board-utilities.php:97
+#: modules/content-board/library/content-board-utilities.php:700
+#: modules/content-overview/library/content-overview-methods.php:328
+#: modules/content-overview/library/content-overview-utilities.php:822
+msgid "Search box"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:298
+msgid "Search Comments"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:453
+msgid "Search Editorial Fields"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:613
+#: modules/content-board/library/content-board-utilities.php:248
+#: modules/content-overview/library/content-overview-utilities.php:56
+msgid "Search Metakey"
+msgstr ""
+
+#: publishpress.php:1412
+msgid "Search Notifications"
+msgstr ""
+
+#. %s: search keywords
+#: modules/editorial-comments/editorial-comments.php:285
+#, php-format
+msgid "Search results for “%s”"
+msgstr ""
+
+#: common/php/class-module.php:1109
+#, php-format
+msgid "Select %s"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1090
+msgid "Select at least one option for each section."
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:394
+#: modules/content-overview/library/content-overview-utilities.php:202
+msgid "Select Metakey"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:211
+#: modules/content-board/library/content-board-utilities.php:742
+#: modules/content-overview/library/content-overview-utilities.php:864
+msgid "Select option..."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:211
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:523
+msgid "Select roles..."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:229
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:542
+msgid "Select Type"
+msgstr ""
+
+#: lib/Legacy/Util.php:208
+msgid "Send reminder notifications"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:288
+msgid "Sent"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1232
+msgid "Sep"
+msgstr ""
+
+#: modules/settings/settings.php:142
+msgid "Settings"
+msgstr ""
+
+#: modules/settings/settings.php:124
+msgid "settings"
+msgstr ""
+
+#: modules/content-overview/content-overview.php:676
+#: modules/content-board/library/content-board-methods.php:172
+msgid "Settings updated successfully."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1286
+msgid "Seven months"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1104
+msgid "shortcode"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1207
+#, php-format
+msgid "Show %s more"
+msgstr ""
+
+#: modules/notifications/notifications.php:610
+msgid "Show active notifications"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:509
+#: modules/content-overview/library/content-overview-utilities.php:614
+msgid "Show content from"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:346
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:656
+msgid "Show on Content Calendar and Overview form"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:394
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:704
+msgid "Show on Post Types screen"
+msgstr ""
+
+#: modules/calendar/calendar.php:737
+msgid "Show Revision"
+msgstr ""
+
+#: modules/notifications/notifications.php:1722
+msgid ""
+"Show the \"Notify me\" and \"Stop notifying me\" links for these post types:"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:95
+msgid "Show today's date in the first row"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:233
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:545
+msgid "Single Select"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:24
+#: lib/Notifications/Workflow/Step/Receiver/Site_Admin.php:73
+msgid "Site Administrator"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1284
+msgid "Six months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1250
+msgid "Six months ago"
+msgstr ""
+
+#: modules/debug/debug.php:295
+msgid "Size"
+msgstr ""
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:26
+msgid "Skip current user"
+msgstr ""
+
+#: lib/Notifications/Workflow/Option/SkipUser.php:31
+msgid "Skip notifications for the user who triggered the action"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:291
+#: modules/notifications-log/library/NotificationsLogTable.php:525
+msgid "Skipped"
+msgstr ""
+
+#: lib/Legacy/Util.php:207
+msgid "Slack integration for notifications"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:163
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:457
+msgid "Slug"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1276
+msgid "Slug already in use. Please choose another."
+msgstr ""
+
+#: modules/notifications/notifications.php:1868
+msgid "slug1,slug2"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:316
+msgid "Sorry! You're not subscribed to any posts!"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1089
+msgid ""
+"Sorry, you can't delete this editorial comment because it has some replies."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:777
+msgid ""
+"Sorry, you don't have the privileges to add editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1068
+#: modules/editorial-comments/editorial-comments.php:1172
+msgid ""
+"Sorry, you don't have the privileges to delete this editorial comment. "
+"Please talk to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:920
+#: modules/editorial-comments/editorial-comments.php:1052
+msgid ""
+"Sorry, you don't have the privileges to edit editorial comments. Please talk "
+"to your Administrator."
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:938
+msgid ""
+"Sorry, you don't have the privileges to edit this editorial comment. Please "
+"talk to your Administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:735
+msgid "Start Date"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1234
+msgid "Start date"
+msgstr ""
+
+#: modules/calendar/calendar.php:987
+#: modules/content-board/content-board.php:709
+#: modules/content-overview/content-overview.php:832
+#: modules/content-overview/content-overview.php:847
+#: modules/content-overview/content-overview.php:892
+#: modules/notifications-log/library/NotificationsLogTable.php:500
+msgid "Status"
+msgstr ""
+
+#. 1: post type, 2: post id, 3. post title, 4. user name, 5. user email
+#: modules/notifications/notifications.php:2124
+#, php-format
+msgid "Status was changed for %1$s #%2$s \"%3$s\" by %4$s %5$s"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:119
+msgid "Statuses to display publish time"
+msgstr ""
+
+#: modules/notifications/notifications.php:538
+#: modules/notifications/notifications.php:946
+msgid "Stop notifying me"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Content/Main.php:53
+msgid "Subject"
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:824
+msgid "Subject:"
+msgstr ""
+
+#: modules/content-board/library/content-board-utilities.php:1123
+#: modules/content-overview/library/content-overview-utilities.php:449
+msgid "Submit"
+msgstr ""
+
+#: modules/editorial-comments/library/EditorialCommentsTable.php:233
+msgid "Submitted on"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1229
+msgid "Subscribe in iCal or Google Calendar"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:521
+msgid "Success"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1217
+msgid "Sun"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:304
+msgid "synchronous"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1085
+msgid "Tag"
+msgid_plural "Tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: modules/calendar/library/calendar-methods.php:894
+#: modules/content-board/library/content-board-utilities.php:1199
+#: modules/content-overview/library/content-overview-utilities.php:525
+msgid "Tags"
+msgstr ""
+
+#: modules/content-board/content-board.php:767
+#: modules/content-board/content-board.php:827
+#: modules/content-overview/content-overview.php:910
+#: modules/content-overview/content-overview.php:971
+#: modules/calendar/library/calendar-utilities.php:1206
+#: lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php:34
+msgid "Taxonomies"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php:24
+msgid "Taxonomy"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:451
+msgctxt "taxonomy general name"
+msgid "Editorial Field"
+msgstr ""
+
+#: modules/content-board/content-board.php:1292
+#: modules/content-overview/content-overview.php:1228
+#: modules/calendar/library/calendar-methods.php:1254
+msgid "Taxonomy not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:452
+msgctxt "taxonomy singular name"
+msgid "Editorial Field"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1292
+msgid "Ten months"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php:33
+msgid "Terms"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:1549
+msgid "Terms not set."
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:294
+msgid "Text"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:466
+msgid ""
+"The \"slug\" is the URL-friendly version of the name. It is usually all "
+"lowercase and contains only letters, numbers, and hyphens."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:184
+msgid ""
+"The description can be used to communicate with your team about what the "
+"field is for."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:483
+msgid ""
+"The description can be used to communicate with your team about what the "
+"metadata is for."
+msgstr ""
+
+#: modules/theeventscalendar-integration/theeventscalendar-integration.php:52
+msgid "The Events Calendar Integration"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:198
+msgid "The field type cannot be changed once created."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:158
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:452
+msgid "The name is for labeling the editorial fields."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:283
+msgid ""
+"The notification was set as \"Scheduled\" but the cron task is not found"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:410
+msgid ""
+"The notifications module will need to be enabled for this widget to display."
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogModel.php:264
+msgid "The parent log was deleted or probably rescheduled"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1705
+msgid "The selected post type is not enabled for the calendar."
+msgstr ""
+
+#: modules/calendar/calendar.php:1807
+msgid ""
+"The selected user doesn't have enough permissions to be set as the post "
+"author."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:168
+msgid "The slug cannot be changed once the term has been created."
+msgstr ""
+
+#: modules/content-board/content-board.php:1268
+#: modules/content-overview/content-overview.php:1199
+msgid "There are no posts in the range or filter specified."
+msgstr ""
+
+#: modules/settings/settings.php:289
+msgid "There are no PublishPress modules registered"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:874
+#: modules/editorial-comments/editorial-comments.php:1004
+#: modules/editorial-comments/editorial-comments.php:1114
+#: modules/editorial-comments/editorial-comments.php:1198
+msgid ""
+"There was a problem of some sort. Try again or contact your administrator."
+msgstr ""
+
+#: modules/calendar/calendar.php:243
+msgid "There was an error updating the post. Please try again."
+msgstr ""
+
+#. 1: date, 2: time, 3: timezone
+#: modules/notifications/notifications.php:2135
+#, php-format
+msgid "This action was taken on %1$s at %2$s %3$s"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:84
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:106
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-handler.php:127
+msgid "This editorial fields type is not yet supported."
+msgstr ""
+
+#: modules/notifications/notifications.php:1066
+#, php-format
+msgid "This email was sent %s."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:375
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:686
+msgid "This field will be available for these post types."
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:399
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:708
+msgid ""
+"This field will be viewable on the overview screens for these post types."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:842
+msgid ""
+"This is a preview of the scheduled message. The content can still change "
+"until the notification is sent."
+msgstr ""
+
+#: modules/content-board/content-board.php:1056
+msgid ""
+"This is the default publish date from today for posts moving to the "
+"Scheduled status."
+msgstr ""
+
+#: modules/notifications-log/notifications-log.php:449
+msgid ""
+"This notification is very similar to another one sent less than %d minutes "
+"ago for the same receiver"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:305
+msgid "This post was last updated on "
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:425
+msgid ""
+"This will prevent too many notifications being sent for the same or similar "
+"events. Set this to a higher number if you are receiving duplicate emails."
+msgstr ""
+
+#: modules/notifications/notifications.php:649
+msgid ""
+"This won't have any effect unless you have at least one workflow targeting "
+"the \"Users who selected \"Notify me\" for the content\" option."
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1278
+msgid "Three months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1244
+msgid "Three months ago"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1265
+msgid "Three weeks"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1221
+msgid "Thu"
+msgstr ""
+
+#: modules/content-board/content-board.php:421
+#: modules/content-overview/content-overview.php:418
+#: lib/Notifications/Table/Notifications.php:156
+#: lib/Notifications/Table/Workflows.php:142
+#: modules/calendar/library/calendar-methods.php:853
+#: modules/content-board/library/content-board-utilities.php:244
+#: modules/content-board/library/content-board-utilities.php:1159
+#: modules/content-overview/library/content-overview-utilities.php:485
+msgid "Title"
+msgstr ""
+
+#: modules/notifications/notifications.php:2157
+#, php-format
+msgid "Title: %s"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:245
+#: modules/calendar/library/calendar-utilities.php:279
+#: modules/content-board/library/content-board-utilities.php:112
+#: modules/content-board/library/content-board-utilities.php:776
+#: modules/content-board/library/content-board-utilities.php:810
+#: modules/content-overview/library/content-overview-methods.php:343
+#: modules/content-overview/library/content-overview-utilities.php:898
+#: modules/content-overview/library/content-overview-utilities.php:932
+msgid "to"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:632
+msgid "To date"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:326
+#, php-format
+msgid ""
+"To refine your workflow with custom Post Statuses, install the "
+"%sPublishPress Statuses%s plugin."
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1243
+msgid "Today"
+msgstr ""
+
+#: common/php/class-module.php:336 modules/content-board/content-board.php:1190
+#: modules/content-board/content-board.php:1285
+#: modules/content-overview/content-overview.php:1221
+#: modules/content-overview/content-overview.php:1715
+#: modules/calendar/library/calendar-methods.php:1247
+#: modules/calendar/library/calendar-utilities.php:1104
+msgid "Trash"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1219
+msgid "Tue"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1296
+msgid "Twelve months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1276
+msgid "Two months"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1242
+msgid "Two months ago"
+msgstr ""
+
+#: modules/calendar/library/calendar-utilities.php:1263
+msgid "Two weeks"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:193
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:491
+msgid "Type"
+msgstr ""
+
+#: core/Error.php:79
+msgid "Undefined error found"
+msgstr ""
+
+#: modules/calendar/calendar.php:1118
+#: modules/content-board/content-board.php:614
+#: modules/content-overview/library/content-overview-methods.php:221
+msgid "Undo"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:165
+msgid "Unpublished Content"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1208
+#: modules/calendar/library/calendar-methods.php:1711
+msgid "Untitled"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:457
+msgid "Update Editorial Fields"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:422
+msgid "Update Editorial fields term"
+msgstr ""
+
+#: modules/dashboard/widgets/dashboard-notepad.php:168
+msgid "Update Note"
+msgstr ""
+
+#: modules/calendar/calendar.php:247
+#, php-format
+msgid ""
+"Updating the post date dynamically doesn't work for published content. "
+"Please edit the post ."
+msgstr ""
+
+#: includes.php:161 lib/Legacy/Util.php:216
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: lib/Legacy/Util.php:198
+msgid "Upgrade to PublishPress Planner Pro"
+msgstr ""
+
+#: lib/Legacy/Util.php:209
+msgid "Use post meta in notifications"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:295
+msgid "User"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:120
+msgid "user"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1100
+msgid "User making changes or comments"
+msgstr ""
+
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:204
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:516
+msgid "User role"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1279
+msgid "User Url"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:128
+#, php-format
+msgid "User: %s (%d)"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:1274
+msgid "Username"
+msgstr ""
+
+#: common/php/class-module.php:772
+#: lib/Notifications/Workflow/Step/Receiver/User.php:26
+msgid "Users"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Receiver/Follower.php:30
+msgid "Users who selected \"Notify me\" for the content"
+msgstr ""
+
+#: modules/content-board/content-board.php:1206
+#: modules/content-board/content-board.php:1287
+#: modules/content-overview/content-overview.php:1223
+#: modules/content-overview/content-overview.php:1731
+#: modules/calendar/library/calendar-methods.php:1249
+#: modules/calendar/library/calendar-utilities.php:1111
+msgid "View"
+msgstr ""
+
+#: modules/content-board/content-board.php:1200
+#: modules/content-overview/content-overview.php:1725
+#, php-format
+msgid "View “%s”"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-location-handler.php:82
+#, php-format
+msgid "View “%s” on Google Maps"
+msgstr ""
+
+#: lib/Legacy/Util.php:241
+msgid "View Knowledge Base"
+msgstr ""
+
+#: modules/notifications/notifications.php:2181
+#: modules/notifications/notifications.php:2238
+#, php-format
+msgid "View: %s"
+msgstr ""
+
+#: publishpress.php:1464
+msgid "Warning"
+msgstr ""
+
+#: modules/calendar/library/calendar-methods.php:1220
+msgid "Wed"
+msgstr ""
+
+#: modules/calendar/calendar.php:734
+msgid "Weeks"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:223
+msgid "What the post needs to cover."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:970
+msgid "What to say?"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Editorial_Comment.php:24
+msgid "When an editorial comment is added"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php:28
+msgid "When taxonomy is updated"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php:28
+msgid "When the content is moved to a new status"
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Post_Update.php:26
+msgid "When the content is updated"
+msgstr ""
+
+#: modules/editorial-metadata/editorial-metadata.php:215
+msgid "When the first draft needs to be ready."
+msgstr ""
+
+#: lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php:34
+msgid "When the status is changed"
+msgstr ""
+
+#: lib/Notifications/Plugin.php:64
+#: modules/improved-notifications/improved-notifications.php:940
+#: modules/notifications-log/library/NotificationsLogTable.php:497
+msgid "When to notify?"
+msgstr ""
+
+#: lib/Notifications/Plugin.php:66
+#: modules/improved-notifications/improved-notifications.php:960
+#: modules/notifications-log/library/NotificationsLogTable.php:499
+msgid "Who to notify?"
+msgstr ""
+
+#: modules/dashboard/dashboard.php:70
+msgid "Widget Options"
+msgstr ""
+
+#: modules/notifications/notifications.php:2010
+msgid "WordPress Scheduler"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1101
+msgid "Workflow"
+msgstr ""
+
+#: modules/notifications/notifications.php:691
+msgid "Workflow has users enrolled"
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:902
+msgid "Workflow Settings"
+msgstr ""
+
+#: modules/notifications-log/library/NotificationsLogTable.php:116
+#, php-format
+msgid "Workflow: %s"
+msgstr ""
+
+#: views/user_profile_notification_channels.html.php:14
+#: modules/improved-notifications/improved-notifications.php:477
+#: modules/improved-notifications/improved-notifications.php:1281
+msgid "Workflows"
+msgstr ""
+
+#: modules/editorial-metadata/input-handlers/editorial-metadata-input-checkbox-handler.php:142
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:351
+#: modules/editorial-metadata/library/editorial-metadata-utilities.php:660
+msgid "Yes"
+msgstr ""
+
+#: modules/notifications/notifications.php:1061
+#, php-format
+msgid "You are receiving this email because you are subscribed to \"%s\"."
+msgstr ""
+
+#: modules/improved-notifications/improved-notifications.php:1094
+msgid ""
+"You can add dynamic information to the Subject or Body text using the "
+"following shortcodes:"
+msgstr ""
+
+#: modules/editorial-comments/editorial-comments.php:541
+msgid ""
+"You can add editorial comments to a post once you've saved it for the first "
+"time."
+msgstr ""
+
+#: modules/notifications/notifications.php:2241
+#, php-format
+msgid "You can see all editorial comments on this %s here: "
+msgstr ""
+
+#: modules/content-board/content-board.php:761
+#: modules/content-board/content-board.php:821
+#: modules/content-overview/content-overview.php:904
+#: modules/content-overview/content-overview.php:965
+#: modules/calendar/library/calendar-utilities.php:1200
+msgid "You do not have any editorial fields enabled"
+msgstr ""
+
+#: modules/content-board/content-board.php:768
+#: modules/content-board/content-board.php:828
+#: modules/content-overview/content-overview.php:911
+#: modules/content-overview/content-overview.php:972
+#: modules/calendar/library/calendar-utilities.php:1207
+msgid "You do not have any public taxonomies"
+msgstr ""
+
+#: publishpress.php:676
+msgid "You do not have necessary permissions to complete this action."
+msgstr ""
+
+#: modules/content-overview/content-overview.php:762
+#: modules/content-board/library/content-board-methods.php:258
+#, php-format
+msgid "You do not have permission to add new %s"
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:63
+msgid "You do not have permission to edit selected post."
+msgstr ""
+
+#: modules/content-board/library/content-board-methods.php:65
+msgid "You do not have permission to move post to selected post status."
+msgstr ""
+
+#: modules/content-board/content-board.php:1029
+msgid "You do not have permission to move post to this status"
+msgstr ""
+
+#: lib/Notifications/Table/Notifications.php:235
+msgid "You don't have any notifications"
+msgstr ""
+
+#: includes.php:127
+#, php-format
+msgid ""
+"You're using PublishPress Planner Free. The Pro version has more features "
+"and support. %sUpgrade to Pro%s"
+msgstr ""
diff --git a/public/wp-content/plugins/publishpress/libraries/Legacy/Auto_loader.php b/public/wp-content/plugins/publishpress/lib/Legacy/Auto_loader.php
similarity index 91%
rename from public/wp-content/plugins/publishpress/libraries/Legacy/Auto_loader.php
rename to public/wp-content/plugins/publishpress/lib/Legacy/Auto_loader.php
index bf27449d7..f7222c817 100644
--- a/public/wp-content/plugins/publishpress/libraries/Legacy/Auto_loader.php
+++ b/public/wp-content/plugins/publishpress/lib/Legacy/Auto_loader.php
@@ -2,13 +2,15 @@
/**
* @package PublishPress\Legacy
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
namespace PublishPress\Legacy;
+use Exception;
+
defined('ABSPATH') or die('No direct script access allowed.');
class Auto_loader
@@ -37,10 +39,10 @@ class Auto_loader
/**
* Register a psr4 namespace
*
- * @param string $prefix The namespace prefix.
- * @param string $baseDir A base directory for class files in the
+ * @param string $prefix The namespace prefix.
+ * @param string $baseDir A base directory for class files in the
* namespace.
- * @param bool $prepend If true, prepend the base directory to the stack
+ * @param bool $prepend If true, prepend the base directory to the stack
* instead of appending it; this causes it to be searched first rather
* than last.
*
@@ -107,12 +109,12 @@ protected static function registerLoader($method)
* @param string $baseDir
*
* @return void
- * @throws \Exception
+ * @throws Exception
*/
public static function registerCamelBase($prefix, $baseDir)
{
- if ( ! is_dir($baseDir)) {
- throw new \Exception("Cannot register '{$prefix}'. The requested base directory does not exist!'");
+ if (!is_dir($baseDir)) {
+ throw new Exception("Cannot register '{$prefix}'. The requested base directory does not exist!'");
}
if (count(self::$camelPrefixes) == 0) {
@@ -153,7 +155,7 @@ protected function loadClass($class)
/**
* Load the mapped file for a namespace prefix and class.
*
- * @param string $prefix The namespace prefix.
+ * @param string $prefix The namespace prefix.
* @param string $className The relative class name.
*
* @return bool|string false if no mapped file can be loaded | path that was loaded
@@ -189,7 +191,7 @@ protected function loadMappedFile($prefix, $className)
*/
protected function loadCamelClass($class)
{
- if ( ! class_exists($class)) {
+ if (!class_exists($class)) {
foreach (self::$camelPrefixes as $prefix => $baseDir) {
if (strpos($class, $prefix) === 0) {
$parts = preg_split('/(?<=[a-z])(?=[A-Z])/x', substr($class, strlen($prefix)));
diff --git a/public/wp-content/plugins/publishpress/lib/Legacy/Util.php b/public/wp-content/plugins/publishpress/lib/Legacy/Util.php
new file mode 100644
index 000000000..b0e901d5e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Legacy/Util.php
@@ -0,0 +1,257 @@
+.
+ */
+
+namespace PublishPress\Legacy;
+
+class Util
+{
+ /**
+ * Checks for the current post type
+ *
+ * @return string|null $post_type The post type we've found, or null if no post type
+ */
+ public static function get_current_post_type()
+ {
+ global $post, $typenow, $pagenow, $current_screen;
+
+ // get_post() needs a variable
+ $post_id = isset($_REQUEST['post']) ? (int)$_REQUEST['post'] : false;
+
+ if ($post && $post->post_type) {
+ $post_type = $post->post_type;
+ } elseif ($typenow) {
+ $post_type = $typenow;
+ } elseif ($current_screen && !empty($current_screen->post_type)) {
+ $post_type = $current_screen->post_type;
+ } elseif (isset($_REQUEST['post_type'])) {
+ $post_type = sanitize_key($_REQUEST['post_type']);
+ } elseif ('post.php' == $pagenow
+ && $post_id
+ && !empty(get_post($post_id)->post_type)) {
+ $post_type = get_post($post_id)->post_type;
+ } elseif ('edit.php' == $pagenow && empty($_REQUEST['post_type'])) {
+ $post_type = 'post';
+ } else {
+ $post_type = null;
+ }
+
+ return $post_type;
+ }
+
+ /**
+ * Collect all of the active post types for a given module
+ *
+ * @param object $module Module's data
+ *
+ * @return array $post_types All of the post types that are 'on'
+ */
+ public static function get_post_types_for_module($module)
+ {
+ $post_types = [];
+
+ if (isset($module->options->post_types) && is_array($module->options->post_types)) {
+ foreach ($module->options->post_types as $post_type => $value) {
+ if ('on' == $value) {
+ $post_types[] = $post_type;
+ }
+ }
+ }
+
+ return $post_types;
+ }
+
+ /**
+ * Sanitizes the module name, making sure we always have only
+ * valid chars, replacing - with _.
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public static function sanitize_module_name($name)
+ {
+ return str_replace('-', '_', $name);
+ }
+
+ /**
+ * Adds an array of capabilities to a role.
+ *
+ * @param string $role A standard WP user role like 'administrator' or 'author'
+ * @param array $caps One or more user caps to add
+ *
+ * @since 1.9.8
+ *
+ */
+ public static function add_caps_to_role($role, $caps)
+ {
+ // In some contexts, we don't want to add caps to roles
+ if (apply_filters('pp_kill_add_caps_to_role', false, $role, $caps)) {
+ return;
+ }
+
+ global $wp_roles;
+
+ if ($wp_roles->is_role($role)) {
+ $role = get_role($role);
+
+ foreach ($caps as $cap) {
+ $role->add_cap($cap);
+ }
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ public static function isGutenbergEnabled()
+ {
+ $isEnabled = defined('GUTENBERG_VERSION');
+
+ // Is WordPress 5?
+ if (!$isEnabled) {
+ $wpVersion = get_bloginfo('version');
+
+ $isEnabled = version_compare($wpVersion, '5.0', '>=');
+ }
+
+ return $isEnabled;
+ }
+
+ /**
+ * @return mixed|string
+ */
+ public static function getRequestMethod()
+ {
+ if (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD'])) {
+ return sanitize_key($_SERVER['REQUEST_METHOD']);
+ }
+
+ if (function_exists('getenv')) {
+ $method = strtoupper(getenv('REQUEST_METHOD'));
+
+ if (!empty($method)) {
+ return $method;
+ }
+ }
+
+ if (isset($_POST) && !empty($_POST)) {
+ return 'POST';
+ }
+
+ return 'GET';
+ }
+
+ /**
+ * Check if Planner's pro is active
+ */
+ public static function isPlannersProActive()
+ {
+ if (class_exists('PublishPressPro\\PluginInitializer')) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Load pro sidebar
+ *
+ * @param boolean $echo
+ *
+ * @return mixed
+ */
+ public static function pp_pro_sidebar($echo = true)
+ {
+ ob_start();
+ ?>
+
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications;
+
+use PublishPress\Notifications\Workflow\Step\Action\Notification;
+
+defined('ABSPATH') or die('No direct script access allowed.');
+
+abstract class Helper
+{
+ /**
+ * @param array $content
+ * @param string $receiver
+ * @param string $channel
+ *
+ * @return string
+ */
+ public static function calculateNotificationUID($content, $receiver, $channel)
+ {
+ return md5(maybe_serialize([$content, $receiver, $channel]));
+ }
+
+ /**
+ * @param $timestamp
+ * @param $data
+ *
+ * @return string
+ */
+ public static function calculateNotificationScheduleUID($timestamp, $data)
+ {
+ return md5(maybe_serialize([$timestamp, $data]));
+ }
+
+ public static function getDuplicatedNotificationThreshold()
+ {
+ global $publishpress;
+
+ if (isset($publishpress->improved_notifications->module->options->duplicated_notification_threshold)) {
+ return $publishpress->improved_notifications->module->options->duplicated_notification_threshold;
+ }
+
+ return Notification::DEFAULT_DUPLICATED_NOTIFICATION_THRESHOLD_IN_MINUTES;
+ }
+
+ /**
+ * Check if the notification was just sent, to avoid duplicated notifications when
+ * multiple requests try to run the same job.
+ *
+ * @param array $content
+ * @param string $receiver
+ * @param string $channel
+ * @param int $threshold
+ *
+ * @return bool
+ */
+ public static function isDuplicatedNotification($content, $receiver, $channel, $threshold)
+ {
+ $uid = static::calculateNotificationUID($content, $receiver, $channel);
+
+ $transientName = 'ppnotif_' . $uid;
+
+ // Check if we already have the transient.
+ if (get_transient($transientName)) {
+ // Yes, duplicated notification.
+ return true;
+ }
+
+ /**
+ * Filters the value of the timeout to ignore duplicated notifications.
+ *
+ * @param int $timeout
+ * @param string $uid
+ *
+ * @return int
+ */
+ $timeout = (int)apply_filters(
+ 'pp_duplicated_notification_timeout',
+ ($threshold + 5) * 60,
+ $uid
+ );
+
+ // Set the flag and return as non-duplicated.
+ set_transient($transientName, 1, $timeout);
+
+ return false;
+ }
+
+ public static function isDuplicatedNotificationSchedule($timestamp, $data)
+ {
+ $uid = static::calculateNotificationScheduleUID($timestamp, $data);
+
+ $transientName = 'ppnotif_schedule_' . $uid;
+
+ // Check if we already have the transient.
+ if (get_transient($transientName)) {
+ // Yes, duplicated notification.
+ return true;
+ }
+
+ /**
+ * Filters the value of the timeout to ignore duplicated notifications.
+ *
+ * @param int $timeout
+ * @param string $uid
+ *
+ * @return int
+ */
+ $timeout = (int)apply_filters(
+ 'pp_duplicated_notification_timeout',
+ (static::getDuplicatedNotificationThreshold() + 5) * 60,
+ $uid
+ );
+
+ // Set the flag and return as non-duplicated.
+ set_transient($transientName, 1, $timeout);
+
+ return false;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Pimple_Container.php b/public/wp-content/plugins/publishpress/lib/Notifications/Pimple_Container.php
new file mode 100644
index 000000000..0f9b03496
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Pimple_Container.php
@@ -0,0 +1,90 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications;
+
+use PublishPress\Pimple\Container;
+use PP_Debug;
+use PublishPress\AsyncNotifications\SchedulerInterface;
+use PublishPress\AsyncNotifications\WPCronAdapter;
+use PublishPress\Core\View;
+
+class Pimple_Container extends Container
+{
+ /**
+ * Instance of the Pimple container
+ */
+ protected static $instance;
+
+ public static function get_instance()
+ {
+ if (empty(static::$instance)) {
+ $instance = new self;
+
+ // Define the services
+
+ $instance['view'] = function ($c) {
+ return new View();
+ };
+
+ $instance['publishpress'] = function ($c) {
+ global $publishpress;
+
+ return $publishpress;
+ };
+
+ $instance['workflows_controller'] = function ($c) {
+ return new Workflow\WorkflowsController;
+ };
+
+ $instance['shortcodes'] = function ($c) {
+ return new Shortcodes;
+ };
+
+ /**
+ * @param $c
+ *
+ * @return SchedulerInterface
+ */
+ $instance['notification_scheduler'] = function ($c) {
+ return apply_filters('publishpress_notifications_notification_scheduler', new WPCronAdapter(), $c);
+ };
+
+ /**
+ * @param $c
+ *
+ * @return bool
+ */
+ $instance['DEBUGGING'] = function ($c) {
+ if (!isset($c['publishpress']->modules->debug)) {
+ return false;
+ }
+
+ if (!isset($c['publishpress']->modules->debug->options)) {
+ return false;
+ }
+
+ return $c['publishpress']->modules->debug->options->enabled === 'on';
+ };
+
+ /**
+ * @param $c
+ *
+ * @return PP_Debug
+ */
+ $instance['debug'] = function ($c) {
+ return $c['publishpress']->debug;
+ };
+
+ static::$instance = $instance;
+ }
+
+ return static::$instance;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Plugin.php b/public/wp-content/plugins/publishpress/lib/Notifications/Plugin.php
new file mode 100644
index 000000000..ee954c52f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Plugin.php
@@ -0,0 +1,356 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications;
+
+defined('ABSPATH') or die('No direct script access allowed.');
+
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Traits\PublishPress_Module;
+
+class Plugin
+{
+ use Dependency_Injector, PublishPress_Module;
+
+ /**
+ * The method which runs the plugin
+ */
+ public function init()
+ {
+ add_action('load-edit.php', [$this, 'add_load_edit_hooks']);
+
+ add_filter('post_updated_messages', [$this, 'filter_post_updated_messages']);
+ add_filter('bulk_post_updated_messages', [$this, 'filter_bulk_post_updated_messages'], 10, 2);
+
+ add_filter('posts_clauses_request', [$this, 'fltSuppressInactiveNotifications'], 50, 2);
+
+ if (is_admin()) {
+ add_filter('wp_count_posts', [$this, 'fltSuppressInactivePostCounts'], 50, 2);
+ }
+
+ add_filter('views_edit-psppnotif_workflow', [$this, 'fltRemoveWorkflowsMineLink']);
+ }
+
+ public function add_load_edit_hooks()
+ {
+ $post_type = 'psppnotif_workflow';
+ $screen = get_current_screen();
+
+ if (!isset($screen->id)) {
+ return;
+ }
+
+ if ("edit-$post_type" !== $screen->id) {
+ return;
+ }
+
+ add_filter("manage_{$post_type}_posts_columns", [$this, 'filter_manage_post_columns']);
+
+ add_action("manage_{$post_type}_posts_custom_column", [$this, 'action_manage_post_custom_column'], 10, 2);
+ }
+
+ public function filter_manage_post_columns($post_columns)
+ {
+ // Remove the Date column.
+ unset($post_columns['date']);
+
+ $post_columns['events'] = __('When to notify?', 'publishpress');
+ $post_columns['filter'] = __('Filter the content?', 'publishpress');
+ $post_columns['receivers'] = __('Who to notify?', 'publishpress');
+
+ return $post_columns;
+ }
+
+ public function action_manage_post_custom_column($column_name, $post_id)
+ {
+ $columns = [
+ 'events',
+ 'filter',
+ 'receivers',
+ ];
+ // Ignore other columns
+ if (!in_array($column_name, $columns)) {
+ return;
+ }
+
+ $method_name = 'print_column_' . $column_name;
+ $this->$method_name($post_id);
+ }
+
+ private function suppressInactiveNotifications($where, $inactive_default_names) {
+ global $wpdb;
+
+ $post_name_csv = implode("','", array_map('sanitize_key', $inactive_default_names));
+
+ $where .= " AND $wpdb->posts.post_name NOT IN ('" . $post_name_csv . "')"; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
+
+ //phpcs:ignore Squiz.PHP.CommentedOutCode.Found
+ foreach ($inactive_default_names as $default_name) { // note: $wpdb->prepare() breaks wildcards in LIKE statements
+ $where .= " AND $wpdb->posts.post_name NOT LIKE '" . sanitize_key($default_name) . "-%'"; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
+ }
+
+ return $where;
+ }
+
+ private function suppressInactiveRevisionsNotifications($where) {
+ return $this->suppressInactiveNotifications(
+ $where,
+ [
+ 'revision-scheduled-publication',
+ 'scheduled-revision-is-published',
+ 'revision-scheduled',
+ 'revision-is-scheduled',
+ 'revision-declined',
+ 'revision-deferred-or-rejected',
+ 'revision-submission',
+ 'revision-is-submitted',
+ 'new-revision',
+ 'new-revision-created',
+ 'revision-status-changed',
+ 'revision-is-applied',
+ 'revision-is-published'
+ ]
+ );
+ }
+
+ private function suppressInactiveStatusesNotifications($where) {
+ return $this->suppressInactiveNotifications(
+ $where,
+ [
+ 'post-status-changed',
+ 'post-deferred-or-rejected',
+ 'post-declined'
+ ]
+ );
+ }
+
+ function fltSuppressInactiveNotifications($clauses, $_wp_query = false, $args = [])
+ {
+ if (!empty($_wp_query) && !empty($_wp_query->query_vars) && !empty($_wp_query->query_vars['post_type']) && ('psppnotif_workflow' == $_wp_query->query_vars['post_type'])) {
+ if (!defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !defined('PUBLISHPRESS_INCLUDE_REVISION_NOTIFICATIONS')) {
+ $clauses['where'] = $this->suppressInactiveRevisionsNotifications($clauses['where']);
+ }
+
+ if (!defined('PUBLISHPRESS_STATUSES_PRO_VERSION') && !defined('PUBLISHPRESS_RETAIN_DEFAULT_STATUS_CHANGED_WORKFLOW')) {
+ $clauses['where'] = $this->suppressInactiveStatusesNotifications($clauses['where']);
+ }
+ }
+
+ return $clauses;
+ }
+
+ function fltSuppressInactivePostCounts($counts, $type, $perm = '') {
+ global $wpdb, $pagenow;
+
+ if (
+ ('psppnotif_workflow' == $type) && !empty($pagenow) && ('edit.php' == $pagenow)
+ && (!defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') || !defined('PUBLISHPRESS_STATUSES_PRO_VERSION'))
+ ) {
+ $query = "SELECT post_status, COUNT(*) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
+
+ if (!defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && !defined('PUBLISHPRESS_INCLUDE_REVISION_NOTIFICATIONS')) {
+ $query = $this->suppressInactiveRevisionsNotifications($query);
+ }
+
+ if (!defined('PUBLISHPRESS_STATUSES_PRO_VERSION') && !defined('PUBLISHPRESS_RETAIN_DEFAULT_STATUS_CHANGED_WORKFLOW')) {
+ $query = $this->suppressInactiveStatusesNotifications($query);
+ }
+
+ $query .= ' GROUP BY post_status';
+
+ $results = (array) $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
+ $counts = array_fill_keys( get_post_stati(), 0 );
+
+ foreach ( $results as $row ) {
+ $counts[ $row['post_status'] ] = $row['num_posts'];
+ }
+
+ $counts = (object) $counts;
+ }
+
+ return $counts;
+ }
+
+ function fltRemoveWorkflowsMineLink($view_links) {
+ unset($view_links['mine']);
+
+ return $view_links;
+ }
+
+ /**
+ * Customize the post messages for the notification workflows when the
+ * content is saved.
+ *
+ * @param string $messages
+ *
+ * @return array
+ */
+ public function filter_post_updated_messages($messages)
+ {
+ global $current_screen;
+
+ if (PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW !== $current_screen->post_type) {
+ return $messages;
+ }
+
+ $post = get_post();
+
+ /* translators: Publish box date format, see https://secure.php.net/date */
+ $scheduled_date = date_i18n(__('M j, Y @ H:i'), strtotime($post->post_date));
+
+ $messages['post'][1] = __('Notification workflow updated.', 'pulishpress');
+ $messages['post'][4] = __('Notification workflow updated.', 'pulishpress');
+ $messages['post'][6] = __('Notification workflow published.', 'pulishpress');
+ $messages['post'][7] = __('Notification workflow saved.', 'pulishpress');
+ $messages['post'][8] = __('Notification workflow submitted.', 'pulishpress');
+ $messages['post'][9] = sprintf(
+ __('Notification workflow scheduled for: %s.'),
+ '' . $scheduled_date . ' '
+ );
+ $messages['post'][10] = __('Notification workflow draft updated.', 'pulishpress');
+
+ return $messages;
+ }
+
+ /**
+ * Customize the post messages for the notification workflows when the
+ * content is bulk edited.
+ *
+ * @param string $bulk_messages
+ * @param int $bulk_contents
+ *
+ * @return array
+ */
+ public function filter_bulk_post_updated_messages($bulk_messages, $bulk_counts)
+ {
+ global $current_screen;
+
+ if (PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW !== $current_screen->post_type) {
+ return $bulk_messages;
+ }
+
+ $bulk_messages['post']['updated'] = _n(
+ '%s notification workflow updated.',
+ '%s notification workflows updated.',
+ $bulk_counts['updated']
+ );
+ $bulk_messages['post']['locked'] = (1 == $bulk_counts['locked']) ? __(
+ '1 notification workflow not updated, somebody is editing it.'
+ ) :
+ _n(
+ '%s notification workflow not updated, somebody is editing it.',
+ '%s notification workflows not updated, somebody is editing them.',
+ $bulk_counts['locked']
+ );
+ $bulk_messages['post']['deleted'] = _n(
+ '%s notification workflow permanently deleted.',
+ '%s notification workflows permanently deleted.',
+ $bulk_counts['deleted']
+ );
+ $bulk_messages['post']['trashed'] = _n(
+ '%s notification workflow moved to the Trash.',
+ '%s notification workflows moved to the Trash.',
+ $bulk_counts['trashed']
+ );
+ $bulk_messages['post']['untrashed'] = _n(
+ '%s notification workflow restored from the Trash.',
+ '%s notification workflows restored from the Trash.',
+ $bulk_counts['untrashed']
+ );
+
+ return $bulk_messages;
+ }
+
+ /**
+ * Print the column for the events
+ *
+ * @param int $post_id
+ */
+ protected function print_column_events($post_id)
+ {
+ /**
+ * Get the event metakeys
+ *
+ * @param array $metakeys
+ */
+ $metakeys = apply_filters('psppno_events_metakeys', []);
+ $events = [];
+
+ foreach ($metakeys as $metakey => $label) {
+ $selected = get_post_meta($post_id, $metakey, true);
+
+ if ($selected) {
+ $events[] = $label;
+ }
+ }
+
+ if (empty($events)) {
+ echo '' . __(
+ 'Please select at least one event',
+ 'publishpress'
+ ) . ' ';
+ } else {
+ echo implode(', ', $events);
+ }
+ }
+
+ /**
+ * Print the column for the filters
+ *
+ * @param int $post_id
+ */
+ protected function print_column_filter($post_id)
+ {
+ /**
+ * Get the event metakeys
+ *
+ * @param array $metakeys
+ */
+ $metakeys = apply_filters('psppno_filter_metakeys', []);
+ $filters = [];
+
+ foreach ($metakeys as $metakey => $label) {
+ $selected = get_post_meta($post_id, $metakey, true);
+
+ if ($selected) {
+ $filters[] = $label;
+ }
+ }
+
+ if (empty($filters)) {
+ echo '' . __('Not filtered', 'publishpress') . ' ';
+ } else {
+ echo implode(', ', $filters);
+ }
+ }
+
+ /**
+ * Print the column for the receivers
+ *
+ * @param int $post_id
+ */
+ protected function print_column_receivers($post_id)
+ {
+ /**
+ * Get the values to display in the column
+ *
+ * @param array $values
+ * @param int $post_id
+ */
+ $values = apply_filters('psppno_receivers_column_value', [], $post_id);
+
+ if (empty($values)) {
+ echo '-';
+ } else {
+ echo implode(', ', $values);
+ }
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Shortcodes.php b/public/wp-content/plugins/publishpress/lib/Notifications/Shortcodes.php
new file mode 100644
index 000000000..244186db6
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Shortcodes.php
@@ -0,0 +1,856 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications;
+
+use Exception;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Traits\PublishPress_Module;
+use WP_Post;
+
+class Shortcodes
+{
+ use Dependency_Injector;
+ use PublishPress_Module;
+
+ /**
+ * The post of the workflow.
+ *
+ * @var WP_Post
+ */
+ protected $workflow_post;
+
+ /**
+ * An array with arguments set by the action
+ *
+ * @var array
+ */
+ protected $event_args;
+
+ /**
+ * @var mixed
+ */
+ protected $cache_receiver;
+
+ /**
+ * Shortcodes constructor.
+ */
+ public function __construct()
+ {
+ add_action('publishpress_workflow_do_shortcode_in_content', [$this, 'setReceiverForShortcode'], 10, 2);
+ }
+
+ /**
+ * Adds the shortcodes to replace text
+ *
+ * @param WP_Post $workflow_post
+ * @param array $event_args
+ */
+ public function register($workflow_post, $event_args)
+ {
+ $this->set_properties($workflow_post, $event_args);
+
+ add_shortcode('psppno_actor', [$this, 'handle_psppno_actor']);
+ add_shortcode('psppno_post', [$this, 'handle_psppno_post']);
+ add_shortcode('psppno_workflow', [$this, 'handle_psppno_workflow']);
+ add_shortcode('psppno_edcomment', [$this, 'handle_psppno_edcomment']);
+ add_shortcode('psppno_receiver', [$this, 'handle_psppno_receiver']);
+ }
+
+ /**
+ * Set the instance properties
+ *
+ * @param WP_Post $workflow_post
+ * @param array $event_args
+ */
+ protected function set_properties($workflow_post, $event_args)
+ {
+ $this->workflow_post = $workflow_post;
+ $this->event_args = $event_args;
+ }
+
+ /**
+ * Returns the user who triggered the workflow for notification.
+ * You can specify which user's property should be printed:
+ *
+ * [psppno_actor display_name]
+ *
+ * @param array $attrs
+ *
+ * @return string
+ */
+ public function handle_psppno_actor($attrs)
+ {
+ $user = $this->get_actor();
+
+ return $this->get_user_data($user, $attrs);
+ }
+
+ /**
+ * Returns the current user, the actor of the action
+ *
+ * @return bool|WP_User
+ */
+ protected function get_actor()
+ {
+ return get_user_by('ID', $this->event_args['user_id']);
+ }
+
+ /**
+ * Returns the user's info. You can specify which user's property should be
+ * printed passing that on the $attrs.
+ *
+ * If more than one attribute is given, we returns all the data
+ * separated by comma (default) or specified separator, in the order it was
+ * received.
+ *
+ * If no attribute is provided, we use display_name as default.
+ *
+ * Accepted attributes:
+ * - id
+ * - login
+ * - url
+ * - display_name
+ * - first_name
+ * - last_name
+ * - email
+ * - separator
+ *
+ * @param WP_User $user
+ * @param array $attrs
+ *
+ * @return string
+ */
+ protected function get_user_data($user, $attrs)
+ {
+ if (!is_array($attrs)) {
+ if (!empty($attrs)) {
+ $attrs[] = $attrs;
+ } else {
+ $attrs = [];
+ }
+ }
+
+ // No attributes? Set the default one.
+ if (empty($attrs)) {
+ $attrs[] = 'display_name';
+ }
+
+ // Set the separator
+ if (!isset($attrs['separator'])) {
+ $attrs['separator'] = ', ';
+ }
+
+ // Get the user's info
+ $info = [];
+
+ foreach ($attrs as $index => $field) {
+ $data = $this->get_user_field($user, $field, $attrs);
+
+ if (false !== $data) {
+ $info[] = $data;
+ }
+ }
+
+ return implode($attrs['separator'], $info);
+ }
+
+ private function get_user_field($user, $field, $attrs)
+ {
+ $result = false;
+
+ if (empty($field)) {
+ $field = 'name';
+ }
+
+ switch ($field) {
+ case 'id':
+ $result = $user->ID;
+ break;
+
+ case 'login':
+ $result = $user->user_login;
+ break;
+
+ case 'url':
+ $result = $user->user_url;
+ break;
+
+ case 'name':
+ case 'display_name':
+ $result = $user->display_name;
+ break;
+
+ case 'first_name':
+ $result = $user->first_name;
+ break;
+
+ case 'last_name':
+ $result = $user->last_name;
+ break;
+
+ case 'email':
+ $result = $user->user_email;
+ break;
+
+ default:
+ if ($custom = apply_filters(
+ 'publishpress_notif_shortcode_user_data',
+ false,
+ $field,
+ $user,
+ $attrs
+ )) {
+ $result = $custom;
+ }
+ break;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns data from the receiver, if available.
+ * Available attributes:
+ * - name (display_name - default)
+ * - email
+ * - first_name
+ * - last_name
+ * - login
+ * - nickname
+ *
+ * [psppno_receiver name]
+ *
+ * @param array $attrs
+ *
+ * @return string
+ */
+ public function handle_psppno_receiver($attrs)
+ {
+ $receiver = $this->cache_receiver;
+
+ // Decide what field to display.
+ if (empty($attrs)) {
+ $field = 'name';
+ } else {
+ $whitelist = [
+ 'name',
+ 'email',
+ 'first_name',
+ 'last_name',
+ 'login',
+ 'nickname',
+ ];
+
+ if (in_array($attrs[0], $whitelist)) {
+ $field = $attrs[0];
+ } else {
+ $field = 'name';
+ }
+ }
+
+ if (is_numeric($receiver)) {
+ // Do we have an user?
+ $user = get_user_by('id', $receiver);
+ $result = '';
+
+ switch ($field) {
+ case 'name':
+ $result = $user->display_name;
+ break;
+
+ case 'first_name':
+ $result = $user->first_name;
+ break;
+
+ case 'last_name':
+ $result = $user->last_name;
+ break;
+
+ case 'login':
+ $result = $user->user_login;
+ break;
+
+ case 'nickname':
+ $result = $user->nickname;
+ break;
+
+ default:
+ $result = $user->user_email;
+ break;
+ }
+
+ if (empty($result)) {
+ $result = $user->display_name;
+ }
+ } else {
+ $result = $receiver;
+
+ // Do we have an email address?
+ if (strpos($receiver, '@') > 0) {
+ // Do we have a name?
+ $separatorPos = strpos($receiver, '/');
+ if ($separatorPos > 0) {
+ if (in_array('name', $attrs)) {
+ $result = substr($receiver, 0, $separatorPos);
+ } else {
+ $result = substr($receiver, $separatorPos + 1, strlen($receiver));
+ }
+ }
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the info from the post related to the notification.
+ * You can specify which post's property should be printed:
+ *
+ * [psppno_post title]
+ *
+ * If no attribute is provided, we use title as default.
+ *
+ * Accepted attributes:
+ * - id
+ * - title
+ * - url
+ *
+ * @param array $attrs
+ *
+ * @return string
+ */
+ public function handle_psppno_post($attrs)
+ {
+ $post = $this->get_post();
+
+ return $this->get_post_data($post, $attrs);
+ }
+
+ /**
+ * Returns the post related to the notification.
+ *
+ * @return WP_Post
+ */
+ protected function get_post()
+ {
+ return get_post($this->event_args['params']['post_id']);
+ }
+
+ /**
+ * Returns the post's info. You can specify which post's property should be
+ * printed passing that on the $attrs.
+ *
+ * If more than one attribute is given, we returns all the data
+ * separated by comma (default) or specified separator, in the order it was
+ * received.
+ *
+ * If no attribute is provided, we use title as default.
+ *
+ * Accepted attributes:
+ * - id
+ * - title
+ * - permalink
+ * - date
+ * - time
+ * - old_status
+ * - new_status
+ * - separator
+ * - edit_link
+ *
+ * @param WP_Post $post
+ * @param array $attrs
+ *
+ * @return string
+ * @throws Exception
+ *
+ */
+ protected function get_post_data($post, $attrs)
+ {
+ // No attributes? Set the default one.
+ if (empty($attrs)) {
+ $attrs = ['title'];
+ }
+
+ // Set the separator
+ if (!isset($attrs['separator'])) {
+ $attrs['separator'] = ', ';
+ }
+
+ // Get the post's info
+ $info = [];
+
+ foreach ($attrs as $field) {
+ $data = $this->get_post_field($post, $field, $attrs);
+
+ if (false !== $data) {
+ $info[] = $data;
+ }
+ }
+
+ return implode($attrs['separator'], $info);
+ }
+
+ private function get_post_field($post, $field, $attrs)
+ {
+ $publishpress = $this->get_service('publishpress');
+
+ $result = false;
+
+ if (is_null($field)) {
+ $field = 'title';
+ }
+
+ switch ($field) {
+ case 'id':
+ $result = $post->ID;
+ break;
+
+ case 'title':
+ $result = $post->post_title;
+ break;
+
+ case 'post_type':
+ $postType = get_post_type_object($post->post_type);
+
+ if (!empty($postType) && !is_wp_error($postType)) {
+ $result = $postType->labels->singular_name;
+ }
+ break;
+
+ case 'permalink':
+ $result = get_permalink($post->ID);
+ break;
+
+ case 'date':
+ $result = get_the_date('', $post);
+ break;
+
+ case 'time':
+ $result = get_the_time('', $post);
+ break;
+
+ case 'old_status':
+ case 'new_status':
+ $status_name = apply_filters('publishpress_notifications_status', $this->event_args['params'][$field], $post);
+
+ $status = $publishpress->getPostStatusBy(
+ 'slug',
+ $status_name
+ );
+
+ if (empty($status) || 'WP_Error' === get_class($status)) {
+ break;
+ }
+
+ $result = $status->label;
+ break;
+
+ case 'content':
+ $result = $post->post_content;
+ break;
+
+ case 'excerpt':
+ $result = $post->post_excerpt;
+ break;
+
+ case 'edit_link':
+ $admin_path = 'post.php?post=' . $post->ID . '&action=edit';
+ $result = htmlspecialchars_decode(admin_url($admin_path));
+ break;
+
+ case 'author_display_name':
+ case 'author_email':
+ case 'author_login':
+ $author_data = get_userdata($post->post_author);
+
+ $field_map = [
+ 'author_display_name' => 'display_name',
+ 'author_email' => 'user_email',
+ 'author_login' => 'user_login',
+ ];
+
+ $user_field = $field_map[$field];
+ $data = $author_data->{$user_field};
+
+ $result = apply_filters('pp_get_author_data', $data, $field, $post);
+ break;
+
+ default:
+ // Meta data attribute
+ if (0 === strpos($field, 'meta')) {
+ $arr = explode(':', $field);
+ if (!empty($arr[1])) {
+ if (substr_count($arr[1], '.')) {
+ $meta_fragments = explode('.', $arr[1]);
+
+ $meta_name = $meta_fragments[0];
+ $meta_sub_field = $meta_fragments[1];
+ } else {
+ $meta_name = $arr[1];
+ $meta_sub_field = null;
+ }
+
+ $meta = get_post_meta($post->ID, $meta_name, true);
+ if ($meta && is_scalar($meta)) {
+ if ('meta-date' == $arr[0]) {
+ $result = date_i18n(get_option('date_format'), $meta);
+ } elseif ('meta-relationship' == $arr[0] || 'meta-post' == $arr[0]) {
+ $rel_post = get_post((int)$meta);
+
+ if (!empty($rel_post) && !is_wp_error($rel_post)) {
+ $result = $this->get_post_field($rel_post, $meta_sub_field, $attrs);
+ }
+ } elseif ('meta-user' == $arr[0] || strpos($meta_name, '_pp_editorial_meta_user') === 0) {
+ $rel_user = get_user_by('ID', (int)$meta);
+
+ if (!empty($rel_user) && !is_wp_error($rel_user)) {
+ $result = $this->get_user_field($rel_user, $meta_sub_field, $attrs);
+ }
+ } else {
+ $result = $meta;
+ }
+ } elseif (is_array($meta)) {
+ if (!empty($meta)) {
+ switch ($arr[0]) {
+ case 'meta-post':
+ case 'meta-relationship':
+ if (is_null($meta_sub_field)) {
+ $meta_sub_field = 'title';
+ }
+
+ $rel_result = [];
+
+ foreach ($meta as $rel_post_ID) {
+ $rel_post = get_post($rel_post_ID);
+
+ if (!empty($rel_post) && !is_wp_error($rel_post)) {
+ $rel_result[] = $this->get_post_field($rel_post, $meta_sub_field, $attrs);
+ }
+ }
+
+ if (!empty($rel_result)) {
+ $result = implode($attrs['separator'], $rel_result);
+ }
+ break;
+
+ case 'meta-link':
+ $result = sprintf(
+ '%s ',
+ $meta['url'],
+ $meta['target'],
+ $meta['title']
+ );
+ break;
+
+ case 'meta-term':
+ if (is_null($meta_sub_field)) {
+ $meta_sub_field = 'name';
+ }
+
+ $rel_result = [];
+
+ foreach ($meta as $rel_term_ID) {
+ $rel_term = get_term($rel_term_ID);
+
+ if (!empty($rel_term) && !is_wp_error($rel_term)) {
+ $rel_result[] = $this->get_term_field($rel_term, $meta_sub_field, $attrs);
+ }
+ }
+
+ if (!empty($rel_result)) {
+ $result = implode($attrs['separator'], $rel_result);
+ }
+ break;
+
+ case 'meta-user':
+ if (is_null($meta_sub_field)) {
+ $meta_sub_field = 'name';
+ }
+
+ $rel_result = [];
+
+ foreach ($meta as $rel_user_ID) {
+ $rel_user = get_user_by('ID', $rel_user_ID);
+
+ if (!empty($rel_user) && !is_wp_error($rel_user)) {
+ $rel_result[] = $this->get_user_field($rel_user, $meta_sub_field, $attrs);
+ }
+ }
+
+ if (!empty($rel_result)) {
+ $result = implode($attrs['separator'], $rel_result);
+ }
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ if ($custom = apply_filters(
+ 'publishpress_notif_shortcode_post_data',
+ false,
+ $field,
+ $post,
+ $attrs
+ )) {
+ $result = $custom;
+ }
+ }
+
+ break;
+ }
+
+ return $result;
+ }
+
+ private function get_term_field($term, $field, $attrs)
+ {
+ $result = false;
+
+ if (is_null($field)) {
+ $field = 'name';
+ }
+
+ switch ($field) {
+ case 'id':
+ $result = $term->term_id;
+ break;
+
+ case 'name':
+ $result = $term->name;
+ break;
+
+ case 'slug':
+ $result = $term->slug;
+ break;
+
+ default:
+ if ($custom = apply_filters(
+ 'publishpress_notif_shortcode_term_data',
+ false,
+ $field,
+ $term,
+ $attrs
+ )) {
+ $result = $custom;
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the info from the post related to the workflow.
+ * You can specify which workflow's property should be printed:
+ *
+ * [psppno_workflow title]
+ *
+ * If no attribute is provided, we use title as default.
+ *
+ * Accepted attributes:
+ * - id
+ * - title
+ *
+ * @param array $attrs
+ *
+ * @return string
+ */
+ public function handle_psppno_workflow($attrs)
+ {
+ if (is_string($attrs)) {
+ $attrs = [$attrs];
+ }
+
+ $post = $this->workflow_post;
+
+ // No attributes? Set the default one.
+ if (empty($attrs) || empty($attrs[0])) {
+ $attrs[] = 'title';
+ }
+
+ // Set the separator
+ if (!isset($attrs['separator'])) {
+ $attrs['separator'] = ', ';
+ }
+
+ // Get the post's info
+ $info = [];
+
+ foreach ($attrs as $index => $item) {
+ switch ($item) {
+ case 'id':
+ $info[] = $post->ID;
+ break;
+
+ case 'title':
+ $info[] = $post->post_title;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return implode($attrs['separator'], $info);
+ }
+
+ /**
+ * Returns the info from the comment related to the workflow.
+ * You can specify which comment's property should be printed:
+ *
+ * [psppno_comment content]
+ *
+ * If no attribute is provided, we use content as default.
+ *
+ * Accepted attributes:
+ * - id
+ * - content
+ * - author
+ * - author_email
+ * - author_url
+ * - author_ip
+ * - date
+ *
+ * @param array $attrs
+ *
+ * @return string
+ */
+ public function handle_psppno_edcomment($attrs)
+ {
+ // No attributes? Set the default one.
+ if (empty($attrs)) {
+ $attrs = [];
+ $attrs[] = 'content';
+ }
+
+ // Set the separator
+ if (!isset($attrs['separator'])) {
+ $attrs['separator'] = ', ';
+ }
+
+ // Set the number of comments to return
+ if (!isset($attrs['number'])) {
+ $attrs['number'] = 1;
+ } else {
+ $attrs['number'] = (int)$attrs['number'];
+ }
+
+ if (empty($attrs['number'])) {
+ $attrs['number'] = 1;
+ }
+
+ $post = $this->get_post();
+
+ if (!empty($post) && !is_wp_error($post)) {
+ $comments = get_comments(
+ [
+ 'post_id' => $post->ID,
+ 'status' => 'editorial-comment',
+ 'number' => $attrs['number'],
+ 'orderby' => 'comment_post_ID',
+ 'order' => 'DESC',
+ ]
+ );
+
+ if (!empty($comments) && !is_wp_error($comments)) {
+ $commentIds = [];
+
+ foreach ($comments as $comment) {
+ $commentIds[] = $this->parse_comment($comment, $attrs);
+ }
+
+ $commentIds = array_reverse($commentIds);
+
+ return implode(' ', $commentIds);
+ }
+ }
+
+ return '';
+ }
+
+ private function parse_comment($comment, $attrs) {
+ // Get the post's info
+ $info = [];
+
+ foreach ($attrs as $index => $item) {
+ switch ($item) {
+ case 'id':
+ $info[] = $comment->comment_ID;
+ break;
+
+ case 'content':
+ $info[] = $comment->comment_content;
+ break;
+
+ case 'author':
+ $info[] = $comment->comment_author;
+ break;
+
+ case 'author_email':
+ $info[] = $comment->comment_author_email;
+ break;
+
+ case 'author_url':
+ $info[] = $comment->comment_author_url;
+ break;
+
+ case 'author_ip':
+ if (isset($comment->comment_author_ip)) {
+ $info[] = $comment->comment_author_ip;
+ } else {
+ $info[] = $comment->comment_author_IP;
+ }
+
+ break;
+
+ case 'date':
+ $info[] = $comment->comment_date;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return implode($attrs['separator'], $info);
+ }
+
+ /**
+ * @param string $content
+ * @param mixed $receiver
+ */
+ public function setReceiverForShortcode($content, $receiver)
+ {
+ $this->cache_receiver = $receiver;
+ }
+
+ /**
+ * Removes the shortcodes
+ */
+ public function unregister()
+ {
+ remove_shortcode('psppno_actor');
+ remove_shortcode('psppno_post');
+ remove_shortcode('psppno_workflow');
+ remove_shortcode('psppno_edcomment');
+ remove_shortcode('psppno_receiver');
+
+ $this->cleanup();
+ }
+
+ /**
+ * Cleanup the data
+ */
+ protected function cleanup()
+ {
+ $this->workflow_post = null;
+ $this->event_args = null;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Table/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Table/Base.php
new file mode 100644
index 000000000..b5fd1e401
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Table/Base.php
@@ -0,0 +1,1479 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Table;
+
+/**
+ * Base class for displaying a list of items in an ajaxified HTML table.
+ * Based on the class WP_List_Table from WordPress 4.8.
+ * We are duplicating the class because the original class is private
+ * and can change in future releases of WP.
+ */
+class Base
+{
+ /**
+ * The current list of items.
+ *
+ * @since 3.1.0
+ * @access public
+ * @var array
+ */
+ public $items;
+
+ /**
+ * Various information about the current table.
+ *
+ * @since 3.1.0
+ * @access protected
+ * @var array
+ */
+ protected $_args;
+
+ /**
+ * Various information needed for displaying the pagination.
+ *
+ * @since 3.1.0
+ * @access protected
+ * @var array
+ */
+ protected $_pagination_args = [];
+
+ /**
+ * The current screen.
+ *
+ * @since 3.1.0
+ * @access protected
+ * @var object
+ */
+ protected $screen;
+
+ /**
+ * The view switcher modes.
+ *
+ * @since 4.1.0
+ * @access protected
+ * @var array
+ */
+ protected $modes = [];
+
+ /**
+ * Stores the value returned by ->get_column_info().
+ *
+ * @since 4.1.0
+ * @access protected
+ * @var array
+ */
+ protected $_column_headers;
+
+ /**
+ * {@internal Missing Summary}
+ *
+ * @access protected
+ * @var array
+ */
+ protected $compat_fields = ['_args', '_pagination_args', 'screen', '_actions', '_pagination'];
+
+ /**
+ * {@internal Missing Summary}
+ *
+ * @access protected
+ * @var array
+ */
+ protected $compat_methods = [
+ 'set_pagination_args',
+ 'get_views',
+ 'get_bulk_actions',
+ 'bulk_actions',
+ 'row_actions',
+ 'view_switcher',
+ 'comments_bubble',
+ 'get_items_per_page',
+ 'pagination',
+ 'get_sortable_columns',
+ 'get_column_info',
+ 'get_table_classes',
+ 'display_tablenav',
+ 'extra_tablenav',
+ 'single_row_columns',
+ ];
+
+ /**
+ * Cached bulk actions.
+ *
+ * @since 3.1.0
+ * @access private
+ * @var array
+ */
+ private $_actions;
+
+ /**
+ * Cached pagination output.
+ *
+ * @since 3.1.0
+ * @access private
+ * @var string
+ */
+ private $_pagination;
+
+ /**
+ * Constructor.
+ *
+ * The child class should call this constructor from its own constructor to override
+ * the default $args.
+ *
+ * @param array|string $args {
+ * Array or string of arguments.
+ *
+ * @type string $plural Plural value used for labels and the objects being listed.
+ * This affects things such as CSS class-names and nonces used
+ * in the list table, e.g. 'posts'. Default empty.
+ * @type string $singular Singular label for an object being listed, e.g. 'post'.
+ * Default empty
+ * @type bool $ajax Whether the list table supports Ajax. This includes loading
+ * and sorting data, for example. If true, the class will call
+ * the _js_vars() method in the footer to provide variables
+ * to any scripts handling Ajax events. Default false.
+ * @type string $screen String containing the hook name used to determine the current
+ * screen. If left null, the current screen will be automatically set.
+ * Default null.
+ * }
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function __construct($args = [])
+ {
+ $args = wp_parse_args(
+ $args,
+ [
+ 'plural' => '',
+ 'singular' => '',
+ 'ajax' => false,
+ 'screen' => null,
+ ]
+ );
+
+ $this->screen = convert_to_screen($args['screen']);
+
+ add_filter("manage_{$this->screen->id}_columns", [$this, 'get_columns'], 0);
+
+ if (!$args['plural']) {
+ $args['plural'] = $this->screen->base;
+ }
+
+ $args['plural'] = sanitize_key($args['plural']);
+ $args['singular'] = sanitize_key($args['singular']);
+
+ $this->_args = $args;
+
+ if ($args['ajax']) {
+ // wp_enqueue_script( 'list-table' );
+ add_action('admin_footer', [$this, '_js_vars']);
+ }
+
+ if (empty($this->modes)) {
+ $this->modes = [
+ 'list' => __('List View'),
+ 'excerpt' => __('Excerpt View', 'publishpress'),
+ ];
+ }
+ }
+
+ /**
+ * Make private properties readable for backward compatibility.
+ *
+ * @param string $name Property to get.
+ *
+ * @return mixed Property.
+ * @since 4.0.0
+ * @access public
+ *
+ */
+ public function __get($name)
+ {
+ if (in_array($name, $this->compat_fields)) {
+ return $this->$name;
+ }
+ }
+
+ /**
+ * Make private properties settable for backward compatibility.
+ *
+ * @param string $name Property to check if set.
+ * @param mixed $value Property value.
+ *
+ * @return mixed Newly-set property.
+ * @since 4.0.0
+ * @access public
+ *
+ */
+ public function __set($name, $value)
+ {
+ if (in_array($name, $this->compat_fields)) {
+ return $this->$name = $value;
+ }
+ }
+
+ /**
+ * Make private properties checkable for backward compatibility.
+ *
+ * @param string $name Property to check if set.
+ *
+ * @return bool Whether the property is set.
+ * @since 4.0.0
+ * @access public
+ *
+ */
+ public function __isset($name)
+ {
+ if (in_array($name, $this->compat_fields)) {
+ return isset($this->$name);
+ }
+ }
+
+ /**
+ * Make private properties un-settable for backward compatibility.
+ *
+ * @param string $name Property to unset.
+ *
+ * @since 4.0.0
+ * @access public
+ *
+ */
+ public function __unset($name)
+ {
+ if (in_array($name, $this->compat_fields)) {
+ unset($this->$name);
+ }
+ }
+
+ /**
+ * Make private/protected methods readable for backward compatibility.
+ *
+ * @param callable $name Method to call.
+ * @param array $arguments Arguments to pass when calling.
+ *
+ * @return mixed|bool Return value of the callback, false otherwise.
+ * @since 4.0.0
+ * @access public
+ *
+ */
+ public function __call($name, $arguments)
+ {
+ if (in_array($name, $this->compat_methods)) {
+ return call_user_func_array([$this, $name], $arguments);
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks the current user's permissions
+ *
+ * @since 3.1.0
+ * @access public
+ * @abstract
+ */
+ public function ajax_user_can()
+ {
+ die('function Base::ajax_user_can() must be over-ridden in a sub-class.');
+ }
+
+ /**
+ * Access the pagination args.
+ *
+ * @param string $key Pagination argument to retrieve. Common values include 'total_items',
+ * 'total_pages', 'per_page', or 'infinite_scroll'.
+ *
+ * @return int Number of items that correspond to the given pagination argument.
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function get_pagination_arg($key)
+ {
+ if ('page' === $key) {
+ return $this->get_pagenum();
+ }
+
+ if (isset($this->_pagination_args[$key])) {
+ return $this->_pagination_args[$key];
+ }
+ }
+
+ /**
+ * Get the current page number
+ *
+ * @return int
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function get_pagenum()
+ {
+ $pagenum = isset($_REQUEST['paged']) ? absint($_REQUEST['paged']) : 0;
+
+ if (isset($this->_pagination_args['total_pages']) && $pagenum > $this->_pagination_args['total_pages']) {
+ $pagenum = $this->_pagination_args['total_pages'];
+ }
+
+ return max(1, $pagenum);
+ }
+
+ /**
+ * Displays the search box.
+ *
+ * @param string $text The 'submit' button label.
+ * @param string $input_id ID attribute value for the search input field.
+ *
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function search_box($text, $input_id)
+ {
+ if (empty($_REQUEST['s']) && !$this->has_items()) {
+ return;
+ }
+
+ $input_id = $input_id . '-search-input';
+
+ if (!empty($_REQUEST['orderby'])) {
+ echo ' ';
+ }
+ if (!empty($_REQUEST['order'])) {
+ echo ' ';
+ }
+ if (!empty($_REQUEST['post_mime_type'])) {
+ echo ' ';
+ }
+ if (!empty($_REQUEST['detached'])) {
+ echo ' ';
+ } ?>
+
+ :
+
+ 'search-submit']); ?>
+
+ items);
+ }
+
+ /**
+ * Display the list of views available on this table.
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function views()
+ {
+ $views = $this->get_views();
+ /**
+ * Filters the list of available list table views.
+ *
+ * The dynamic portion of the hook name, `$this->screen->id`, refers
+ * to the ID of the current screen, usually a string.
+ *
+ * @param array $views An array of available list table views.
+ *
+ * @since 3.5.0
+ *
+ */
+ $views = apply_filters("views_{$this->screen->id}", $views);
+
+ if (empty($views)) {
+ return;
+ }
+
+ $this->screen->render_screen_reader_content('heading_views');
+
+ echo "\n";
+ foreach ($views as $class => $view) {
+ $views[$class] = "\t$view";
+ }
+ echo implode(" | \n", $views) . "\n";
+ echo " ";
+ }
+
+ /**
+ * Get an associative array ( id => link ) with the list
+ * of views available on this table.
+ *
+ * @return array
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_views()
+ {
+ return [];
+ }
+
+ /**
+ * Get the current action selected from the bulk actions dropdown.
+ *
+ * @return string|false The action name or False if no action was selected
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function current_action()
+ {
+ if (isset($_REQUEST['filter_action']) && !empty($_REQUEST['filter_action'])) {
+ return false;
+ }
+
+ if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
+ return sanitize_key($_REQUEST['action']);
+ }
+
+ if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
+ return sanitize_key($_REQUEST['action2']);
+ }
+
+ return false;
+ }
+
+ /**
+ * Public wrapper for Base::get_default_primary_column_name().
+ *
+ * @return string Name of the default primary column.
+ * @since 4.4.0
+ * @access public
+ *
+ */
+ public function get_primary_column()
+ {
+ return $this->get_primary_column_name();
+ }
+
+ /**
+ * Gets the name of the primary column.
+ *
+ * @return string The name of the primary column.
+ * @since 4.3.0
+ * @access protected
+ *
+ */
+ protected function get_primary_column_name()
+ {
+ $columns = get_column_headers($this->screen);
+ $default = $this->get_default_primary_column_name();
+
+ // If the primary column doesn't exist fall back to the
+ // first non-checkbox column.
+ if (!isset($columns[$default])) {
+ $default = self::get_default_primary_column_name();
+ }
+
+ /**
+ * Filters the name of the primary column for the current list table.
+ *
+ * @param string $default Column name default for the specific list table, e.g. 'name'.
+ * @param string $context Screen ID for specific list table, e.g. 'plugins'.
+ *
+ * @since 4.3.0
+ *
+ */
+ $column = apply_filters('list_table_primary_column', $default, $this->screen->id);
+
+ if (empty($column) || !isset($columns[$column])) {
+ $column = $default;
+ }
+
+ return $column;
+ }
+
+ /**
+ * Gets the name of the default primary column.
+ *
+ * @return string Name of the default primary column, in this case, an empty string.
+ * @since 4.3.0
+ * @access protected
+ *
+ */
+ protected function get_default_primary_column_name()
+ {
+ $columns = $this->get_columns();
+ $column = '';
+
+ if (empty($columns)) {
+ return $column;
+ }
+
+ // We need a primary defined so responsive views show something,
+ // so let's fall back to the first non-checkbox column.
+ foreach ($columns as $col => $column_name) {
+ if ('cb' === $col) {
+ continue;
+ }
+
+ $column = $col;
+ break;
+ }
+
+ return $column;
+ }
+
+ /**
+ * Get a list of columns. The format is:
+ * 'internal-name' => 'Title'
+ *
+ * @return array
+ * @since 3.1.0
+ * @access public
+ * @abstract
+ *
+ */
+ public function get_columns()
+ {
+ return [];
+ }
+
+ /**
+ * Display the table
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function display()
+ {
+ $singular = esc_attr($this->_args['singular']);
+
+ $this->display_tablenav('top');
+
+ $this->screen->render_screen_reader_content('heading_list'); ?>
+
+
+
+ print_column_headers(); ?>
+
+
+
+ >
+ display_rows_or_placeholder(); ?>
+
+
+
+
+ print_column_headers(false); ?>
+
+
+
+
+ display_tablenav('bottom');
+ }
+
+ /**
+ * Generate the table navigation above or below the table
+ *
+ * @param string $which
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function display_tablenav($which)
+ {
+ if ('top' === $which) {
+ wp_nonce_field('bulk-' . $this->_args['plural']);
+ } ?>
+
+
+ has_items()): ?>
+
+ bulk_actions($which); ?>
+
+ extra_tablenav($which);
+ $this->pagination($which); ?>
+
+
+
+ _actions)) {
+ $this->_actions = $this->get_bulk_actions();
+ /**
+ * Filters the list table Bulk Actions drop-down.
+ *
+ * The dynamic portion of the hook name, `$this->screen->id`, refers
+ * to the ID of the current screen, usually a string.
+ *
+ * This filter can currently only be used to remove bulk actions.
+ *
+ * @param array $actions An array of the available bulk actions.
+ *
+ * @since 3.5.0
+ *
+ */
+ $this->_actions = apply_filters("bulk_actions-{$this->screen->id}", $this->_actions);
+ $two = '';
+ } else {
+ $two = '2';
+ }
+
+ if (empty($this->_actions)) {
+ return;
+ }
+
+ echo '' . esc_html__(
+ 'Select bulk action'
+ ) . ' ';
+ echo '\n";
+ echo '' . esc_html__('Bulk actions') . " \n";
+
+ foreach ($this->_actions as $name => $title) {
+ $class = 'edit' === $name ? ' class="hide-if-no-js"' : '';
+
+ echo "\t" . '' . esc_html(
+ $title
+ ) . " \n";
+ }
+
+ echo " \n";
+
+ submit_button(__('Apply'), 'action', '', false, ['id' => "doaction$two"]);
+ echo "\n";
+ }
+
+ /**
+ * Get an associative array ( option_name => option_title ) with the list
+ * of bulk actions available on this table.
+ *
+ * @return array
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_bulk_actions()
+ {
+ return [];
+ }
+
+ /**
+ * Extra controls to be displayed between bulk actions and pagination
+ *
+ * @param string $which
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function extra_tablenav($which)
+ {
+ }
+
+ /**
+ * Display the pagination.
+ *
+ * @param string $which
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function pagination($which)
+ {
+ if (empty($this->_pagination_args)) {
+ return;
+ }
+
+ $total_items = $this->_pagination_args['total_items'];
+ $total_pages = $this->_pagination_args['total_pages'];
+ $infinite_scroll = false;
+ if (isset($this->_pagination_args['infinite_scroll'])) {
+ $infinite_scroll = $this->_pagination_args['infinite_scroll'];
+ }
+
+ if ('top' === $which && $total_pages > 1) {
+ $this->screen->render_screen_reader_content('heading_pagination');
+ }
+
+ $output = '' . sprintf(
+ _n('%s item', '%s items', $total_items),
+ number_format_i18n($total_items)
+ ) . ' ';
+
+ $current = $this->get_pagenum();
+ $removable_query_args = wp_removable_query_args();
+
+ $protocol = is_ssl() ? 'https' : 'http';
+ $host = isset($_SERVER['HTTP_HOST']) ? esc_url_raw($_SERVER['HTTP_HOST']) : '';
+ $request_uri = isset($_SERVER['REQUEST_URI']) ? esc_url_raw($_SERVER['REQUEST_URI']) : '';
+
+ $current_url = set_url_scheme($protocol . '://' . $host . $request_uri);
+
+ $current_url = remove_query_arg($removable_query_args, $current_url);
+
+ $page_links = [];
+
+ $total_pages_before = '';
+ $total_pages_after = ' ';
+
+ $disable_first = $disable_last = $disable_prev = $disable_next = false;
+
+ if ($current == 1) {
+ $disable_first = true;
+ $disable_prev = true;
+ }
+ if ($current == 2) {
+ $disable_first = true;
+ }
+ if ($current == $total_pages) {
+ $disable_last = true;
+ $disable_next = true;
+ }
+ if ($current == $total_pages - 1) {
+ $disable_last = true;
+ }
+
+ if ($disable_first) {
+ $page_links[] = '« ';
+ } else {
+ $page_links[] = sprintf(
+ "%s %s ",
+ esc_url(remove_query_arg('paged', $current_url)),
+ __('First page'),
+ '«'
+ );
+ }
+
+ if ($disable_prev) {
+ $page_links[] = '‹ ';
+ } else {
+ $page_links[] = sprintf(
+ "%s %s ",
+ esc_url(add_query_arg('paged', max(1, $current - 1), $current_url)),
+ __('Previous page'),
+ '‹'
+ );
+ }
+
+ if ('bottom' === $which) {
+ $html_current_page = $current;
+ $total_pages_before = '' . __(
+ 'Current Page'
+ ) . ' ';
+ } else {
+ $html_current_page = sprintf(
+ "%s",
+ '' . __('Current Page') . ' ',
+ esc_attr($current),
+ strlen($total_pages)
+ );
+ }
+ $html_total_pages = sprintf("%s ", number_format_i18n($total_pages));
+ $page_links[] = $total_pages_before . sprintf(
+ _x('%1$s of %2$s', 'paging'),
+ $html_current_page,
+ $html_total_pages
+ ) . $total_pages_after;
+
+ if ($disable_next) {
+ $page_links[] = '› ';
+ } else {
+ $page_links[] = sprintf(
+ "%s %s ",
+ esc_url(add_query_arg('paged', min($total_pages, $current + 1), $current_url)),
+ __('Next page'),
+ '›'
+ );
+ }
+
+ if ($disable_last) {
+ $page_links[] = '» ';
+ } else {
+ $page_links[] = sprintf(
+ "%s %s ",
+ esc_url(add_query_arg('paged', $total_pages, $current_url)),
+ __('Last page'),
+ '»'
+ );
+ }
+
+ $pagination_links_class = 'pagination-links';
+ if (!empty($infinite_scroll)) {
+ $pagination_links_class = ' hide-if-js';
+ }
+ $output .= "\n';
+
+ if ($total_pages) {
+ $page_class = $total_pages < 2 ? ' one-page' : '';
+ } else {
+ $page_class = ' no-pages';
+ }
+ $this->_pagination = "$output
";
+
+ echo $this->_pagination;
+ }
+
+ /**
+ * Get a list of CSS classes for the Base table tag.
+ *
+ * @return array List of CSS classes for the table tag.
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_table_classes()
+ {
+ return ['widefat', 'fixed', 'striped', $this->_args['plural']];
+ }
+
+ /**
+ * Print column headers, accounting for hidden and sortable columns.
+ *
+ * @param bool $with_id Whether to set the id attribute or not
+ *
+ * @since 3.1.0
+ * @access public
+ *
+ * @staticvar int $cb_counter
+ *
+ */
+ public function print_column_headers($with_id = true)
+ {
+ list($columns, $hidden, $sortable, $primary) = $this->get_column_info();
+
+ $protocol = is_ssl() ? 'https' : 'http';
+ $host = isset($_SERVER['HTTP_HOST']) ? esc_url_raw($_SERVER['HTTP_HOST']) : '';
+ $request_uri = isset($_SERVER['REQUEST_URI']) ? esc_url_raw($_SERVER['REQUEST_URI']) : '';
+ $current_url = set_url_scheme($protocol . '://' . $host . $request_uri);
+ $current_url = remove_query_arg('paged', $current_url);
+
+ if (isset($_GET['orderby'])) {
+ $current_orderby = sanitize_key($_GET['orderby']);
+ } else {
+ $current_orderby = '';
+ }
+
+ if (isset($_GET['order']) && 'desc' === $_GET['order']) {
+ $current_order = 'desc';
+ } else {
+ $current_order = 'asc';
+ }
+
+ if (!empty($columns['cb'])) {
+ static $cb_counter = 1;
+ $columns['cb'] = '' . __('Select All') . ' '
+ . ' ';
+ $cb_counter++;
+ }
+
+ foreach ($columns as $column_key => $column_display_name) {
+ $class = ['manage-column', "column-$column_key"];
+
+ if (in_array($column_key, $hidden)) {
+ $class[] = 'hidden';
+ }
+
+ if ('cb' === $column_key) {
+ $class[] = 'check-column';
+ } elseif (in_array($column_key, ['posts', 'comments', 'links'])) {
+ $class[] = 'num';
+ }
+
+ if ($column_key === $primary) {
+ $class[] = 'column-primary';
+ }
+
+ if (isset($sortable[$column_key])) {
+ list($orderby, $desc_first) = $sortable[$column_key];
+
+ if ($current_orderby === $orderby) {
+ $order = 'asc' === $current_order ? 'desc' : 'asc';
+ $class[] = 'sorted';
+ $class[] = $current_order;
+ } else {
+ $order = $desc_first ? 'desc' : 'asc';
+ $class[] = 'sortable';
+ $class[] = $desc_first ? 'asc' : 'desc';
+ }
+
+ $column_display_name = '' . $column_display_name . ' ';
+ }
+
+ $tag = ('cb' === $column_key) ? 'td' : 'th';
+ $scope = ('th' === $tag) ? 'scope="col"' : '';
+ $id = $with_id ? "id='$column_key'" : '';
+
+ if (!empty($class)) {
+ $class = "class='" . join(' ', $class) . "'";
+ }
+
+ echo sprintf(
+ '<%s %s %s %s>%s<%1$s>',
+ esc_html($tag),
+ esc_html($scope),
+ esc_html($id),
+ esc_html($class),
+ esc_html($column_display_name)
+ );
+ }
+ }
+
+ /**
+ * Get a list of all, hidden and sortable columns, with filter applied
+ *
+ * @return array
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_column_info()
+ {
+ // $_column_headers is already set / cached
+ if (isset($this->_column_headers) && is_array($this->_column_headers)) {
+ // Back-compat for list tables that have been manually setting $_column_headers for horse reasons.
+ // In 4.3, we added a fourth argument for primary column.
+ $column_headers = [[], [], [], $this->get_primary_column_name()];
+ foreach ($this->_column_headers as $key => $value) {
+ $column_headers[$key] = $value;
+ }
+
+ return $column_headers;
+ }
+
+ $columns = get_column_headers($this->screen);
+ $hidden = get_hidden_columns($this->screen);
+
+ $sortable_columns = $this->get_sortable_columns();
+ /**
+ * Filters the list table sortable columns for a specific screen.
+ *
+ * The dynamic portion of the hook name, `$this->screen->id`, refers
+ * to the ID of the current screen, usually a string.
+ *
+ * @param array $sortable_columns An array of sortable columns.
+ *
+ * @since 3.5.0
+ *
+ */
+ $_sortable = apply_filters("manage_{$this->screen->id}_sortable_columns", $sortable_columns);
+
+ $sortable = [];
+ foreach ($_sortable as $id => $data) {
+ if (empty($data)) {
+ continue;
+ }
+
+ $data = (array)$data;
+ if (!isset($data[1])) {
+ $data[1] = false;
+ }
+
+ $sortable[$id] = $data;
+ }
+
+ $primary = $this->get_primary_column_name();
+ $this->_column_headers = [$columns, $hidden, $sortable, $primary];
+
+ return $this->_column_headers;
+ }
+
+ /**
+ * Get a list of sortable columns. The format is:
+ * 'internal-name' => 'orderby'
+ * or
+ * 'internal-name' => array( 'orderby', true )
+ *
+ * The second format will make the initial sorting order be descending
+ *
+ * @return array
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_sortable_columns()
+ {
+ return [];
+ }
+
+ /**
+ * Generate the tbody element for the list table.
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function display_rows_or_placeholder()
+ {
+ if ($this->has_items()) {
+ $this->display_rows();
+ } else {
+ echo '';
+ $this->no_items();
+ echo ' ';
+ }
+ }
+
+ /**
+ * Generate the table rows
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function display_rows()
+ {
+ foreach ($this->items as $item) {
+ $this->single_row($item);
+ }
+ }
+
+ /**
+ * Generates content for a single row of the table
+ *
+ * @param object $item The current item
+ *
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function single_row($item)
+ {
+ echo '';
+ $this->single_row_columns($item);
+ echo ' ';
+ }
+
+ /**
+ * Generates the columns for a single row of the table
+ *
+ * @param object $item The current item
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function single_row_columns($item)
+ {
+ list($columns, $hidden, $sortable, $primary) = $this->get_column_info();
+
+ foreach ($columns as $column_name => $column_display_name) {
+ $classes = "$column_name column-$column_name";
+ if ($primary === $column_name) {
+ $classes .= ' has-row-actions column-primary';
+ }
+
+ if (in_array($column_name, $hidden)) {
+ $classes .= ' hidden';
+ }
+
+ // Comments column uses HTML in the display name with screen reader text.
+ // Instead of using esc_attr(), we strip tags to get closer to a user-friendly string.
+ $data = 'data-colname="' . wp_strip_all_tags($column_display_name) . '"';
+
+ $attributes = "class='$classes' $data";
+
+ if ('cb' === $column_name) {
+ echo ' ';
+ echo $this->column_cb($item);
+ echo ' ';
+ } elseif (method_exists($this, '_column_' . $column_name)) {
+ echo call_user_func(
+ [$this, '_column_' . $column_name],
+ $item,
+ $classes,
+ $data,
+ $primary
+ );
+ } elseif (method_exists($this, 'column_' . $column_name)) {
+ echo "";
+ echo call_user_func([$this, 'column_' . $column_name], $item);
+ echo $this->handle_row_actions($item, $column_name, $primary);
+ echo " ";
+ } else {
+ echo "";
+ echo $this->column_default($item, $column_name);
+ echo $this->handle_row_actions($item, $column_name, $primary);
+ echo " ";
+ }
+ }
+ }
+
+ /**
+ *
+ * @param object $item
+ */
+ protected function column_cb($item)
+ {
+ }
+
+ /**
+ * Generates and display row actions links for the list table.
+ *
+ * @param object $item The item being acted upon.
+ * @param string $column_name Current column name.
+ * @param string $primary Primary column name.
+ *
+ * @return string The row actions HTML, or an empty string if the current column is the primary column.
+ * @since 4.3.0
+ * @access protected
+ *
+ */
+ protected function handle_row_actions($item, $column_name, $primary)
+ {
+ return $column_name === $primary ? '' . __(
+ 'Show more details'
+ ) . ' ' : '';
+ }
+
+ /**
+ *
+ * @param object $item
+ * @param string $column_name
+ */
+ protected function column_default($item, $column_name)
+ {
+ }
+
+ /**
+ * Return number of visible columns
+ *
+ * @return int
+ * @since 3.1.0
+ * @access public
+ *
+ */
+ public function get_column_count()
+ {
+ list($columns, $hidden) = $this->get_column_info();
+ $hidden = array_intersect(array_keys($columns), array_filter($hidden));
+
+ return count($columns) - count($hidden);
+ }
+
+ /**
+ * Message to be displayed when there are no items
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function no_items()
+ {
+ _e('No items found.');
+ }
+
+ /**
+ * Handle an incoming ajax request (called from admin-ajax.php)
+ *
+ * @since 3.1.0
+ * @access public
+ */
+ public function ajax_response()
+ {
+ $this->prepare_items();
+
+ ob_start();
+ if (!empty($_REQUEST['no_placeholder'])) {
+ $this->display_rows();
+ } else {
+ $this->display_rows_or_placeholder();
+ }
+
+ $rows = ob_get_clean();
+
+ $response = ['rows' => $rows];
+
+ if (isset($this->_pagination_args['total_items'])) {
+ $response['total_items_i18n'] = sprintf(
+ _n('%s item', '%s items', $this->_pagination_args['total_items']),
+ number_format_i18n($this->_pagination_args['total_items'])
+ );
+ }
+ if (isset($this->_pagination_args['total_pages'])) {
+ $response['total_pages'] = $this->_pagination_args['total_pages'];
+ $response['total_pages_i18n'] = number_format_i18n($this->_pagination_args['total_pages']);
+ }
+
+ die(wp_json_encode($response));
+ }
+
+ /**
+ * Prepares the list of items for displaying.
+ *
+ * @uses Base::set_pagination_args()
+ *
+ * @since 3.1.0
+ * @access public
+ * @abstract
+ */
+ public function prepare_items()
+ {
+ die('function Base::prepare_items() must be over-ridden in a sub-class.');
+ }
+
+ /**
+ * Send required variables to JavaScript land
+ *
+ * @access public
+ */
+ public function _js_vars()
+ {
+ $args = [
+ 'class' => get_class($this),
+ 'screen' => [
+ 'id' => $this->screen->id,
+ 'base' => $this->screen->base,
+ ],
+ ];
+
+ printf("\n", wp_json_encode($args));
+ }
+
+ /**
+ * An internal method that sets all the necessary pagination arguments
+ *
+ * @param array|string $args Array or string of arguments with information about the pagination.
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function set_pagination_args($args)
+ {
+ $args = wp_parse_args(
+ $args,
+ [
+ 'total_items' => 0,
+ 'total_pages' => 0,
+ 'per_page' => 0,
+ ]
+ );
+
+ if (!$args['total_pages'] && $args['per_page'] > 0) {
+ $args['total_pages'] = ceil($args['total_items'] / $args['per_page']);
+ }
+
+ // Redirect if page number is invalid and headers are not already sent.
+ if (!headers_sent() && !wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum(
+ ) > $args['total_pages']) {
+ wp_redirect(add_query_arg('paged', $args['total_pages']));
+ exit;
+ }
+
+ $this->_pagination_args = $args;
+ }
+
+ /**
+ * Generate row actions div
+ *
+ * @param array $actions The list of actions
+ * @param bool $always_visible Whether the actions should be always visible
+ *
+ * @return string
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function row_actions($actions, $always_visible = false)
+ {
+ $action_count = count($actions);
+ $i = 0;
+
+ if (!$action_count) {
+ return '';
+ }
+
+ $out = '';
+ foreach ($actions as $action => $link) {
+ ++$i;
+ ($i == $action_count) ? $sep = '' : $sep = ' | ';
+ $out .= "$link$sep ";
+ }
+ $out .= '
';
+
+ $out .= '' . __(
+ 'Show more details'
+ ) . ' ';
+
+ return $out;
+ }
+
+ /**
+ * Display a view switcher
+ *
+ * @param string $current_mode
+ *
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function view_switcher($current_mode)
+ {
+ ?>
+
+
+ modes as $mode => $title) {
+ $classes = ['view-' . $mode];
+ if ($current_mode === $mode) {
+ $classes[] = 'current';
+ }
+ printf(
+ "
%s \n",
+ esc_url(add_query_arg('mode', $mode)),
+ esc_attr(implode(' ', $classes)),
+ esc_attr($mode),
+ esc_html($title)
+ );
+ } ?>
+
+ —%s ',
+ esc_html__('No comments')
+ );
+ // Approved comments have different display depending on some conditions.
+ } elseif ($approved_comments) {
+ printf(
+ '%s ',
+ esc_url(
+ add_query_arg(
+ ['p' => $post_id, 'comment_status' => 'approved'],
+ admin_url('edit-comments.php')
+ )
+ ),
+ esc_html($approved_comments_number),
+ $pending_comments ? esc_html($approved_phrase) : esc_html($approved_only_phrase)
+ );
+ } else {
+ printf(
+ '',
+ esc_html($approved_comments_number),
+ $pending_comments ? esc_html__('No approved comments') : esc_html__('No comments')
+ );
+ }
+
+ if ($pending_comments) {
+ printf(
+ '%s ',
+ esc_url(
+ add_query_arg(
+ ['p' => $post_id, 'comment_status' => 'moderated'],
+ admin_url('edit-comments.php')
+ )
+ ),
+ esc_html($approved_comments_number),
+ esc_html($pending_phrase)
+ );
+ } else {
+ printf(
+ '%s ',
+ esc_html($approved_comments_number),
+ $approved_comments ? esc_html__('No pending comments') : esc_html__('No comments')
+ );
+ }
+ }
+
+ /**
+ * Get number of items to display on a single page
+ *
+ * @param string $option
+ * @param int $default
+ *
+ * @return int
+ * @since 3.1.0
+ * @access protected
+ *
+ */
+ protected function get_items_per_page($option, $default = 20)
+ {
+ $per_page = (int)get_user_option($option);
+ if (empty($per_page) || $per_page < 1) {
+ $per_page = $default;
+ }
+
+ /**
+ * Filters the number of items to be displayed on each page of the list table.
+ *
+ * The dynamic hook name, $option, refers to the `per_page` option depending
+ * on the type of list table in use. Possible values include: 'edit_comments_per_page',
+ * 'sites_network_per_page', 'site_themes_network_per_page', 'themes_network_per_page',
+ * 'users_network_per_page', 'edit_post_per_page', 'edit_page_per_page',
+ * 'edit_{$post_type}_per_page', etc.
+ *
+ * @param int $per_page Number of items to be displayed. Default 20.
+ *
+ * @since 2.9.0
+ *
+ */
+ return (int)apply_filters("{$option}", $per_page);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Table/Notifications.php b/public/wp-content/plugins/publishpress/lib/Notifications/Table/Notifications.php
similarity index 88%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Table/Notifications.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Table/Notifications.php
index 8aa1aa0a2..ed4cbfacf 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Table/Notifications.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Table/Notifications.php
@@ -2,13 +2,15 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
namespace PublishPress\Notifications\Table;
+use WP_Query;
+
class Notifications extends Base
{
/**
@@ -45,9 +47,9 @@ public function extra_tablenav($which)
/**
* Handles the post date column output.
*
+ * @param WP_Post $post The current WP_Post object.
* @global string $mode List table view mode.
*
- * @param WP_Post $post The current WP_Post object.
*/
public function column_post_date($post)
{
@@ -71,49 +73,7 @@ public function column_post_date($post)
}
/** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */
- echo '' . $h_time . ' ';
- }
-
- /**
- * Define the columns that are going to be used in the table
- *
- * @return array $columns, the array of columns to use with the table
- */
- public function get_columns()
- {
- return [
- 'cb' => 'cb',
- 'post_title' => __('Title', 'publishpress'),
- 'post_content' => __('Message', 'publishpress'),
- 'post_date' => __('Date', 'publishpress'),
- 'ID' => __('ID', 'publishpress'),
- ];
- }
-
- /**
- * Decide which columns to activate the sorting functionality on
- *
- * @return array $sortable, the array of columns that can be sorted by the user
- */
- public function get_sortable_columns()
- {
- return [
- 'ID' => ['ID', true],
- 'post_title' => ['post_title', true],
- 'post_date' => ['post_date', true],
- ];
- }
-
- /**
- * Decide which columns to hide
- *
- * @return array $hidden, the array of columns that will be hidden
- */
- public function get_hidden_columns()
- {
- return [
- 'ID',
- ];
+ echo '' . esc_html($h_time) . ' ';
}
/**
@@ -131,8 +91,8 @@ public function prepare_items()
/* -- Ordering parameters -- */
// Parameters that are going to be used to order the result
- $orderby = ! empty($_GET["orderby"]) ? $wpdb->_real_escape($_GET["orderby"]) : '';
- $order = ! empty($_GET["order"]) ? $wpdb->_real_escape($_GET["order"]) : 'DESC';
+ $orderby = !empty($_GET["orderby"]) ? $wpdb->_real_escape(sanitize_key($_GET["orderby"])) : '';
+ $order = !empty($_GET["order"]) ? $wpdb->_real_escape(sanitize_key($_GET["order"])) : 'DESC';
$posts_per_page = 10;
@@ -154,16 +114,16 @@ public function prepare_items()
],
];
- $query = new \WP_Query($args);
+ $query = new WP_Query($args);
/* -- Pagination parameters -- */
$totalitems = $query->post_count;
// Which page is this?
- $paged = ! empty($_GET["paged"]) ? $wpdb->_real_escape($_GET["paged"]) : '';
+ $paged = !empty($_GET["paged"]) ? $wpdb->_real_escape((int)$_GET["paged"]) : '';
// Page Number
- if (empty($paged) || ! is_numeric($paged) || $paged <= 0) {
+ if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
$paged = 1;
}
@@ -184,11 +144,53 @@ public function prepare_items()
$this->items = $query->posts;
}
+ /**
+ * Define the columns that are going to be used in the table
+ *
+ * @return array $columns, the array of columns to use with the table
+ */
+ public function get_columns()
+ {
+ return [
+ 'cb' => 'cb',
+ 'post_title' => __('Title', 'publishpress'),
+ 'post_content' => __('Message', 'publishpress'),
+ 'post_date' => __('Date', 'publishpress'),
+ 'ID' => __('ID', 'publishpress'),
+ ];
+ }
+
+ /**
+ * Decide which columns to hide
+ *
+ * @return array $hidden, the array of columns that will be hidden
+ */
+ public function get_hidden_columns()
+ {
+ return [
+ 'ID',
+ ];
+ }
+
+ /**
+ * Decide which columns to activate the sorting functionality on
+ *
+ * @return array $sortable, the array of columns that can be sorted by the user
+ */
+ public function get_sortable_columns()
+ {
+ return [
+ 'ID' => ['ID', true],
+ 'post_title' => ['post_title', true],
+ 'post_date' => ['post_date', true],
+ ];
+ }
+
/**
* Method to return the content of the columns
*
* @param WP_Post $item
- * @param string $column_name
+ * @param string $column_name
*
* @return string
*/
@@ -215,8 +217,10 @@ public function column_cb($post)
{
?>
post_title); ?>
+ for="cb-select-ID); ?>">post_title)
+ ); ?>
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
namespace PublishPress\Notifications\Table;
+use WP_Query;
+
class Workflows extends Base
{
/**
@@ -45,9 +47,9 @@ public function extra_tablenav($which)
/**
* Handles the post date column output.
*
+ * @param WP_Post $post The current WP_Post object.
* @global string $mode List table view mode.
*
- * @param WP_Post $post The current WP_Post object.
*/
public function column_post_date($post)
{
@@ -68,47 +70,7 @@ public function column_post_date($post)
}
/** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */
- echo '' . $h_time . ' ';
- }
-
- /**
- * Define the columns that are going to be used in the table
- *
- * @return array $columns, the array of columns to use with the table
- */
- public function get_columns()
- {
- return [
- 'cb' => 'cb',
- 'post_title' => __('Title', 'publishpress'),
- 'ID' => __('ID', 'publishpress'),
- ];
- }
-
- /**
- * Decide which columns to activate the sorting functionality on
- *
- * @return array $sortable, the array of columns that can be sorted by the user
- */
- public function get_sortable_columns()
- {
- return [
- 'ID' => ['ID', true],
- 'post_title' => ['post_title', true],
- 'post_date' => ['post_date', true],
- ];
- }
-
- /**
- * Decide which columns to hide
- *
- * @return array $hidden, the array of columns that will be hidden
- */
- public function get_hidden_columns()
- {
- return [
- 'ID',
- ];
+ echo '' . esc_html($h_time) . ' ';
}
/**
@@ -126,13 +88,11 @@ public function prepare_items()
/* -- Ordering parameters -- */
// Parameters that are going to be used to order the result
- $orderby = ! empty($_GET["orderby"]) ? $wpdb->_real_escape($_GET["orderby"]) : '';
- $order = ! empty($_GET["order"]) ? $wpdb->_real_escape($_GET["order"]) : 'DESC';
+ $orderby = !empty($_GET["orderby"]) ? $wpdb->_real_escape(sanitize_key($_GET["orderby"])) : '';
+ $order = !empty($_GET["order"]) ? $wpdb->_real_escape(sanitize_key($_GET["order"])) : 'DESC';
$posts_per_page = 10;
- $user_id = get_current_user_id();
-
$args = [
'post_type' => PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW,
'posts_per_page' => $posts_per_page,
@@ -140,16 +100,16 @@ public function prepare_items()
'orderby' => $orderby,
];
- $query = new \WP_Query($args);
+ $query = new WP_Query($args);
/* -- Pagination parameters -- */
$totalitems = $query->post_count;
// Which page is this?
- $paged = ! empty($_GET["paged"]) ? $wpdb->_real_escape($_GET["paged"]) : '';
+ $paged = !empty($_GET["paged"]) ? $wpdb->_real_escape((int)$_GET["paged"]) : '';
// Page Number
- if (empty($paged) || ! is_numeric($paged) || $paged <= 0) {
+ if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
$paged = 1;
}
@@ -170,11 +130,51 @@ public function prepare_items()
$this->items = $query->posts;
}
+ /**
+ * Define the columns that are going to be used in the table
+ *
+ * @return array $columns, the array of columns to use with the table
+ */
+ public function get_columns()
+ {
+ return [
+ 'cb' => 'cb',
+ 'post_title' => __('Title', 'publishpress'),
+ 'ID' => __('ID', 'publishpress'),
+ ];
+ }
+
+ /**
+ * Decide which columns to hide
+ *
+ * @return array $hidden, the array of columns that will be hidden
+ */
+ public function get_hidden_columns()
+ {
+ return [
+ 'ID',
+ ];
+ }
+
+ /**
+ * Decide which columns to activate the sorting functionality on
+ *
+ * @return array $sortable, the array of columns that can be sorted by the user
+ */
+ public function get_sortable_columns()
+ {
+ return [
+ 'ID' => ['ID', true],
+ 'post_title' => ['post_title', true],
+ 'post_date' => ['post_date', true],
+ ];
+ }
+
/**
* Method to return the content of the columns
*
* @param WP_Post $item
- * @param string $column_name
+ * @param string $column_name
*
* @return string
*/
@@ -199,8 +199,10 @@ public function column_cb($post)
{
?>
post_title); ?>
+ for="cb-select-ID); ?>">post_title)
+ ); ?>
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
namespace PublishPress\Notifications\Traits;
+use Exception;
use PublishPress\Notifications\Pimple_Container;
trait Dependency_Injector
@@ -26,7 +27,7 @@ trait Dependency_Injector
*
* @return mix
*
- * @throws \Exception
+ * @throws Exception
*/
public function get_service($service_name)
{
@@ -34,8 +35,8 @@ public function get_service($service_name)
$this->init_pimple();
}
- if ( ! isset($this->container[$service_name])) {
- throw new \Exception("Service \"{$service_name}\" not found in the container");
+ if (!isset($this->container[$service_name])) {
+ throw new Exception("Service \"{$service_name}\" not found in the container");
}
return $this->container[$service_name];
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Traits/Metadata.php b/public/wp-content/plugins/publishpress/lib/Notifications/Traits/Metadata.php
similarity index 83%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Traits/Metadata.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Traits/Metadata.php
index 87305946a..8358dcf7f 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Traits/Metadata.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Traits/Metadata.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -15,7 +15,7 @@ trait Metadata
* Returns the metadata of the current post.
*
* @param string $meta_key
- * @param bool $single
+ * @param bool $single
*
* @return mixed
*/
@@ -29,17 +29,17 @@ public function get_metadata($meta_key, $single = false)
/**
* Updates the metadata for the current post using an array as input.
*
- * @param int $post_id
+ * @param int $post_id
* @param string $meta_key
- * @param array $meta_value
- * @param bool $all_if_empty
+ * @param array $meta_value
+ * @param bool $all_if_empty
*/
public function update_metadata_array($post_id, $meta_key, $meta_value = [])
{
// Cleanup the metadata
$this->delete_metadata($meta_key);
- if ( ! empty($meta_value)) {
+ if (!empty($meta_value)) {
foreach ($meta_value as $value) {
add_post_meta($post_id, $meta_key, $value);
}
@@ -50,7 +50,7 @@ public function update_metadata_array($post_id, $meta_key, $meta_value = [])
* Deletes the metadata for the current post. If not single, set the value.
*
* @param string $meta_key
- * @param mixed $meta_value
+ * @param mixed $meta_value
*
* @return mixed
*/
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Traits/PublishPress_Module.php b/public/wp-content/plugins/publishpress/lib/Notifications/Traits/PublishPress_Module.php
new file mode 100644
index 000000000..f5706100b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Traits/PublishPress_Module.php
@@ -0,0 +1,81 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Traits;
+
+trait PublishPress_Module
+{
+ /**
+ * Returns a list of custom statuses found in the Custom Status module.
+ * If the module is disabled, we display only the native statuses.
+ *
+ * @return array
+ */
+ public function get_post_statuses()
+ {
+ $publishpress = $this->get_service('publishpress');
+
+ return $publishpress->getPostStatuses();
+ }
+
+ /**
+ * Returns true if the module is loaded and enabled.
+ *
+ * @return bool
+ */
+ public function is_module_enabled($slug)
+ {
+ if ('custom_status' == $slug) {
+ return class_exists('PublishPress_Statuses');
+ }
+
+ $publishpress = $this->get_service('publishpress');
+
+ if (isset($publishpress->$slug)) {
+ return 'on' === $publishpress->$slug->module->options->enabled;
+ }
+
+ // Try getting the setting from the db
+ $options = get_option("publishpress_{$slug}_options");
+ if (isset($options->enabled)) {
+ return 'on' === $options->enabled;
+ }
+
+ return false;
+ }
+
+ /**
+ * Get core's 'draft' and 'pending' post statuses, but include our special attributes
+ *
+ * @return array
+ */
+ protected function get_core_post_statuses()
+ {
+ $publishpress = $this->get_service('publishpress');
+
+ return $publishpress->getCorePostStatuses();
+ }
+
+ /**
+ * Returns a list of post types the notifications support.
+ *
+ * @return array
+ */
+ public function get_post_types()
+ {
+ $publishpress = $this->get_service('publishpress');
+
+ $module = null;
+ if (isset($publishpress->notifications)) {
+ $module = $publishpress->notifications->module;
+ }
+
+ return $publishpress->improved_notifications->get_all_post_types($module);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/OptionCheckboxAbstract.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/OptionCheckboxAbstract.php
new file mode 100644
index 000000000..964332832
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/OptionCheckboxAbstract.php
@@ -0,0 +1,121 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Option;
+
+use PublishPress\Core\ViewInterface;
+use PublishPress\Notifications\Workflow\Workflow;
+use WP_Post;
+
+abstract class OptionCheckboxAbstract
+{
+ /**
+ * @var ViewInterface
+ */
+ protected $view;
+
+ /**
+ * @var WP_Post
+ */
+ protected $post;
+
+ public function __construct()
+ {
+ $this->addHooks();
+ }
+
+ protected function setView($view)
+ {
+ $this->view = $view;
+ }
+
+ protected function setPost($post)
+ {
+ $this->post = $post;
+ }
+
+ protected function getPost()
+ {
+ return $this->post;
+ }
+
+ public function addHooks()
+ {
+ add_filter('publishpress_notif_workflow_options', [$this, 'addToOptionsList'], 10, 3);
+ add_filter('publishpress_notif_workflow_option', [$this, 'getWorkflowOption'], 10, 3);
+
+ add_action('publishpress_notif_save_workflow_metadata', [$this, 'setValue'], 10, 2);
+ }
+
+ public function addToOptionsList($options, $post, $view)
+ {
+ $this->setView($view);
+ $this->setPost($post);
+
+ $options[] = $this;
+
+ return $options;
+ }
+
+ protected function getName()
+ {
+ return '';
+ }
+
+ protected function getFieldName()
+ {
+ return '';
+ }
+
+ protected function getLabel()
+ {
+ return '';
+ }
+
+ protected function getDescription()
+ {
+ return '';
+ }
+
+ protected function getValue()
+ {
+ return '';
+ }
+
+ public function getWorkflowOption($value, $option, Workflow $workflow)
+ {
+ $this->setPost($workflow->workflow_post);
+
+ if (!substr_count($option, '_psppno_option_')) {
+ $option = '_psppno_option_' . $option;
+ }
+
+ if ($option === $this->getName()) {
+ $value = $this->getValue();
+ }
+
+ return $value;
+ }
+
+ public function render()
+ {
+ $context = [
+ 'name' => $this->getFieldName(),
+ 'label' => $this->getLabel(),
+ 'description' => $this->getDescription(),
+ 'value' => $this->getValue(),
+ ];
+
+ return $this->view->render('workflow_metabox_option_checkbox', $context);
+ }
+
+ public function setValue($postId, $post)
+ {
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/SkipUser.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/SkipUser.php
new file mode 100644
index 000000000..4cb1fc168
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Option/SkipUser.php
@@ -0,0 +1,52 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Option;
+
+class SkipUser extends OptionCheckboxAbstract
+{
+ protected function getName()
+ {
+ return '_psppno_option_skip_user';
+ }
+
+ protected function getFieldName()
+ {
+ return 'publishpress_notif_option_skip_user';
+ }
+
+ protected function getLabel()
+ {
+ return esc_html__('Skip current user', 'publishpress');
+ }
+
+ protected function getDescription()
+ {
+ return esc_html__('Skip notifications for the user who triggered the action', 'publishpress');
+ }
+
+ protected function getValue()
+ {
+ return (bool)get_post_meta($this->post->ID, $this->getName(), true);
+ }
+
+ public function setValue($postId, $post)
+ {
+ $value = 0;
+ if (isset($_POST[$this->getFieldName()])) {
+ $value = sanitize_key($_POST[$this->getFieldName()]);
+ }
+
+ update_post_meta(
+ $postId,
+ $this->getName(),
+ $value
+ );
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Action/Notification.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Action/Notification.php
new file mode 100644
index 000000000..fbc8fd9b3
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Action/Notification.php
@@ -0,0 +1,123 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Action;
+
+use Exception;
+use PublishPress\Notifications\Helper;
+use PublishPress\Notifications\Workflow\Workflow;
+
+class Notification
+{
+ const DEFAULT_DUPLICATED_NOTIFICATION_THRESHOLD_IN_MINUTES = 10;
+
+ const DEFAULT_DELAY_FOR_SENDING_NOTIFICATION_IN_SECONDS = 5;
+
+ const DEFAULT_ROUND_FACTOR_FOR_NOTIFICATION_IN_SECONDS = 10;
+
+ public function __construct()
+ {
+ add_action('publishpress_notifications_running_for_post', [$this, 'send_sync_notifications']);
+ add_action('publishpress_notifications_send_notifications_action', [$this, 'send_notifications'], 10, 2);
+ }
+
+ public function send_sync_notifications($workflow)
+ {
+ /**
+ * @param bool $stop
+ * @param array $workflow
+ */
+ if (apply_filters('publishpress_notifications_stop_sync_notifications', false, $workflow)) {
+ return;
+ }
+
+ $this->send_notifications($workflow);
+ }
+
+ /**
+ * @param Workflow $workflow
+ * @param bool $async
+ * @throws Exception
+ */
+ public function send_notifications($workflow, $async = false)
+ {
+ // Who will receive the notification?
+ $receivers = $workflow->get_receivers_by_channel();
+
+ // If we don't have receivers, abort the workflow.
+ if (empty($receivers)) {
+ return;
+ }
+
+ /*
+ * What will the notification says?
+ */
+ $content_template = $workflow->get_content();
+
+ // Run the action to each receiver.
+ foreach ($receivers as $channel => $channel_receivers) {
+ foreach ($channel_receivers as $receiver) {
+ /**
+ * Prepare the content replacing shortcodes.
+ */
+ $content = $workflow->do_shortcodes_in_content($content_template, $receiver['receiver'], $channel);
+
+ /**
+ * @param
+ */
+ $receiverAddress = apply_filters(
+ 'publishpress_notifications_receiver_address',
+ $receiver['receiver'],
+ $channel
+ );
+
+ $threshold = Helper::getDuplicatedNotificationThreshold();
+
+ // Check if this is a duplicated notification and skip it.
+ // I hope this is a temporary fix. When scheduled, some notifications seems to be triggered multiple times
+ // by the same cron task.
+ if (Helper::isDuplicatedNotification($content, $receiverAddress, $channel, $threshold)) {
+ do_action(
+ 'publishpress_notifications_skipped_duplicated',
+ $workflow,
+ $receiver,
+ $content,
+ $channel,
+ $async,
+ $threshold
+ );
+ continue;
+ }
+
+ /**
+ * Triggers the notification. This can be caught by notification channels.
+ * But can be intercepted by other plugins (cache, async, etc) to change the
+ * workflow.
+ *
+ * @param Workflow $workflow
+ * @param array $receiver
+ * @param array $content
+ * @param string $channel
+ * @param bool $async
+ */
+ do_action(
+ 'publishpress_notif_send_notification_' . $channel,
+ $workflow,
+ $receiver,
+ $content,
+ $channel,
+ $async
+ );
+ }
+ }
+
+ // Remove the shortcodes.
+ $workflow->unregister_shortcodes();
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Base.php
new file mode 100644
index 000000000..8daeaeb17
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Base.php
@@ -0,0 +1,138 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step;
+
+use Exception;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Traits\Metadata;
+
+class Base
+{
+ use Dependency_Injector, Metadata;
+
+ /**
+ * The name of the step. Should be URL safe.
+ *
+ * @var string
+ */
+ protected $name = 'generic';
+
+ /**
+ * The label for the field in the workflow.
+ *
+ * @var string
+ */
+ protected $label = 'Base';
+
+ /**
+ * The prefix used on field attributes
+ *
+ * @var string
+ */
+ protected $attr_prefix = 'base';
+
+ /**
+ * An array with the loaded metadata
+ *
+ * @var array
+ */
+ protected $cache_metadata;
+
+ /**
+ * Cache for the list of filters
+ *
+ * @param array
+ */
+ protected $cache_filters = [];
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ // Add the filter to render the metabox section
+ add_filter("publishpress_notif_render_metabox_section_{$this->attr_prefix}", [$this, 'render_metabox_section']);
+
+ // Add the action to save the metabox data
+ add_action('publishpress_notif_save_workflow_metadata', [$this, 'save_metabox_data'], 10, 2);
+ }
+
+ /**
+ * Action to display the metabox
+ *
+ * @param string $html
+ *
+ * @return string
+ *
+ * @throws Exception
+ */
+ public function render_metabox_section($html)
+ {
+ if (empty($this->view_name)) {
+ throw new Exception('Undefined view template for the workflow metabox: ' . $this->name);
+ }
+
+ $context = [
+ 'name' => esc_attr("publishpress_notif[{$this->attr_prefix}_{$this->name}]"),
+ 'id' => esc_attr("publishpress_notif_{$this->attr_prefix}_{$this->name}"),
+ 'value' => esc_attr($this->name),
+ 'label' => esc_html($this->label),
+ ];
+
+ /**
+ * Filters the template context for the view template which will be
+ * rendered in the metabox.
+ *
+ * @param array $context
+ */
+ $context = apply_filters(
+ "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
+ $context
+ );
+
+ $html .= $this->get_service('view')->render($this->view_name, $context);
+
+ return $html;
+ }
+
+ /**
+ * Method called when a notification workflow is saved.
+ *
+ * @param int $id
+ * @param WP_Post $workflow
+ */
+ public function save_metabox_data($id, $workflow)
+ {
+ return;
+ }
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ /**
+ * Filters the list of filters for the event Comment in the workflow.
+ *
+ * @param array $filters
+ */
+ $this->cache_filters = apply_filters("publishpress_notif_workflow_event_{$this->name}_filters", $filters);
+
+ return $this->cache_filters;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Base.php
new file mode 100644
index 000000000..6f3390ca9
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Base.php
@@ -0,0 +1,206 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Channel;
+
+use Exception;
+use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
+use WP_User;
+
+#[\AllowDynamicProperties]
+class Base extends Base_Step
+{
+ const META_KEY_EMAIL = '_psppno_chnbase';
+
+ /**
+ * @var string
+ */
+ protected $icon;
+
+ /**
+ * The constructor
+ *
+ * @throws Exception
+ */
+ public function __construct()
+ {
+ if (empty($this->attr_prefix)) {
+ $this->attr_prefix = 'channel';
+ }
+
+ if (empty($this->view_name)) {
+ $this->view_name = 'workflow_channel_field';
+ }
+
+ if (empty($this->name)) {
+ throw new Exception("Channel name not defined");
+ }
+
+ if (empty($this->label)) {
+ throw new Exception("Channel label not defined");
+ }
+
+ parent::__construct();
+
+ // Add filter to display the channel in the user's profile
+ add_filter('psppno_filter_channels_user_profile', [$this, 'filter_channel']);
+ add_filter('psppno_filter_channels', [$this, 'filter_channel']);
+
+ // Hook to the notification action
+ add_action('publishpress_notif_send_notification_' . $this->name, [$this, 'action_send_notification'], 10, 5);
+
+ // Check if we can hook to the psppno_save_user_profile action
+ add_action('psppno_save_user_profile', [$this, 'action_save_user_profile']);
+
+ add_filter('publishpress_notification_channel', [$this, 'channelLabel']);
+ }
+
+ /**
+ * Filters the list of notification channels to display in the
+ * user profile.
+ *
+ * [
+ * 'name': string
+ * 'label': string
+ * 'options': [
+ * 'name'
+ * 'html'
+ * ]
+ * ]
+ *
+ * @param array $channels
+ *
+ * @return array
+ *
+ * @deprecated
+ */
+ public function filter_channel_user_profile($channels)
+ {
+ return $this->filter_channel($channels);
+ }
+
+ /**
+ * Filters the list of notification channels to display in the
+ * user profile.
+ *
+ * [
+ * 'name': string
+ * 'label': string
+ * 'options': [
+ * 'name'
+ * 'html'
+ * ]
+ * ]
+ *
+ * @param array $channels
+ *
+ * @return array
+ */
+ public function filter_channel($channels)
+ {
+ $channels[] = (object)[
+ 'name' => $this->name,
+ 'label' => $this->label,
+ 'options' => $this->get_user_profile_option_fields(),
+ 'icon' => $this->icon,
+ ];
+
+ return $channels;
+ }
+
+ /**
+ * Returns a list of option fields to display in the user profile.
+ *
+ * 'options': [
+ * [
+ * 'name'
+ * 'html'
+ * ]
+ * ]
+ *
+ * @return array
+ */
+ protected function get_user_profile_option_fields()
+ {
+ return [];
+ }
+
+ /**
+ * Renders the field in the metabox. On this case, we do not print
+ * anything for now.
+ *
+ * @param string $html
+ *
+ * @return string
+ */
+ public function render_metabox_section($html)
+ {
+ return $html;
+ }
+
+ /**
+ * Action hooked when the user profile is saved
+ *
+ * @param int $user_id
+ */
+ public function action_save_user_profile($user_id)
+ {
+ return;
+ }
+
+ /**
+ * Check if this channel is selected and triggers the notification.
+ *
+ * @param Workflow $workflow
+ * @param array $receiverData
+ * @param array $content
+ * @param string $channel
+ * @param bool $async
+ *
+ * @throws Exception
+ */
+ public function action_send_notification($workflow, $receiverData, $content, $channel, $async)
+ {
+ return;
+ }
+
+ public function channelLabel($channel)
+ {
+ if ($channel === $this->name) {
+ $channel = $this->label;
+ }
+
+ return $channel;
+ }
+
+ /**
+ * Returns the user's data, by the user id.
+ *
+ * @param int $user_id
+ *
+ * @return WP_User
+ */
+ protected function get_user_data($user_id)
+ {
+ return get_userdata($user_id);
+ }
+
+ /**
+ * @param $content
+ * @param $channel
+ *
+ * @return string
+ */
+ protected function get_notification_signature($content, $channel)
+ {
+ $signature = md5(serialize($content) . '|' . $channel);
+
+ return $signature;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Channel_Interface.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Channel_Interface.php
new file mode 100644
index 000000000..b689f246f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Channel_Interface.php
@@ -0,0 +1,26 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Channel;
+
+interface Channel_Interface
+{
+ /**
+ * Check if this channel is selected and triggers the notification.
+ *
+ * @param Workflow $workflow
+ * @param array $receiverData
+ * @param array $content
+ * @param string $channel
+ * @param bool $async
+ *
+ * @throws Exception
+ */
+ public function action_send_notification($workflow, $receiverData, $content, $channel, $async);
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Email.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Email.php
new file mode 100644
index 000000000..8d1972483
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Channel/Email.php
@@ -0,0 +1,282 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Channel;
+
+use Exception;
+use PublishPress\Notifications\Workflow\Workflow;
+use WP_Error;
+use WP_Post;
+
+class Email extends Base implements Channel_Interface
+{
+ const META_KEY_EMAIL = '_psppno_chnemail';
+
+ private $emailFailures = [];
+
+ /**
+ * The constructor
+ *
+ * @throws Exception
+ */
+ public function __construct()
+ {
+ $this->name = 'email';
+ $this->label = __('Email', 'publishpress');
+ $this->icon = PUBLISHPRESS_URL . 'modules/improved-notifications/assets/img/icon-email.png';
+
+ add_filter('publishpress_notif_error_log', [$this, 'filterErrorLog'], 10, 5);
+ add_action('wp_mail_failed', [$this, 'emailFailed']);
+
+ add_filter('publishpress_notifications_channel_icon_class', [$this, 'filterChannelIconClass']);
+ add_filter('publishpress_notifications_receiver_address', [$this, 'filterReceiverAddress'], 10, 2);
+ add_filter('publishpress_notifications_log_receiver_text', [$this, 'filterLogReceiverText'], 10, 2);
+
+ parent::__construct();
+ }
+
+ /**
+ * Check if this channel is selected and triggers the notification.
+ *
+ * @param Workflow $workflow
+ * @param array $receiverData
+ * @param array $content
+ * @param string $channel
+ * @param bool $async
+ *
+ * @throws Exception
+ */
+ public function action_send_notification($workflow, $receiverData, $content, $channel, $async)
+ {
+ if (empty($receiverData['receiver'])) {
+ return;
+ }
+
+ // Make sure we unserialize the content when it comes from async notifications.
+ if (is_string($content)) {
+ $content = maybe_unserialize($content);
+ }
+
+ $signature = $this->get_notification_signature(
+ $content,
+ $channel . ':' . serialize($receiverData['receiver'])
+ );
+ $controller = $this->get_service('workflows_controller');
+
+ // Check if the notification was already sent
+ if ($controller->is_notification_signature_registered($signature)) {
+ return;
+ }
+
+ // Send the emails
+ $emailAddress = $this->get_receiver_email($receiverData['receiver']);
+
+ $action = 'transition_post_status' === $workflow->event_args['event'] ? 'status-change' : 'comment';
+
+ $subject = html_entity_decode($content['subject']);
+
+ $body = wpautop($content['body']);
+ $body = apply_filters('publishpress_notifications_the_content', $body);
+ $body = str_replace(']]>', ']]>', $body);
+
+ $attachments = [];
+ if ($action === 'comment'
+ && isset($workflow->event_args['event'])
+ && $workflow->event_args['event'] === 'editorial_comment'
+ ) {
+ $comment_files = get_comment_meta($workflow->event_args['params']['comment_id'], '_pp_editorial_comment_files', true);
+ if (!empty($comment_files)) {
+ $comment_files = explode(" ", $comment_files);
+ $comment_files = array_filter($comment_files);
+ foreach ($comment_files as $comment_file_id) {
+ $media_file = wp_get_attachment_url($comment_file_id);
+ if (!is_wp_error($media_file) && !empty($media_file)) {
+ $attachments[] = $media_file;
+ }
+ }
+ }
+ }
+
+ // Call the legacy notification module
+ // Split the name and email, if set.
+ $separatorPos = strpos($emailAddress, '/');
+ if ($separatorPos > 0) {
+ $emailAddress = substr($emailAddress, $separatorPos + 1, strlen($emailAddress));
+ }
+
+ $deliveryResult = $this->get_service('publishpress')->notifications->send_email(
+ $action,
+ $workflow->event_args,
+ $subject,
+ $body,
+ '',
+ $emailAddress,
+ $attachments
+ );
+
+ /**
+ * @param Workflow $workflow
+ * @param string $channel
+ * @param array $receiverData
+ * @param string $subject
+ * @param string $body
+ * @param bool $deliveryResult
+ * @param bool $async
+ */
+ do_action(
+ 'publishpress_notif_notification_sending',
+ $workflow,
+ $channel,
+ $receiverData,
+ $subject,
+ $body,
+ $deliveryResult[$emailAddress],
+ $async
+ );
+
+ $controller->register_notification_signature($signature);
+ }
+
+ /**
+ * Returns a list of the receivers' emails
+ *
+ * @param array $receiver
+ *
+ * @return string
+ */
+ protected function get_receiver_email($receiver)
+ {
+ if (!empty($receiver)) {
+ // Check if we have the user ID or an email address
+ if (is_numeric($receiver)) {
+ $data = $this->get_user_data($receiver);
+ $receiver = $data->user_email;
+ }
+ }
+
+ return sanitize_email($receiver);
+ }
+
+ /**
+ * Filter the receivers organizing it by channel. Each channel get the list of receivers
+ * and return
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow_post
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_receivers($receivers, $workflow_post, $event_args)
+ {
+ return $receivers;
+ }
+
+ /**
+ * @param WP_Error $error
+ */
+ public function emailFailed($error)
+ {
+ if (isset($error->error_data['wp_mail_failed'])) {
+ $emailData = $error->error_data['wp_mail_failed'];
+ $recipients = $emailData['to'];
+
+ foreach ($recipients as $email) {
+ if (is_object($email) && method_exists($email, 'getEmail')) {
+ $email = $email->getEmail();
+ } elseif (is_object($email) && isset($email->email)) {
+ $email = $email->email;
+ } elseif (is_array($email) && isset($email['email'])) {
+ $email = $email['email'];
+ }
+
+ $hash = $this->getEmailErrorHash($email, $emailData['subject'], $emailData['message']);
+
+ $this->emailFailures[$hash] = $error->get_error_message();
+ }
+ }
+ }
+
+ /**
+ * @param $receiver
+ * @param $subject
+ * @param $body
+ *
+ * @return string
+ */
+ private function getEmailErrorHash($receiver, $subject, $body)
+ {
+ $receiver = is_array($receiver) ? json_encode($receiver) : (string) $receiver;
+ $subject = is_array($subject) ? json_encode($subject) : (string) $subject;
+ $body = is_array($body) ? json_encode($body) : (string) $body;
+
+ return md5(sprintf('%s:%s:%s', $receiver, $subject, $body));
+ }
+
+ /**
+ * @param $result
+ * @param $receiver
+ * @param $subject
+ * @param $body
+ *
+ * @return string
+ */
+ public function filterErrorLog($error, $result, $receiver, $subject, $body)
+ {
+ $hash = $this->getEmailErrorHash($receiver, $subject, $body);
+
+ if (isset($this->emailFailures[$hash])) {
+ $error = $this->emailFailures[$hash];
+ }
+
+ return $error;
+ }
+
+ public function filterChannelIconClass($channel)
+ {
+ if ($channel === 'email') {
+ return 'dashicons dashicons-email';
+ }
+
+ return $channel;
+ }
+
+ public function filterReceiverAddress($receiverAddress, $channel)
+ {
+ if ('email' === $channel) {
+ $receiverAddress = $this->get_receiver_email($receiverAddress);
+ }
+
+ return $receiverAddress;
+ }
+
+ public function filterLogReceiverText($receiverText, $receiverData)
+ {
+ if (!isset($receiverData['channel']) || $receiverData['channel'] !== $this->name || !isset($receiverData['receiver'])) {
+ return $receiverText;
+ }
+
+ if (is_numeric($receiverData['receiver'])) {
+ $user = get_user_by('ID', $receiverData['receiver']);
+
+ if (!is_object($user)) {
+ return $receiverText;
+ }
+
+ $receiverText = $user->user_nicename;
+ $receiverText .= sprintf(
+ '(user_id:%d, email:%s) ',
+ $user->ID,
+ $user->user_email
+ );
+ }
+
+ return $receiverText;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Content/Main.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Content/Main.php
similarity index 76%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Content/Main.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Content/Main.php
index b8f2dc515..aee933531 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Content/Main.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Content/Main.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -11,6 +11,7 @@
use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
+#[\AllowDynamicProperties]
class Main extends Base_Step
{
const META_KEY_SUBJECT = '_psppno_contsubject';
@@ -23,7 +24,7 @@ class Main extends Base_Step
public function __construct()
{
$this->attr_prefix = 'content';
- $this->twig_template = 'workflow_content_main_field.twig';
+ $this->view_name = 'workflow_content_main_field';
$this->name = 'main';
$this->label = __('Content', 'publishpress');
@@ -40,7 +41,7 @@ public function __construct()
}
/**
- * Filters the context sent to the twig template in the metabox
+ * Filters the context sent to the view template in the metabox
*
* @param array $template_context
*/
@@ -55,6 +56,7 @@ public function filter_workflow_metabox_context($template_context)
$template_context['subject'] = esc_attr($this->get_metadata(static::META_KEY_SUBJECT, true));
$template_context['body'] = $this->get_metadata(static::META_KEY_BODY, true);
+ $template_context['nonce'] = wp_create_nonce('publishpress_notification_content');
return $template_context;
}
@@ -62,23 +64,25 @@ public function filter_workflow_metabox_context($template_context)
/**
* Method called when a notification workflow is saved.
*
- * @param int $id
+ * @param int $id
* @param WP_Post $post
*/
public function save_metabox_data($id, $post)
{
- if ( ! isset($_POST['publishpress_notif'])
- || ! isset($_POST['publishpress_notif']['content_main'])) {
+ if (!isset($_POST['publishpress_notif'])
+ || !isset($_POST['publishpress_notif']['content_main'])) {
// Assume it is disabled
update_post_meta($id, static::META_KEY_SUBJECT, false);
update_post_meta($id, static::META_KEY_BODY, false);
}
- $params = $_POST['publishpress_notif']['content_main'];
-
// Sanitize the data
- $subject = sanitize_text_field($params['subject'], '');
- $body = wp_kses_post($params['body']);
+ $subject = isset($_POST['publishpress_notif']['content_main']['subject']) ? sanitize_text_field(
+ $_POST['publishpress_notif']['content_main']['subject']
+ ) : '';
+ $body = isset($_POST['publishpress_notif']['content_main']['body']) ? wp_kses_post(
+ $_POST['publishpress_notif']['content_main']['body']
+ ) : '';
update_post_meta($id, static::META_KEY_SUBJECT, $subject);
update_post_meta($id, static::META_KEY_BODY, $body);
@@ -88,9 +92,9 @@ public function save_metabox_data($id, $post)
* Filters the content for the workflow. Returns an associative array with
* the subject and body.
*
- * @param array $content
+ * @param array $content
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*
* @return array
*/
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Base.php
new file mode 100644
index 000000000..e4723960e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Base.php
@@ -0,0 +1,152 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event;
+
+use PublishPress\Notifications\Traits\Metadata;
+use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
+
+#[\AllowDynamicProperties]
+class Base extends Base_Step
+{
+ use Metadata;
+
+ const META_KEY_SELECTED = '_psppno_evtundefined';
+
+ const META_VALUE_SELECTED = 'undefined';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ if ('base' === $this->attr_prefix) {
+ $this->attr_prefix = 'event';
+ }
+
+ $this->view_name = 'workflow_event_field';
+
+ parent::__construct();
+
+ // Add the event filters to the metabox template
+ add_filter(
+ "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
+ [$this, 'filter_workflow_metabox_context']
+ );
+
+ // Add the filter to the run workflow query args
+ add_filter(
+ 'publishpress_notifications_running_workflow_meta_query',
+ [$this, 'filter_running_workflow_query_args'],
+ 10,
+ 2
+ );
+ }
+
+ /**
+ * Filters the context sent to the view template in the metabox
+ *
+ * @param array $template_context
+ */
+ public function filter_workflow_metabox_context($template_context)
+ {
+ $template_context['name'] = esc_attr("publishpress_notif[{$this->attr_prefix}][]");
+ $template_context['id'] = esc_attr("publishpress_notif_{$this->attr_prefix}_{$this->name}");
+ $template_context['event_filters'] = $this->get_filters();
+
+ $meta = (int)$this->get_metadata(static::META_KEY_SELECTED, true);
+
+ $template_context['meta'] = [
+ 'selected' => (bool)$meta,
+ ];
+
+ return $template_context;
+ }
+
+ /**
+ * Method called when a notification workflow is saved.
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ if (!isset($_POST['publishpress_notif'])
+ || !isset($_POST['publishpress_notif'][$this->attr_prefix])) {
+ // Assume it is disabled
+ update_post_meta($id, static::META_KEY_SELECTED, false);
+ }
+
+ // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
+ $params = $this->sanitize_metabox_data($_POST['publishpress_notif']);
+
+ if (isset($params[$this->attr_prefix])) {
+ // Is selected in the events?
+ $selected = in_array(static::META_VALUE_SELECTED, $params[$this->attr_prefix]);
+ update_post_meta($id, static::META_KEY_SELECTED, $selected);
+ }
+
+ // Process the filters
+ $filters = $this->get_filters();
+ if (!empty($filters)) {
+ foreach ($filters as $filter) {
+ $filter->save_metabox_data($id, $post);
+ }
+ }
+ }
+
+ protected function sanitize_metabox_data($data)
+ {
+ if (isset($data[$this->attr_prefix])) {
+ $data[$this->attr_prefix] = array_values($data[$this->attr_prefix]);
+ $data[$this->attr_prefix] = array_map('sanitize_key', $data[$this->attr_prefix]);
+ }
+
+ // Additional sanitization is made inside the Filter classes.
+ return $data;
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ return $query_args;
+ }
+
+ /**
+ * Add the metakey to the array to be processed
+ *
+ * @param array $metakeys
+ *
+ * @return array
+ */
+ public function filter_events_metakeys($metakeys)
+ {
+ $metakeys[static::META_KEY_SELECTED] = $this->label;
+
+ return $metakeys;
+ }
+
+ /**
+ * @param $event_args
+ *
+ * @return bool
+ */
+ protected function should_ignore_event_on_query($event_args)
+ {
+ return (isset($event_args['params']['ignore_event']) && $event_args['params']['ignore_event'] == true);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Editorial_Comment.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Editorial_Comment.php
new file mode 100644
index 000000000..7e2eb96ef
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Editorial_Comment.php
@@ -0,0 +1,118 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event;
+
+class Editorial_Comment extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evtedcomment';
+
+ const META_VALUE_SELECTED = 'editorial_comment';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'editorial_comment';
+ $this->label = __('When an editorial comment is added', 'publishpress');
+
+ parent::__construct();
+
+ // Add filter to return the metakey representing if it is selected or not
+ add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
+ add_filter('publishpress_notifications_workflow_events', [$this, 'filter_workflow_actions']);
+ add_filter('publishpress_notifications_action_params_for_log', [$this, 'filter_action_params_for_log'], 10, 2);
+ add_filter('publishpress_notifications_event_label', [$this, 'filter_event_label'], 10, 2);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ if ($this->should_ignore_event_on_query($event_args)) {
+ return $query_args;
+ }
+
+ if ('editorial_comment' === $event_args['event']) {
+ $query_args['meta_query'][] = [
+ 'key' => static::META_KEY_SELECTED,
+ 'value' => 1,
+ 'type' => 'BOOL',
+ 'compare' => '=',
+ ];
+
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+ // unset needs_event_filter since atleast this event already filter the query
+ if (isset($query_args['needs_event_filter'])) {
+ unset($query_args['needs_event_filter']);
+ }
+ }
+
+ return $query_args;
+ }
+
+ public function filter_workflow_actions($actions)
+ {
+ if (!is_array($actions) || empty($actions)) {
+ $actions = [];
+ }
+
+ $actions[] = 'editorial_comment';
+
+ return $actions;
+ }
+
+ public function filter_action_params_for_log($paramsString, $log)
+ {
+ if ($log->event === self::META_VALUE_SELECTED) {
+ $comment = get_comment($log->commentId);
+
+ $commentText = trim($comment->comment_content);
+
+ if (function_exists('mb_strimwidth')) {
+ $commentText = mb_strimwidth($commentText, 0, 30, '...');
+ }
+
+ $paramsString = sprintf(
+ __('Comment: %s (%d)', 'publishpress'),
+ '' . $commentText . ' ',
+ $log->commentId
+ );
+ }
+
+ return $paramsString;
+ }
+
+ /**
+ * @param string $label
+ * @param string $event
+ * @return string|void
+ */
+ public function filter_event_label($label, $event)
+ {
+ if ($event === $this->name) {
+ $label = $this->label;
+ }
+
+ return $label;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Base.php
new file mode 100644
index 000000000..9876ce5d2
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Base.php
@@ -0,0 +1,76 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event\Filter;
+
+use Exception;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Traits\Metadata;
+use PublishPress\Notifications\Traits\PublishPress_Module;
+
+class Base implements Filter_Interface
+{
+ use Dependency_Injector, PublishPress_Module, Metadata;
+
+ /**
+ * The name of the filter and field
+ */
+ protected $step_name;
+
+ /**
+ * The constructor.
+ *
+ * @param string $step_name
+ */
+ public function __construct($step_name)
+ {
+ $this->step_name = $step_name;
+
+ // Add the action to save the metabox data
+ add_action('publishpress_notif_save_workflow_metadata', [$this, 'save_metabox_data'], 11, 2);
+ }
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ *
+ * @throws Exception
+ */
+ public function render()
+ {
+ throw new Exception('The method ' . __CLASS__ . '::render have to be defined in the child class');
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ return;
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ return $query_args;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php
similarity index 79%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php
index 5855d7d79..32d70a84e 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Filter_Interface.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -23,7 +23,7 @@ public function render();
/**
* Function to save the metadata from the metabox
*
- * @param int $id
+ * @param int $id
* @param WP_Post $post
*/
public function save_metabox_data($id, $post);
@@ -33,9 +33,9 @@ public function save_metabox_data($id, $post);
* workflows that should be executed.
*
* @param array $query_args
- * @param array $action_args
+ * @param array $event_args
*
* @return array
*/
- public function get_run_workflow_query_args($query_args, $action_args);
+ public function get_run_workflow_query_args($query_args, $event_args);
}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php
new file mode 100644
index 000000000..6d67b7703
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Post_Status.php
@@ -0,0 +1,168 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event\Filter;
+
+class Post_Status extends Base implements Filter_Interface
+{
+ const META_KEY_POST_STATUS_FROM = '_psppno_poststatfrom';
+
+ const META_KEY_POST_STATUS_TO = '_psppno_poststatto';
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ */
+ public function render()
+ {
+ echo $this->get_service('view')->render(
+ 'workflow_filter_post_status',
+ [
+ 'name' => esc_attr("publishpress_notif[{$this->step_name}_filters][post_status]"),
+ 'id' => esc_attr("publishpress_notif_{$this->step_name}_filters_post_status"),
+ 'options_from' => $this->get_options('from'),
+ 'options_to' => $this->get_options('to'),
+ 'labels' => [
+ 'status_transition' => esc_html__('When the status is changed', 'publishpress'),
+ 'from' => esc_html__('Previous status', 'publishpress'),
+ 'to' => esc_html__('New status', 'publishpress'),
+ 'any' => esc_html__('- any status -', 'publishpress'),
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Returns a list of post types in the options format
+ *
+ * @return array
+ */
+ protected function get_options($group)
+ {
+ $statuses = apply_filters('publishpress_notification_statuses', $this->get_post_statuses(), $group);
+ $metadata = (array)$this->get_metadata('');
+ $options = [];
+
+ if ('from' === $group) {
+ // Add a status to represent new posts
+ $options = [
+ [
+ 'value' => 'new',
+ 'label' => __('New', 'publishpress'),
+ 'selected' => in_array('new', $metadata[$group]),
+ ],
+ [
+ 'value' => 'auto-draft',
+ 'label' => __('Auto-draft', 'publishpress'),
+ 'selected' => in_array('auto-draft', $metadata[$group]),
+ ]
+ ];
+ }
+
+ foreach ($statuses as $status) {
+ $options[] = [
+ 'value' => esc_attr($status->slug),
+ 'label' => esc_html($status->label),
+ 'selected' => in_array($status->slug, $metadata[$group]),
+ ];
+ }
+
+ $options[] = [
+ 'value' => 'trash',
+ 'label' => esc_html(__('Trashed')),
+ 'selected' => in_array('trash', $metadata[$group]),
+ ];
+
+ return $options;
+ }
+
+ /**
+ * Returns the metadata of the current post.
+ *
+ * @param string $meta_key
+ * @param bool $single
+ *
+ * @return mixed
+ */
+ public function get_metadata($meta_key, $single = false)
+ {
+ return [
+ 'from' => parent::get_metadata(static::META_KEY_POST_STATUS_FROM),
+ 'to' => parent::get_metadata(static::META_KEY_POST_STATUS_TO),
+ ];
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ // From
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['from'])) {
+ $from = [];
+ } else {
+ $from = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['from']
+ );
+ }
+
+ $this->update_metadata_array($id, static::META_KEY_POST_STATUS_FROM, $from);
+
+ // To
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['to'])) {
+ $to = [];
+ } else {
+ $to = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['to']
+ );
+ }
+ $this->update_metadata_array($id, static::META_KEY_POST_STATUS_TO, $to);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ // From
+ $query_args['meta_query'][] = [
+ [
+ 'key' => static::META_KEY_POST_STATUS_FROM,
+ 'value' => $event_args['params']['old_status'],
+ 'type' => 'CHAR',
+ 'compare' => '=',
+ ],
+ ];
+
+ // To
+ $query_args['meta_query'][] = [
+ [
+ 'key' => static::META_KEY_POST_STATUS_TO,
+ 'value' => $event_args['params']['new_status'],
+ 'type' => 'CHAR',
+ 'compare' => '=',
+ ],
+ ];
+
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php
new file mode 100644
index 000000000..14b2f9b3c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Filter/Taxonomies.php
@@ -0,0 +1,116 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event\Filter;
+
+use PP_Notifications;
+use PublishPress\Notifications\Workflow\Step\Event\Post_TaxonomyUpdate;
+
+class Taxonomies extends Base implements Filter_Interface
+{
+ const META_KEY_TAXONOMIES_FROM = '_psppno_taxonomiesfrom';
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ */
+ public function render()
+ {
+ echo $this->get_service('view')->render(
+ 'workflow_filter_multiple_select',
+ [
+ 'name' => esc_attr("publishpress_notif[{$this->step_name}_filters][taxonomies]"),
+ 'id' => esc_attr("publishpress_notif_{$this->step_name}_filters_taxonomies"),
+ 'options' => $this->get_options(),
+ 'labels' => [
+ 'label' => esc_html__('Taxonomies', 'publishpress'),
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Returns a list of taxonomies in the options format
+ *
+ * @return array
+ */
+ protected function get_options()
+ {
+
+ $excluded_taxonomies = [];
+ if (class_exists('\PP_Notifications')) {
+ $blacklisted_taxonomies = PP_Notifications::getOption('blacklisted_taxonomies');
+ if (!empty($blacklisted_taxonomies)) {
+ $excluded_taxonomies = array_filter(explode(',', $blacklisted_taxonomies));
+ }
+ }
+
+ $taxonomies = get_taxonomies([], 'objects', 'and');
+ $metadata = (array)$this->get_metadata(static::META_KEY_TAXONOMIES_FROM);
+ $options = [];
+
+ foreach ($taxonomies as $tax) {
+ if (empty($tax->labels->name) || in_array($tax->labels->name, $excluded_taxonomies)) {
+ continue;
+ }
+ $options[] = [
+ 'value' => esc_attr($tax->name),
+ 'label' => esc_html($tax->labels->name. ' ('.$tax->name.')'),
+ 'selected' => in_array($tax->name, $metadata),
+ ];
+ }
+
+ return $options;
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['taxonomies'])) {
+ $values = [];
+ } else {
+ $values = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['taxonomies']
+ );
+ }
+
+ $this->update_metadata_array($id, static::META_KEY_TAXONOMIES_FROM, $values);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ // Taxonomy
+ $query_args['meta_query'][] = [
+ [
+ 'key' => static::META_KEY_TAXONOMIES_FROM,
+ 'value' => $event_args['params']['taxonomy'],
+ 'compare' => '=',
+ ],
+ ];
+
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php
new file mode 100644
index 000000000..4da77c572
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_StatusTransition.php
@@ -0,0 +1,142 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event;
+
+use PublishPress\Notifications\Workflow\Step\Event\Filter;
+
+class Post_StatusTransition extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evtpostsave';
+
+ const META_VALUE_SELECTED = 'post_save';
+
+ const EVENT_NAME = 'transition_post_status';
+
+ /**
+ * The constructorPost_StatusTransition'
+ */
+ public function __construct()
+ {
+ $this->name = static::META_VALUE_SELECTED;
+ $this->label = __('When the content is moved to a new status', 'publishpress');
+
+ parent::__construct();
+
+ // Add filter to return the metakey representing if it is selected or not
+ add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
+ add_filter('publishpress_notifications_workflow_events', [$this, 'filter_workflow_actions']);
+ add_filter('publishpress_notifications_action_params_for_log', [$this, 'filter_action_params_for_log'], 10, 2);
+ add_filter('publishpress_notifications_event_label', [$this, 'filter_event_label'], 10, 2);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ if ($this->should_ignore_event_on_query($event_args)) {
+ return $query_args;
+ }
+
+ if (static::EVENT_NAME === $event_args['event']) {
+ $query_args['meta_query'][] = [
+ 'key' => static::META_KEY_SELECTED,
+ 'value' => 1,
+ 'type' => 'BOOL',
+ 'compare' => '=',
+ ];
+
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+ // unset needs_event_filter since atleast this event already filter the query
+ if (isset($query_args['needs_event_filter'])) {
+ unset($query_args['needs_event_filter']);
+ }
+ }
+
+ return $query_args;
+ }
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ $step_name = $this->attr_prefix . '_' . $this->name;
+
+ $filters[] = new Filter\Post_Status($step_name);
+
+ return parent::get_filters($filters);
+ }
+
+ public function filter_workflow_actions($actions)
+ {
+ if (!is_array($actions) || empty($actions)) {
+ $actions = [];
+ }
+
+ $actions[] = static::EVENT_NAME;
+
+ return $actions;
+ }
+
+ public function filter_action_params_for_log($paramsString, $log)
+ {
+ if ($log->event === static::EVENT_NAME) {
+ global $publishpress;
+
+ $oldStatus = $publishpress->getPostStatusBy('slug', $log->oldStatus);
+ $newStatus = $publishpress->getPostStatusBy('slug', $log->newStatus);
+
+ $paramsString = '';
+ if (is_object($oldStatus)) {
+ $paramsString .= '' . sprintf(__('Old post status: %s', 'publishpress'), $oldStatus->label) . '
';
+ }
+
+ if (is_object($newStatus)) {
+ $paramsString .= '' . sprintf(__('New post status: %s', 'publishpress'), $newStatus->label) . '
';
+ }
+ }
+
+ return $paramsString;
+ }
+
+ /**
+ * @param string $label
+ * @param string $event
+ * @return string|void
+ */
+ public function filter_event_label($label, $event)
+ {
+ if ($event === static::EVENT_NAME) {
+ $label = $this->label;
+ }
+
+ return $label;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php
new file mode 100644
index 000000000..f7af5ae0d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_TaxonomyUpdate.php
@@ -0,0 +1,120 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event;
+
+use PublishPress\Notifications\Workflow\Step\Event\Filter;
+
+class Post_TaxonomyUpdate extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evttaxonomyupdate';
+
+ const META_VALUE_SELECTED = 'taxonomy_update';
+
+ const EVENT_NAME = 'taxonomy_update';
+
+ /**
+ * The constructorPost_TaxonomyUpdate'
+ */
+ public function __construct()
+ {
+ $this->name = static::META_VALUE_SELECTED;
+ $this->label = __('When taxonomy is updated', 'publishpress');
+
+ parent::__construct();
+
+ // Add filter to return the metakey representing if it is selected or not
+ add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
+ add_filter('publishpress_notifications_workflow_events', [$this, 'filter_workflow_actions']);
+ add_filter('publishpress_notifications_event_label', [$this, 'filter_event_label'], 10, 2);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ if ($this->should_ignore_event_on_query($event_args)) {
+ return $query_args;
+ }
+
+ if (static::EVENT_NAME === $event_args['event']) {
+ $query_args['meta_query'][] = [
+ 'key' => static::META_KEY_SELECTED,
+ 'value' => 1,
+ 'type' => 'BOOL',
+ 'compare' => '=',
+ ];
+
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+ // unset needs_event_filter since atleast this event already filter the query
+ if (isset($query_args['needs_event_filter'])) {
+ unset($query_args['needs_event_filter']);
+ }
+ }
+
+ return $query_args;
+ }
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ $step_name = $this->attr_prefix . '_' . $this->name;
+
+ $filters[] = new Filter\Taxonomies($step_name);
+
+ return parent::get_filters($filters);
+ }
+
+ public function filter_workflow_actions($actions)
+ {
+ if (!is_array($actions) || empty($actions)) {
+ $actions = [];
+ }
+
+ $actions[] = static::EVENT_NAME;
+
+ return $actions;
+ }
+
+ /**
+ * @param string $label
+ * @param string $event
+ * @return string|void
+ */
+ public function filter_event_label($label, $event)
+ {
+ if ($event === static::EVENT_NAME) {
+ $label = $this->label;
+ }
+
+ return $label;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_Update.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_Update.php
new file mode 100644
index 000000000..fe9857cdf
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event/Post_Update.php
@@ -0,0 +1,98 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event;
+
+class Post_Update extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evtpostupdate';
+
+ const META_VALUE_SELECTED = 'post_update';
+
+ const EVENT_NAME = 'post_update';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = static::EVENT_NAME;
+ $this->label = __('When the content is updated', 'publishpress');
+
+ parent::__construct();
+
+ // Add filter to return the metakey representing if it is selected or not
+ add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
+ add_filter('publishpress_notifications_workflow_events', [$this, 'filter_workflow_actions']);
+ add_filter('publishpress_notifications_event_label', [$this, 'filter_event_label'], 10, 2);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ if ($this->should_ignore_event_on_query($event_args)) {
+ return $query_args;
+ }
+
+ if (self::EVENT_NAME === $event_args['event']) {
+ $query_args['meta_query'][] = [
+ 'key' => static::META_KEY_SELECTED,
+ 'value' => 1,
+ 'type' => 'BOOL',
+ 'compare' => '=',
+ ];
+
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+ // unset needs_event_filter since atleast this event already filter the query
+ if (isset($query_args['needs_event_filter'])) {
+ unset($query_args['needs_event_filter']);
+ }
+ }
+
+ return $query_args;
+ }
+
+ public function filter_workflow_actions($actions)
+ {
+ if (!is_array($actions) || empty($actions)) {
+ $actions = [];
+ }
+
+ $actions[] = self::EVENT_NAME;
+
+ return $actions;
+ }
+
+ /**
+ * @param string $label
+ * @param string $event
+ * @return string|void
+ */
+ public function filter_event_label($label, $event)
+ {
+ if ($event === self::EVENT_NAME) {
+ $label = $this->label;
+ }
+
+ return $label;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Base.php
new file mode 100644
index 000000000..619c18fc2
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Base.php
@@ -0,0 +1,29 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content;
+
+use PublishPress\Notifications\Workflow\Step\Event\Base as Base_Step;
+
+class Base extends Base_Step
+{
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->attr_prefix = 'event_content';
+
+ parent::__construct();
+
+ // Add filter to return the metakey representing if it is selected or not
+ add_filter('psppno_filter_metakeys', [$this, 'filter_events_metakeys']);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Category.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Category.php
new file mode 100644
index 000000000..d8bb1102c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Category.php
@@ -0,0 +1,69 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content;
+
+class Category extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evtcontcategory';
+
+ const META_VALUE_SELECTED = 'category';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'category';
+ $this->label = __('Category', 'publishpress');
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ return $query_args;
+ }
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ $step_name = $this->attr_prefix . '_' . $this->name;
+
+ $filters[] = new Filter\Category($step_name);
+
+ return parent::get_filters($filters);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Base.php
new file mode 100644
index 000000000..db95b1394
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Base.php
@@ -0,0 +1,16 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
+
+use PublishPress\Notifications\Workflow\Step\Event\Filter\Base as Event_Filter_Base;
+
+class Base extends Event_Filter_Base
+{
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php
new file mode 100644
index 000000000..fe7f797ab
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Category.php
@@ -0,0 +1,152 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
+
+use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
+use PublishPress\Notifications\Workflow\Step\Event_Content\Category as Step_Category;
+
+class Category extends Base implements Filter_Interface
+{
+ const META_KEY_CATEGORY = '_psppno_whencategory';
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ */
+ public function render()
+ {
+ echo $this->get_service('view')->render(
+ 'workflow_filter_multiple_select',
+ [
+ 'name' => esc_attr("publishpress_notif[{$this->step_name}_filters][category]"),
+ 'id' => esc_attr("publishpress_notif_{$this->step_name}_filters_category"),
+ 'options' => $this->get_options(),
+ 'labels' => [
+ 'label' => esc_html__('Categories', 'publishpress'),
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Returns a list of post types in the options format
+ *
+ * @return array
+ */
+ protected function get_options()
+ {
+ $categories = get_categories(
+ [
+ 'orderby' => 'name',
+ 'order' => 'ASC',
+ 'hide_empty' => false,
+ 'hierarchical' => true,
+ ]
+ );
+
+ $metadata = (array)$this->get_metadata(static::META_KEY_CATEGORY);
+
+ $options = [];
+ foreach ($categories as $category) {
+ $options[] = [
+ 'value' => esc_attr($category->slug),
+ 'label' => esc_html($category->name),
+ 'selected' => in_array($category->slug, $metadata),
+ ];
+ }
+
+ return $options;
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['category'])) {
+ $values = [];
+ } else {
+ $values = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['category']
+ );
+ }
+
+ $this->update_metadata_array($id, static::META_KEY_CATEGORY, $values);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ // If post is not set, we ignore.
+ if (!isset($event_args['params']['post_id']) || !is_numeric($event_args['params']['post_id'])) {
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ $categories = wp_get_post_terms($event_args['params']['post_id'], 'category');
+ $category_ids = [];
+
+ if (!empty($categories)) {
+ foreach ($categories as $category) {
+ $category_ids[] = $category->slug;
+ }
+ }
+ $category_ids = implode(',', $category_ids);
+
+ $query_args['meta_query'][] = [
+ 'relation' => 'OR',
+ // The filter is disabled
+ [
+ 'key' => Step_Category::META_KEY_SELECTED,
+ 'value' => '0',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Category::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Category::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'IS NULL',
+ ],
+ // The filter wasn't set yet
+ [
+ 'key' => Step_Category::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'NOT EXISTS',
+ ],
+ // The filter validates the value
+ [
+ 'key' => static::META_KEY_CATEGORY,
+ 'value' => $category_ids,
+ 'compare' => 'IN',
+ ],
+ ];
+
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php
new file mode 100644
index 000000000..b4807774a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php
@@ -0,0 +1,138 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
+
+use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
+use PublishPress\Notifications\Workflow\Step\Event_Content\Post_Type as Step_Post_Type;
+
+class Post_Type extends Base implements Filter_Interface
+{
+ const META_KEY_POST_TYPE = '_psppno_posttype';
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ */
+ public function render()
+ {
+ echo $this->get_service('view')->render(
+ 'workflow_filter_multiple_select',
+ [
+ 'name' => esc_attr("publishpress_notif[{$this->step_name}_filters][post_type]"),
+ 'id' => esc_attr("publishpress_notif_{$this->step_name}_filters_post_type"),
+ 'options' => $this->get_options(),
+ 'labels' => [
+ 'label' => esc_html__('Post Types', 'publishpress'),
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Returns a list of post types in the options format
+ *
+ * @return array
+ */
+ protected function get_options()
+ {
+ $post_types = $this->get_post_types();
+ $options = [];
+ $metadata = (array)$this->get_metadata(static::META_KEY_POST_TYPE);
+
+ foreach ($post_types as $slug => $label) {
+ $options[] = [
+ 'value' => $slug,
+ 'label' => $label,
+ 'selected' => in_array($slug, $metadata),
+ ];
+ }
+
+ return $options;
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_type'])) {
+ $values = [];
+ } else {
+ $values = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['post_type']
+ );
+ }
+
+ $this->update_metadata_array($id, static::META_KEY_POST_TYPE, $values);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ // If post is not set, we ignore.
+ if (!isset($event_args['params']['post_id']) || !is_numeric($event_args['params']['post_id'])) {
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ $post = get_post($event_args['params']['post_id']);
+
+ // Add the filters
+ $query_args['meta_query'][] = [
+ 'relation' => 'OR',
+ // The filter is disabled
+ [
+ 'key' => Step_Post_Type::META_KEY_SELECTED,
+ 'value' => '0',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Post_Type::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Post_Type::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'IS NULL',
+ ],
+ // The filter wasn't set yet
+ [
+ 'key' => Step_Post_Type::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'NOT EXISTS',
+ ],
+ // The filter validates the value
+ [
+ 'key' => static::META_KEY_POST_TYPE,
+ 'value' => $post->post_type,
+ 'type' => 'CHAR',
+ 'compare' => '=',
+ ],
+ ];
+
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php
new file mode 100644
index 000000000..11d6fff3b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Filter/Term.php
@@ -0,0 +1,177 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
+
+use PP_Notifications;
+use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
+use PublishPress\Notifications\Workflow\Step\Event_Content\Taxonomy as Step_Taxonomy;
+
+class Term extends Base implements Filter_Interface
+{
+ const META_KEY_TERM = '_psppno_whenterm';
+
+ /**
+ * Function to render and returnt the HTML markup for the
+ * Field in the form.
+ *
+ * @return string
+ */
+ public function render()
+ {
+ $context = [
+ 'name' => esc_attr("publishpress_notif[{$this->step_name}_filters][term]"),
+ 'id' => esc_attr("publishpress_notif_{$this->step_name}_filters_term"),
+ 'options' => $this->get_options(),
+ 'labels' => [
+ 'label' => esc_html__('Terms', 'publishpress'),
+ ],
+ ];
+
+ echo $this->get_service('view')->render('workflow_filter_multiple_select', $context);
+ }
+
+ /**
+ * Returns a list of post types in the options format
+ *
+ * @return array
+ */
+ protected function get_options()
+ {
+ $get_terms_to_exclude = [];
+
+ if (class_exists('\PP_Notifications')) {
+ $blacklisted_taxonomies = PP_Notifications::getOption('blacklisted_taxonomies');
+ if (!empty($blacklisted_taxonomies)) {
+ $get_terms_to_exclude = array_filter(explode(',', $blacklisted_taxonomies));
+ }
+ }
+
+ $terms = get_terms(
+ [
+ 'hide_empty' => false,
+ 'taxonomy' => array_keys(array_diff(get_taxonomies(), $get_terms_to_exclude)),
+ ]
+ );
+
+ $metadata = (array)$this->get_metadata(static::META_KEY_TERM);
+
+ $options = [];
+ foreach ($terms as $term) {
+ $options[] = [
+ 'value' => $term->term_id,
+ 'label' => $term->taxonomy . '/' . $term->name,
+ 'selected' => in_array($term->term_id, $metadata),
+ ];
+ }
+
+ usort($options, [$this, 'sort_options']);
+
+ return $options;
+ }
+
+ /**
+ * Function to save the metadata from the metabox
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ if (!isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['term'])) {
+ $values = [];
+ } else {
+ // TODO: Should we sanitize with parseInt instead?
+ $values = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']["{$this->step_name}_filters"]['term']
+ );
+ }
+
+ $this->update_metadata_array($id, static::META_KEY_TERM, $values);
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function get_run_workflow_query_args($query_args, $event_args)
+ {
+ // If post is not set, we ignore.
+ if (!isset($event_args['params']['post_id']) || !is_numeric($event_args['params']['post_id'])) {
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ $taxonomies = array_values(get_taxonomies());
+
+ $terms = wp_get_post_terms($event_args['params']['post_id'], $taxonomies);
+ $term_ids = [];
+
+ if (!empty($terms)) {
+ foreach ($terms as $term) {
+ $term_ids[] = $term->term_id;
+ }
+ }
+ $term_ids = implode(',', $term_ids);
+
+ $query_args['meta_query'][] = [
+ 'relation' => 'OR',
+ // The filter is disabled
+ [
+ 'key' => Step_Taxonomy::META_KEY_SELECTED,
+ 'value' => '0',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Taxonomy::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => '=',
+ ],
+ // The filter is disabled
+ [
+ 'key' => Step_Taxonomy::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'IS NULL',
+ ],
+ // The filter wasn't set yet
+ [
+ 'key' => Step_Taxonomy::META_KEY_SELECTED,
+ 'value' => '',
+ 'compare' => 'NOT EXISTS',
+ ],
+ // The filter validates the value
+ [
+ 'key' => static::META_KEY_TERM,
+ 'value' => $term_ids,
+ 'compare' => 'IN',
+ ],
+ ];
+
+ return parent::get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ /**
+ * @param $a
+ * @param $b
+ */
+ protected function sort_options($a, $b)
+ {
+ if ($a['label'] == $b['label']) {
+ return 0;
+ }
+
+ return ($a['label'] < $b['label']) ? -1 : 1;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Post_Type.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Post_Type.php
new file mode 100644
index 000000000..1fc2d88a1
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Post_Type.php
@@ -0,0 +1,69 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Event_Content;
+
+class Post_Type extends Base
+{
+ const META_KEY_SELECTED = '_psppno_evtcontposttype';
+
+ const META_VALUE_SELECTED = 'post_type';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'post_type';
+ $this->label = __('Post type', 'publishpress');
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
+ *
+ * @param array $query_args
+ * @param array $event_args
+ *
+ * @return array
+ */
+ public function filter_running_workflow_query_args($query_args, $event_args)
+ {
+ // Check the filters
+ $filters = $this->get_filters();
+
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
+
+ return $query_args;
+ }
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ $step_name = $this->attr_prefix . '_' . $this->name;
+
+ $filters[] = new Filter\Post_Type($step_name);
+
+ return parent::get_filters($filters);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php
similarity index 85%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php
index 1dbbaaf2f..6957eff5b 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Taxonomy.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Event_Content/Taxonomy.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -27,44 +27,43 @@ public function __construct()
}
/**
- * Method to return a list of fields to display in the filter area
+ * Filters and returns the arguments for the query which locates
+ * workflows that should be executed.
*
- * @param array
+ * @param array $query_args
+ * @param array $event_args
*
* @return array
*/
- protected function get_filters($filters = [])
+ public function filter_running_workflow_query_args($query_args, $event_args)
{
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- $step_name = $this->attr_prefix . '_' . $this->name;
+ // Check the filters
+ $filters = $this->get_filters();
- $filters[] = new Filter\Term($step_name);
+ foreach ($filters as $filter) {
+ $query_args = $filter->get_run_workflow_query_args($query_args, $event_args);
+ }
- return parent::get_filters($filters);
+ return $query_args;
}
/**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
+ * Method to return a list of fields to display in the filter area
*
- * @param array $query_args
- * @param array $action_args
+ * @param array
*
* @return array
*/
- public function filter_run_workflow_query_args($query_args, $action_args)
+ protected function get_filters($filters = [])
{
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
- // Check the filters
- $filters = $this->get_filters();
+ $step_name = $this->attr_prefix . '_' . $this->name;
- foreach ($filters as $filter) {
- $query_args = $filter->get_run_workflow_query_args($query_args, $action_args);
- }
+ $filters[] = new Filter\Term($step_name);
- return $query_args;
+ return parent::get_filters($filters);
}
}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Author.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Author.php
new file mode 100644
index 000000000..73e3b27fe
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Author.php
@@ -0,0 +1,97 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+class Author extends Simple_Checkbox implements Receiver_Interface
+{
+ const META_KEY = '_psppno_toauthor';
+
+ const META_VALUE = 'author';
+
+ protected $option = 'receiver_author';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'author';
+ $this->label = __('Authors of the content', 'publishpress');
+ $this->option_name = 'receiver_author';
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ // If checked, add the authors to the list of receivers
+ if ($this->is_selected($workflow->ID)) {
+ $post = get_post($args['params']['post_id']);
+
+ /**
+ * @param int $post_author
+ * @param int $post_id
+ *
+ * @return int|array
+ */
+ $post_authors = apply_filters(
+ 'publishpress_notifications_receiver_post_authors',
+ [$post->post_author],
+ $workflow->ID,
+ $args
+ );
+
+ if (!is_array($post_authors)) {
+ $post_authors = [$post_authors];
+ }
+
+ foreach ($post_authors as $post_author) {
+ $receiverData = [
+ 'receiver' => $post_author,
+ 'group' => self::META_VALUE
+ ];
+
+ if (!is_numeric($post_author) && substr_count($post_author, '@') > 0) {
+ $receiverData['channel'] = 'email';
+ }
+
+ $receivers[] = $receiverData;
+ }
+ }
+
+ return $receivers;
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ if ($this->is_selected($post_id)) {
+ $values[] = __('Authors', 'publishpress');
+ }
+
+ return $values;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Base.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Base.php
new file mode 100644
index 000000000..19d436c93
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Base.php
@@ -0,0 +1,65 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
+
+class Base extends Base_Step
+{
+ const META_KEY_SELECTED = '_psppno_toundefined';
+
+ protected $view_name;
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->attr_prefix = 'receiver';
+
+ parent::__construct();
+
+ // Add the event filters to the metabox template
+ add_filter(
+ "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
+ [$this, 'filter_workflow_metabox_context']
+ );
+
+ // Add the filter for the list of receivers in the workflow
+ add_filter("publishpress_notif_run_workflow_receivers", [$this, 'filter_workflow_receivers'], 10, 3);
+
+ // Add filter to return the value for the column in the workflow list
+ add_filter('psppno_receivers_column_value', [$this, 'filter_receivers_column_value'], 10, 2);
+
+ add_filter('publishpress_notifications_receiver_group_label', [$this, 'filter_receiver_group_label']);
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ return $values;
+ }
+
+ public function filter_receiver_group_label($group_name)
+ {
+ if ($group_name === static::META_VALUE) {
+ $group_name = $this->label;
+ }
+
+ return $group_name;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Follower.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Follower.php
new file mode 100644
index 000000000..596488aec
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Follower.php
@@ -0,0 +1,215 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+use PublishPress\Legacy\Util;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use WP_Post;
+
+class Follower extends Simple_Checkbox implements Receiver_Interface
+{
+ const META_KEY = '_psppno_tofollower';
+
+ const META_VALUE = 'follower';
+
+ protected $option = 'receiver_follower';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'follower';
+ $this->label = __('Users who selected "Notify me" for the content', 'publishpress');
+ $this->option_name = 'receiver_follower';
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ global $publishpress;
+
+ // If checked, add the authors to the list of receivers
+ if ($this->is_selected($workflow->ID)) {
+ $post_id = $args['params']['post_id'];
+
+ if (empty($post_id)) {
+ return $receivers;
+ }
+
+ $followers = [];
+
+ // Check if we are saving the post and use that data instead of the stored taxonomies/metadata.
+ $method = Util::getRequestMethod();
+
+ $roles = [];
+ $users = [];
+ $emails = [];
+
+ if ('POST' === $method && (isset($_POST['action']) && 'editpost' === $_POST['action'])) {
+ $toNotify = isset($_POST['to_notify']) ?
+ array_map('sanitize_text_field', (array)$_POST['to_notify']) : false;
+
+ if (!empty($toNotify)) {
+ foreach ($toNotify as $item) {
+ if (is_numeric($item)) {
+ $users[] = $item;
+ } elseif (strpos($item, '@') > 0) {
+ $emails[] = $item;
+ } elseif (0 === strpos($item, 'group-')) {
+ $groups[] = $item;
+ } else {
+ $roles[] = $item;
+ }
+ }
+ }
+ } else {
+ // Get following users and roles.
+ $roles = $publishpress->notifications->get_roles_to_notify($post_id, 'slugs');
+ $users = $publishpress->notifications->get_users_to_notify($post_id, 'id');
+ $emails = $publishpress->notifications->get_emails_to_notify($post_id);
+
+ if (defined('PRESSPERMIT_VERSION')) {
+ $groups = $publishpress->notifications->get_groups_to_notify($post_id, 'slugs');
+ } else {
+ $groups = [];
+ }
+ }
+
+ // Extract users from roles.
+ if (!empty($roles)) {
+ foreach ($roles as $role) {
+ $roleUsers = get_users(['role' => $role,]);
+
+ if (!empty($roleUsers)) {
+ foreach ($roleUsers as $user) {
+ if (is_user_member_of_blog($user->ID)) {
+ $followers[] = [
+ 'receiver' => $user->ID,
+ 'group' => self::META_VALUE,
+ 'subgroup' => sprintf(
+ __('role:%s', 'publishpress'),
+ ' ' . $role
+ )
+ ];
+ }
+ }
+ }
+ }
+ }
+
+ // Extract users from groups.
+ if (!empty($groups) && class_exists('PublishPress\Permissions\API')) {
+ foreach ((array)$groups as $group_term_slug) {
+ if (0 === strpos($group_term_slug, 'group-')) {
+ $group_id = str_replace('group-', '', $group_term_slug);
+ }
+
+ if ($group = \PublishPress\Permissions\API::getGroup($group_id)) {
+ if ($group_users = \PublishPress\Permissions\API::getGroupMembers($group_id, 'pp_group')) {
+ foreach ($group_users as $user) {
+ $followers[] = [
+ 'receiver' => $user->ID,
+ 'group' => self::META_VALUE,
+ 'subgroup' => sprintf(
+ __('group %d: %s', 'publishpress'),
+ $group_id,
+ $group->name
+ )
+ ];
+ }
+ }
+ }
+ }
+ }
+
+ // Process the selected users.
+ if (!empty($users)) {
+ foreach ($users as $user) {
+ if (is_object($user)) {
+ $user = $user->ID;
+ }
+
+ $followers[] = [
+ 'receiver' => $user,
+ 'group' => self::META_VALUE,
+ 'subgroup' => __('user', 'publishpress')
+ ];
+ }
+ }
+
+ // Merge the emails.
+ if (!empty($emails)) {
+ foreach ($emails as $email) {
+ // Do we have a name?
+ $emailFragments = explode('/', $email);
+
+ $item = [
+ 'receiver' => preg_replace('/^email:/', '', $emailFragments[0]),
+ 'channel' => 'email',
+ 'group' => self::META_VALUE,
+ 'subgroup' => __('email', 'publishpress')
+ ];
+
+ if (isset($emailFragments[1])) {
+ $item['name'] = $emailFragments[1];
+ }
+
+ $followers[] = $item;
+ }
+ }
+
+ /**
+ * Filters the list of followers.
+ *
+ * @param array $followers
+ * @param WP_Post $workflow
+ * @param array $args
+ */
+ $followers = apply_filters(
+ 'publishpress_notif_workflow_receiver_post_followers',
+ $followers,
+ $workflow,
+ $args
+ );
+
+ $receivers = array_merge($receivers, $followers);
+ }
+
+ return $receivers;
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ if ($this->is_selected($post_id)) {
+ $values[] = __('"Notify me"', 'publishpress');
+ }
+
+ return $values;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Group.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Group.php
new file mode 100644
index 000000000..2c9171f34
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Group.php
@@ -0,0 +1,230 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Traits\PublishPress_Module;
+
+class Group extends Simple_Checkbox implements Receiver_Interface
+{
+ use PublishPress_Module;
+
+ const META_KEY = '_psppno_togroup';
+
+ const META_LIST_KEY = '_psppno_togrouplist';
+
+ const META_VALUE = 'group';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'group';
+ $this->label = __('Permission Groups', 'publishpress');
+ $this->option_name = 'receiver_group_checkbox';
+
+ parent::__construct();
+
+ $this->view_name = 'workflow_receiver_group_field';
+ }
+
+ /**
+ * Method called when a notification workflow is saved.
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ parent::save_metabox_data($id, $post);
+
+ $values = [];
+ if (isset($_POST['publishpress_notif'])
+ && isset($_POST['publishpress_notif']['receiver_group'])) {
+ $values = array_map('sanitize_key', $_POST['publishpress_notif']['receiver_group']);
+ }
+
+ $this->update_metadata_array($id, static::META_LIST_KEY, $values);
+ }
+
+ /**
+ * Filters the context sent to the view template in the metabox
+ *
+ * @param array $template_context
+ */
+ public function filter_workflow_metabox_context($template_context)
+ {
+ $groups = [];
+
+ if (class_exists('PublishPress\Permissions\API')) {
+ global $post;
+
+ if (defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') && get_option('rvy_use_publishpress_notifications')) {
+ $groups = \PublishPress\Permissions\API::getGroups('pp_group', ['skip_meta_types' => ['wp_role']]);
+
+ foreach ($groups as $k => $group) {
+ if (empty($group->metagroup_id)) {
+ continue;
+ }
+
+ switch ($group->metagroup_id) {
+ case 'rvy_scheduled_rev_notice':
+ // Don't offer Scheduled Change Notifications metagroup for standard Planner notifications, or for Revisions notifications related to creation, submission and moderation
+ $excludes = ['new-revision-created', 'revision-is-submitted', 'revision-status-changed', 'revision-is-scheduled', 'revision-deferred-or-rejected', 'revision-is-applied',
+ 'new-post-is-created-in-draft-status', 'new-post-is-published', 'notify-when-content-is-published', 'existing-post-is-updated', 'notify-on-editorial-comments'];
+
+ foreach ($excludes as $exclude_notif) {
+ if (0 === strpos($post->post_name, $exclude_notif)) {
+ unset($groups[$k]);
+ continue 3;
+ }
+ }
+
+ break;
+
+ case 'rvy_pending_rev_notice':
+ // Don't offer Change Request Notifications metagroup for standard Planner notifications, or for Revisions notifications related to publication
+ $excludes = ['scheduled-revision-is-published', 'revision-is-published',
+ 'new-post-is-created-in-draft-status', 'new-post-is-published', 'notify-when-content-is-published', 'existing-post-is-updated', 'notify-on-editorial-comments'];
+
+ foreach ($excludes as $exclude_notif) {
+ if (0 === strpos($post->post_name, $exclude_notif)) {
+ unset($groups[$k]);
+ continue 3;
+ }
+ }
+
+ break;
+ }
+
+ if (class_exists('PublishPress\Permissions\DB\Groups') && method_exists('PublishPress\Permissions\DB\Groups', 'getMetagroupName')) {
+ $groups[$k]->name = \PublishPress\Permissions\DB\Groups::getMetagroupName($group->metagroup_type, $group->metagroup_id);
+ }
+ }
+ } else {
+ $groups = \PublishPress\Permissions\API::getGroups('pp_group', ['include_metagroups' => false]);
+ }
+ }
+
+ if (empty($groups)) {
+ return [];
+ }
+
+ $selected_groups = (array)$this->get_metadata(static::META_LIST_KEY);
+ if (empty($selected_groups)) {
+ $selected_groups = [];
+ }
+
+ foreach (array_keys($groups) as $group_id) {
+ if (in_array($group_id, $selected_groups)) {
+ $groups[$group_id]->selected = true;
+ }
+ }
+
+ $template_context['name'] = 'publishpress_notif[receiver_group_checkbox]';
+ $template_context['id'] = 'publishpress_notif_group';
+ $template_context['value'] = static::META_VALUE;
+ $template_context['groups'] = $groups;
+ $template_context['list_class'] = 'publishpress_notif_group_list';
+ $template_context['input_name'] = 'publishpress_notif[receiver_group][]';
+ $template_context['input_id'] = 'publishpress_notif_groups';
+
+ $template_context = parent::filter_workflow_metabox_context($template_context);
+
+ return $template_context;
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ // If checked, add the authors to the list of receivers
+ if ($this->is_selected($workflow->ID)) {
+ // Get the users from the selected roles in the workflow
+ $groups = get_post_meta($workflow->ID, static::META_LIST_KEY);
+ $receivers = array_merge($receivers, $this->get_users_from_groups($groups));
+
+ /**
+ * Filters the list of receivers, but triggers only when the authors are selected.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ */
+ $receivers = apply_filters('publishpress_notif_workflow_receiver_group', $receivers, $workflow, $args);
+ }
+
+ return $receivers;
+ }
+
+ /**
+ * Returns an array with a list of users' ids from the given roles.
+ *
+ * @param array $roles
+ *
+ * @return array
+ */
+ protected function get_users_from_groups($groups)
+ {
+ $users = [];
+
+ if (!empty($groups) && class_exists('PublishPress\Permissions\API')) {
+ foreach ((array)$groups as $group_id) {
+ if ($group_users = \PublishPress\Permissions\API::getGroupMembers($group_id, 'pp_group')) {
+ if ($group = \PublishPress\Permissions\API::getGroup($group_id)) {
+ foreach ($group_users as $user) {
+ $users[] = [
+ 'receiver' => $user->ID,
+ 'group' => self::META_VALUE,
+ 'subgroup' => "{$group_id}: $group->name"
+ ];
+ }
+ }
+ }
+ }
+ }
+
+ return $users;
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ if ($this->is_selected($post_id)) {
+ $items = get_post_meta($post_id, static::META_LIST_KEY);
+
+ if (!empty($items)) {
+ $count = count($items);
+
+ $values[] = sprintf(
+ _n('%d Group', "%d Groups", count($items), 'publishpress'),
+ count($items)
+ );
+ }
+ }
+
+ return $values;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php
new file mode 100644
index 000000000..10f314bb5
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/ParentAuthor.php
@@ -0,0 +1,111 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+class ParentAuthor extends Simple_Checkbox implements Receiver_Interface
+{
+ const META_KEY = '_psppno_toauthor';
+
+ const META_VALUE = 'parent_author';
+
+ protected $option = 'receiver_parent_author';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->name = 'parent_author';
+ $this->label = __('Authors of the parent page', 'publishpress');
+ $this->option_name = 'receiver_parent_author';
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ // If checked, add the authors to the list of receivers
+ if ($this->is_selected($workflow->ID)) {
+ $post = get_post($args['params']['post_id']);
+
+ if (function_exists('rvy_in_revision_workflow') && rvy_in_revision_workflow($post->ID)) {
+ $parent_post_id = rvy_post_id($post->ID);
+ } else {
+ $parent_post_id = $post->post_parent;
+ }
+
+ if ($parent_post_id) {
+ $parent_post = get_post($parent_post_id);
+ }
+
+ if (empty($parent_post) || empty($posparent_postt_id)) {
+ return;
+ }
+
+ /**
+ * @param int $post_author
+ * @param int $post_id
+ *
+ * @return int|array
+ */
+ $post_authors = apply_filters(
+ 'publishpress_notifications_receiver_post_parent_authors',
+ [$post->post_author],
+ $workflow->ID,
+ $args
+ );
+
+ if (!is_array($post_authors)) {
+ $post_authors = [$post_authors];
+ }
+
+ foreach ($post_authors as $post_author) {
+ $receiverData = [
+ 'receiver' => $post_author,
+ 'group' => self::META_VALUE
+ ];
+
+ if (!is_numeric($post_author) && substr_count($post_author, '@') > 0) {
+ $receiverData['channel'] = 'email';
+ }
+
+ $receivers[] = $receiverData;
+ }
+ }
+
+ return $receivers;
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ if ($this->is_selected($post_id)) {
+ $values[] = __('Parent Page Authors', 'publishpress');
+ }
+
+ return $values;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Receiver_Interface.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Receiver_Interface.php
similarity index 78%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Receiver_Interface.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Receiver_Interface.php
index 43df7fd50..8f43df6ef 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Receiver_Interface.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Receiver_Interface.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -11,9 +11,8 @@
interface Receiver_Interface
{
-
/**
- * Filters the context sent to the twig template in the metabox
+ * Filters the context sent to the view template in the metabox
*
* @param array $template_context
*/
@@ -22,7 +21,7 @@ public function filter_workflow_metabox_context($template_context);
/**
* Method called when a notification workflow is saved.
*
- * @param int $id
+ * @param int $id
* @param WP_Post $post
*/
public function save_metabox_data($id, $post);
@@ -30,9 +29,9 @@ public function save_metabox_data($id, $post);
/**
* Filters the list of receivers for the workflow. Returns the list.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*
* @return array
*/
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/RevisionAuthor.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/RevisionAuthor.php
new file mode 100644
index 000000000..0b7989068
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/RevisionAuthor.php
@@ -0,0 +1,110 @@
+
+ * @copyright Copyright (c) 2025 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+class RevisionAuthor extends Simple_Checkbox implements Receiver_Interface
+{
+ const META_KEY = '_psppno_to_revision_author';
+
+ const META_VALUE = 'revision_author';
+
+ protected $option = 'receiver_revision_author';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ global $post;
+
+ if (is_admin() && !empty($post) && ('psppnotif_workflow' == $post->post_type)) {
+ // Don't offer Revision Author option for standard Planner notifications
+ $excludes = ['new-post-is-created-in-draft-status', 'new-post-is-published', 'notify-when-content-is-published', 'existing-post-is-updated', 'notify-on-editorial-comments'];
+
+ foreach ($excludes as $exclude_notif) {
+ if (0 === strpos($post->post_name, $exclude_notif)) {
+ return;
+ }
+ }
+ }
+
+ $this->name = 'revision_author';
+ $this->label = __('Author of the revision', 'publishpress');
+ $this->option_name = 'receiver_revision_author';
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ // If checked, add the authors to the list of receivers
+ if ($this->is_selected($workflow->ID) && !empty($args['params']['revision_id'])) {
+ $post = get_post($args['params']['revision_id']);
+
+ /**
+ * @param int $post_author
+ * @param int $post_id
+ *
+ * @return int|array
+ */
+ $post_authors = apply_filters(
+ 'publishpress_notifications_receiver_revision_author',
+ [$post->post_author],
+ $workflow->ID,
+ $args
+ );
+
+ if (!is_array($post_authors)) {
+ $post_authors = [$post_authors];
+ }
+
+ foreach ($post_authors as $post_author) {
+ $receiverData = [
+ 'receiver' => $post_author,
+ 'group' => self::META_VALUE
+ ];
+
+ if (!is_numeric($post_author) && substr_count($post_author, '@') > 0) {
+ $receiverData['channel'] = 'email';
+ }
+
+ $receivers[] = $receiverData;
+ }
+ }
+
+ return $receivers;
+ }
+
+ /**
+ * Add the respective value to the column in the workflow list
+ *
+ * @param array $values
+ * @param int $post_id
+ *
+ * @return array
+ */
+ public function filter_receivers_column_value($values, $post_id)
+ {
+ if ($this->is_selected($post_id)) {
+ $values[] = __('Revision Author', 'publishpress');
+ }
+
+ return $values;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Role.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Role.php
similarity index 78%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Role.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Role.php
index 5f90d0ee9..29123f6c7 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Role.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Role.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -15,7 +15,6 @@
class Role extends Simple_Checkbox implements Receiver_Interface
{
use PublishPress_Module;
- use Dependency_Injector;
const META_KEY = '_psppno_torole';
@@ -34,32 +33,30 @@ public function __construct()
parent::__construct();
- $this->twig_template = 'workflow_receiver_role_field.twig';
+ $this->view_name = 'workflow_receiver_role_field';
}
/**
* Method called when a notification workflow is saved.
*
- * @param int $id
+ * @param int $id
* @param WP_Post $post
*/
public function save_metabox_data($id, $post)
{
parent::save_metabox_data($id, $post);
- if ( ! isset($_POST['publishpress_notif'])
- || ! isset($_POST['publishpress_notif']['receiver_role'])) {
- // Assume it is disabled
- $values = [];
- } else {
- $values = $_POST['publishpress_notif']['receiver_role'];
+ $values = [];
+ if (isset($_POST['publishpress_notif'])
+ && isset($_POST['publishpress_notif']['receiver_role'])) {
+ $values = array_map('sanitize_key', $_POST['publishpress_notif']['receiver_role']);
}
$this->update_metadata_array($id, static::META_LIST_KEY, $values);
}
/**
- * Filters the context sent to the twig template in the metabox
+ * Filters the context sent to the view template in the metabox
*
* @param array $template_context
*/
@@ -95,9 +92,9 @@ public function filter_workflow_metabox_context($template_context)
/**
* Filters the list of receivers for the workflow. Returns the list of IDs.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*
* @return array
*/
@@ -105,21 +102,16 @@ public function filter_workflow_receivers($receivers, $workflow, $args)
{
// If checked, add the authors to the list of receivers
if ($this->is_selected($workflow->ID)) {
- // Get the users selected in the workflow
+ // Get the users from the selected roles in the workflow
$roles = get_post_meta($workflow->ID, static::META_LIST_KEY);
$receivers = array_merge($receivers, $this->get_users_from_roles($roles));
- // Get the roles that should receive notification
- $roles = $this->get_service('publishpress')->notifications->get_roles_to_notify($args['post']->ID,
- 'slugs');
- $receivers = array_merge($receivers, $this->get_users_from_roles($roles));
-
/**
* Filters the list of receivers, but triggers only when the authors are selected.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*/
$receivers = apply_filters('publishpress_notif_workflow_receiver_role', $receivers, $workflow, $args);
}
@@ -138,7 +130,7 @@ protected function get_users_from_roles($roles)
{
$users = [];
- if ( ! empty($roles)) {
+ if (!empty($roles)) {
foreach ((array)$roles as $role_name) {
$role_users = get_users(
[
@@ -146,9 +138,13 @@ protected function get_users_from_roles($roles)
]
);
- if ( ! empty($role_users)) {
+ if (!empty($role_users)) {
foreach ($role_users as $user) {
- $users[] = (int)$user->ID;
+ $users[] = [
+ 'receiver' => $user->ID,
+ 'group' => self::META_VALUE,
+ 'subgroup' => $role_name
+ ];
}
}
}
@@ -161,7 +157,7 @@ protected function get_users_from_roles($roles)
* Add the respective value to the column in the workflow list
*
* @param array $values
- * @param int $post_id
+ * @param int $post_id
*
* @return array
*/
@@ -170,7 +166,7 @@ public function filter_receivers_column_value($values, $post_id)
if ($this->is_selected($post_id)) {
$items = get_post_meta($post_id, static::META_LIST_KEY);
- if ( ! empty($items)) {
+ if (!empty($items)) {
$count = count($items);
$values[] = sprintf(
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php
new file mode 100644
index 000000000..976e73e50
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php
@@ -0,0 +1,98 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow\Step\Receiver;
+
+class Simple_Checkbox extends Base implements Receiver_Interface
+{
+ const META_KEY = '_psppno_to_______';
+
+ const META_VALUE = 'define';
+
+ protected $option_name = 'define-option';
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ $this->view_name = 'workflow_receiver_checkbox_field';
+
+ parent::__construct();
+ }
+
+ /**
+ * Filters the context sent to the view template in the metabox
+ *
+ * @param array $template_context
+ */
+ public function filter_workflow_metabox_context($template_context)
+ {
+ // Metadata
+ $meta = $this->get_metadata(static::META_KEY, true);
+
+ $template_context['meta'] = [
+ 'selected' => (bool)$meta,
+ ];
+
+ return $template_context;
+ }
+
+ /**
+ * Filters the list of receivers for the workflow. Returns the list of IDs.
+ *
+ * @param array $receivers
+ * @param WP_Post $workflow
+ * @param array $args
+ *
+ * @return array
+ */
+ public function filter_workflow_receivers($receivers, $workflow, $args)
+ {
+ return $receivers;
+ }
+
+ /**
+ * Method called when a notification workflow is saved.
+ *
+ * @param int $id
+ * @param WP_Post $post
+ */
+ public function save_metabox_data($id, $post)
+ {
+ $selected = isset($_POST['publishpress_notif'])
+ && isset($_POST['publishpress_notif'][$this->option_name])
+ && $_POST['publishpress_notif'][$this->option_name] === static::META_VALUE;
+
+ $this->set_selection($id, $selected);
+ }
+
+ /**
+ * Update the meta data to set the selection for the give workflow
+ *
+ * @param int $post_id
+ * @param bool $selected
+ */
+ protected function set_selection($post_id, $selected)
+ {
+ update_post_meta($post_id, static::META_KEY, $selected);
+ }
+
+ /**
+ * Returns true if the receiver is selected in the respective workflow.
+ *
+ * @param int $post_id
+ *
+ * @return bool
+ */
+ protected function is_selected($post_id)
+ {
+ return (bool)get_post_meta($post_id, static::META_KEY, true);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Site_Admin.php
similarity index 79%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Site_Admin.php
index fb2015ceb..5348cb7d8 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Site_Admin.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/Site_Admin.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -30,9 +30,9 @@ public function __construct()
/**
* Filters the list of receivers for the workflow. Returns the list of IDs.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*
* @return array
*/
@@ -40,14 +40,18 @@ public function filter_workflow_receivers($receivers, $workflow, $args)
{
// If checked, add the authors to the list of receivers
if ($this->is_selected($workflow->ID)) {
- $receivers[] = 'email:' . get_option('admin_email');
+ $receivers[] = [
+ 'receiver' => get_option('admin_email'),
+ 'channel' => 'email',
+ 'group' => self::META_VALUE
+ ];
/**
- * Filters the list of receivers, but triggers only when the authors are selected.
+ * Filters the list of receivers, but triggers only when the site admin is selected.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*/
$receivers = apply_filters('publishpress_notif_workflow_receiver_site_admin', $receivers, $workflow, $args);
}
@@ -59,7 +63,7 @@ public function filter_workflow_receivers($receivers, $workflow, $args)
* Add the respective value to the column in the workflow list
*
* @param array $values
- * @param int $post_id
+ * @param int $post_id
*
* @return array
*/
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/User.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/User.php
similarity index 78%
rename from public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/User.php
rename to public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/User.php
index cca077a4b..e17eca282 100644
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/User.php
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Step/Receiver/User.php
@@ -2,7 +2,7 @@
/**
* @package PublishPress\Notifications
* @author PublishPress
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
* @license GPLv2 or later
* @since 1.0.0
*/
@@ -28,52 +28,35 @@ public function __construct()
parent::__construct();
- $this->twig_template = 'workflow_receiver_user_field.twig';
- }
-
- /**
- * Method to return a list of fields to display in the filter area
- *
- * @param array
- *
- * @return array
- */
- protected function get_filters($filters = [])
- {
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- $step_name = $this->attr_prefix . '_' . $this->name;
-
- $filters[] = new Filter\User($step_name);
-
- return parent::get_filters($filters);
+ $this->view_name = 'workflow_receiver_user_field';
}
/**
* Method called when a notification workflow is saved.
*
- * @param int $id
+ * @param int $id
* @param WP_Post $post
*/
public function save_metabox_data($id, $post)
{
parent::save_metabox_data($id, $post);
- if ( ! isset($_POST['publishpress_notif'])
- || ! isset($_POST['publishpress_notif']['receiver_user'])) {
+ if (!isset($_POST['publishpress_notif'])
+ || !isset($_POST['publishpress_notif']['receiver_user'])) {
// Assume it is disabled
$values = [];
} else {
- $values = $_POST['publishpress_notif']['receiver_user'];
+ $values = array_map(
+ 'sanitize_key',
+ (array)$_POST['publishpress_notif']['receiver_user']
+ );
}
$this->update_metadata_array($id, static::META_LIST_KEY, $values);
}
/**
- * Filters the context sent to the twig template in the metabox
+ * Filters the context sent to the view template in the metabox
*
* @param array $template_context
*/
@@ -81,7 +64,6 @@ public function filter_workflow_metabox_context($template_context)
{
// Get Users
$args = [
- 'who' => 'authors',
'fields' => [
'ID',
'display_name',
@@ -115,9 +97,9 @@ public function filter_workflow_metabox_context($template_context)
/**
* Filters the list of receivers for the workflow. Returns the list of IDs.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*
* @return array
*/
@@ -126,20 +108,23 @@ public function filter_workflow_receivers($receivers, $workflow, $args)
// If checked, add the authors to the list of receivers
if ($this->is_selected($workflow->ID)) {
// Get the users selected in the workflow
- $users = get_post_meta($workflow->ID, static::META_LIST_KEY);
- $receivers = array_merge($receivers, $users);
-
- // Get the users following the post
- $users = $this->get_service('publishpress')->notifications->get_users_to_notify($args['post']->ID,
- 'id');
- $receivers = array_merge($receivers, $users);
+ $users = get_post_meta($workflow->ID, static::META_LIST_KEY);
+
+ if (!empty($users)) {
+ foreach ($users as $user) {
+ $receivers[] = [
+ 'receiver' => (int)$user,
+ 'group' => self::META_VALUE
+ ];
+ }
+ }
/**
- * Filters the list of receivers, but triggers only when the authors are selected.
+ * Filters the list of receivers, but triggers only when users are selected.
*
- * @param array $receivers
+ * @param array $receivers
* @param WP_Post $workflow
- * @param array $args
+ * @param array $args
*/
$receivers = apply_filters('publishpress_notif_workflow_receiver_user', $receivers, $workflow, $args);
}
@@ -151,7 +136,7 @@ public function filter_workflow_receivers($receivers, $workflow, $args)
* Add the respective value to the column in the workflow list
*
* @param array $values
- * @param int $post_id
+ * @param int $post_id
*
* @return array
*/
@@ -160,7 +145,7 @@ public function filter_receivers_column_value($values, $post_id)
if ($this->is_selected($post_id)) {
$items = get_post_meta($post_id, static::META_LIST_KEY);
- if ( ! empty($items)) {
+ if (!empty($items)) {
$count = count($items);
$values[] = sprintf(
@@ -172,4 +157,24 @@ public function filter_receivers_column_value($values, $post_id)
return $values;
}
+
+ /**
+ * Method to return a list of fields to display in the filter area
+ *
+ * @param array
+ *
+ * @return array
+ */
+ protected function get_filters($filters = [])
+ {
+ if (!empty($this->cache_filters)) {
+ return $this->cache_filters;
+ }
+
+ $step_name = $this->attr_prefix . '_' . $this->name;
+
+ $filters[] = new Filter\User($step_name);
+
+ return parent::get_filters($filters);
+ }
}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Workflow.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Workflow.php
new file mode 100644
index 000000000..d314ca164
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/Workflow.php
@@ -0,0 +1,329 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow;
+
+use Exception;
+use PublishPress\Notifications\Shortcodes;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use WP_Post;
+
+class Workflow
+{
+ use Dependency_Injector;
+
+ /**
+ * The post of this workflow.
+ *
+ * @var WP_Post
+ */
+ public $workflow_post;
+
+ /**
+ * An array with arguments set by the action
+ *
+ * @var array
+ */
+ public $event_args;
+
+ /**
+ * @var Shortcodes
+ */
+ private $shortcodesHandler;
+
+ /**
+ * The constructor
+ *
+ * @param WP_Post $workflow_post
+ */
+ public function __construct($workflow_post)
+ {
+ $this->workflow_post = $workflow_post;
+ }
+
+ public static function load_by_id($workflowId)
+ {
+ $post = get_post((int)$workflowId);
+
+ return new self($post);
+ }
+
+ /**
+ * Runs this workflow without applying any filter. We assume it was
+ * already filtered in the query.
+ *
+ * @param array $event_args
+ *
+ * @throws Exception
+ */
+ public function run($event_args)
+ {
+ $this->event_args = $event_args;
+
+ do_action('publishpress_notifications_running_for_post', $this);
+ }
+
+ private function get_receivers()
+ {
+ /**
+ * Filters the list of receivers for the notification workflow.
+ *
+ * @param WP_Post $workflow
+ * @param array $args
+ */
+ return apply_filters(
+ 'publishpress_notif_run_workflow_receivers',
+ [],
+ $this->workflow_post,
+ $this->event_args
+ );
+ }
+
+ public function get_option($option)
+ {
+ return apply_filters('publishpress_notif_workflow_option', null, $option, $this);
+ }
+
+ /**
+ * Returns a list of receivers ids for this workflow
+ *
+ * @return array
+ */
+ public function get_receivers_by_channel()
+ {
+ $receivers = $this->get_receivers();
+
+ $filtered_receivers = [];
+
+ $optionSkipUser = (bool)$this->get_option('skip_user');
+
+ if (!empty($receivers)) {
+ // Classify receivers per channel, ignoring who has muted the channel.
+ foreach ($receivers as $receiverData) {
+ $receiver = $receiverData['receiver'];
+
+ // Is an user (identified by the id)?
+ if (is_numeric($receiver) || is_object($receiver)) {
+ // Try to extract the ID from the object
+ if (is_object($receiver)) {
+ if (isset($receiver->ID) && !empty($receiver->ID)) {
+ $receiver = $receiver->ID;
+ } else {
+ if (isset($receiver->id) && !empty($receiver->id)) {
+ $receiver = $receiver->id;
+ } else {
+ // If the object doesn't have an ID, we ignore it.
+ continue;
+ }
+ }
+ }
+
+ // Doesn't send the notification for the same user that triggered it if the option to skip is set.
+ if ($optionSkipUser && $receiver == $this->event_args['user_id']) {
+ continue;
+ }
+
+ $channel = get_user_meta($receiver, 'psppno_workflow_channel_' . $this->workflow_post->ID, true);
+
+ // If channel is empty, we set a default channel.
+ if (empty($channel)) {
+ $channel = apply_filters('psppno_default_channel', 'email', $this->workflow_post->ID);
+ }
+
+ // If the channel is "mute", we ignore this receiver.
+ if ('mute' === $channel) {
+ continue;
+ }
+
+ // Make sure the array for the channel is initialized.
+ if (!isset($filtered_receivers[$channel])) {
+ $filtered_receivers[$channel] = [];
+ }
+
+ // Add to the channel's list.
+ $filtered_receivers[$channel][] = $receiverData;
+ } else {
+ // Check if it is an explicit email address.
+ if (isset($receiverData['channel'])) {
+ // Doesn't send the notification for the same user that triggered it if the option to skip is set.
+ if ($optionSkipUser && isset($receiverData['receiver'])) {
+ $user_id = email_exists($receiverData['receiver']);
+ if ($user_id == $this->event_args['user_id']) {
+ continue;
+ }
+ }
+
+ if (!isset($filtered_receivers[$receiverData['channel']])) {
+ $filtered_receivers[$receiverData['channel']] = [];
+ }
+
+ // Add to the email channel, without the "email:" prefix.
+ $filtered_receivers[$receiverData['channel']][] = $receiverData;
+ }
+ }
+ }
+ }
+
+ return $filtered_receivers;
+ }
+
+ /**
+ * Returns a list of receivers ids for this workflow
+ *
+ * @return array
+ */
+ public function get_receivers_by_group()
+ {
+ $receivers = $this->get_receivers();
+
+ $filtered_receivers = [];
+
+ $optionSkipUser = (bool)$this->get_option('skip_user');
+
+ if (!empty($receivers)) {
+ // Classify receivers per channel, ignoring who has muted the channel.
+ foreach ($receivers as $receiverData) {
+ $receiver = $receiverData['receiver'];
+
+ // Is an user (identified by the id)?
+ if (is_numeric($receiver) || is_object($receiver)) {
+ // Try to extract the ID from the object
+ if (is_object($receiver)) {
+ if (isset($receiver->ID) && !empty($receiver->ID)) {
+ $receiver = $receiver->ID;
+ } else {
+ if (isset($receiver->id) && !empty($receiver->id)) {
+ $receiver = $receiver->id;
+ } else {
+ // If the object doesn't have an ID, we ignore it.
+ continue;
+ }
+ }
+ }
+
+ // Doesn't send the notification for the same user that triggered it if the option to skip is set.
+ if ($optionSkipUser && $receiver == $this->event_args['user_id']) {
+ continue;
+ }
+
+ $channel = get_user_meta($receiver, 'psppno_workflow_channel_' . $this->workflow_post->ID, true);
+
+ // If channel is empty, we set a default channel.
+ if (empty($channel)) {
+ $channel = apply_filters('psppno_default_channel', 'email', $this->workflow_post->ID);
+ }
+
+ // If the channel is "mute", we ignore this receiver.
+ if ('mute' === $channel) {
+ continue;
+ }
+
+ $receiverData['channel'] = $channel;
+
+ // Make sure the array for the channel is initialized.
+ if (!isset($filtered_receivers[$receiverData['group']])) {
+ $filtered_receivers[$receiverData['group']] = [];
+ }
+
+ // Add to the group's list.
+ $filtered_receivers[$receiverData['group']][] = $receiverData;
+ } else {
+ // Doesn't send the notification for the same user that triggered it if the option to skip is set.
+ if ($optionSkipUser && isset($receiverData['receiver'])) {
+ $user_id = email_exists($receiverData['receiver']);
+ if ($user_id == $this->event_args['user_id']) {
+ continue;
+ }
+ }
+ if (!isset($filtered_receivers[$receiverData['group']])) {
+ $filtered_receivers[$receiverData['group']] = [];
+ }
+
+ $filtered_receivers[$receiverData['group']][] = $receiverData;
+ }
+ }
+ }
+
+ return $filtered_receivers;
+ }
+
+ /**
+ * Returns the content for the notification, as an associative array with
+ * the following keys:
+ * - subject
+ * - body
+ *
+ * @return string
+ *
+ * @throws Exception
+ */
+ public function get_content()
+ {
+ $content = ['subject' => '', 'body' => ''];
+
+ /**
+ * Filters the content for the notification workflow.
+ *
+ * @param WP_Post $workflow
+ * @param array $args
+ */
+ $content = apply_filters(
+ 'publishpress_notif_run_workflow_content',
+ $content,
+ $this->workflow_post,
+ $this->event_args
+ );
+
+ if (!array_key_exists('subject', $content)) {
+ $content['subject'] = '';
+ }
+
+ if (!array_key_exists('body', $content)) {
+ $content['body'] = '';
+ }
+
+ return $content;
+ }
+
+ /**
+ * @param array $content
+ * @param mixed $receiver
+ * @param string $channel
+ *
+ * @return array
+ */
+ public function do_shortcodes_in_content($content, $receiver, $channel)
+ {
+ if (empty($this->shortcodesHandler)) {
+ $this->shortcodesHandler = $this->get_service('shortcodes');
+ $this->shortcodesHandler->register($this->workflow_post, $this->event_args);
+ }
+
+ /**
+ * Action triggered before do shortcodes in the content.
+ *
+ * @param string $content
+ * @param mixed $receiver
+ * @param string $channel
+ */
+ do_action('publishpress_workflow_do_shortcode_in_content', $content, $receiver, $channel);
+
+ // Replace placeholders in the subject and body
+ $content['subject'] = do_shortcode($content['subject']);
+ $content['body'] = do_shortcode($content['body']);
+
+ return $content;
+ }
+
+ public function unregister_shortcodes()
+ {
+ $this->shortcodesHandler->unregister();
+ $this->shortcodesHandler = null;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/WorkflowsController.php b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/WorkflowsController.php
new file mode 100644
index 000000000..3e1c48838
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Notifications/Workflow/WorkflowsController.php
@@ -0,0 +1,292 @@
+
+ * @copyright Copyright (c) 2022 PublishPress. All rights reserved.
+ * @license GPLv2 or later
+ * @since 1.0.0
+ */
+
+namespace PublishPress\Notifications\Workflow;
+
+use WP_Query;
+
+class WorkflowsController
+{
+ /**
+ * Store the signatures of sent notifications, usually to avoid duplicated notifications
+ * to the same channel.
+ *
+ * @var array
+ */
+ protected $sent_notification_signatures = [];
+
+ /**
+ * The constructor
+ */
+ public function __construct()
+ {
+ add_action('publishpress_notifications_trigger_workflows', [$this, 'trigger_workflows']);
+ }
+
+ /**
+ * Look for enabled workflows, filtering and running according to each settings.
+ *
+ * $params = [
+ * 'event',
+ * 'params' = [
+ * 'post_id',
+ * 'new_status',
+ * 'old_status',
+ * 'comment_id',
+ * ]
+ * ]
+ *
+ * @param string $event
+ * @param array $params
+ */
+ public function trigger_workflows($params)
+ {
+ try {
+ $query = $this->get_workflows_filter_query($params);
+
+ if (!empty($query->posts)) {
+ foreach (apply_filters('publishpress_post_notification_trigger_workflows', $query->posts) as $workflowPost) {
+ // Run the workflow only if retrieved post has postmeta matching the current event. Note that each event has a different postmeta key.
+ if (!empty($params['event_key']) && get_post_meta($workflowPost->ID, $params['event_key'], true)) {
+ $workflow = new Workflow($workflowPost);
+ $workflow->run($params);
+ }
+ }
+ }
+ } catch (\Exception $e) {
+ error_log(
+ sprintf(
+ '[PublishPress Notifications] Exception: %s, %s',
+ $e->getMessage(),
+ __METHOD__
+ )
+ );
+ }
+ }
+
+ /**
+ * Returns a list of published workflows which passed all filters.
+ *
+ * $args = [
+ * 'post',
+ * 'new_status',
+ * 'old_status',
+ * ]
+ *
+ * @param array $params
+ *
+ * @return WP_Query
+ */
+ public function get_workflows_filter_query($params)
+ {
+ // Build the query
+ $query_args = [
+ 'nopaging' => true,
+ 'post_type' => PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW,
+ 'post_status' => 'publish',
+ 'no_found_rows' => true,
+ 'cache_results' => true,
+ 'meta_query' => [],
+ 'needs_event_filter' => true,
+ ];
+
+ /**
+ * Filters the arguments sent to the query to get workflows and
+ * each step's filters.
+ *
+ * @param array $query_args
+ * @param array $params
+ */
+ $query_args = apply_filters('publishpress_notifications_running_workflow_meta_query', $query_args, $params);
+
+ if (empty($query_args['meta_query']) || isset($query_args['needs_event_filter'])) {
+ return (object) ['posts' => []];
+ }
+
+ return new WP_Query($query_args);
+ }
+
+ /**
+ * Loads instantiating the classes for the workflow steps.
+ */
+ public function load_workflow_steps()
+ {
+ // Options
+ $classes_options = [
+ '\\PublishPress\\Notifications\\Workflow\\Option\\SkipUser',
+ ];
+ /**
+ * Filters the list of classes to define workflow "options"
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_options = apply_filters('publishpress_notif_workflow_options_classes', $classes_options);
+
+ // When
+ $classes_event = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Editorial_Comment',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_Update',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_TaxonomyUpdate',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_StatusTransition',
+ ];
+ /**
+ * Filters the list of classes to define workflow "when" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_event = apply_filters('publishpress_notif_workflow_steps_event', $classes_event);
+
+ // Which Content
+ $classes_event_content = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Post_Type',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Category',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Taxonomy',
+ ];
+ /**
+ * Filters the list of classes to define workflow "when - which content" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_event_content = apply_filters(
+ 'publishpress_notif_workflow_steps_event_content',
+ $classes_event_content
+ );
+
+ // Who
+ $classes_receiver = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Site_Admin',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Author',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\RevisionAuthor',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\User',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Role',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Group',
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Follower',
+ ];
+
+ if (!defined('PRESSPERMIT_VERSION')) {
+ $classes_receiver = array_diff($classes_receiver, ['\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Group']);
+ }
+
+ if (!defined('PUBLISHPRESS_REVISIONS_PRO_VERSION') || version_compare(PUBLISHPRESS_REVISIONS_PRO_VERSION, '3.6.3-rc3', '<')) {
+ $classes_receiver = array_diff($classes_receiver, ['\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\RevisionAuthor']);
+ }
+
+ /**
+ * Filters the list of classes to define workflow "who" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_receiver = apply_filters('publishpress_notif_workflow_steps_receiver', $classes_receiver);
+
+ // Where
+ $classes_channel = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Channel\\Email',
+ ];
+ /**
+ * Filters the list of classes to define workflow "where" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_channel = apply_filters('publishpress_notif_workflow_steps_channel', $classes_channel);
+
+ // What
+ $classes_content = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Content\\Main',
+ ];
+ /**
+ * Filters the list of classes to define workflow "what" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_content = apply_filters('publishpress_notif_workflow_steps_content', $classes_content);
+
+ // Actions
+ $classes_action = [
+ '\\PublishPress\\Notifications\\Workflow\\Step\\Action\\Notification',
+ ];
+ /**
+ * Filters the list of classes to define workflow "action" steps.
+ *
+ * @param array $classes The list of classes to be loaded
+ */
+ $classes_action = apply_filters('publishpress_notif_workflow_steps_action', $classes_action);
+
+
+ $classes = array_merge(
+ $classes_options,
+ $classes_event,
+ $classes_event_content,
+ $classes_receiver,
+ $classes_channel,
+ $classes_content,
+ $classes_action
+ );
+
+ // Instantiate each class
+ foreach ($classes as $class) {
+ if (class_exists($class)) {
+ new $class;
+ }
+ }
+ }
+
+ /**
+ * @param $signature
+ */
+ public function register_notification_signature($signature)
+ {
+ $this->sent_notification_signatures[$signature] = true;
+ }
+
+ /**
+ * @param $signature
+ *
+ * @return bool
+ */
+ public function is_notification_signature_registered($signature)
+ {
+ $found = array_key_exists($signature, $this->sent_notification_signatures);
+
+ return $found;
+ }
+
+ public function get_filtered_workflows($args)
+ {
+ $workflows = [];
+
+ // Build the query
+ $query_args = [
+ 'nopaging' => true,
+ 'post_type' => PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW,
+ 'post_status' => 'publish',
+ 'no_found_rows' => true,
+ 'cache_results' => true,
+ 'meta_query' => [],
+ ];
+
+ /**
+ * Filters the arguments sent to the query to get workflows and
+ * each step's filters.
+ *
+ * @param array $query_args
+ * @param array $args
+ */
+ $query_args = apply_filters('publishpress_notifications_running_workflow_meta_query', $query_args, $args);
+
+ $query = new WP_Query($query_args);
+
+ if (!empty($query->posts)) {
+ foreach ($query->posts as $post) {
+ $workflows[] = new Workflow($post);
+ }
+ }
+
+ return $workflows;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/Utility/Date.php b/public/wp-content/plugins/publishpress/lib/Utility/Date.php
new file mode 100644
index 000000000..5a146a6aa
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/Utility/Date.php
@@ -0,0 +1,86 @@
+.
+ */
+
+namespace PublishPress\Utility;
+
+use DateTimeZone;
+
+class Date
+{
+ public function getTimezoneOffset()
+ {
+ $offset = get_option('gmt_offset', '0');
+
+ if (empty($offset)) {
+ $offset = '0';
+ }
+
+ return $offset;
+ }
+
+ /**
+ * @param string $offset
+ *
+ * @return string
+ */
+ public function formatTimezoneOffset($offset)
+ {
+ $offset = (float)$offset;
+
+ if (0.0 === $offset) {
+ return '+0000';
+ }
+
+ $signal = $offset >= 0 ? '+' : '-';
+ $offset = abs($offset);
+
+ $whole = (int)$offset;
+ $decimal = $offset - $whole;
+
+ $formattedOffset = $signal . str_pad($whole, 2, '0', STR_PAD_LEFT);
+ $formattedOffset .= (0.0 === $decimal) ? '00' : '30';
+
+ return $formattedOffset;
+ }
+
+ public function getTimezoneString()
+ {
+ $timezoneString = get_option('timezone_string');
+
+ if (empty($timezoneString)) {
+ $offset = $this->formatTimezoneOffset(get_option('gmt_offset', '0'));
+
+ $timezoneString = new DateTimeZone($offset);
+ $timezoneString = $timezoneString->getName();
+ }
+
+ return $timezoneString;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/autoload.php b/public/wp-content/plugins/publishpress/lib/vendor/autoload.php
new file mode 100644
index 000000000..eee0ef9e8
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/autoload.php
@@ -0,0 +1,25 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
+ // PSR-4
+ /**
+ * @var array>
+ */
+ private $prefixLengthsPsr4 = array();
+ /**
+ * @var array>
+ */
+ private $prefixDirsPsr4 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array>>
+ */
+ private $prefixesPsr0 = array();
+ /**
+ * @var list
+ */
+ private $fallbackDirsPsr0 = array();
+
+ /** @var bool */
+ private $useIncludePath = false;
+
+ /**
+ * @var array
+ */
+ private $classMap = array();
+
+ /** @var bool */
+ private $classMapAuthoritative = false;
+
+ /**
+ * @var array
+ */
+ private $missingClasses = array();
+
+ /** @var string|null */
+ private $apcuPrefix;
+
+ /**
+ * @var array
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ /**
+ * @return array>
+ */
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ /**
+ * @return list
+ */
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ /**
+ * @return array Array of classname => path
+ */
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ *
+ * @return void
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ $paths = (array) $paths;
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param list|string $paths The PSR-0 base directories
+ *
+ * @return void
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ *
+ * @return void
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ *
+ * @return void
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ *
+ * @return void
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ $includeFile = self::$includeFile;
+ $includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/InstalledVersions.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/InstalledVersions.php
new file mode 100644
index 000000000..51e734a77
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/InstalledVersions.php
@@ -0,0 +1,359 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/LICENSE b/public/wp-content/plugins/publishpress/lib/vendor/composer/LICENSE
new file mode 100644
index 000000000..f27399a04
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_classmap.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_classmap.php
new file mode 100644
index 000000000..528587ace
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_classmap.php
@@ -0,0 +1,73 @@
+ $vendorDir . '/composer/InstalledVersions.php',
+ 'Sabre\\VObject\\Cli' => $vendorDir . '/sabre/vobject/lib/Cli.php',
+ 'Sabre\\VObject\\Component' => $vendorDir . '/sabre/vobject/lib/Component.php',
+ 'Sabre\\VObject\\Component\\Available' => $vendorDir . '/sabre/vobject/lib/Component/Available.php',
+ 'Sabre\\VObject\\Component\\VAlarm' => $vendorDir . '/sabre/vobject/lib/Component/VAlarm.php',
+ 'Sabre\\VObject\\Component\\VAvailability' => $vendorDir . '/sabre/vobject/lib/Component/VAvailability.php',
+ 'Sabre\\VObject\\Component\\VCalendar' => $vendorDir . '/sabre/vobject/lib/Component/VCalendar.php',
+ 'Sabre\\VObject\\Component\\VCard' => $vendorDir . '/sabre/vobject/lib/Component/VCard.php',
+ 'Sabre\\VObject\\Component\\VEvent' => $vendorDir . '/sabre/vobject/lib/Component/VEvent.php',
+ 'Sabre\\VObject\\Component\\VFreeBusy' => $vendorDir . '/sabre/vobject/lib/Component/VFreeBusy.php',
+ 'Sabre\\VObject\\Component\\VJournal' => $vendorDir . '/sabre/vobject/lib/Component/VJournal.php',
+ 'Sabre\\VObject\\Component\\VTimeZone' => $vendorDir . '/sabre/vobject/lib/Component/VTimeZone.php',
+ 'Sabre\\VObject\\Component\\VTodo' => $vendorDir . '/sabre/vobject/lib/Component/VTodo.php',
+ 'Sabre\\VObject\\DateTimeParser' => $vendorDir . '/sabre/vobject/lib/DateTimeParser.php',
+ 'Sabre\\VObject\\Document' => $vendorDir . '/sabre/vobject/lib/Document.php',
+ 'Sabre\\VObject\\ElementList' => $vendorDir . '/sabre/vobject/lib/ElementList.php',
+ 'Sabre\\VObject\\EofException' => $vendorDir . '/sabre/vobject/lib/EofException.php',
+ 'Sabre\\VObject\\FreeBusyGenerator' => $vendorDir . '/sabre/vobject/lib/FreeBusyGenerator.php',
+ 'Sabre\\VObject\\ITip\\Broker' => $vendorDir . '/sabre/vobject/lib/ITip/Broker.php',
+ 'Sabre\\VObject\\ITip\\ITipException' => $vendorDir . '/sabre/vobject/lib/ITip/ITipException.php',
+ 'Sabre\\VObject\\ITip\\Message' => $vendorDir . '/sabre/vobject/lib/ITip/Message.php',
+ 'Sabre\\VObject\\ITip\\SameOrganizerForAllComponentsException' => $vendorDir . '/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php',
+ 'Sabre\\VObject\\Node' => $vendorDir . '/sabre/vobject/lib/Node.php',
+ 'Sabre\\VObject\\Parameter' => $vendorDir . '/sabre/vobject/lib/Parameter.php',
+ 'Sabre\\VObject\\ParseException' => $vendorDir . '/sabre/vobject/lib/ParseException.php',
+ 'Sabre\\VObject\\Parser\\Json' => $vendorDir . '/sabre/vobject/lib/Parser/Json.php',
+ 'Sabre\\VObject\\Parser\\MimeDir' => $vendorDir . '/sabre/vobject/lib/Parser/MimeDir.php',
+ 'Sabre\\VObject\\Parser\\Parser' => $vendorDir . '/sabre/vobject/lib/Parser/Parser.php',
+ 'Sabre\\VObject\\Property' => $vendorDir . '/sabre/vobject/lib/Property.php',
+ 'Sabre\\VObject\\Property\\Binary' => $vendorDir . '/sabre/vobject/lib/Property/Binary.php',
+ 'Sabre\\VObject\\Property\\Boolean' => $vendorDir . '/sabre/vobject/lib/Property/Boolean.php',
+ 'Sabre\\VObject\\Property\\FlatText' => $vendorDir . '/sabre/vobject/lib/Property/FlatText.php',
+ 'Sabre\\VObject\\Property\\FloatValue' => $vendorDir . '/sabre/vobject/lib/Property/FloatValue.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\CalAddress' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/CalAddress.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Date' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Date.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\DateTime' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/DateTime.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Duration' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Duration.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Period' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Period.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Recur' => $vendorDir . '/sabre/vobject/lib/Property/ICalendar/Recur.php',
+ 'Sabre\\VObject\\Property\\IntegerValue' => $vendorDir . '/sabre/vobject/lib/Property/IntegerValue.php',
+ 'Sabre\\VObject\\Property\\Text' => $vendorDir . '/sabre/vobject/lib/Property/Text.php',
+ 'Sabre\\VObject\\Property\\Time' => $vendorDir . '/sabre/vobject/lib/Property/Time.php',
+ 'Sabre\\VObject\\Property\\Unknown' => $vendorDir . '/sabre/vobject/lib/Property/Unknown.php',
+ 'Sabre\\VObject\\Property\\Uri' => $vendorDir . '/sabre/vobject/lib/Property/Uri.php',
+ 'Sabre\\VObject\\Property\\UtcOffset' => $vendorDir . '/sabre/vobject/lib/Property/UtcOffset.php',
+ 'Sabre\\VObject\\Property\\VCard\\Date' => $vendorDir . '/sabre/vobject/lib/Property/VCard/Date.php',
+ 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateAndOrTime.php',
+ 'Sabre\\VObject\\Property\\VCard\\DateTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateTime.php',
+ 'Sabre\\VObject\\Property\\VCard\\LanguageTag' => $vendorDir . '/sabre/vobject/lib/Property/VCard/LanguageTag.php',
+ 'Sabre\\VObject\\Property\\VCard\\TimeStamp' => $vendorDir . '/sabre/vobject/lib/Property/VCard/TimeStamp.php',
+ 'Sabre\\VObject\\Reader' => $vendorDir . '/sabre/vobject/lib/Reader.php',
+ 'Sabre\\VObject\\Recur\\EventIterator' => $vendorDir . '/sabre/vobject/lib/Recur/EventIterator.php',
+ 'Sabre\\VObject\\Recur\\NoInstancesException' => $vendorDir . '/sabre/vobject/lib/Recur/NoInstancesException.php',
+ 'Sabre\\VObject\\Recur\\RDateIterator' => $vendorDir . '/sabre/vobject/lib/Recur/RDateIterator.php',
+ 'Sabre\\VObject\\Recur\\RRuleIterator' => $vendorDir . '/sabre/vobject/lib/Recur/RRuleIterator.php',
+ 'Sabre\\VObject\\RecurrenceIterator' => $vendorDir . '/sabre/vobject/lib/RecurrenceIterator.php',
+ 'Sabre\\VObject\\Splitter\\ICalendar' => $vendorDir . '/sabre/vobject/lib/Splitter/ICalendar.php',
+ 'Sabre\\VObject\\Splitter\\SplitterInterface' => $vendorDir . '/sabre/vobject/lib/Splitter/SplitterInterface.php',
+ 'Sabre\\VObject\\Splitter\\VCard' => $vendorDir . '/sabre/vobject/lib/Splitter/VCard.php',
+ 'Sabre\\VObject\\StringUtil' => $vendorDir . '/sabre/vobject/lib/StringUtil.php',
+ 'Sabre\\VObject\\TimeZoneUtil' => $vendorDir . '/sabre/vobject/lib/TimeZoneUtil.php',
+ 'Sabre\\VObject\\UUIDUtil' => $vendorDir . '/sabre/vobject/lib/UUIDUtil.php',
+ 'Sabre\\VObject\\VCardConverter' => $vendorDir . '/sabre/vobject/lib/VCardConverter.php',
+ 'Sabre\\VObject\\Version' => $vendorDir . '/sabre/vobject/lib/Version.php',
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_files.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_files.php
new file mode 100644
index 000000000..2fd444363
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_files.php
@@ -0,0 +1,14 @@
+ $vendorDir . '/publishpress/psr-container/lib/include.php',
+ '24b27b1b9a32bf58eda571c3e5ae3480' => $vendorDir . '/publishpress/pimple-pimple/lib/include.php',
+ '41c664bd04a95c2d6a2f2a3e00f06593' => $vendorDir . '/publishpress/wordpress-reviews/ReviewsController.php',
+ 'a61bc28a742b9f9f2fd5ef4d2d1e2037' => $vendorDir . '/publishpress/wordpress-version-notices/src/include.php',
+ '59941b7e758a3c420e04e0d83d11f4a0' => $baseDir . '/../defines-free-plugin-path.php',
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_namespaces.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_namespaces.php
new file mode 100644
index 000000000..15a2ff3ad
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+ array($vendorDir . '/sabre/vobject/lib'),
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_real.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_real.php
new file mode 100644
index 000000000..d220f05e5
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_real.php
@@ -0,0 +1,48 @@
+register(true);
+
+ $filesToLoad = \Composer\Autoload\ComposerStaticInitPublishPressPlanner::$files;
+ $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+ require $file;
+ }
+ }, null, null);
+ foreach ($filesToLoad as $fileIdentifier => $file) {
+ $requireFile($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_static.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_static.php
new file mode 100644
index 000000000..368fde644
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/autoload_static.php
@@ -0,0 +1,107 @@
+ __DIR__ . '/..' . '/publishpress/psr-container/lib/include.php',
+ '24b27b1b9a32bf58eda571c3e5ae3480' => __DIR__ . '/..' . '/publishpress/pimple-pimple/lib/include.php',
+ '41c664bd04a95c2d6a2f2a3e00f06593' => __DIR__ . '/..' . '/publishpress/wordpress-reviews/ReviewsController.php',
+ 'a61bc28a742b9f9f2fd5ef4d2d1e2037' => __DIR__ . '/..' . '/publishpress/wordpress-version-notices/src/include.php',
+ '59941b7e758a3c420e04e0d83d11f4a0' => __DIR__ . '/../..' . '/../defines-free-plugin-path.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'S' =>
+ array (
+ 'Sabre\\VObject\\' => 14,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'Sabre\\VObject\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/sabre/vobject/lib',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'Sabre\\VObject\\Cli' => __DIR__ . '/..' . '/sabre/vobject/lib/Cli.php',
+ 'Sabre\\VObject\\Component' => __DIR__ . '/..' . '/sabre/vobject/lib/Component.php',
+ 'Sabre\\VObject\\Component\\Available' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/Available.php',
+ 'Sabre\\VObject\\Component\\VAlarm' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VAlarm.php',
+ 'Sabre\\VObject\\Component\\VAvailability' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VAvailability.php',
+ 'Sabre\\VObject\\Component\\VCalendar' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VCalendar.php',
+ 'Sabre\\VObject\\Component\\VCard' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VCard.php',
+ 'Sabre\\VObject\\Component\\VEvent' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VEvent.php',
+ 'Sabre\\VObject\\Component\\VFreeBusy' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VFreeBusy.php',
+ 'Sabre\\VObject\\Component\\VJournal' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VJournal.php',
+ 'Sabre\\VObject\\Component\\VTimeZone' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VTimeZone.php',
+ 'Sabre\\VObject\\Component\\VTodo' => __DIR__ . '/..' . '/sabre/vobject/lib/Component/VTodo.php',
+ 'Sabre\\VObject\\DateTimeParser' => __DIR__ . '/..' . '/sabre/vobject/lib/DateTimeParser.php',
+ 'Sabre\\VObject\\Document' => __DIR__ . '/..' . '/sabre/vobject/lib/Document.php',
+ 'Sabre\\VObject\\ElementList' => __DIR__ . '/..' . '/sabre/vobject/lib/ElementList.php',
+ 'Sabre\\VObject\\EofException' => __DIR__ . '/..' . '/sabre/vobject/lib/EofException.php',
+ 'Sabre\\VObject\\FreeBusyGenerator' => __DIR__ . '/..' . '/sabre/vobject/lib/FreeBusyGenerator.php',
+ 'Sabre\\VObject\\ITip\\Broker' => __DIR__ . '/..' . '/sabre/vobject/lib/ITip/Broker.php',
+ 'Sabre\\VObject\\ITip\\ITipException' => __DIR__ . '/..' . '/sabre/vobject/lib/ITip/ITipException.php',
+ 'Sabre\\VObject\\ITip\\Message' => __DIR__ . '/..' . '/sabre/vobject/lib/ITip/Message.php',
+ 'Sabre\\VObject\\ITip\\SameOrganizerForAllComponentsException' => __DIR__ . '/..' . '/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php',
+ 'Sabre\\VObject\\Node' => __DIR__ . '/..' . '/sabre/vobject/lib/Node.php',
+ 'Sabre\\VObject\\Parameter' => __DIR__ . '/..' . '/sabre/vobject/lib/Parameter.php',
+ 'Sabre\\VObject\\ParseException' => __DIR__ . '/..' . '/sabre/vobject/lib/ParseException.php',
+ 'Sabre\\VObject\\Parser\\Json' => __DIR__ . '/..' . '/sabre/vobject/lib/Parser/Json.php',
+ 'Sabre\\VObject\\Parser\\MimeDir' => __DIR__ . '/..' . '/sabre/vobject/lib/Parser/MimeDir.php',
+ 'Sabre\\VObject\\Parser\\Parser' => __DIR__ . '/..' . '/sabre/vobject/lib/Parser/Parser.php',
+ 'Sabre\\VObject\\Property' => __DIR__ . '/..' . '/sabre/vobject/lib/Property.php',
+ 'Sabre\\VObject\\Property\\Binary' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Binary.php',
+ 'Sabre\\VObject\\Property\\Boolean' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Boolean.php',
+ 'Sabre\\VObject\\Property\\FlatText' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/FlatText.php',
+ 'Sabre\\VObject\\Property\\FloatValue' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/FloatValue.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\CalAddress' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/CalAddress.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Date' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/Date.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\DateTime' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/DateTime.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Duration' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/Duration.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Period' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/Period.php',
+ 'Sabre\\VObject\\Property\\ICalendar\\Recur' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/ICalendar/Recur.php',
+ 'Sabre\\VObject\\Property\\IntegerValue' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/IntegerValue.php',
+ 'Sabre\\VObject\\Property\\Text' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Text.php',
+ 'Sabre\\VObject\\Property\\Time' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Time.php',
+ 'Sabre\\VObject\\Property\\Unknown' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Unknown.php',
+ 'Sabre\\VObject\\Property\\Uri' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/Uri.php',
+ 'Sabre\\VObject\\Property\\UtcOffset' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/UtcOffset.php',
+ 'Sabre\\VObject\\Property\\VCard\\Date' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/Date.php',
+ 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/DateAndOrTime.php',
+ 'Sabre\\VObject\\Property\\VCard\\DateTime' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/DateTime.php',
+ 'Sabre\\VObject\\Property\\VCard\\LanguageTag' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/LanguageTag.php',
+ 'Sabre\\VObject\\Property\\VCard\\TimeStamp' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/TimeStamp.php',
+ 'Sabre\\VObject\\Reader' => __DIR__ . '/..' . '/sabre/vobject/lib/Reader.php',
+ 'Sabre\\VObject\\Recur\\EventIterator' => __DIR__ . '/..' . '/sabre/vobject/lib/Recur/EventIterator.php',
+ 'Sabre\\VObject\\Recur\\NoInstancesException' => __DIR__ . '/..' . '/sabre/vobject/lib/Recur/NoInstancesException.php',
+ 'Sabre\\VObject\\Recur\\RDateIterator' => __DIR__ . '/..' . '/sabre/vobject/lib/Recur/RDateIterator.php',
+ 'Sabre\\VObject\\Recur\\RRuleIterator' => __DIR__ . '/..' . '/sabre/vobject/lib/Recur/RRuleIterator.php',
+ 'Sabre\\VObject\\RecurrenceIterator' => __DIR__ . '/..' . '/sabre/vobject/lib/RecurrenceIterator.php',
+ 'Sabre\\VObject\\Splitter\\ICalendar' => __DIR__ . '/..' . '/sabre/vobject/lib/Splitter/ICalendar.php',
+ 'Sabre\\VObject\\Splitter\\SplitterInterface' => __DIR__ . '/..' . '/sabre/vobject/lib/Splitter/SplitterInterface.php',
+ 'Sabre\\VObject\\Splitter\\VCard' => __DIR__ . '/..' . '/sabre/vobject/lib/Splitter/VCard.php',
+ 'Sabre\\VObject\\StringUtil' => __DIR__ . '/..' . '/sabre/vobject/lib/StringUtil.php',
+ 'Sabre\\VObject\\TimeZoneUtil' => __DIR__ . '/..' . '/sabre/vobject/lib/TimeZoneUtil.php',
+ 'Sabre\\VObject\\UUIDUtil' => __DIR__ . '/..' . '/sabre/vobject/lib/UUIDUtil.php',
+ 'Sabre\\VObject\\VCardConverter' => __DIR__ . '/..' . '/sabre/vobject/lib/VCardConverter.php',
+ 'Sabre\\VObject\\Version' => __DIR__ . '/..' . '/sabre/vobject/lib/Version.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInitPublishPressPlanner::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInitPublishPressPlanner::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInitPublishPressPlanner::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.json b/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.json
new file mode 100644
index 000000000..ca7e5238b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.json
@@ -0,0 +1,464 @@
+{
+ "packages": [
+ {
+ "name": "publishpress/instance-protection",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/publishpress/library-instance-protection.git",
+ "reference": "4193f84a8a680bf4c0d40cc64976ddcadd92158a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/publishpress/library-instance-protection/zipball/4193f84a8a680bf4c0d40cc64976ddcadd92158a",
+ "reference": "4193f84a8a680bf4c0d40cc64976ddcadd92158a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "time": "2023-04-18T17:50:38+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "PublishPress",
+ "email": "help@publishpress.com"
+ }
+ ],
+ "description": "Library for protecting WordPress plugins to run twice.",
+ "homepage": "http://publishpress.com/",
+ "keywords": [
+ "wordpress plugin"
+ ],
+ "support": {
+ "issues": "https://github.com/publishpress/library-instance-protection/issues",
+ "source": "https://github.com/publishpress/library-instance-protection/tree/2.0.1"
+ },
+ "install-path": "../publishpress/instance-protection"
+ },
+ {
+ "name": "publishpress/pimple-pimple",
+ "version": "3.5.0.10",
+ "version_normalized": "3.5.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/publishpress/library-pimple-pimple.git",
+ "reference": "f2784f4b1ccaf195b373a46a74cf3742e7c9f826"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/publishpress/library-pimple-pimple/zipball/f2784f4b1ccaf195b373a46a74cf3742e7c9f826",
+ "reference": "f2784f4b1ccaf195b373a46a74cf3742e7c9f826",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "publishpress/psr-container": "^2.0.1.10"
+ },
+ "require-dev": {
+ "brianhenryie/strauss": "^0.14.0",
+ "codeception/module-asserts": "^1.0",
+ "codeception/module-cli": "^1.0",
+ "codeception/module-db": "^1.0",
+ "codeception/module-filesystem": "^1.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-webdriver": "^1.0",
+ "codeception/util-universalframework": "^1.0",
+ "lucatume/wp-browser": "^3.1",
+ "pimple/pimple": "3.5.0",
+ "publishpress/codeception-extension-extended-copier": "^1.0",
+ "publishpress/version-loader-generator": "^1.0"
+ },
+ "time": "2023-05-30T18:41:10+00:00",
+ "type": "library",
+ "extra": {
+ "generator": {
+ "lib-class-test": "class_exists('PublishPress\\Pimple\\Container')",
+ "action-initialize-priority": "-185",
+ "action-register-priority": "-200"
+ },
+ "strauss": {
+ "target_directory": "lib",
+ "namespace_prefix": "PublishPress\\",
+ "classmap_prefix": "PublishPress_",
+ "constant_prefix": "PUBLISHPRESS_",
+ "include_author": "true",
+ "classmap_output": "true",
+ "packages": [
+ "pimple/pimple",
+ "psr/container"
+ ],
+ "override_autoload": [],
+ "exclude_from_copy": {
+ "packages": [],
+ "namespaces": [],
+ "file_patterns": []
+ },
+ "exclude_from_prefix": {
+ "packages": [],
+ "namespaces": [],
+ "file_patterns": []
+ },
+ "namespace_replacement_patterns": [],
+ "delete_vendor_packages": true,
+ "delete_vendor_files": true
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "PublishPress",
+ "email": "help@publishpress.com"
+ }
+ ],
+ "description": "Pimple, a simple Dependency Injection Container, prefixed for PublishPress",
+ "homepage": "https://github.com/silexphp/Pimple/",
+ "keywords": [
+ "container",
+ "dependency injection",
+ "publishpress"
+ ],
+ "support": {
+ "issues": "https://github.com/publishpress/library-pimple-pimple/issues",
+ "source": "https://github.com/publishpress/library-pimple-pimple/tree/3.5.0.10"
+ },
+ "install-path": "../publishpress/pimple-pimple"
+ },
+ {
+ "name": "publishpress/psr-container",
+ "version": "2.0.1.10",
+ "version_normalized": "2.0.1.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/publishpress/library-psr-container.git",
+ "reference": "4ccd2cb058e7b93e96186791ca25870a02e35c5d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/publishpress/library-psr-container/zipball/4ccd2cb058e7b93e96186791ca25870a02e35c5d",
+ "reference": "4ccd2cb058e7b93e96186791ca25870a02e35c5d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "require-dev": {
+ "brianhenryie/strauss": "^0.14.0",
+ "codeception/module-asserts": "^1.0",
+ "codeception/module-cli": "^1.0",
+ "codeception/module-db": "^1.0",
+ "codeception/module-filesystem": "^1.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-webdriver": "^1.0",
+ "codeception/util-universalframework": "^1.0",
+ "lucatume/wp-browser": "^3.1",
+ "psr/container": "2.0.1",
+ "publishpress/codeception-extension-extended-copier": "^1.0",
+ "publishpress/version-loader-generator": "^1.0"
+ },
+ "time": "2023-05-30T18:17:45+00:00",
+ "type": "library",
+ "extra": {
+ "generator": {
+ "lib-class-test": "interface_exists('PublishPress\\Psr\\Container\\ContainerInterface')",
+ "action-initialize-priority": "-190",
+ "action-register-priority": "-200"
+ },
+ "strauss": {
+ "target_directory": "lib",
+ "namespace_prefix": "PublishPress\\",
+ "classmap_prefix": "PublishPress_",
+ "constant_prefix": "PUBLISHPRESS_",
+ "include_author": "true",
+ "classmap_output": "true",
+ "packages": [
+ "psr/container"
+ ],
+ "override_autoload": [],
+ "exclude_from_copy": {
+ "packages": [],
+ "namespaces": [],
+ "file_patterns": []
+ },
+ "exclude_from_prefix": {
+ "packages": [],
+ "namespaces": [],
+ "file_patterns": []
+ },
+ "namespace_replacement_patterns": [],
+ "delete_vendor_packages": true,
+ "delete_vendor_files": true
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ },
+ {
+ "name": "PublishPress",
+ "email": "help@publishpress.com"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11), prefixed for PublishPress plugins",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr",
+ "publishpress"
+ ],
+ "support": {
+ "issues": "https://github.com/publishpress/library-psr-container/issues",
+ "source": "https://github.com/publishpress/library-psr-container/tree/2.0.1.10"
+ },
+ "install-path": "../publishpress/psr-container"
+ },
+ {
+ "name": "publishpress/wordpress-reviews",
+ "version": "v1.1.20",
+ "version_normalized": "1.1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/publishpress/library-wordpress-reviews.git",
+ "reference": "6d0b687a66439721b0432ef1320fd818cd56309f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/publishpress/library-wordpress-reviews/zipball/6d0b687a66439721b0432ef1320fd818cd56309f",
+ "reference": "6d0b687a66439721b0432ef1320fd818cd56309f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.20"
+ },
+ "require-dev": {
+ "codeception/module-asserts": "^1.0",
+ "codeception/module-cli": "^1.0",
+ "codeception/module-db": "^1.0",
+ "codeception/module-filesystem": "^1.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-rest": "^1.3",
+ "codeception/module-webdriver": "^1.0",
+ "codeception/util-universalframework": "^1.0",
+ "lucatume/wp-browser": "^3",
+ "overtrue/phplint": "^2.1",
+ "phpmd/phpmd": "^2.8",
+ "publishpress/publishpress-plugin-builder": "^1.2",
+ "squizlabs/php_codesniffer": "^3.5",
+ "wp-cli/i18n-command": "^2.2",
+ "wp-cli/wp-cli": "^2.5"
+ },
+ "time": "2023-10-06T17:22:31+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "ReviewsController.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "PublishPress",
+ "email": "help@publishpress.com"
+ },
+ {
+ "name": "Daniel Iser",
+ "homepage": "https://github.com/danieliser/WP-Product-In-Dash-Review-Requests"
+ }
+ ],
+ "description": "Library for showing a five-star review banner.",
+ "homepage": "http://publishpress.com/",
+ "keywords": [
+ "review",
+ "reviews",
+ "wordpress plugin"
+ ],
+ "support": {
+ "issues": "https://github.com/publishpress/library-wordpress-reviews/issues",
+ "source": "https://github.com/publishpress/library-wordpress-reviews/tree/v1.1.20"
+ },
+ "install-path": "../publishpress/wordpress-reviews"
+ },
+ {
+ "name": "publishpress/wordpress-version-notices",
+ "version": "2.1.3",
+ "version_normalized": "2.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/publishpress/library-wordpress-version-notices.git",
+ "reference": "8e54558d2427a0f93174ccbc1d02c1ba7e2abc8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/publishpress/library-wordpress-version-notices/zipball/8e54558d2427a0f93174ccbc1d02c1ba7e2abc8d",
+ "reference": "8e54558d2427a0f93174ccbc1d02c1ba7e2abc8d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "publishpress/pimple-pimple": "^3.5.0.0",
+ "publishpress/psr-container": "^2.0.1.0"
+ },
+ "require-dev": {
+ "codeception/module-asserts": "^1.0",
+ "codeception/module-cli": "^1.0",
+ "codeception/module-db": "^1.0",
+ "codeception/module-filesystem": "^1.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-rest": "^1.3",
+ "codeception/module-webdriver": "^1.0",
+ "codeception/util-universalframework": "^1.0",
+ "composer/composer": "2.2.12",
+ "lucatume/wp-browser": "^3",
+ "overtrue/phplint": "^2.1",
+ "publishpress/version-loader-generator": "^1.0"
+ },
+ "time": "2023-10-11T15:04:44+00:00",
+ "type": "library",
+ "extra": {
+ "generator": {
+ "lib-class-test": "class_exists('PublishPress\\WordpressVersionNotices\\ServicesProvider')",
+ "src-dir": "src",
+ "action-initialize-priority": "-150",
+ "action-register-priority": "-190"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "PublishPress",
+ "email": "help@publishpress.com",
+ "homepage": "https://publishpress.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for displaying version notices for Pro plugins in WordPress.",
+ "support": {
+ "issues": "https://github.com/publishpress/library-wordpress-version-notices/issues",
+ "source": "https://github.com/publishpress/library-wordpress-version-notices/tree/2.1.3"
+ },
+ "install-path": "../publishpress/wordpress-version-notices"
+ },
+ {
+ "name": "sabre/vobject",
+ "version": "3.5.3",
+ "version_normalized": "3.5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sabre-io/vobject.git",
+ "reference": "129d80533a9ec0d9cacfb50b51180c34edb6874c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/129d80533a9ec0d9cacfb50b51180c34edb6874c",
+ "reference": "129d80533a9ec0d9cacfb50b51180c34edb6874c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*",
+ "squizlabs/php_codesniffer": "*"
+ },
+ "time": "2016-10-07T03:20:40+00:00",
+ "bin": [
+ "bin/vobject",
+ "bin/generate_vcards"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sabre\\VObject\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Evert Pot",
+ "email": "me@evertpot.com",
+ "homepage": "http://evertpot.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Dominik Tobschall",
+ "email": "dominik@fruux.com",
+ "homepage": "http://tobschall.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "The VObject library for PHP allows you to easily parse and manipulate iCalendar and vCard objects",
+ "homepage": "http://sabre.io/vobject/",
+ "keywords": [
+ "VObject",
+ "iCalendar",
+ "jCal",
+ "jCard",
+ "vCard"
+ ],
+ "support": {
+ "forum": "https://groups.google.com/group/sabredav-discuss",
+ "issues": "https://github.com/sabre-io/vobject/issues",
+ "source": "https://github.com/fruux/sabre-vobject"
+ },
+ "install-path": "../sabre/vobject"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": []
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.php b/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.php
new file mode 100644
index 000000000..df2d82528
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/composer/installed.php
@@ -0,0 +1,77 @@
+ array(
+ 'name' => '__root__',
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'reference' => NULL,
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev' => true,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'reference' => NULL,
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'publishpress/instance-protection' => array(
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'reference' => '4193f84a8a680bf4c0d40cc64976ddcadd92158a',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../publishpress/instance-protection',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'publishpress/pimple-pimple' => array(
+ 'pretty_version' => '3.5.0.10',
+ 'version' => '3.5.0.10',
+ 'reference' => 'f2784f4b1ccaf195b373a46a74cf3742e7c9f826',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../publishpress/pimple-pimple',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'publishpress/psr-container' => array(
+ 'pretty_version' => '2.0.1.10',
+ 'version' => '2.0.1.10',
+ 'reference' => '4ccd2cb058e7b93e96186791ca25870a02e35c5d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../publishpress/psr-container',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'publishpress/wordpress-reviews' => array(
+ 'pretty_version' => 'v1.1.20',
+ 'version' => '1.1.20.0',
+ 'reference' => '6d0b687a66439721b0432ef1320fd818cd56309f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../publishpress/wordpress-reviews',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'publishpress/wordpress-version-notices' => array(
+ 'pretty_version' => '2.1.3',
+ 'version' => '2.1.3.0',
+ 'reference' => '8e54558d2427a0f93174ccbc1d02c1ba7e2abc8d',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../publishpress/wordpress-version-notices',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'sabre/vobject' => array(
+ 'pretty_version' => '3.5.3',
+ 'version' => '3.5.3.0',
+ 'reference' => '129d80533a9ec0d9cacfb50b51180c34edb6874c',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sabre/vobject',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/LICENSE b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/LICENSE
new file mode 100644
index 000000000..f288702d2
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+ .
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Autoloader.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Autoloader.php
new file mode 100644
index 000000000..d4c6d1448
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Autoloader.php
@@ -0,0 +1,189 @@
+register();
+ *
+ * // register the base directories for the namespace prefix
+ * $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/src');
+ * $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/tests');
+ *
+ * The following line would cause the autoloader to attempt to load the
+ * \Foo\Bar\Qux\Quux class from /path/to/packages/foo-bar/src/Qux/Quux.php:
+ *
+ * prefixes[$prefix]) === false) {
+ $this->prefixes[$prefix] = array();
+ }
+
+ // retain the base directory for the namespace prefix
+ if ($prepend) {
+ array_unshift($this->prefixes[$prefix], $base_dir);
+ } else {
+ array_push($this->prefixes[$prefix], $base_dir);
+ }
+ }
+
+ /**
+ * Loads the class file for a given class name.
+ *
+ * @param string $class The fully-qualified class name.
+ * @return mixed The mapped file name on success, or boolean false on
+ * failure.
+ */
+ public function loadClass($class)
+ {
+ // the current namespace prefix
+ $prefix = $class;
+
+ // work backwards through the namespace names of the fully-qualified
+ // class name to find a mapped file name
+ while (false !== $pos = strrpos($prefix, '\\')) {
+
+ // retain the trailing namespace separator in the prefix
+ $prefix = substr($class, 0, $pos + 1);
+
+ // the rest is the relative class name
+ $relative_class = substr($class, $pos + 1);
+
+ // try to load a mapped file for the prefix and relative class
+ $mapped_file = $this->loadMappedFile($prefix, $relative_class);
+ if ($mapped_file) {
+ return $mapped_file;
+ }
+
+ // remove the trailing namespace separator for the next iteration
+ // of strrpos()
+ $prefix = rtrim($prefix, '\\');
+ }
+
+ // never found a mapped file
+ return false;
+ }
+
+ /**
+ * Load the mapped file for a namespace prefix and relative class.
+ *
+ * @param string $prefix The namespace prefix.
+ * @param string $relative_class The relative class name.
+ * @return mixed Boolean false if no mapped file can be loaded, or the
+ * name of the mapped file that was loaded.
+ */
+ protected function loadMappedFile($prefix, $relative_class)
+ {
+ // are there any base directories for this namespace prefix?
+ if (isset($this->prefixes[$prefix]) === false) {
+ return false;
+ }
+
+ // look through base directories for this namespace prefix
+ foreach ($this->prefixes[$prefix] as $base_dir) {
+
+ // replace the namespace prefix with the base directory,
+ // replace namespace separators with directory separators
+ // in the relative class name, append with .php
+ $file = $base_dir
+ . str_replace('\\', '/', $relative_class)
+ . '.php';
+
+ // if the mapped file exists, require it
+ if ($this->requireFile($file)) {
+ // yes, we're done
+ return $file;
+ }
+ }
+
+ // never found it
+ return false;
+ }
+
+ /**
+ * If a file exists, require it from the file system.
+ *
+ * @param string $file The file to require.
+ * @return bool True if the file exists, false if not.
+ */
+ protected function requireFile($file)
+ {
+ if (file_exists($file)) {
+ require $file;
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Config.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Config.php
new file mode 100644
index 000000000..d92b56c02
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/Config.php
@@ -0,0 +1,44 @@
+pluginSlug = $config->pluginSlug;
+ $this->pluginName = $config->pluginName;
+ $this->pluginFolder = $config->pluginFolder;
+ $this->isProPlugin = $config->isProPlugin;
+ $this->freePluginName = $config->freePluginName;
+
+ if (! $this->isProPlugin) {
+ $this->freePluginName = $this->pluginName;
+ }
+
+ if (empty($this->pluginFolder)) {
+ $this->pluginFolder = $this->pluginSlug;
+ }
+
+ if (
+ is_admin()
+ && ! wp_doing_ajax()
+ && ! wp_doing_cron()
+ ) {
+ add_action('admin_init', [$this, 'init'], $this->isProPlugin ? 7 : 5);
+ }
+ }
+
+ public function getVersion()
+ {
+ return '2.0.0';
+ }
+
+ public function init()
+ {
+ global $pagenow;
+
+ if ($pagenow !== 'plugins.php') {
+ return;
+ }
+
+ if (! $this->getStateDuplicatedPluginCheck()) {
+ $this->checkDuplicatedPluginsAndLatestVersions();
+
+ $this->setFlagDuplicatedPluginCheck();
+ }
+
+ if ($this->getStateHasMultiplePluginsActivated()) {
+ $this->addMultipleInstancesNotice();
+ }
+
+ if ($this->isProPlugin && $this->getStateFreePluginLoadedByItself()) {
+ $this->addFreePluginNotice();
+ }
+
+ // This should run once per request.
+ if (! $this->getStateStyleEnqueued()) {
+ $this->addPluginsPageStyle();
+ $this->setFlagStyleEnqueued();
+ }
+
+ if ($this->getStateHasMultiplePaths()) {
+ // This should run for every instance
+ add_action('after_plugin_row', [$this, 'addLatestVersionCheck'], 10, 2);
+ add_action('after_plugin_row', [$this, 'addNonStandardPathCheck'], 10, 2);
+ }
+ }
+
+ private function checkDuplicatedPluginsAndLatestVersions()
+ {
+ if (! function_exists('get_plugins')) {
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
+ }
+
+ $plugins = get_plugins();
+
+ $pluginFiles = [];
+ $pluginInstances = [];
+ $latestVersions = [];
+
+ foreach ($plugins as $pluginFile => $pluginData) {
+ if ($this->pluginName === $pluginData['Name']) {
+ $pluginFiles[] = $pluginFile;
+
+ if (is_plugin_active($pluginFile)) {
+ $pluginInstances[] = $pluginFile;
+
+ if ($pluginData['Name'] === $this->freePluginName) {
+ $this->setStateFreePluginLoadedByItself();
+ }
+ }
+
+ if (! isset($latestVersions[$this->pluginSlug])) {
+ $latestVersions[$this->pluginSlug] = $pluginData['Version'];
+ continue;
+ }
+
+ if (version_compare($pluginData['Version'], $latestVersions[$this->pluginSlug], '>')) {
+ $latestVersions[$this->pluginSlug] = $pluginData['Version'];
+ }
+ }
+ }
+
+ if (count($pluginFiles) > 1) {
+ $this->setStateHasMultiplePaths();
+ }
+
+ if (count($pluginInstances) > 1) {
+ $this->setStateHasMultiplePluginsActivated();
+ }
+
+ $this->setStateLatestVersions($latestVersions);
+ }
+
+ public function addPluginsPageStyle()
+ {
+ add_action('admin_enqueue_scripts', function() {
+ wp_add_inline_style(
+ 'wp-admin',
+ '
+ tr.ppa-plugin-warning {
+ background: #fff;
+ }
+
+ tr.ppa-plugin-warning td {
+ box-shadow: inset 0 -1px 0 rgb(0 0 0 / 10%);
+ overflow: hidden;
+ padding: 0;
+ }
+
+ tr.ppa-plugin-warning td > div {
+ margin: 5px 20px 15px 44px;
+ }
+
+ tr.ppa-plugin-warning td > div.multiple-instances-warning {
+ background-color: #ffc6c6;
+ border: 1px solid #edb977;
+ border-left: 4px solid #e1a04e;
+ padding-left: 6px;
+ }
+
+ tr.ppa-plugin-warning td > div.multiple-instances-warning .dashicons {
+ margin-right: 6px;
+ vertical-align: bottom;
+ color: #c18d17;
+ }
+
+ tr.ppa-plugin-warning td > div.multiple-instances-warning p {
+ margin: 0.5em 0;
+ }
+
+ tr.active + tr.ppa-plugin-warning td {
+ background-color: #f0f6fc;
+ }
+ '
+ );
+ });
+ }
+
+ public function addLatestVersionCheck($pluginFile, $pluginData)
+ {
+ if ($pluginData['Name'] !== $this->pluginName) {
+ return;
+ }
+
+ if ($this->getStateVersionChecked($pluginFile)) {
+ return;
+ }
+
+ $latestVersions = $this->getStateLatestVersions();
+
+ if (! isset($latestVersions[$this->pluginSlug])) {
+ return;
+ }
+
+ if (version_compare($pluginData['Version'], $latestVersions[$this->pluginSlug], '<')) {
+ ?>
+
+
+
+
+
+ setStateVersionChecked($pluginFile);
+ }
+
+ public function addNonStandardPathCheck($pluginFile, $pluginData)
+ {
+ if ($pluginData['Name'] !== $this->pluginName) {
+ return;
+ }
+
+ if ($this->getStatePathHasBeenCheckedForPluginFile($pluginFile)) {
+ return;
+ }
+
+ $expectedPath = $this->pluginFolder . '/' . $this->pluginSlug . '.php';
+
+ if ($pluginFile !== $expectedPath) {
+ ?>
+
+
+
+
+
+ ' . esc_html($pluginFile) . '',
+ '' . esc_html($expectedPath) . ''
+ );
+ ?>
+
+
+
+
+ setStatePathHasBeenCheckedForPluginFile($pluginFile);
+ }
+
+ public function addMultipleInstancesNotice()
+ {
+ if ($this->getStateMultipleInstancesNoticeAdded()) {
+ return;
+ }
+
+ $pluginName = $this->pluginName;
+
+ add_action('admin_notices', function() use ($pluginName) {
+ ?>
+
+ setStateMultipleInstancesNoticeAdded();
+ }
+
+ public function addFreePluginNotice()
+ {
+ if (LibState::getPluginState($this->pluginSlug, 'freePluginNoticeAdded')) {
+ return;
+ }
+
+ $pluginName = $this->pluginName;
+ $freePluginName = $this->freePluginName;
+
+ add_action('admin_notices', function() use ($pluginName, $freePluginName) {
+ ?>
+
+ pluginSlug, 'freePluginNoticeAdded');
+ }
+
+ private function getStateHasMultiplePaths()
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'hasMultiplePaths');
+ }
+
+ private function setStateHasMultiplePaths()
+ {
+ LibState::setPluginState($this->pluginSlug, 'hasMultiplePaths');
+ }
+
+ private function getStateHasMultiplePluginsActivated()
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'hasMultipleInstances');
+ }
+
+ private function setStateHasMultiplePluginsActivated()
+ {
+ LibState::setPluginState($this->pluginSlug, 'hasMultipleInstances');
+ }
+
+ private function getStateFreePluginLoadedByItself()
+ {
+ return (bool) LibState::getState('freePluginIsLoaded' . $this->freePluginName);
+ }
+
+ private function setStateFreePluginLoadedByItself()
+ {
+ LibState::setState('freePluginIsLoaded' . $this->freePluginName);
+ }
+
+ private function setStatePathHasBeenCheckedForPluginFile($pluginFile)
+ {
+ LibState::setPluginState($this->pluginSlug, 'pathCheck' . $pluginFile);
+ }
+
+ private function getStatePathHasBeenCheckedForPluginFile($pluginFile)
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'pathCheck' . $pluginFile);
+ }
+
+ private function setStateVersionChecked($pluginFile)
+ {
+ LibState::setPluginState($this->pluginSlug, 'versionCheck' . $pluginFile);
+ }
+
+ private function getStateVersionChecked($pluginFile)
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'versionCheck' . $pluginFile);
+ }
+
+ private function getStateDuplicatedPluginCheck()
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'duplicatedPluginsCheck');
+ }
+
+ private function setFlagDuplicatedPluginCheck()
+ {
+ LibState::setPluginState($this->pluginSlug, 'duplicatedPluginsCheck');
+ }
+
+ private function getStateStyleEnqueued()
+ {
+ return (bool) LibState::getState(self::STATE_STYLE_ENQUEUED);
+ }
+
+ private function setFlagStyleEnqueued()
+ {
+ LibState::setState(self::STATE_STYLE_ENQUEUED);
+ }
+
+ private function setStateLatestVersions($latestVersions)
+ {
+ LibState::setPluginState($this->pluginSlug, 'latestVersions', $latestVersions);
+ }
+
+ private function getStateLatestVersions()
+ {
+ return (array) LibState::getPluginState($this->pluginSlug, 'latestVersions');
+ }
+
+ private function setStateMultipleInstancesNoticeAdded()
+ {
+ LibState::setPluginState($this->pluginSlug, 'multipleInstancesNoticeAdded');
+ }
+
+ private function getStateMultipleInstancesNoticeAdded()
+ {
+ return (bool) LibState::getPluginState($this->pluginSlug, 'multipleInstancesNoticeAdded');
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/LibState.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/LibState.php
new file mode 100644
index 000000000..36d91d45a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/instance-protection/core/LibState.php
@@ -0,0 +1,28 @@
+register();
+ $autoloader->addNamespace('PublishPressInstanceProtection', __DIR__ . '/core');
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/LICENSE b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/LICENSE
new file mode 100644
index 000000000..3e2a9e1e6
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2009-2020 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/Versions.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/Versions.php
new file mode 100644
index 000000000..4757a35b2
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/Versions.php
@@ -0,0 +1,85 @@
+versions[$versionString])) {
+ return false;
+ }
+
+ $this->versions[$versionString] = $initializationCallback;
+
+ return true;
+ }
+
+ public function getVersions(): array
+ {
+ return $this->versions;
+ }
+
+ public function latestVersion()
+ {
+ $keys = array_keys($this->versions);
+ if (empty($keys)) {
+ return false;
+ }
+ uasort($keys, 'version_compare');
+ return end($keys);
+ }
+
+ public function latestVersionCallback()
+ {
+ $latest = $this->latestVersion();
+ if (empty($latest) || ! isset($this->versions[$latest])) {
+ return '__return_null';
+ }
+
+ return $this->versions[$latest];
+ }
+
+ /**
+ * @return Versions
+ * @codeCoverageIgnore
+ */
+ public static function getInstance(): ?Versions
+ {
+ if (empty(self::$instance)) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public static function initializeLatestVersion(): void
+ {
+ $self = self::getInstance();
+
+ call_user_func($self->latestVersionCallback());
+ }
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload-classmap.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload-classmap.php
new file mode 100644
index 000000000..5ac5740b9
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload-classmap.php
@@ -0,0 +1,27 @@
+ $strauss_src . '/Versions.php',
+ 'PublishPress\Pimple\Container' => $strauss_src . '/pimple/pimple/src/Pimple/Container.php',
+ 'PublishPress\Pimple\Tests\ServiceIteratorTest' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php',
+ 'PublishPress\Pimple\Tests\PimpleTest' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/PimpleTest.php',
+ 'PublishPress\Pimple\Tests\Psr11\ContainerTest' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php',
+ 'PublishPress\Pimple\Tests\Psr11\ServiceLocatorTest' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php',
+ 'PublishPress\Pimple\Tests\PimpleServiceProviderInterfaceTest' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php',
+ 'PublishPress\Pimple\Tests\Fixtures\NonInvokable' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php',
+ 'PublishPress\Pimple\Tests\Fixtures\Service' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php',
+ 'PublishPress\Pimple\Tests\Fixtures\Invokable' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php',
+ 'PublishPress\Pimple\Tests\Fixtures\PimpleServiceProvider' => $strauss_src . '/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php',
+ 'PublishPress\Pimple\Psr11\Container' => $strauss_src . '/pimple/pimple/src/Pimple/Psr11/Container.php',
+ 'PublishPress\Pimple\Psr11\ServiceLocator' => $strauss_src . '/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php',
+ 'PublishPress\Pimple\ServiceProviderInterface' => $strauss_src . '/pimple/pimple/src/Pimple/ServiceProviderInterface.php',
+ 'PublishPress\Pimple\Exception\FrozenServiceException' => $strauss_src . '/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php',
+ 'PublishPress\Pimple\Exception\UnknownIdentifierException' => $strauss_src . '/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php',
+ 'PublishPress\Pimple\Exception\InvalidServiceIdentifierException' => $strauss_src . '/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php',
+ 'PublishPress\Pimple\Exception\ExpectedInvokableException' => $strauss_src . '/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php',
+ 'PublishPress\Pimple\ServiceIterator' => $strauss_src . '/pimple/pimple/src/Pimple/ServiceIterator.php',
+);
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload.php
new file mode 100644
index 000000000..35b2b2fc4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/autoload.php
@@ -0,0 +1,20 @@
+register('3.5.0.10', __NAMESPACE__ . '\initialize3Dot5Dot0Dot10');
+ }
+ }
+
+ function initialize3Dot5Dot0Dot10()
+ {
+ require_once __DIR__ . '/autoload.php';
+
+ if (! defined('PUBLISHPRESS_PIMPLE_PIMPLE_VERSION')) {
+ define('PUBLISHPRESS_PIMPLE_PIMPLE_VERSION', '3.5.0.10');
+ }
+
+ do_action('publishpress_pimple_pimple_3Dot5Dot0Dot10_initialized');
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Container.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Container.php
new file mode 100644
index 000000000..c7cb0a971
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Container.php
@@ -0,0 +1,308 @@
+factories = new \SplObjectStorage();
+ $this->protected = new \SplObjectStorage();
+
+ foreach ($values as $key => $value) {
+ $this->offsetSet($key, $value);
+ }
+ }
+
+ /**
+ * Sets a parameter or an object.
+ *
+ * Objects must be defined as Closures.
+ *
+ * Allowing any PHP callable leads to difficult to debug problems
+ * as function names (strings) are callable (creating a function with
+ * the same name as an existing parameter would break your container).
+ *
+ * @param string $id The unique identifier for the parameter or object
+ * @param mixed $value The value of the parameter or a closure to define an object
+ *
+ * @return void
+ *
+ * @throws FrozenServiceException Prevent override of a frozen service
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetSet($id, $value)
+ {
+ if (isset($this->frozen[$id])) {
+ throw new FrozenServiceException($id);
+ }
+
+ $this->values[$id] = $value;
+ $this->keys[$id] = true;
+ }
+
+ /**
+ * Gets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return mixed The value of the parameter or an object
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetGet($id)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (
+ isset($this->raw[$id])
+ || !\is_object($this->values[$id])
+ || isset($this->protected[$this->values[$id]])
+ || !\method_exists($this->values[$id], '__invoke')
+ ) {
+ return $this->values[$id];
+ }
+
+ if (isset($this->factories[$this->values[$id]])) {
+ return $this->values[$id]($this);
+ }
+
+ $raw = $this->values[$id];
+ $val = $this->values[$id] = $raw($this);
+ $this->raw[$id] = $raw;
+
+ $this->frozen[$id] = true;
+
+ return $val;
+ }
+
+ /**
+ * Checks if a parameter or an object is set.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return bool
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetExists($id)
+ {
+ return isset($this->keys[$id]);
+ }
+
+ /**
+ * Unsets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return void
+ */
+ #[\ReturnTypeWillChange]
+ public function offsetUnset($id)
+ {
+ if (isset($this->keys[$id])) {
+ if (\is_object($this->values[$id])) {
+ unset($this->factories[$this->values[$id]], $this->protected[$this->values[$id]]);
+ }
+
+ unset($this->values[$id], $this->frozen[$id], $this->raw[$id], $this->keys[$id]);
+ }
+ }
+
+ /**
+ * Marks a callable as being a factory service.
+ *
+ * @param callable $callable A service definition to be used as a factory
+ *
+ * @return callable The passed callable
+ *
+ * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
+ */
+ public function factory($callable)
+ {
+ if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Service definition is not a Closure or invokable object.');
+ }
+
+ $this->factories->attach($callable);
+
+ return $callable;
+ }
+
+ /**
+ * Protects a callable from being interpreted as a service.
+ *
+ * This is useful when you want to store a callable as a parameter.
+ *
+ * @param callable $callable A callable to protect from being evaluated
+ *
+ * @return callable The passed callable
+ *
+ * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
+ */
+ public function protect($callable)
+ {
+ if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Callable is not a Closure or invokable object.');
+ }
+
+ $this->protected->attach($callable);
+
+ return $callable;
+ }
+
+ /**
+ * Gets a parameter or the closure defining an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return mixed The value of the parameter or the closure defining an object
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ */
+ public function raw($id)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (isset($this->raw[$id])) {
+ return $this->raw[$id];
+ }
+
+ return $this->values[$id];
+ }
+
+ /**
+ * Extends an object definition.
+ *
+ * Useful when you want to extend an existing object definition,
+ * without necessarily loading that object.
+ *
+ * @param string $id The unique identifier for the object
+ * @param callable $callable A service definition to extend the original
+ *
+ * @return callable The wrapped callable
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ * @throws FrozenServiceException If the service is frozen
+ * @throws InvalidServiceIdentifierException If the identifier belongs to a parameter
+ * @throws ExpectedInvokableException If the extension callable is not a closure or an invokable object
+ */
+ public function extend($id, $callable)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (isset($this->frozen[$id])) {
+ throw new FrozenServiceException($id);
+ }
+
+ if (!\is_object($this->values[$id]) || !\method_exists($this->values[$id], '__invoke')) {
+ throw new InvalidServiceIdentifierException($id);
+ }
+
+ if (isset($this->protected[$this->values[$id]])) {
+ @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), E_USER_DEPRECATED);
+ }
+
+ if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Extension service definition is not a Closure or invokable object.');
+ }
+
+ $factory = $this->values[$id];
+
+ $extended = function ($c) use ($callable, $factory) {
+ return $callable($factory($c), $c);
+ };
+
+ if (isset($this->factories[$factory])) {
+ $this->factories->detach($factory);
+ $this->factories->attach($extended);
+ }
+
+ return $this[$id] = $extended;
+ }
+
+ /**
+ * Returns all defined value names.
+ *
+ * @return array An array of value names
+ */
+ public function keys()
+ {
+ return \array_keys($this->values);
+ }
+
+ /**
+ * Registers a service provider.
+ *
+ * @param array $values An array of values that customizes the provider
+ *
+ * @return static
+ */
+ public function register(ServiceProviderInterface $provider, array $values = [])
+ {
+ $provider->register($this);
+
+ foreach ($values as $key => $value) {
+ $this[$key] = $value;
+ }
+
+ return $this;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
similarity index 86%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
index 7228421b1..ea7507667 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
@@ -22,11 +22,14 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple\Exception;
+namespace PublishPress\Pimple\Exception;
-use Psr\Container\ContainerExceptionInterface;
+use PublishPress\Psr\Container\ContainerExceptionInterface;
/**
* A closure or invokable object was expected.
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
similarity index 87%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
index e4d2f6d36..637165ce4 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
@@ -22,11 +22,14 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple\Exception;
+namespace PublishPress\Pimple\Exception;
-use Psr\Container\ContainerExceptionInterface;
+use PublishPress\Psr\Container\ContainerExceptionInterface;
/**
* An attempt to modify a frozen service was made.
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
similarity index 88%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
index 91e82f98c..e5bdf1a3a 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
@@ -22,11 +22,14 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple\Exception;
+namespace PublishPress\Pimple\Exception;
-use Psr\Container\NotFoundExceptionInterface;
+use PublishPress\Psr\Container\NotFoundExceptionInterface;
/**
* An attempt to perform an operation that requires a service identifier was made.
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
similarity index 88%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
index fb6b626e2..574135484 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
@@ -22,11 +22,14 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple\Exception;
+namespace PublishPress\Pimple\Exception;
-use Psr\Container\NotFoundExceptionInterface;
+use PublishPress\Psr\Container\NotFoundExceptionInterface;
/**
* The identifier of a valid service or parameter was expected.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/Container.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/Container.php
new file mode 100644
index 000000000..54b924f1f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/Container.php
@@ -0,0 +1,58 @@
+
+ */
+final class Container implements ContainerInterface
+{
+ private $pimple;
+
+ public function __construct(PimpleContainer $pimple)
+ {
+ $this->pimple = $pimple;
+ }
+
+ public function get(string $id)
+ {
+ return $this->pimple[$id];
+ }
+
+ public function has(string $id): bool
+ {
+ return isset($this->pimple[$id]);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
similarity index 83%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
index 3361c6f19..a553955bf 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
@@ -22,13 +22,16 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple\Psr11;
+namespace PublishPress\Pimple\Psr11;
-use Pimple\Container as PimpleContainer;
-use Pimple\Exception\UnknownIdentifierException;
-use Psr\Container\ContainerInterface;
+use PublishPress\Pimple\Container as PimpleContainer;
+use PublishPress\Pimple\Exception\UnknownIdentifierException;
+use PublishPress\Psr\Container\ContainerInterface;
/**
* Pimple PSR-11 service locator.
@@ -38,7 +41,7 @@
class ServiceLocator implements ContainerInterface
{
private $container;
- private $aliases = array();
+ private $aliases = [];
/**
* @param PimpleContainer $container The Container instance used to locate services
@@ -56,7 +59,7 @@ public function __construct(PimpleContainer $container, array $ids)
/**
* {@inheritdoc}
*/
- public function get($id)
+ public function get(string $id)
{
if (!isset($this->aliases[$id])) {
throw new UnknownIdentifierException($id);
@@ -68,7 +71,7 @@ public function get($id)
/**
* {@inheritdoc}
*/
- public function has($id)
+ public function has(string $id): bool
{
return isset($this->aliases[$id]) && isset($this->container[$this->aliases[$id]]);
}
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceIterator.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceIterator.php
similarity index 79%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceIterator.php
index 5cde5188f..f665483bb 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceIterator.php
@@ -22,9 +22,12 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple;
+namespace PublishPress\Pimple;
/**
* Lazy service iterator.
@@ -42,26 +45,46 @@ public function __construct(Container $container, array $ids)
$this->ids = $ids;
}
+ /**
+ * @return void
+ */
+ #[\ReturnTypeWillChange]
public function rewind()
{
\reset($this->ids);
}
+ /**
+ * @return mixed
+ */
+ #[\ReturnTypeWillChange]
public function current()
{
return $this->container[\current($this->ids)];
}
+ /**
+ * @return mixed
+ */
+ #[\ReturnTypeWillChange]
public function key()
{
return \current($this->ids);
}
+ /**
+ * @return void
+ */
+ #[\ReturnTypeWillChange]
public function next()
{
\next($this->ids);
}
+ /**
+ * @return bool
+ */
+ #[\ReturnTypeWillChange]
public function valid()
{
return null !== \key($this->ids);
diff --git a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceProviderInterface.php
similarity index 91%
rename from public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceProviderInterface.php
index c004594ba..4b2557540 100644
--- a/public/wp-content/plugins/publishpress/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/pimple-pimple/lib/pimple/pimple/src/Pimple/ServiceProviderInterface.php
@@ -22,9 +22,12 @@
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
+ *
+ * Modified by Fabien Potencier on 21-April-2023 using Strauss.
+ * @see https://github.com/BrianHenryIE/strauss
*/
-namespace Pimple;
+namespace PublishPress\Pimple;
/**
* Pimple service provider interface.
@@ -39,8 +42,6 @@ interface ServiceProviderInterface
*
* This method should only be used to configure services and parameters.
* It should not get services.
- *
- * @param Container $pimple A container instance
*/
public function register(Container $pimple);
}
diff --git a/public/wp-content/plugins/publishpress/vendor/psr/container/LICENSE b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/LICENSE
similarity index 100%
rename from public/wp-content/plugins/publishpress/vendor/psr/container/LICENSE
rename to public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/LICENSE
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/Versions.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/Versions.php
new file mode 100644
index 000000000..862bb2935
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/Versions.php
@@ -0,0 +1,85 @@
+versions[$versionString])) {
+ return false;
+ }
+
+ $this->versions[$versionString] = $initializationCallback;
+
+ return true;
+ }
+
+ public function getVersions(): array
+ {
+ return $this->versions;
+ }
+
+ public function latestVersion()
+ {
+ $keys = array_keys($this->versions);
+ if (empty($keys)) {
+ return false;
+ }
+ uasort($keys, 'version_compare');
+ return end($keys);
+ }
+
+ public function latestVersionCallback()
+ {
+ $latest = $this->latestVersion();
+ if (empty($latest) || ! isset($this->versions[$latest])) {
+ return '__return_null';
+ }
+
+ return $this->versions[$latest];
+ }
+
+ /**
+ * @return Versions
+ * @codeCoverageIgnore
+ */
+ public static function getInstance(): ?Versions
+ {
+ if (empty(self::$instance)) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public static function initializeLatestVersion(): void
+ {
+ $self = self::getInstance();
+
+ call_user_func($self->latestVersionCallback());
+ }
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload-classmap.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload-classmap.php
new file mode 100644
index 000000000..a83ec2520
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload-classmap.php
@@ -0,0 +1,12 @@
+ $strauss_src . '/Versions.php',
+ 'PublishPress\Psr\Container\NotFoundExceptionInterface' => $strauss_src . '/psr/container/src/NotFoundExceptionInterface.php',
+ 'PublishPress\Psr\Container\ContainerInterface' => $strauss_src . '/psr/container/src/ContainerInterface.php',
+ 'PublishPress\Psr\Container\ContainerExceptionInterface' => $strauss_src . '/psr/container/src/ContainerExceptionInterface.php',
+);
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload.php
new file mode 100644
index 000000000..35b2b2fc4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/autoload.php
@@ -0,0 +1,20 @@
+register('2.0.1.10', __NAMESPACE__ . '\initialize2Dot0Dot1Dot10');
+ }
+ }
+
+ function initialize2Dot0Dot1Dot10()
+ {
+ require_once __DIR__ . '/autoload.php';
+
+ if (! defined('PUBLISHPRESS_PSR_CONTAINER_VERSION')) {
+ define('PUBLISHPRESS_PSR_CONTAINER_VERSION', '2.0.1.10');
+ }
+
+ do_action('publishpress_psr_container_2Dot0Dot1Dot10_initialized');
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/psr/container/src/ContainerExceptionInterface.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/psr/container/src/ContainerExceptionInterface.php
new file mode 100644
index 000000000..a171a3d71
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/psr-container/lib/psr/container/src/ContainerExceptionInterface.php
@@ -0,0 +1,16 @@
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+ .
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-reviews/ReviewsController.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-reviews/ReviewsController.php
new file mode 100644
index 000000000..fcff08f8d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-reviews/ReviewsController.php
@@ -0,0 +1,710 @@
+.
+ *
+ * ---------------------------------------------------------------------
+ * It includes:
+ * - Multiple trigger groups which can be ordered by priority.
+ * - Multiple triggers per group.
+ * - Customizable messaging per trigger.
+ * - Link to review page.
+ * - Request reviews on a per-user basis rather than per site.
+ * - Allows each user to dismiss it until later or permanently seamlessly via AJAX.
+ * - Integrates with attached tracking server to keep anonymous records of each trigger's effectiveness.
+ * - Tracking Server API: https://gist.github.com/danieliser/0d997532e023c46d38e1bdfd50f38801
+ *
+ * Original Author: danieliser
+ * Original Author URL: https://danieliser.com
+ * URL: https://github.com/danieliser/WP-Product-In-Dash-Review-Requests
+ */
+
+namespace PublishPress\WordPressReviews;
+
+use Exception;
+
+if (class_exists('PublishPress\\WordPressReviews\\ReviewsController')) {
+ return;
+}
+
+/**
+ * Class ReviewsController
+ *
+ * @package PublishPress\WordPressReviews
+ */
+class ReviewsController
+{
+ /**
+ * @var string
+ */
+ private $pluginSlug;
+
+ /**
+ * @var string
+ */
+ private $pluginName;
+
+ /**
+ * @var array
+ */
+ private $metaMap;
+
+ /**
+ * @var string
+ */
+ private $iconUrl;
+
+ /**
+ * @param string $pluginSlug
+ * @param string $pluginName
+ * @param string $iconUrl
+ */
+ public function __construct($pluginSlug, $pluginName, $iconUrl = '')
+ {
+ $this->pluginSlug = $pluginSlug;
+ $this->pluginName = $pluginName;
+ $this->iconUrl = esc_url_raw($iconUrl);
+
+ /**
+ * Filter to replace the meta map with options, filters and actions names.
+ *
+ * @param array
+ *
+ * @return array
+ */
+ $this->metaMap = apply_filters(
+ "{$pluginSlug}_wp_reviews_meta_map",
+ [
+ 'action_ajax_handler' => "{$this->pluginSlug}_action",
+ 'option_installed_on' => "{$this->pluginSlug}_wp_reviews_installed_on",
+ 'nonce_action' => "{$this->pluginSlug}_wp_reviews_action",
+ 'user_meta_dismissed_triggers' => "_{$this->pluginSlug}_wp_reviews_dismissed_triggers",
+ 'user_meta_last_dismissed' => "_{$this->pluginSlug}_wp_reviews_last_dismissed",
+ 'user_meta_already_did' => "_{$this->pluginSlug}_wp_reviews_already_did",
+ 'filter_triggers' => "{$this->pluginSlug}_wp_reviews_triggers",
+ ]
+ );
+
+ /**
+ * Legacy filter to replace the meta map with options, filters and actions names.
+ *
+ * @param array
+ * @return array
+ * @deprecated 1.1.9
+ *
+ */
+ $this->metaMap = apply_filters(
+ "publishpress_wp_reviews_meta_map_{$this->pluginSlug}",
+ $this->metaMap
+ );
+
+ add_action('admin_enqueue_scripts', [$this, 'enqueueStyle']);
+ }
+
+ /**
+ * Initialize the library.
+ */
+ public function init()
+ {
+ $this->addHooks();
+ }
+
+ /**
+ * Hook into relevant WP actions.
+ */
+ private function addHooks()
+ {
+ if (defined('DOING_AJAX') && DOING_AJAX) {
+ add_action("wp_ajax_{$this->metaMap['action_ajax_handler']}", [$this, 'ajaxHandler']);
+ }
+
+ if ($this->screenIsAllowedToDisplayNotice()) {
+ $this->installationPath();
+ add_action('admin_notices', [$this, 'renderAdminNotices']);
+ add_action('network_admin_notices', [$this, 'renderAdminNotices']);
+ add_action('user_admin_notices', [$this, 'renderAdminNotices']);
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ private function screenIsAllowedToDisplayNotice()
+ {
+ $displayNotice = is_admin();
+
+ /**
+ * Deprecated filter to specify a custom conditional to display or not the notice.
+ *
+ * @param bool
+ * @return bool
+ * @deprecated 1.1.9
+ *
+ */
+ $displayNotice = apply_filters(
+ "publishpress_wp_reviews_display_banner_{$this->pluginSlug}",
+ $displayNotice
+ );
+
+ /**
+ * Filter to specify a custom conditional to display or not the notice.
+ *
+ * @param bool
+ *
+ * @return bool
+ */
+ $displayNotice = apply_filters("{$this->pluginSlug}_wp_reviews_allow_display_notice", $displayNotice);
+
+ if (! $this->currentUserIsAdministrator()) {
+ $displayNotice = false;
+ }
+
+ return $displayNotice;
+ }
+
+ private function currentUserIsAdministrator()
+ {
+ $currentUser = get_current_user_id();
+ $currentUser = get_user_by('ID', $currentUser);
+
+ if (empty($currentUser) || ! is_object($currentUser) && is_wp_error($currentUser)) {
+ return false;
+ }
+
+ return in_array('administrator', $currentUser->roles);
+ }
+
+ /**
+ * Get the installation date for comparisons. Sets the date to now if none is found.
+ *
+ * @return false|string
+ */
+ public function installationPath()
+ {
+ $installationPath = get_option($this->metaMap['option_installed_on'], false);
+
+ if (! $installationPath) {
+ $installationPath = current_time('mysql');
+ update_option($this->metaMap['option_installed_on'], $installationPath);
+ }
+
+ return $installationPath;
+ }
+
+ /**
+ * The function called by the ajax request.
+ */
+ public function ajaxHandler()
+ {
+ $args = wp_parse_args(
+ $_REQUEST,
+ [
+ 'group' => $this->getTriggerGroup(),
+ 'code' => $this->getTriggerCode(),
+ 'priority' => $this->getCurrentTrigger('priority'),
+ 'reason' => 'maybe_later',
+ ]
+ );
+
+ if (! wp_verify_nonce($_REQUEST['nonce'], $this->metaMap['nonce_action'])) {
+ wp_send_json_error();
+ }
+
+ try {
+ $userId = get_current_user_id();
+
+ $dismissedTriggers = $this->getDismissedTriggerGroups();
+ $dismissedTriggers[$args['group']] = (int)$args['priority'];
+
+ update_user_meta($userId, $this->metaMap['user_meta_dismissed_triggers'], $dismissedTriggers);
+ update_user_meta($userId, $this->metaMap['user_meta_last_dismissed'], current_time('mysql'));
+
+ switch ($args['reason']) {
+ case 'maybe_later':
+ update_user_meta($userId, $this->metaMap['user_meta_last_dismissed'], current_time('mysql'));
+ break;
+ case 'am_now':
+ case 'already_did':
+ $this->setUserAlreadyDid($userId);
+ break;
+ }
+
+ wp_send_json_success();
+ } catch (Exception $e) {
+ wp_send_json_error($e);
+ }
+ }
+
+ /**
+ * Get the trigger group.
+ *
+ * @return int|string
+ */
+ private function getTriggerGroup()
+ {
+ static $selected;
+
+ if (! isset($selected)) {
+ $selected = [];
+ }
+
+ if (! array_key_exists($this->pluginSlug, $selected)) {
+ $dismissedTriggers = $this->getDismissedTriggerGroups();
+
+ $triggers = $this->getTriggers();
+
+ foreach ($triggers as $g => $group) {
+ foreach ($group['triggers'] as $trigger) {
+ if (
+ ! in_array(
+ false,
+ $trigger['conditions']
+ ) && (empty($dismissedTriggers[$g]) || $dismissedTriggers[$g] < $trigger['priority'])
+ ) {
+ $selected[$this->pluginSlug] = $g;
+ break;
+ }
+ }
+
+ if (array_key_exists($this->pluginSlug, $selected)) {
+ break;
+ }
+ }
+ }
+
+ return $selected[$this->pluginSlug];
+ }
+
+ /**
+ * Returns an array of dismissed trigger groups.
+ *
+ * Array contains the group key and highest priority trigger that has been shown previously for each group.
+ *
+ * $return = array(
+ * 'group1' => 20
+ * );
+ *
+ * @return array|mixed
+ */
+ private function getDismissedTriggerGroups()
+ {
+ $userId = get_current_user_id();
+
+ $dismissedTriggers = get_user_meta($userId, $this->metaMap['user_meta_dismissed_triggers'], true);
+
+ if (! $dismissedTriggers) {
+ $dismissedTriggers = [];
+ }
+
+ return $dismissedTriggers;
+ }
+
+ /**
+ * Gets a list of triggers.
+ *
+ * @param null $group
+ * @param null $code
+ *
+ * @return bool|mixed|void
+ */
+ private function getTriggers($group = null, $code = null)
+ {
+ static $triggers;
+
+ if (! isset($triggers)) {
+ $triggers = [];
+ }
+
+ if (! array_key_exists($this->pluginSlug, $triggers)) {
+ $timeMessage = __(
+ 'Hey, you\'ve been using %1$s for %2$s on your site. We hope the plugin has been useful. Please could you quickly leave a 5-star rating on WordPress.org? It really does help to keep %1$s growing.',
+ $this->pluginSlug
+ );
+
+ $triggers[$this->pluginSlug] = apply_filters(
+ $this->metaMap['filter_triggers'],
+ [
+ 'time_installed' => [
+ 'triggers' => [
+ 'one_week' => [
+ 'message' => sprintf($timeMessage, $this->pluginName, __('1 week', $this->pluginSlug)),
+ 'conditions' => [
+ strtotime($this->installationPath() . ' +1 week') < time(),
+ ],
+ 'link' => "https://wordpress.org/support/plugin/{$this->pluginSlug}/reviews/?rate=5#rate-response",
+ 'priority' => 10,
+ ],
+ 'one_month' => [
+ 'message' => sprintf($timeMessage, $this->pluginName, __('1 month', $this->pluginSlug)),
+ 'conditions' => [
+ strtotime($this->installationPath() . ' +1 month') < time(),
+ ],
+ 'link' => "https://wordpress.org/support/plugin/{$this->pluginSlug}/reviews/?rate=5#rate-response",
+ 'priority' => 20,
+ ],
+ 'three_months' => [
+ 'message' => sprintf(
+ $timeMessage,
+ $this->pluginName,
+ __('3 months', $this->pluginSlug)
+ ),
+ 'conditions' => [
+ strtotime($this->installationPath() . ' +3 months') < time(),
+ ],
+ 'link' => "https://wordpress.org/support/plugin/{$this->pluginSlug}/reviews/?rate=5#rate-response",
+ 'priority' => 30,
+ ],
+ ],
+ 'priority' => 10,
+ ],
+ ]
+ );
+
+ // Sort Groups
+ uasort($triggers[$this->pluginSlug], [$this, 'rsortByPriority']);
+
+ // Sort each groups triggers.
+ foreach ($triggers[$this->pluginSlug] as $v) {
+ uasort($v['triggers'], [$this, 'rsortByPriority']);
+ }
+ }
+
+ if (isset($group)) {
+ if (! array_key_exists($this->pluginSlug, $triggers)
+ || ! array_key_exists($group, $triggers[$this->pluginSlug])) {
+ return false;
+ }
+
+ if (! isset($code)) {
+ $return = $triggers[$this->pluginSlug][$group];
+ } elseif (array_key_exists($code, $triggers[$this->pluginSlug][$group]['triggers'])) {
+ $return = $triggers[$this->pluginSlug][$group]['triggers'][$code];
+ } else {
+ $return = false;
+ }
+
+ return $return;
+ }
+
+ return $triggers[$this->pluginSlug];
+ }
+
+ /**
+ * @return int|string
+ */
+ private function getTriggerCode()
+ {
+ static $selected;
+
+ if (! isset($selected)) {
+ $selected = [];
+ }
+
+ if (! array_key_exists($this->pluginSlug, $selected)) {
+ $dismissedTriggers = $this->getDismissedTriggerGroups();
+
+ foreach ($this->getTriggers() as $g => $group) {
+ foreach ($group['triggers'] as $t => $trigger) {
+ if (
+ ! in_array(
+ false,
+ $trigger['conditions']
+ ) && (empty($dismissedTriggers[$g]) || $dismissedTriggers[$g] < $trigger['priority'])
+ ) {
+ $selected[$this->pluginSlug] = $t;
+ break;
+ }
+ }
+
+ if (array_key_exists($this->pluginSlug, $selected)) {
+ break;
+ }
+ }
+ }
+
+ if (! array_key_exists($this->pluginSlug, $selected)) {
+ return false;
+ }
+
+ return $selected[$this->pluginSlug];
+ }
+
+ /**
+ * @param null $key
+ *
+ * @return bool|mixed|void
+ */
+ private function getCurrentTrigger($key = null)
+ {
+ $group = $this->getTriggerGroup();
+ $code = $this->getTriggerCode();
+
+ if (! $group || ! $code) {
+ return false;
+ }
+
+ $trigger = $this->getTriggers($group, $code);
+
+ if (empty($key)) {
+ $return = $trigger;
+ } elseif (array_key_exists($key, $trigger)) {
+ $return = $trigger[$key];
+ } else {
+ $return = false;
+ }
+
+ return $return;
+ }
+
+ /**
+ * @param $userId
+ */
+ private function setUserAlreadyDid($userId)
+ {
+ update_user_meta($userId, $this->metaMap['user_meta_already_did'], true);
+ }
+
+ public function enqueueStyle()
+ {
+ if (! $this->screenIsAllowedToDisplayNotice()) {
+ return;
+ }
+
+ wp_register_style('publishpress_wordpress_reviews_style', false);
+ wp_enqueue_style('publishpress_wordpress_reviews_style');
+ wp_add_inline_style(
+ 'publishpress_wordpress_reviews_style',
+ "
+ .{$this->pluginSlug}-wp-reviews-notice .button,
+ .{$this->pluginSlug}-wp-reviews-notice p {
+ font-size: 15px;
+ }
+
+ .{$this->pluginSlug}-wp-reviews-notice .button:not(.notice-dismiss) {
+ border-width: 1px;
+ }
+
+ .{$this->pluginSlug}-wp-reviews-notice .button.button-primary {
+ background-color: #655897;
+ border-color: #3d355c;
+ color: #fff;
+ }
+
+ .{$this->pluginSlug}-wp-reviews-notice .notice-icon {
+ float: right;
+ height: 110px;
+ margin-top: 10px;
+ margin-left: 10px;
+ }
+
+ @media (min-width:1000px) {
+ .{$this->pluginSlug}-wp-reviews-notice .notice-icon {
+ height: 90px;
+ }
+ }
+
+ @media (min-width:1700px) {
+ .{$this->pluginSlug}-wp-reviews-notice .notice-icon {
+ height: 70px;
+ }
+ }
+ "
+ );
+ }
+
+ /**
+ * Render admin notices if available.
+ */
+ public function renderAdminNotices()
+ {
+ if ($this->hideNotices()) {
+ return;
+ }
+
+ $group = $this->getTriggerGroup();
+ $code = $this->getTriggerCode();
+ $priority = $this->getCurrentTrigger('priority');
+ $trigger = $this->getCurrentTrigger();
+
+ // Used to anonymously distinguish unique site+user combinations in terms of effectiveness of each trigger.
+ $uuid = wp_hash(home_url() . '-' . get_current_user_id());
+
+ ?>
+
+
+
+
+ userSelectedAlreadyDid(),
+ $this->lastDismissedDate() && strtotime($this->lastDismissedDate() . ' +2 weeks') > time(),
+ empty($this->getTriggerCode()),
+ ];
+
+ return in_array(true, $conditions);
+ }
+
+ /**
+ * Returns true if the user has opted to never see this again.
+ *
+ * @return bool
+ */
+ private function userSelectedAlreadyDid()
+ {
+ $userId = get_current_user_id();
+
+ return (bool)get_user_meta($userId, $this->metaMap['user_meta_already_did'], true);
+ }
+
+ /**
+ * Gets the last dismissed date.
+ *
+ * @return false|string
+ */
+ private function lastDismissedDate()
+ {
+ $userId = get_current_user_id();
+
+ return get_user_meta($userId, $this->metaMap['user_meta_last_dismissed'], true);
+ }
+
+ /**
+ * Sort array by priority value
+ *
+ * @param $a
+ * @param $b
+ *
+ * @return int
+ */
+ public function sortByPriority($a, $b)
+ {
+ if (! isset($a['priority']) || ! isset($b['priority']) || $a['priority'] === $b['priority']) {
+ return 0;
+ }
+
+ return ($a['priority'] < $b['priority']) ? -1 : 1;
+ }
+
+ /**
+ * Sort array in reverse by priority value
+ *
+ * @param $a
+ * @param $b
+ *
+ * @return int
+ */
+ public function rsortByPriority($a, $b)
+ {
+ if (! isset($a['priority']) || ! isset($b['priority']) || $a['priority'] === $b['priority']) {
+ return 0;
+ }
+
+ return ($a['priority'] < $b['priority']) ? 1 : -1;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/includes.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/includes.php
new file mode 100644
index 000000000..5c8b9f4ac
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/includes.php
@@ -0,0 +1,25 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ * @deprecated 2.0.2 Use src/include.php instead
+ **/
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/license.txt b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/license.txt
new file mode 100644
index 000000000..6927bfd45
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/license.txt
@@ -0,0 +1,377 @@
+WordPress Version Notices
+
+Copyright 2020 by the contributors
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+This program incorporates work covered by the following copyright and
+permission notices:
+
+ Edit Flow is Copyright 2009-2016 Mohammad Jangda, Daniel Bachhuber, et al.
+ http://editflow.org/
+ Edit Flow was produced by Daniel Bachhuber, Mo Jangda, and Scott Bressler,
+ with special help from Andrew Spittle and Andrew Witherspoon
+
+ Edit Flow is released under the GPL
+
+and
+
+ WordPress Version Notices
+
+ WordPress Version Notices is Copyright (c) 2020 PublishPress
+
+ WordPress Version Notices is released under the GPL
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Autoloader.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Autoloader.php
new file mode 100644
index 000000000..72c98d392
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Autoloader.php
@@ -0,0 +1,51 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Module;
+
+interface AdInterface
+{
+ public function init();
+
+ /**
+ * @param string $message
+ * @param string $linkURL
+ */
+ public function display($message = '', $linkURL = '');
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php
new file mode 100644
index 000000000..b1e969bb6
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/MenuLink/Module.php
@@ -0,0 +1,230 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Module\MenuLink;
+
+use PublishPress\WordpressVersionNotices\Template\TemplateLoaderInterface;
+
+/**
+ * Class Module
+ *
+ * @package PublishPress\WordpressVersionNotices
+ */
+class Module
+{
+ const SETTINGS_FILTER = 'pp_version_notice_menu_link_settings';
+
+ const STYLE_HANDLE = 'pp-version-notice-menu-link-style';
+
+ const MENU_SLUG_SUFFIX = '-menu-upgrade-link';
+
+ /**
+ * @var TemplateLoaderInterface
+ */
+ private $templateLoader;
+
+ /**
+ * @var array
+ */
+ private $globalSettings = [];
+
+ /**
+ * @var array
+ */
+ private $urlsMap = [];
+
+ public function __construct(TemplateLoaderInterface $templateLoader)
+ {
+ $this->templateLoader = $templateLoader;
+ }
+
+ public function init()
+ {
+ add_action('admin_head', [$this, 'adminHeadAddStyle']);
+ add_action('init', [$this, 'collectTheSettings'], 50);
+ add_action('admin_menu', [$this, 'addMenuLink'], 20);
+ add_action('admin_print_scripts', [$this, 'setUpgradeMenuLink'], 9999);
+ }
+
+ public function collectTheSettings()
+ {
+ if (is_admin()) {
+ $this->globalSettings = apply_filters(self::SETTINGS_FILTER, []);
+ }
+ }
+
+ public function adminHeadAddStyle()
+ {
+ ?>
+
+ templateLoader;
+
+ foreach ($this->globalSettings as $pluginName => $settings) {
+ if (is_array($settings['parent'])) {
+ foreach ($settings['parent'] as $parent) {
+ $menuPageURL = menu_page_url($parent, false);
+
+ if (!empty($menuPageURL)) {
+ $settings['parent'] = $parent;
+
+ break;
+ }
+ }
+ }
+
+ if (!empty($settings['parent'])) {
+ $submenuSlug = $this->getSubmenuSlug($settings);
+
+ add_submenu_page(
+ $settings['parent'],
+ $settings['label'],
+ $settings['label'],
+ 'read',
+ $submenuSlug,
+ function () use ($settings, $templateLoader) {
+ $context = [
+ 'message' => __(
+ 'Amazing! We are redirecting you to our site...',
+ 'wordpress-version-notices'
+ ),
+ 'link' => $settings['link']
+ ];
+
+ $templateLoader->displayOutput('menu-link', 'redirect-page', $context);
+ },
+ 9999
+ );
+
+ $this->urlsMap[$pluginName] = [
+ 'slug' => $submenuSlug,
+ 'localUrl' => menu_page_url($submenuSlug, false),
+ 'redirectTo' => $settings['link'],
+ ];
+
+ // Add the CSS class to change the item color and add a reference to the respective URL.
+ $newItemIndex = false;
+ if (isset($submenu[$settings['parent']])) {
+ $newItemIndex = $this->getUpgradeMenuItemIndex($submenu[$settings['parent']], $settings);
+ }
+
+ if (false !== $newItemIndex) {
+ $submenu[$settings['parent']][$newItemIndex][4] = 'pp-version-notice-upgrade-menu-item ' . $pluginName;
+ }
+ }
+ }
+ }
+
+ private function getUpgradeMenuItemIndex($submenuItems, $settings)
+ {
+ if (!is_array($submenuItems)) {
+ return false;
+ }
+
+ foreach ($submenuItems as $index => $item) {
+ if ($item[0] === $settings['label'] && $item[2] === $this->getSubmenuSlug($settings)) {
+ return $index;
+ }
+ }
+
+ return false;
+ }
+
+ public function setUpgradeMenuLink()
+ {
+ if (empty($this->urlsMap)) {
+ return;
+ }
+
+ $convertedUrlsMap = [];
+
+ foreach ($this->urlsMap as $pluginName => $urlData) {
+ $urlData['pluginName'] = $pluginName;
+
+ $convertedUrlsMap[] = $urlData;
+ }
+
+ $context = [
+ 'convertedUrlsMap' => $convertedUrlsMap,
+ ];
+
+ $this->templateLoader->displayOutput('menu-link', 'menu-link-script', $context);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/TopNotice/Module.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/TopNotice/Module.php
new file mode 100644
index 000000000..e8106752a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Module/TopNotice/Module.php
@@ -0,0 +1,228 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Module\TopNotice;
+
+use PublishPress\WordpressVersionNotices\Module\AdInterface;
+use PublishPress\WordpressVersionNotices\Template\TemplateInvalidArgumentsException;
+use PublishPress\WordpressVersionNotices\Template\TemplateLoaderInterface;
+
+/**
+ * Class Module
+ *
+ * @package PublishPress\WordpressVersionNotices
+ */
+class Module implements AdInterface
+{
+ const SETTINGS_FILTER = 'pp_version_notice_top_notice_settings';
+
+ const DISPLAY_ACTION = 'pp_version_notice_display_top_notice';
+
+ /**
+ * @var TemplateLoaderInterface
+ */
+ private $templateLoader;
+
+ /**
+ * @var array
+ */
+ private $exceptions = [];
+
+ /**
+ * @var array
+ */
+ private $settings = [];
+
+ public function __construct(TemplateLoaderInterface $templateLoader)
+ {
+ $this->templateLoader = $templateLoader;
+ }
+
+ public function init()
+ {
+ add_action(self::DISPLAY_ACTION, [$this, 'display'], 10, 2);
+ add_action('in_admin_header', [$this, 'displayTopNotice']);
+ add_action('admin_init', [$this, 'collectTheSettings'], 50);
+ add_action('admin_head', [$this, 'adminHeadAddStyle']);
+ }
+
+ public function collectTheSettings()
+ {
+ $this->settings = apply_filters(self::SETTINGS_FILTER, []);
+ }
+
+ /**
+ * @param string $message
+ * @param string $linkURL
+ */
+ public function display($message = '', $linkURL = '')
+ {
+ try {
+ if (empty($message) || empty($linkURL)) {
+ throw new TemplateInvalidArgumentsException();
+ }
+
+ $context = [
+ 'message' => $message,
+ 'linkURL' => $linkURL
+ ];
+
+ $this->templateLoader->displayOutput('top-notice', 'notice', $context);
+ } catch (\Exception $e) {
+ if (defined('WP_DEBUG') && WP_DEBUG) {
+ $this->exceptions[] = $e->getMessage();
+
+ add_action('admin_notices', [$this, 'showNoticeWithException']);
+ }
+ }
+ }
+
+ /**
+ * @return array|false
+ */
+ private function isValidScreen()
+ {
+ $screen = get_current_screen();
+
+ if (!empty($screen)) {
+ foreach ($this->settings as $pluginName => $setting) {
+ if (!is_array($setting) || !isset($setting['screens'])) {
+ continue;
+ }
+
+ foreach ($setting['screens'] as $screenParams) {
+ if ($screenParams === true) {
+ return $setting;
+ }
+
+ $validVars = 0;
+ foreach ($screenParams as $var => $value) {
+ if (isset($screen->$var) && $screen->$var === $value) {
+ $validVars++;
+ }
+ }
+
+ if ($validVars === count($screenParams)) {
+ return $setting;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public function adminHeadAddStyle()
+ {
+ if (! $this->isValidScreen()) {
+ return;
+ }
+
+ ?>
+
+ isValidScreen()) {
+ do_action(self::DISPLAY_ACTION, $settings['message'], $settings['link']);
+ }
+ }
+
+ public function showNoticeWithException()
+ {
+ $class = 'notice notice-error';
+ $message = implode(" ", $this->exceptions);
+
+ printf('', esc_attr($class), esc_html($message));
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/ServicesProvider.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/ServicesProvider.php
new file mode 100644
index 000000000..849d1fc1f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/ServicesProvider.php
@@ -0,0 +1,54 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices;
+
+use PublishPress\Pimple\Container;
+use PublishPress\Pimple\ServiceProviderInterface;
+use PublishPress\WordpressVersionNotices\Module\TopNotice\Module as TopNoticeModule;
+use PublishPress\WordpressVersionNotices\Module\MenuLink\Module as MenuLinkModule;
+use PublishPress\WordpressVersionNotices\Template\TemplateLoader;
+
+class ServicesProvider implements ServiceProviderInterface
+{
+ public function register(Container $pimple)
+ {
+ $pimple['TEMPLATES_PATH'] = function (Container $c) {
+ return PP_VERSION_NOTICES_BASE_PATH . '/templates';
+ };
+
+ $pimple['module_top_notice'] = function (Container $c) {
+ return new TopNoticeModule($c['template_loader']);
+ };
+
+ $pimple['module_menu_link'] = function (Container $c) {
+ return new MenuLinkModule($c['template_loader']);
+ };
+
+ $pimple['template_loader'] = function (Container $c) {
+ return new TemplateLoader($c['TEMPLATES_PATH']);
+ };
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateInvalidArgumentsException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateInvalidArgumentsException.php
new file mode 100644
index 000000000..566f4525b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateInvalidArgumentsException.php
@@ -0,0 +1,33 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Template;
+
+use RuntimeException;
+
+class TemplateInvalidArgumentsException extends RuntimeException
+{
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoader.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoader.php
new file mode 100644
index 000000000..f0f5a2849
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoader.php
@@ -0,0 +1,108 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Template;
+
+class TemplateLoader implements TemplateLoaderInterface
+{
+ /**
+ * @var string
+ */
+ private $templatesPath;
+
+ /**
+ * TemplateLoader constructor.
+ *
+ * @param string $templatesPath
+ */
+ public function __construct($templatesPath)
+ {
+ $this->templatesPath = $templatesPath;
+ }
+
+ /**
+ * Load template for modules.
+ *
+ * @param $moduleName
+ * @param $templateName
+ * @param array $context
+ * @param bool $return
+ *
+ * @return false|string
+ * @throws TemplateNotFoundException
+ */
+ private function load($moduleName, $templateName, $context = [], $return = false)
+ {
+ $templatePath = $this->templatesPath . '/' . $moduleName . '/' . $templateName . '.php';
+
+ if (!file_exists($templatePath)) {
+ throw new TemplateNotFoundException('Template file not found: ' . $templatePath);
+ }
+
+ if ($return) {
+ ob_start();
+ }
+
+ extract($context);
+
+ require $templatePath;
+
+ if ($return) {
+ return ob_get_clean();
+ }
+
+ return false;
+ }
+
+ /**
+ * Load template for modules.
+ *
+ * @param string $moduleName
+ * @param string $templateName
+ * @param array $context
+ *
+ * @throws TemplateNotFoundException
+ */
+ public function displayOutput($moduleName, $templateName, $context = [])
+ {
+ echo $this->load($moduleName, $templateName, $context, false);
+ }
+
+ /**
+ * Load template for modules.
+ *
+ * @param string $moduleName
+ * @param string $templateName
+ * @param array $context
+ *
+ * @return false|string
+ *
+ * @throws TemplateNotFoundException
+ */
+ public function returnOutput($moduleName, $templateName, $context = [])
+ {
+ return $this->load($moduleName, $templateName, $context, true);
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoaderInterface.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoaderInterface.php
new file mode 100644
index 000000000..48782321e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateLoaderInterface.php
@@ -0,0 +1,53 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Template;
+
+interface TemplateLoaderInterface
+{
+ /**
+ * Load template for modules.
+ *
+ * @param string $moduleName
+ * @param string $templateName
+ * @param array $context
+ *
+ * @throws TemplateNotFoundException
+ */
+ public function displayOutput($moduleName, $templateName, $context = []);
+
+ /**
+ * Load template for modules.
+ *
+ * @param string $moduleName
+ * @param string $templateName
+ * @param array $context
+ *
+ * @return false|string
+ *
+ * @throws TemplateNotFoundException
+ */
+ public function returnOutput($moduleName, $templateName, $context = []);
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateNotFoundException.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateNotFoundException.php
new file mode 100644
index 000000000..7a2a7acf9
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Template/TemplateNotFoundException.php
@@ -0,0 +1,33 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * @package PublishPress\WordpressVersionNotices
+ * @category Core
+ * @author PublishPress
+ * @copyright Copyright (c) 2020 PublishPress. All rights reserved.
+ **/
+
+namespace PublishPress\WordpressVersionNotices\Template;
+
+use RuntimeException;
+
+class TemplateNotFoundException extends RuntimeException
+{
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Versions.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Versions.php
new file mode 100644
index 000000000..18a0fe3cb
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/Versions.php
@@ -0,0 +1,85 @@
+versions[$versionString])) {
+ return false;
+ }
+
+ $this->versions[$versionString] = $initializationCallback;
+
+ return true;
+ }
+
+ public function getVersions(): array
+ {
+ return $this->versions;
+ }
+
+ public function latestVersion()
+ {
+ $keys = array_keys($this->versions);
+ if (empty($keys)) {
+ return false;
+ }
+ uasort($keys, 'version_compare');
+ return end($keys);
+ }
+
+ public function latestVersionCallback()
+ {
+ $latest = $this->latestVersion();
+ if (empty($latest) || ! isset($this->versions[$latest])) {
+ return '__return_null';
+ }
+
+ return $this->versions[$latest];
+ }
+
+ /**
+ * @return Versions
+ * @codeCoverageIgnore
+ */
+ public static function getInstance(): ?Versions
+ {
+ if (empty(self::$instance)) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public static function initializeLatestVersion(): void
+ {
+ $self = self::getInstance();
+
+ call_user_func($self->latestVersionCallback());
+ }
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/autoload.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/autoload.php
new file mode 100644
index 000000000..2d1a2ef8e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/autoload.php
@@ -0,0 +1,42 @@
+register(new ServicesProvider());
+
+ // Load the modules
+ $module = $container['module_top_notice'];
+ $module->init();
+
+ $module = $container['module_menu_link'];
+ $module->init();
+
+ define('PP_VERSION_NOTICES_LOADED', true);
+ }
+}, -125, 0);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/deprecated.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/deprecated.php
new file mode 100644
index 000000000..cea6c95a8
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/src/deprecated.php
@@ -0,0 +1,35 @@
+register('2.1.3', __NAMESPACE__ . '\initialize2Dot1Dot3');
+ }
+ }
+
+ function initialize2Dot1Dot3()
+ {
+ require_once __DIR__ . '/autoload.php';
+
+ if (! defined('PUBLISHPRESS_WORDPRESS_VERSION_NOTICES_VERSION')) {
+ define('PUBLISHPRESS_WORDPRESS_VERSION_NOTICES_VERSION', '2.1.3');
+ }
+
+ do_action('publishpress_wordpress_version_notices_2Dot1Dot3_initialized');
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/menu-link-script.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/menu-link-script.php
new file mode 100644
index 000000000..ef5763d0c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/menu-link-script.php
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/redirect-page.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/redirect-page.php
new file mode 100644
index 000000000..d1d4410f4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/menu-link/redirect-page.php
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/top-notice/notice.php b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/top-notice/notice.php
new file mode 100644
index 000000000..a717a565d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/publishpress/wordpress-version-notices/templates/top-notice/notice.php
@@ -0,0 +1,6 @@
+';
+$message = sprintf('' . $message, $linkStart, $linkEnd);
+?>
+
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/.travis.yml b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/.travis.yml
new file mode 100644
index 000000000..4e7bd9d3d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/.travis.yml
@@ -0,0 +1,20 @@
+language: php
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - 7.1
+ - hhvm
+
+matrix:
+ allow_failures:
+ - php: hhvm
+
+script:
+ - phpunit --configuration tests/phpunit.xml
+ - ./bin/phpcs -p --standard=tests/phpcs/ruleset.xml lib/
+
+
+before_script: composer install
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/ChangeLog.md b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/ChangeLog.md
new file mode 100644
index 000000000..923d247b4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/ChangeLog.md
@@ -0,0 +1,624 @@
+ChangeLog
+=========
+
+3.5.3 (2016-10-06)
+------------------
+
+* #331: Fix dealing with multiple overridden instances falling on the same
+ date/time (@afedyk-sugarcrm).
+
+
+3.5.2 (2016-04-24)
+-----------------
+
+* #312: Backported a fix related to iTip processing of events with timezones,
+ without a master event.
+
+
+3.5.1 (2016-04-06)
+------------------
+
+* #309: When expanding recurring events, the first event should also have a
+ `RECURRENCE-ID` property.
+* #306: iTip REPLYs to the first instance of a recurring event was not handled
+ correctly.
+
+
+3.5.0 (2016-01-11)
+------------------
+
+* This release supports PHP 7, contrary to 3.4.x versions.
+* BC Break: `Sabre\VObject\Property\Float` has been renamed to
+ `Sabre\VObject\Property\FloatValue`.
+* BC Break: `Sabre\VObject\Property\Integer` has been renamed to
+ `Sabre\VObject\Property\IntegerValue`.
+
+
+3.4.9 (2016-01-11)
+------------------
+
+* This package now specifies in composer.json that it does not support PHP 7.
+ For PHP 7, use version 3.5.x or 4.x.
+
+
+3.4.8 (2016-01-04)
+------------------
+
+* #284: When generating `CANCEL` iTip messages, we now include `DTEND`.
+ (@kewisch).
+
+
+3.4.7 (2015-09-05)
+------------------
+
+* #253: Handle `isInTimeRange` for recurring events that have 0 valid
+ instances. (@DominikTo, @migrax).
+
+
+3.4.6 (2015-08-06)
+------------------
+
+* #250: Recurring all-day events are incorrectly included in time range
+ requests when not using UTC in the time range. (@armin-hackmann)
+
+
+3.4.5 (2015-06-02)
+------------------
+
+* #229: Converting vcards from 3.0 to 4.0 that contained a `LANG` property
+ would throw an error.
+
+
+3.4.4 (2015-05-27)
+------------------
+
+* #228: Fixed a 'party crasher' bug in the iTip broker. This would break
+ scheduling in some cases.
+
+
+3.4.3 (2015-05-19)
+------------------
+
+* #219: Corrected validation of `EXDATE` properties with more than one value.
+* #212: `BYSETPOS` with values below `-1` was broken and could cause infinite
+ loops.
+* #211: Fix `BYDAY=-5TH` in recurrence iterator. (@lindquist)
+* #216: `ENCODING` parameter is now validated for all document types.
+* #217: Initializing vCard `DATE` objects with a PHP DateTime object will now
+ work correctly. (@thomascube)
+
+
+3.4.2 (2015-02-25)
+------------------
+
+* #210: iTip: Replying to an event without a master event was broken.
+
+
+3.4.1 (2015-02-24)
+------------------
+
+* A minor change to ensure that unittests work correctly in the sabre/dav
+ test-suite.
+
+
+3.4.0 (2015-02-23)
+------------------
+
+* #196: Made parsing recurrence rules a lot faster on big calendars.
+* Updated windows timezone mappings to latest unicode version.
+* #202: Support for parsing and validating `VAVAILABILITY` components. (@Hywan)
+* #195: PHP 5.3 compatibility in 'generatevcards' script. (@rickdenhaan)
+* #205: Improving handling of multiple `EXDATE` when processing iTip changes.
+ (@armin-hackmann)
+* #187: Fixed validator rules for `LAST-MODIFIED` properties.
+* #188: Retain floating times when generating instances using
+ `Recur\EventIterator`.
+* #203: Skip tests for timezones that are not supported on older PHP versions,
+ instead of a hard fail.
+* #204: Dealing a bit better with vCard date-time values that contained
+ milliseconds. (which is normally invalid). (@armin-hackmann)
+
+
+3.3.5 (2015-01-09)
+------------------
+
+* #168: Expanding calendars now removes objects with recurrence rules that
+ don't have a valid recurrence instance.
+* #177: SCHEDULE-STATUS should not contain a reason phrase, only a status
+ code.
+* #175: Parser can now read and skip the UTF-8 BOM.
+* #179: Added `isFloating` to `DATE-TIME` properties.
+* #179: Fixed jCal serialization of floating `DATE-TIME` properties.
+* #173: vCard converter failed for `X-ABDATE` properties that had no
+ `X-ABLABEL`.
+* #180: Added `PROFILE_CALDAV` and `PROFILE_CARDDAV` to enable validation rules
+ specific for CalDAV/CardDAV servers.
+* #176: A missing `UID` is no longer an error, but a warning for the vCard
+ validator, unless `PROFILE_CARDDAV` is specified.
+
+
+3.3.4 (2014-11-19)
+------------------
+
+* #154: Converting `ANNIVERSARY` to `X-ANNIVERSARY` and `X-ABDATE` and
+ vice-versa when converting to/from vCard 4.
+* #154: It's now possible to easily select all vCard properties belonging to
+ a single group with `$vcard->{'ITEM1.'}` syntax. (@armin-hackmann)
+* #156: Simpler way to check if a string is UTF-8. (@Hywan)
+* Unittest improvements.
+* #159: The recurrence iterator, freebusy generator and iCalendar DATE and
+ DATE-TIME properties can now all accept a reference timezone when working
+ floating times or all-day events.
+* #159: Master events will no longer get a `RECURRENCE-ID` when expanding.
+* #159: `RECURRENCE-ID` for all-day events will now be correct when expanding.
+* #163: Added a `getTimeZone()` method to `VTIMEZONE` components.
+
+
+3.3.3 (2014-10-09)
+------------------
+
+* #142: `CANCEL` and `REPLY` messages now include the `DTSTART` from the
+ original event.
+* #143: `SCHEDULE-AGENT` on the `ORGANIZER` property is respected.
+* #144: `PARTSTAT=NEEDS-ACTION` is now set for new invites, if no `PARTSTAT` is
+ set to support the inbox feature of iOS.
+* #147: Bugs related to scheduling all-day events.
+* #148: Ignore events that have attendees but no organizer.
+* #149: Avoiding logging errors during timezone detection. This is a workaround
+ for a PHP bug.
+* Support for "Line Islands Standard Time" windows timezone.
+* #154: Correctly work around vCard parameters that have a value but no name.
+
+
+3.3.2 (2014-09-19)
+------------------
+
+* Changed: iTip broker now sets RSVP status to false when replies are received.
+* #118: iTip Message now has a `getScheduleStatus()` method.
+* #119: Support for detecting 'significant changes'.
+* #120: Support for `SCHEDULE-FORCE-SEND`.
+* #121: iCal demands parameters containing the + sign to be quoted.
+* #122: Don't generate REPLY messages for events that have been cancelled.
+* #123: Added `SUMMARY` to iTip messages.
+* #130: Incorrect validation rules for `RELATED` (should be `RELATED-TO`).
+* #128: `ATTACH` in iCalendar is `URI` by default, not `BINARY`.
+* #131: RRULE that doesn't provide a single valid instance now throws an
+ exception.
+* #136: Validator rejects *all* control characters. We were missing a few.
+* #133: Splitter objects will throw exceptions when receiving incompatible
+ objects.
+* #127: Attendees who delete recurring event instances events they had already
+ declined earlier will no longer generate another reply.
+* #125: Send CANCEL messages when ORGANIZER property gets deleted.
+
+
+3.3.1 (2014-08-18)
+------------------
+
+* Changed: It's now possible to pass DateTime objects when using the magic
+ setters on properties. (`$event->DTSTART = new DateTime('now')`).
+* #111: iTip Broker does not process attendee adding events to EXDATE.
+* #112: EventIterator now sets TZID on RECURRENCE-ID.
+* #113: Timezone support during creation of iTip REPLY messages.
+* #114: VTIMEZONE is retained when generating new REQUEST objects.
+* #114: Support for 'MAILTO:' style email addresses (in uppercase) in the iTip
+ broker. This improves evolution support.
+* #115: Using REQUEST-STATUS from REPLY messages and now propegating that into
+ SCHEDULE-STATUS.
+
+
+3.3.0 (2014-08-07)
+------------------
+
+* We now use PSR-4 for the directory structure. This means that everything
+ that was used to be in the `lib/Sabre/VObject` directory is now moved to
+ `lib/`. If you use composer to load this library, you shouldn't have to do
+ anything about that though.
+* VEVENT now get populated with a DTSTAMP and UID property by default.
+* BC Break: Removed the 'includes.php' file. Use composer instead.
+* #103: Added support for processing [iTip][iTip] messages. This allows a user
+ to parse incoming iTip messages and apply the result on existing calendars,
+ or automatically generate invites/replies/cancellations based on changes that
+ a user made on objects.
+* #75, #58, #18: Fixes related to overriding the first event in recurrences.
+* Added: VCalendar::getBaseComponent to find the 'master' component in a
+ calendar.
+* #51: Support for iterating RDATE properties.
+* Fixed: Issue #101: RecurrenceIterator::nextMonthly() shows events that are
+ excluded events with wrong time
+
+
+3.2.4 (2014-07-14)
+------------------
+
+* Added: Issue #98. The VCardConverter now takes `X-APPLE-OMIT-YEAR` into
+ consideration when converting between vCard 3 and 4.
+* Fixed: Issue #96. Some support for Yahoo's broken vcards.
+* Fixed: PHP 5.3 support was broken in the cli tool.
+
+
+3.2.3 (2014-06-12)
+------------------
+
+* Validator now checks if DUE and DTSTART are of the same type in VTODO, and
+ ensures that DUE is always after DTSTART.
+* Removed documentation from source repository, to http://sabre.io/vobject/
+* Expanded the vobject cli tool validation output to make it easier to find
+ issues.
+* Fixed: vobject repair. It was not working for iCalendar objects.
+
+
+3.2.2 (2014-05-07)
+------------------
+
+* Minor tweak in unittests to make it run on PHP 5.5.12. Json-prettifying
+ slightly changed which caused the test to fail.
+
+
+3.2.1 (2014-05-03)
+------------------
+
+* Minor tweak to make the unittests run with the latest hhvm on travis.
+* Updated timezone definitions.
+* Updated copyright links to point to http://sabre.io/
+
+
+3.2.0 (2014-04-02)
+------------------
+
+* Now hhvm compatible!
+* The validator can now detect a _lot_ more problems. Many rules for both
+ iCalendar and vCard were added.
+* Added: bin/generate_vcards, a utility to generate random vcards for testing
+ purposes. Patches are welcome to add more data.
+* Updated: Windows timezone mapping to latest version from unicode.org
+* Changed: The timezone maps are now loaded in from external files, in
+ lib/Sabre/VObject/timezonedata.
+* Added: Fixing badly encoded URL's from google contacts vcards.
+* Fixed: Issue #68. Couldn't decode properties ending in a colon.
+* Fixed: Issue #72. RecurrenceIterator should respect timezone in the UNTIL
+ clause.
+* Fixed: Issue #67. BYMONTH limit on DAILY recurrences.
+* Fixed: Issue #26. Return a more descriptive error when coming across broken
+ BYDAY rules.
+* Fixed: Issue #28. Incorrect timezone detection for some timezones.
+* Fixed: Issue #70. Casting a parameter with a null value to string would fail.
+* Added: Support for rfc6715 and rfc6474.
+* Added: Support for DateTime objects in the VCard DATE-AND-OR-TIME property.
+* Added: UUIDUtil, for easily creating unique identifiers.
+* Fixed: Issue #83. Creating new VALUE=DATE objects using php's DateTime.
+* Fixed: Issue #86. Don't go into an infinite loop when php errors are
+ disabled and an invalid file is read.
+
+
+3.1.4 (2014-03-30)
+------------------
+
+* Fixed: Issue #87: Several compatibility fixes related to timezone handling
+ changes in PHP 5.5.10.
+
+
+3.1.3 (2013-10-02)
+------------------
+
+* Fixed: Support from properties from draft-daboo-valarm-extensions-04. Issue
+ #56.
+* Fixed: Issue #54. Parsing a stream of multiple vcards separated by more than
+ one newline. Thanks @Vedmak for the patch.
+* Fixed: Serializing vcard 2.1 parameters with no name caused a literal '1' to
+ be inserted.
+* Added: VCardConverter removed properties that are no longer supported in vCard
+ 4.0.
+* Added: vCards with a minimum number of values (such as N), but don't have that
+ many, are now automatically padded with empty components.
+* Added: The vCard validator now also checks for a minimum number of components,
+ and has the ability to repair these.
+* Added: Some support for vCard 2.1 in the VCard converter, to upgrade to vCard
+ 3.0 or 4.0.
+* Fixed: Issue 60 Use Document::$componentMap when instantiating the top-level
+ VCalendar and VCard components.
+* Fixed: Issue 62: Parsing iCalendar parameters with no value.
+* Added: --forgiving option to vobject utility.
+* Fixed: Compound properties such as ADR were not correctly split up in vCard
+ 2.1 quoted printable-encoded properties.
+* Fixed: Issue 64: Encoding of binary properties of converted vCards. Thanks
+ @DominikTo for the patch.
+
+
+3.1.2 (2013-08-13)
+------------------
+
+* Fixed: Setting correct property group on VCard conversion
+
+
+3.1.1 (2013-08-02)
+------------------
+
+* Fixed: Issue #53. A regression in RecurrenceIterator.
+
+
+3.1.0 (2013-07-27)
+------------------
+
+* Added: bad-ass new cli debugging utility (in bin/vobject).
+* Added: jCal and jCard parser.
+* Fixed: URI properties should not escape ; and ,.
+* Fixed: VCard 4 documents now correctly use URI as a default value-type for
+ PHOTO and others. BINARY no longer exists in vCard 4.
+* Added: Utility to convert between 2.1, 3.0 and 4.0 vCards.
+* Added: You can now add() multiple parameters to a property in one call.
+* Added: Parameter::has() for easily checking if a parameter value exists.
+* Added: VCard::preferred() to find a preferred email, phone number, etc for a
+ contact.
+* Changed: All $duration properties are now public.
+* Added: A few validators for iCalendar documents.
+* Fixed: Issue #50. RecurrenceIterator gives incorrect result when exception
+ events are out of order in the iCalendar file.
+* Fixed: Issue #48. Overridden events in the recurrence iterator that were past
+ the UNTIL date were ignored.
+* Added: getDuration for DURATION values such as TRIGGER. Thanks to
+ @SimonSimCity.
+* Fixed: Issue #52. vCard 2.1 parameters with no name may lose values if there's
+ more than 1. Thanks to @Vedmak.
+
+
+3.0.0 (2013-06-21)
+------------------
+
+* Fixed: includes.php file was still broken. Our tool to generate it had some
+ bugs.
+
+
+3.0.0-beta4 (2013-06-21)
+------------------------
+
+* Fixed: includes.php was no longer up to date.
+
+
+3.0.0-beta3 (2013-06-17)
+------------------------
+
+* Added: OPTION_FORGIVING now also allows slashes in property names.
+* Fixed: DateTimeParser no longer fails on dates with years < 1000 & > 4999
+* Fixed: Issue 36: Workaround for the recurrenceiterator and caldav events with
+ a missing base event.
+* Fixed: jCard encoding of TIME properties.
+* Fixed: jCal encoding of REQUEST-STATUS, GEO and PERIOD values.
+
+
+3.0.0-beta2 (2013-06-10)
+------------------------
+
+* Fixed: Corrected includes.php file.
+* Fixed: vCard date-time parser supported extended-format dates as well.
+* Changed: Properties have been moved to an ICalendar or VCard directory.
+* Fixed: Couldn't parse vCard 3 extended format dates and times.
+* Fixed: Couldn't export jCard DATE values correctly.
+* Fixed: Recursive loop in ICalendar\DateTime property.
+
+
+3.0.0-beta1 (2013-06-07)
+------------------------
+
+* Added: jsonSerialize() for creating jCal and jCard documents.
+* Added: helper method to parse vCard dates and times.
+* Added: Specialized classes for FLOAT, LANGUAGE-TAG, TIME, TIMESTAMP,
+ DATE-AND-OR-TIME, CAL-ADDRESS, UNKNOWN and UTC-OFFSET properties.
+* Removed: CommaSeparatedText property. Now included into Text.
+* Fixed: Multiple parameters with the same name are now correctly encoded.
+* Fixed: Parameter values containing a comma are now enclosed in double-quotes.
+* Fixed: Iterating parameter values should now fully work as expected.
+* Fixed: Support for vCard 2.1 nameless parameters.
+* Changed: $valueMap, $componentMap and $propertyMap now all use fully-qualified
+ class names, so they are actually overridable.
+* Fixed: Updating DATE-TIME to DATE values now behaves like expected.
+
+
+3.0.0-alpha4 (2013-05-31)
+-------------------------
+
+* Added: It's now possible to send parser options to the splitter classes.
+* Added: A few tweaks to improve component and property creation.
+
+
+3.0.0-alpha3 (2013-05-13)
+-------------------------
+
+* Changed: propertyMap, valueMap and componentMap are now static properties.
+* Changed: Component::remove() will throw an exception when trying to a node
+ that's not a child of said component.
+* Added: Splitter objects are now faster, line numbers are accurately reported
+ and use less memory.
+* Added: MimeDir parser can now continue parsing with the same stream buffer.
+* Fixed: vobjectvalidate.php is operational again.
+* Fixed: \r is properly stripped in text values.
+* Fixed: QUOTED-PRINTABLE is now correctly encoded as well as encoded, for
+ vCards 2.1.
+* Fixed: Parser assumes vCard 2.1, if no version was supplied.
+
+
+3.0.0-alpha2 (2013-05-22)
+-------------------------
+
+* Fixed: vCard URL properties were referencing a non-existant class.
+
+
+3.0.0-alpha1 (2013-05-21)
+-------------------------
+
+* Fixed: Now correctly dealing with escaping of properties. This solves the
+ problem with double-backslashes where they don't belong.
+* Added: Easy support for properties with more than one value, using setParts
+ and getParts.
+* Added: Support for broken 2.1 vCards produced by microsoft.
+* Added: Automatically decoding quoted-printable values.
+* Added: Automatically decoding base64 values.
+* Added: Decoding RFC6868 parameter values (uses ^ as an escape character).
+* Added: Fancy new MimeDir parser that can also parse streams.
+* Added: Automatically mapping many, many properties to a property-class with
+ specialized API's.
+* Added: remove() method for easily removing properties and sub-components
+ components.
+* Changed: Components, Properties and Parameters can no longer be created with
+ Component::create, Property::create and Parameter::create. They must instead
+ be created through the root component. (A VCalendar or VCard object).
+* Changed: API for DateTime properties has slightly changed.
+* Changed: the ->value property is now protected everywhere. Use getParts() and
+ getValue() instead.
+* BC Break: No support for mac newlines (\r). Never came across these anyway.
+* Added: add() method to the Property class.
+* Added: It's now possible to easy set multi-value properties as arrays.
+* Added: When setting date-time properties you can just pass PHP's DateTime
+ object.
+* Added: New components automatically get a bunch of default properties, such as
+ VERSION and CALSCALE.
+* Added: You can add new sub-components much quicker with the magic setters, and
+ add() method.
+
+
+2.1.7 (2015-01-21)
+------------------
+
+* Fixed: Issue #94, a workaround for bad escaping of ; and , in compound
+ properties. It's not a full solution, but it's an improvement for those
+ stuck in the 2.1 versions.
+
+
+2.1.6 (2014-12-10)
+------------------
+
+* Fixed: Minor change to make sure that unittests succeed on every PHP version.
+
+
+2.1.5 (2014-06-03)
+------------------
+
+* Fixed: #94: Better parameter escaping.
+* Changed: Documentation cleanups.
+
+
+2.1.4 (2014-03-30)
+------------------
+
+* Fixed: Issue #87: Several compatibility fixes related to timezone handling
+ changes in PHP 5.5.10.
+
+
+2.1.3 (2013-10-02)
+------------------
+
+* Fixed: Issue #55. \r must be stripped from property values.
+* Fixed: Issue #65. Putting quotes around parameter values that contain a colon.
+
+
+2.1.2 (2013-08-02)
+------------------
+
+* Fixed: Issue #53. A regression in RecurrenceIterator.
+
+
+2.1.1 (2013-07-27)
+------------------
+
+* Fixed: Issue #50. RecurrenceIterator gives incorrect result when exception
+ events are out of order in the iCalendar file.
+* Fixed: Issue #48. Overridden events in the recurrence iterator that were past
+ the UNTIL date were ignored.
+
+
+2.1.0 (2013-06-17)
+------------------
+
+* This version is fully backwards compatible with 2.0.\*. However, it contains a
+ few new API's that mimic the VObject 3 API. This allows it to be used a
+ 'bridge' version. Specifically, this new version exists so SabreDAV 1.7 and
+ 1.8 can run with both the 2 and 3 versions of this library.
+* Added: Property\DateTime::hasTime().
+* Added: Property\MultiDateTime::hasTime().
+* Added: Property::getValue().
+* Added: Document class.
+* Added: Document::createComponent and Document::createProperty.
+* Added: Parameter::getValue().
+
+
+2.0.7 (2013-03-05)
+------------------
+
+* Fixed: Microsoft re-uses their magic numbers for different timezones,
+ specifically id 2 for both Sarajevo and Lisbon). A workaround was added to
+ deal with this.
+
+
+2.0.6 (2013-02-17)
+------------------
+
+* Fixed: The reader now properly parses parameters without a value.
+
+
+2.0.5 (2012-11-05)
+------------------
+
+* Fixed: The FreeBusyGenerator is now properly using the factory methods for
+ creation of components and properties.
+
+
+2.0.4 (2012-11-02)
+------------------
+
+* Added: Known Lotus Notes / Domino timezone id's.
+
+
+2.0.3 (2012-10-29)
+------------------
+
+* Added: Support for 'GMT+????' format in TZID's.
+* Added: Support for formats like SystemV/EST5EDT in TZID's.
+* Fixed: RecurrenceIterator now repairs recurrence rules where UNTIL < DTSTART.
+* Added: Support for BYHOUR in FREQ=DAILY (@hollodk).
+* Added: Support for BYHOUR and BYDAY in FREQ=WEEKLY.
+
+
+2.0.2 (2012-10-06)
+------------------
+
+* Added: includes.php file, to load the entire library in one go.
+* Fixed: A problem with determining alarm triggers for TODO's.
+
+
+2.0.1 (2012-09-22)
+------------------
+
+* Removed: Element class. It wasn't used.
+* Added: Basic validation and repair methods for broken input data.
+* Fixed: RecurrenceIterator could infinitely loop when an INTERVAL of 0 was
+ specified.
+* Added: A cli script that can validate and automatically repair vcards and
+ iCalendar objects.
+* Added: A new 'Compound' property, that can automatically split up parts for
+ properties such as N, ADR, ORG and CATEGORIES.
+* Added: Splitter classes, that can split up large objects (such as exports)
+ into individual objects (thanks @DominikTO and @armin-hackmann).
+* Added: VFREEBUSY component, which allows easily checking wether timeslots are
+ available.
+* Added: The Reader class now has a 'FORGIVING' option, which allows it to parse
+ properties with incorrect characters in the name (at this time, it just allows
+ underscores).
+* Added: Also added the 'IGNORE_INVALID_LINES' option, to completely disregard
+ any invalid lines.
+* Fixed: A bug in Windows timezone-id mappings for times created in Greenlands
+ timezone (sorry Greenlanders! I do care!).
+* Fixed: DTEND was not generated correctly for VFREEBUSY reports.
+* Fixed: Parser is at least 25% faster with real-world data.
+
+
+2.0.0 (2012-08-08)
+------------------
+
+* VObject is now a separate project from SabreDAV. See the SabreDAV changelog
+ for version information before 2.0.
+* New: VObject library now uses PHP 5.3 namespaces.
+* New: It's possible to specify lists of parameters when constructing
+ properties.
+* New: made it easier to construct the FreeBusyGenerator.
+
+[iTip]: http://tools.ietf.org/html/rfc5546
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/LICENSE b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/LICENSE
new file mode 100644
index 000000000..a99c8da19
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/LICENSE
@@ -0,0 +1,27 @@
+Copyright (C) 2011-2016 fruux GmbH (https://fruux.com/)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name Sabre nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Cli.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Cli.php
new file mode 100644
index 000000000..4566e8e2f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Cli.php
@@ -0,0 +1,761 @@
+stderr) {
+ $this->stderr = fopen('php://stderr', 'w');
+ }
+ if (!$this->stdout) {
+ $this->stdout = fopen('php://stdout', 'w');
+ }
+ if (!$this->stdin) {
+ $this->stdin = fopen('php://stdin', 'r');
+ }
+
+ // @codeCoverageIgnoreEnd
+
+
+ try {
+
+ list($options, $positional) = $this->parseArguments($argv);
+
+ if (isset($options['q'])) {
+ $this->quiet = true;
+ }
+ $this->log($this->colorize('green', "sabre/vobject ") . $this->colorize('yellow', Version::VERSION));
+
+ foreach($options as $name=>$value) {
+
+ switch($name) {
+
+ case 'q' :
+ // Already handled earlier.
+ break;
+ case 'h' :
+ case 'help' :
+ $this->showHelp();
+ return 0;
+ break;
+ case 'format' :
+ switch($value) {
+
+ // jcard/jcal documents
+ case 'jcard' :
+ case 'jcal' :
+
+ // specific document versions
+ case 'vcard21' :
+ case 'vcard30' :
+ case 'vcard40' :
+ case 'icalendar20' :
+
+ // specific formats
+ case 'json' :
+ case 'mimedir' :
+
+ // icalendar/vcad
+ case 'icalendar' :
+ case 'vcard' :
+ $this->format = $value;
+ break;
+
+ default :
+ throw new InvalidArgumentException('Unknown format: ' . $value);
+
+ }
+ break;
+ case 'pretty' :
+ if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
+ $this->pretty = true;
+ }
+ break;
+ case 'forgiving' :
+ $this->forgiving = true;
+ break;
+ case 'inputformat' :
+ switch($value) {
+ // json formats
+ case 'jcard' :
+ case 'jcal' :
+ case 'json' :
+ $this->inputFormat = 'json';
+ break;
+
+ // mimedir formats
+ case 'mimedir' :
+ case 'icalendar' :
+ case 'vcard' :
+ case 'vcard21' :
+ case 'vcard30' :
+ case 'vcard40' :
+ case 'icalendar20' :
+
+ $this->inputFormat = 'mimedir';
+ break;
+
+ default :
+ throw new InvalidArgumentException('Unknown format: ' . $value);
+
+ }
+ break;
+ default :
+ throw new InvalidArgumentException('Unknown option: ' . $name);
+
+ }
+
+ }
+
+ if (count($positional) === 0) {
+ $this->showHelp();
+ return 1;
+ }
+
+ if (count($positional) === 1) {
+ throw new InvalidArgumentException('Inputfile is a required argument');
+ }
+
+ if (count($positional) > 3) {
+ throw new InvalidArgumentException('Too many arguments');
+ }
+
+ if (!in_array($positional[0], array('validate','repair','convert','color'))) {
+ throw new InvalidArgumentException('Uknown command: ' . $positional[0]);
+ }
+
+ } catch (InvalidArgumentException $e) {
+ $this->showHelp();
+ $this->log('Error: ' . $e->getMessage(), 'red');
+ return 1;
+ }
+
+ $command = $positional[0];
+
+ $this->inputPath = $positional[1];
+ $this->outputPath = isset($positional[2])?$positional[2]:'-';
+
+ if ($this->outputPath !== '-') {
+ $this->stdout = fopen($this->outputPath, 'w');
+ }
+
+ if (!$this->inputFormat) {
+ if (substr($this->inputPath, -5)==='.json') {
+ $this->inputFormat = 'json';
+ } else {
+ $this->inputFormat = 'mimedir';
+ }
+ }
+ if (!$this->format) {
+ if (substr($this->outputPath,-5)==='.json') {
+ $this->format = 'json';
+ } else {
+ $this->format = 'mimedir';
+ }
+ }
+
+
+ $realCode = 0;
+
+ try {
+
+ while($input = $this->readInput()) {
+
+ $returnCode = $this->$command($input);
+ if ($returnCode!==0) $realCode = $returnCode;
+
+ }
+
+ } catch (EofException $e) {
+ // end of file
+ } catch (\Exception $e) {
+ $this->log('Error: ' . $e->getMessage(),'red');
+ return 2;
+ }
+
+ return $realCode;
+
+ }
+
+ /**
+ * Shows the help message.
+ *
+ * @return void
+ */
+ protected function showHelp() {
+
+ $this->log('Usage:', 'yellow');
+ $this->log(" vobject [options] command [arguments]");
+ $this->log('');
+ $this->log('Options:', 'yellow');
+ $this->log($this->colorize('green', ' -q ') . "Don't output anything.");
+ $this->log($this->colorize('green', ' -help -h ') . "Display this help message.");
+ $this->log($this->colorize('green', ' --format ') . "Convert to a specific format. Must be one of: vcard, vcard21,");
+ $this->log($this->colorize('green', ' --forgiving ') . "Makes the parser less strict.");
+ $this->log(" vcard30, vcard40, icalendar20, jcal, jcard, json, mimedir.");
+ $this->log($this->colorize('green', ' --inputformat ') . "If the input format cannot be guessed from the extension, it");
+ $this->log(" must be specified here.");
+ // Only PHP 5.4 and up
+ if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
+ $this->log($this->colorize('green', ' --pretty ') . "json pretty-print.");
+ }
+ $this->log('');
+ $this->log('Commands:', 'yellow');
+ $this->log($this->colorize('green', ' validate') . ' source_file Validates a file for correctness.');
+ $this->log($this->colorize('green', ' repair') . ' source_file [output_file] Repairs a file.');
+ $this->log($this->colorize('green', ' convert') . ' source_file [output_file] Converts a file.');
+ $this->log($this->colorize('green', ' color') . ' source_file Colorize a file, useful for debbugging.');
+ $this->log(
+ <<
log('Examples:', 'yellow');
+ $this->log(' vobject convert contact.vcf contact.json');
+ $this->log(' vobject convert --format=vcard40 old.vcf new.vcf');
+ $this->log(' vobject convert --inputformat=json --format=mimedir - -');
+ $this->log(' vobject color calendar.ics');
+ $this->log('');
+ $this->log('https://github.com/fruux/sabre-vobject','purple');
+
+ }
+
+ /**
+ * Validates a VObject file
+ *
+ * @param Component $vObj
+ * @return int
+ */
+ protected function validate($vObj) {
+
+ $returnCode = 0;
+
+ switch($vObj->name) {
+ case 'VCALENDAR' :
+ $this->log("iCalendar: " . (string)$vObj->VERSION);
+ break;
+ case 'VCARD' :
+ $this->log("vCard: " . (string)$vObj->VERSION);
+ break;
+ }
+
+ $warnings = $vObj->validate();
+ if (!count($warnings)) {
+ $this->log(" No warnings!");
+ } else {
+
+ $levels = array(
+ 1 => 'REPAIRED',
+ 2 => 'WARNING',
+ 3 => 'ERROR',
+ );
+ $returnCode = 2;
+ foreach($warnings as $warn) {
+
+ $extra = '';
+ if ($warn['node'] instanceof Property) {
+ $extra = ' (property: "' . $warn['node']->name . '")';
+ }
+ $this->log(" [" . $levels[$warn['level']] . '] ' . $warn['message'] . $extra);
+
+ }
+
+ }
+
+ return $returnCode;
+
+ }
+
+ /**
+ * Repairs a VObject file
+ *
+ * @param Component $vObj
+ * @return int
+ */
+ protected function repair($vObj) {
+
+ $returnCode = 0;
+
+ switch($vObj->name) {
+ case 'VCALENDAR' :
+ $this->log("iCalendar: " . (string)$vObj->VERSION);
+ break;
+ case 'VCARD' :
+ $this->log("vCard: " . (string)$vObj->VERSION);
+ break;
+ }
+
+ $warnings = $vObj->validate(Node::REPAIR);
+ if (!count($warnings)) {
+ $this->log(" No warnings!");
+ } else {
+
+ $levels = array(
+ 1 => 'REPAIRED',
+ 2 => 'WARNING',
+ 3 => 'ERROR',
+ );
+ $returnCode = 2;
+ foreach($warnings as $warn) {
+
+ $extra = '';
+ if ($warn['node'] instanceof Property) {
+ $extra = ' (property: "' . $warn['node']->name . '")';
+ }
+ $this->log(" [" . $levels[$warn['level']] . '] ' . $warn['message'] . $extra);
+
+ }
+
+ }
+ fwrite($this->stdout, $vObj->serialize());
+
+ return $returnCode;
+
+ }
+
+ /**
+ * Converts a vObject file to a new format.
+ *
+ * @param Component $vObj
+ * @return int
+ */
+ protected function convert($vObj) {
+
+ $json = false;
+ $convertVersion = null;
+ $forceInput = null;
+
+ switch($this->format) {
+ case 'json' :
+ $json = true;
+ if ($vObj->name === 'VCARD') {
+ $convertVersion = Document::VCARD40;
+ }
+ break;
+ case 'jcard' :
+ $json = true;
+ $forceInput = 'VCARD';
+ $convertVersion = Document::VCARD40;
+ break;
+ case 'jcal' :
+ $json = true;
+ $forceInput = 'VCALENDAR';
+ break;
+ case 'mimedir' :
+ case 'icalendar' :
+ case 'icalendar20' :
+ case 'vcard' :
+ break;
+ case 'vcard21' :
+ $convertVersion = Document::VCARD21;
+ break;
+ case 'vcard30' :
+ $convertVersion = Document::VCARD30;
+ break;
+ case 'vcard40' :
+ $convertVersion = Document::VCARD40;
+ break;
+
+ }
+
+ if ($forceInput && $vObj->name !== $forceInput) {
+ throw new \Exception('You cannot convert a ' . strtolower($vObj->name) . ' to ' . $this->format);
+ }
+ if ($convertVersion) {
+ $vObj = $vObj->convert($convertVersion);
+ }
+ if ($json) {
+ $jsonOptions = 0;
+ if ($this->pretty) {
+ $jsonOptions = JSON_PRETTY_PRINT;
+ }
+ fwrite($this->stdout, json_encode($vObj->jsonSerialize(), $jsonOptions));
+ } else {
+ fwrite($this->stdout, $vObj->serialize());
+ }
+
+ return 0;
+
+ }
+
+ /**
+ * Colorizes a file
+ *
+ * @param Component $vObj
+ * @return int
+ */
+ protected function color($vObj) {
+
+ fwrite($this->stdout, $this->serializeComponent($vObj));
+
+ }
+
+ /**
+ * Returns an ansi color string for a color name.
+ *
+ * @param string $color
+ * @return string
+ */
+ protected function colorize($color, $str, $resetTo = 'default') {
+
+ $colors = array(
+ 'cyan' => '1;36',
+ 'red' => '1;31',
+ 'yellow' => '1;33',
+ 'blue' => '0;34',
+ 'green' => '0;32',
+ 'default' => '0',
+ 'purple' => '0;35',
+ );
+ return "\033[" . $colors[$color] . 'm' . $str . "\033[".$colors[$resetTo]."m";
+
+ }
+
+ /**
+ * Writes out a string in specific color.
+ *
+ * @param string $color
+ * @param string $str
+ * @return void
+ */
+ protected function cWrite($color, $str) {
+
+ fwrite($this->stdout, $this->colorize($color, $str));
+
+ }
+
+ protected function serializeComponent(Component $vObj) {
+
+ $this->cWrite('cyan', 'BEGIN');
+ $this->cWrite('red', ':');
+ $this->cWrite('yellow', $vObj->name . "\n");
+
+ /**
+ * Gives a component a 'score' for sorting purposes.
+ *
+ * This is solely used by the childrenSort method.
+ *
+ * A higher score means the item will be lower in the list.
+ * To avoid score collisions, each "score category" has a reasonable
+ * space to accomodate elements. The $key is added to the $score to
+ * preserve the original relative order of elements.
+ *
+ * @param int $key
+ * @param array $array
+ * @return int
+ */
+ $sortScore = function($key, $array) {
+
+ if ($array[$key] instanceof Component) {
+
+ // We want to encode VTIMEZONE first, this is a personal
+ // preference.
+ if ($array[$key]->name === 'VTIMEZONE') {
+ $score=300000000;
+ return $score+$key;
+ } else {
+ $score=400000000;
+ return $score+$key;
+ }
+ } else {
+ // Properties get encoded first
+ // VCARD version 4.0 wants the VERSION property to appear first
+ if ($array[$key] instanceof Property) {
+ if ($array[$key]->name === 'VERSION') {
+ $score=100000000;
+ return $score+$key;
+ } else {
+ // All other properties
+ $score=200000000;
+ return $score+$key;
+ }
+ }
+ }
+
+ };
+
+ $tmp = $vObj->children;
+ uksort(
+ $vObj->children,
+ function($a, $b) use ($sortScore, $tmp) {
+
+ $sA = $sortScore($a, $tmp);
+ $sB = $sortScore($b, $tmp);
+
+ return $sA - $sB;
+
+ }
+ );
+
+ foreach($vObj->children as $child) {
+ if ($child instanceof Component) {
+ $this->serializeComponent($child);
+ } else {
+ $this->serializeProperty($child);
+ }
+ }
+
+ $this->cWrite('cyan', 'END');
+ $this->cWrite('red', ':');
+ $this->cWrite('yellow', $vObj->name . "\n");
+
+ }
+
+ /**
+ * Colorizes a property.
+ *
+ * @param Property $property
+ * @return void
+ */
+ protected function serializeProperty(Property $property) {
+
+ if ($property->group) {
+ $this->cWrite('default', $property->group);
+ $this->cWrite('red', '.');
+ }
+
+ $str = '';
+ $this->cWrite('yellow', $property->name);
+
+ foreach($property->parameters as $param) {
+
+ $this->cWrite('red',';');
+ $this->cWrite('blue', $param->serialize());
+
+ }
+ $this->cWrite('red',':');
+
+ if ($property instanceof Property\Binary) {
+
+ $this->cWrite('default', 'embedded binary stripped. (' . strlen($property->getValue()) . ' bytes)');
+
+ } else {
+
+ $parts = $property->getParts();
+ $first1 = true;
+ // Looping through property values
+ foreach($parts as $part) {
+ if ($first1) {
+ $first1 = false;
+ } else {
+ $this->cWrite('red', $property->delimiter);
+ }
+ $first2 = true;
+ // Looping through property sub-values
+ foreach((array)$part as $subPart) {
+ if ($first2) {
+ $first2 = false;
+ } else {
+ // The sub-value delimiter is always comma
+ $this->cWrite('red', ',');
+ }
+
+ $subPart = strtr(
+ $subPart,
+ array(
+ '\\' => $this->colorize('purple', '\\\\', 'green'),
+ ';' => $this->colorize('purple', '\;', 'green'),
+ ',' => $this->colorize('purple', '\,', 'green'),
+ "\n" => $this->colorize('purple', "\\n\n\t", 'green'),
+ "\r" => "",
+ )
+ );
+
+ $this->cWrite('green', $subPart);
+ }
+ }
+
+ }
+ $this->cWrite("default", "\n");
+
+ }
+
+ /**
+ * Parses the list of arguments.
+ *
+ * @param array $argv
+ * @return void
+ */
+ protected function parseArguments(array $argv) {
+
+ $positional = array();
+ $options = array();
+
+ for($ii=0; $ii < count($argv); $ii++) {
+
+ // Skipping the first argument.
+ if ($ii===0) continue;
+
+ $v = $argv[$ii];
+
+ if (substr($v,0,2)==='--') {
+ // This is a long-form option.
+ $optionName = substr($v,2);
+ $optionValue = true;
+ if (strpos($optionName,'=')) {
+ list($optionName, $optionValue) = explode('=', $optionName);
+ }
+ $options[$optionName] = $optionValue;
+ } elseif (substr($v,0,1) === '-' && strlen($v)>1) {
+ // This is a short-form option.
+ foreach(str_split(substr($v,1)) as $option) {
+ $options[$option] = true;
+ }
+
+ } else {
+
+ $positional[] = $v;
+
+ }
+
+ }
+
+ return array($options, $positional);
+
+ }
+
+ protected $parser;
+
+ /**
+ * Reads the input file
+ *
+ * @return Component
+ */
+ protected function readInput() {
+
+ if (!$this->parser) {
+ if ($this->inputPath!=='-') {
+ $this->stdin = fopen($this->inputPath,'r');
+ }
+
+ if ($this->inputFormat === 'mimedir') {
+ $this->parser = new Parser\MimeDir($this->stdin, ($this->forgiving?Reader::OPTION_FORGIVING:0));
+ } else {
+ $this->parser = new Parser\Json($this->stdin, ($this->forgiving?Reader::OPTION_FORGIVING:0));
+ }
+ }
+
+ return $this->parser->parse();
+
+ }
+
+ /**
+ * Sends a message to STDERR.
+ *
+ * @param string $msg
+ * @return void
+ */
+ protected function log($msg, $color = 'default') {
+
+ if (!$this->quiet) {
+ if ($color!=='default') {
+ $msg = $this->colorize($color, $msg);
+ }
+ fwrite($this->stderr, $msg . "\n");
+ }
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component.php
new file mode 100644
index 000000000..e5ce3f400
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component.php
@@ -0,0 +1,595 @@
+value syntax, in which case
+ * properties will automatically be created, or you can just pass a list of
+ * Component and Property object.
+ *
+ * By default, a set of sensible values will be added to the component. For
+ * an iCalendar object, this may be something like CALSCALE:GREGORIAN. To
+ * ensure that this does not happen, set $defaults to false.
+ *
+ * @param Document $root
+ * @param string $name such as VCALENDAR, VEVENT.
+ * @param array $children
+ * @param bool $defaults
+ * @return void
+ */
+ function __construct(Document $root, $name, array $children = array(), $defaults = true) {
+
+ $this->name = strtoupper($name);
+ $this->root = $root;
+
+ if ($defaults) {
+ // This is a terribly convoluted way to do this, but this ensures
+ // that the order of properties as they are specified in both
+ // defaults and the childrens list, are inserted in the object in a
+ // natural way.
+ $list = $this->getDefaults();
+ $nodes = array();
+ foreach($children as $key=>$value) {
+ if ($value instanceof Node) {
+ if (isset($list[$value->name])) {
+ unset($list[$value->name]);
+ }
+ $nodes[] = $value;
+ } else {
+ $list[$key] = $value;
+ }
+ }
+ foreach($list as $key=>$value) {
+ $this->add($key, $value);
+ }
+ foreach($nodes as $node) {
+ $this->add($node);
+ }
+ } else {
+ foreach($children as $k=>$child) {
+ if ($child instanceof Node) {
+
+ // Component or Property
+ $this->add($child);
+ } else {
+
+ // Property key=>value
+ $this->add($k, $child);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Adds a new property or component, and returns the new item.
+ *
+ * This method has 3 possible signatures:
+ *
+ * add(Component $comp) // Adds a new component
+ * add(Property $prop) // Adds a new property
+ * add($name, $value, array $parameters = array()) // Adds a new property
+ * add($name, array $children = array()) // Adds a new component
+ * by name.
+ *
+ * @return Node
+ */
+ function add($a1, $a2 = null, $a3 = null) {
+
+ if ($a1 instanceof Node) {
+ if (!is_null($a2)) {
+ throw new \InvalidArgumentException('The second argument must not be specified, when passing a VObject Node');
+ }
+ $a1->parent = $this;
+ $this->children[] = $a1;
+
+ return $a1;
+
+ } elseif(is_string($a1)) {
+
+ $item = $this->root->create($a1, $a2, $a3);
+ $item->parent = $this;
+ $this->children[] = $item;
+
+ return $item;
+
+ } else {
+
+ throw new \InvalidArgumentException('The first argument must either be a \\Sabre\\VObject\\Node or a string');
+
+ }
+
+ }
+
+ /**
+ * This method removes a component or property from this component.
+ *
+ * You can either specify the item by name (like DTSTART), in which case
+ * all properties/components with that name will be removed, or you can
+ * pass an instance of a property or component, in which case only that
+ * exact item will be removed.
+ *
+ * The removed item will be returned. In case there were more than 1 items
+ * removed, only the last one will be returned.
+ *
+ * @param mixed $item
+ * @return void
+ */
+ function remove($item) {
+
+ if (is_string($item)) {
+ $children = $this->select($item);
+ foreach($children as $k=>$child) {
+ unset($this->children[$k]);
+ }
+ return $child;
+ } else {
+ foreach($this->children as $k => $child) {
+ if ($child===$item) {
+ unset($this->children[$k]);
+ return $child;
+ }
+ }
+
+ throw new \InvalidArgumentException('The item you passed to remove() was not a child of this component');
+
+ }
+
+ }
+
+ /**
+ * Returns an iterable list of children
+ *
+ * @return array
+ */
+ function children() {
+
+ return $this->children;
+
+ }
+
+ /**
+ * This method only returns a list of sub-components. Properties are
+ * ignored.
+ *
+ * @return array
+ */
+ function getComponents() {
+
+ $result = array();
+ foreach($this->children as $child) {
+ if ($child instanceof Component) {
+ $result[] = $child;
+ }
+ }
+
+ return $result;
+
+ }
+
+ /**
+ * Returns an array with elements that match the specified name.
+ *
+ * This function is also aware of MIME-Directory groups (as they appear in
+ * vcards). This means that if a property is grouped as "HOME.EMAIL", it
+ * will also be returned when searching for just "EMAIL". If you want to
+ * search for a property in a specific group, you can select on the entire
+ * string ("HOME.EMAIL"). If you want to search on a specific property that
+ * has not been assigned a group, specify ".EMAIL".
+ *
+ * Keys are retained from the 'children' array, which may be confusing in
+ * certain cases.
+ *
+ * @param string $name
+ * @return array
+ */
+ function select($name) {
+
+ $group = null;
+ $name = strtoupper($name);
+ if (strpos($name,'.')!==false) {
+ list($group,$name) = explode('.', $name, 2);
+ }
+
+ $result = array();
+ foreach($this->children as $key=>$child) {
+
+ if (
+ (
+ strtoupper($child->name) === $name
+ && (is_null($group) || ( $child instanceof Property && strtoupper($child->group) === $group))
+ )
+ ||
+ (
+ $name === '' && $child instanceof Property && strtoupper($child->group) === $group
+ )
+ ) {
+
+ $result[$key] = $child;
+
+ }
+ }
+
+ reset($result);
+ return $result;
+
+ }
+
+ /**
+ * Turns the object back into a serialized blob.
+ *
+ * @return string
+ */
+ function serialize() {
+
+ $str = "BEGIN:" . $this->name . "\r\n";
+
+ /**
+ * Gives a component a 'score' for sorting purposes.
+ *
+ * This is solely used by the childrenSort method.
+ *
+ * A higher score means the item will be lower in the list.
+ * To avoid score collisions, each "score category" has a reasonable
+ * space to accomodate elements. The $key is added to the $score to
+ * preserve the original relative order of elements.
+ *
+ * @param int $key
+ * @param array $array
+ * @return int
+ */
+ $sortScore = function($key, $array) {
+
+ if ($array[$key] instanceof Component) {
+
+ // We want to encode VTIMEZONE first, this is a personal
+ // preference.
+ if ($array[$key]->name === 'VTIMEZONE') {
+ $score=300000000;
+ return $score+$key;
+ } else {
+ $score=400000000;
+ return $score+$key;
+ }
+ } else {
+ // Properties get encoded first
+ // VCARD version 4.0 wants the VERSION property to appear first
+ if ($array[$key] instanceof Property) {
+ if ($array[$key]->name === 'VERSION') {
+ $score=100000000;
+ return $score+$key;
+ } else {
+ // All other properties
+ $score=200000000;
+ return $score+$key;
+ }
+ }
+ }
+
+ };
+
+ $tmp = $this->children;
+ uksort(
+ $this->children,
+ function($a, $b) use ($sortScore, $tmp) {
+
+ $sA = $sortScore($a, $tmp);
+ $sB = $sortScore($b, $tmp);
+
+ return $sA - $sB;
+
+ }
+ );
+
+ foreach($this->children as $child) $str.=$child->serialize();
+ $str.= "END:" . $this->name . "\r\n";
+
+ return $str;
+
+ }
+
+ /**
+ * This method returns an array, with the representation as it should be
+ * encoded in json. This is used to create jCard or jCal documents.
+ *
+ * @return array
+ */
+ function jsonSerialize() {
+
+ $components = array();
+ $properties = array();
+
+ foreach($this->children as $child) {
+ if ($child instanceof Component) {
+ $components[] = $child->jsonSerialize();
+ } else {
+ $properties[] = $child->jsonSerialize();
+ }
+ }
+
+ return array(
+ strtolower($this->name),
+ $properties,
+ $components
+ );
+
+ }
+
+ /**
+ * This method should return a list of default property values.
+ *
+ * @return array
+ */
+ protected function getDefaults() {
+
+ return array();
+
+ }
+
+ /* Magic property accessors {{{ */
+
+ /**
+ * Using 'get' you will either get a property or component.
+ *
+ * If there were no child-elements found with the specified name,
+ * null is returned.
+ *
+ * To use this, this may look something like this:
+ *
+ * $event = $calendar->VEVENT;
+ *
+ * @param string $name
+ * @return Property
+ */
+ function __get($name) {
+
+ $matches = $this->select($name);
+ if (count($matches)===0) {
+ return null;
+ } else {
+ $firstMatch = current($matches);
+ /** @var $firstMatch Property */
+ $firstMatch->setIterator(new ElementList(array_values($matches)));
+ return $firstMatch;
+ }
+
+ }
+
+ /**
+ * This method checks if a sub-element with the specified name exists.
+ *
+ * @param string $name
+ * @return bool
+ */
+ function __isset($name) {
+
+ $matches = $this->select($name);
+ return count($matches)>0;
+
+ }
+
+ /**
+ * Using the setter method you can add properties or subcomponents
+ *
+ * You can either pass a Component, Property
+ * object, or a string to automatically create a Property.
+ *
+ * If the item already exists, it will be removed. If you want to add
+ * a new item with the same name, always use the add() method.
+ *
+ * @param string $name
+ * @param mixed $value
+ * @return void
+ */
+ function __set($name, $value) {
+
+ $matches = $this->select($name);
+ $overWrite = count($matches)?key($matches):null;
+
+ if ($value instanceof Component || $value instanceof Property) {
+ $value->parent = $this;
+ if (!is_null($overWrite)) {
+ $this->children[$overWrite] = $value;
+ } else {
+ $this->children[] = $value;
+ }
+ } else {
+ $property = $this->root->create($name,$value);
+ $property->parent = $this;
+ if (!is_null($overWrite)) {
+ $this->children[$overWrite] = $property;
+ } else {
+ $this->children[] = $property;
+ }
+ }
+ }
+
+ /**
+ * Removes all properties and components within this component with the
+ * specified name.
+ *
+ * @param string $name
+ * @return void
+ */
+ function __unset($name) {
+
+ $matches = $this->select($name);
+ foreach($matches as $k=>$child) {
+
+ unset($this->children[$k]);
+ $child->parent = null;
+
+ }
+
+ }
+
+ /* }}} */
+
+ /**
+ * This method is automatically called when the object is cloned.
+ * Specifically, this will ensure all child elements are also cloned.
+ *
+ * @return void
+ */
+ function __clone() {
+
+ foreach($this->children as $key=>$child) {
+ $this->children[$key] = clone $child;
+ $this->children[$key]->parent = $this;
+ }
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * It is also possible to specify defaults and severity levels for
+ * violating the rule.
+ *
+ * See the VEVENT implementation for getValidationRules for a more complex
+ * example.
+ *
+ * @var array
+ */
+ function getValidationRules() {
+
+ return array();
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ * Node::PROFILE_CARDDAV - Validate the vCard for CardDAV purposes.
+ * Node::PROFILE_CALDAV - Validate the iCalendar for CalDAV purposes.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on).
+ * 2 - A warning.
+ * 3 - An error.
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $rules = $this->getValidationRules();
+ $defaults = $this->getDefaults();
+
+ $propertyCounters = array();
+
+ $messages = array();
+
+ foreach($this->children as $child) {
+ $name = strtoupper($child->name);
+ if (!isset($propertyCounters[$name])) {
+ $propertyCounters[$name] = 1;
+ } else {
+ $propertyCounters[$name]++;
+ }
+ $messages = array_merge($messages, $child->validate($options));
+ }
+
+ foreach($rules as $propName => $rule) {
+
+ switch($rule) {
+ case '0' :
+ if (isset($propertyCounters[$propName])) {
+ $messages[] = array(
+ 'level' => 3,
+ 'message' => $propName . ' MUST NOT appear in a ' . $this->name . ' component',
+ 'node' => $this,
+ );
+ }
+ break;
+ case '1' :
+ if (!isset($propertyCounters[$propName]) || $propertyCounters[$propName]!==1) {
+ $repaired = false;
+ if ($options & self::REPAIR && isset($defaults[$propName])) {
+ $this->add($propName, $defaults[$propName]);
+ }
+ $messages[] = array(
+ 'level' => $repaired?1:3,
+ 'message' => $propName . ' MUST appear exactly once in a ' . $this->name . ' component',
+ 'node' => $this,
+ );
+ }
+ break;
+ case '+' :
+ if (!isset($propertyCounters[$propName]) || $propertyCounters[$propName] < 1) {
+ $messages[] = array(
+ 'level' => 3,
+ 'message' => $propName . ' MUST appear at least once in a ' . $this->name . ' component',
+ 'node' => $this,
+ );
+ }
+ break;
+ case '*' :
+ break;
+ case '?' :
+ if (isset($propertyCounters[$propName]) && $propertyCounters[$propName] > 1) {
+ $messages[] = array(
+ 'level' => 3,
+ 'message' => $propName . ' MUST NOT appear more than once in a ' . $this->name . ' component',
+ 'node' => $this,
+ );
+ }
+ break;
+
+ }
+
+ }
+ return $messages;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/Available.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/Available.php
new file mode 100644
index 000000000..2460fe3b1
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/Available.php
@@ -0,0 +1,108 @@
+ 1,
+ 'DTSTART' => 1,
+ 'DTSTAMP' => 1,
+
+ 'DTEND' => '?',
+ 'DURATION' => '?',
+
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'LAST-MODIFIED' => '?',
+ 'RECURRENCE-ID' => '?',
+ 'RRULE' => '?',
+ 'SUMMARY' => '?',
+
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
+ 'RDATE' => '*',
+
+ 'AVAILABLE' => '*',
+ );
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ * Node::PROFILE_CARDDAV - Validate the vCard for CardDAV purposes.
+ * Node::PROFILE_CALDAV - Validate the iCalendar for CalDAV purposes.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on).
+ * 2 - A warning.
+ * 3 - An error.
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $result = parent::validate($options);
+
+ if (isset($this->DTEND) && isset($this->DURATION)) {
+ $result[] = array(
+ 'level' => 3,
+ 'message' => 'DTEND and DURATION cannot both be present',
+ 'node' => $this
+ );
+ }
+
+ if (isset($this->DURATION) && !isset($this->DTSTART)) {
+ $result[] = array(
+ 'level' => 3,
+ 'message' => 'DURATION must be declared with a DTSTART.',
+ 'node' => $this
+ );
+ }
+
+ return $result;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAlarm.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAlarm.php
new file mode 100644
index 000000000..1013e6e9b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAlarm.php
@@ -0,0 +1,137 @@
+TRIGGER;
+ if(!isset($trigger['VALUE']) || strtoupper($trigger['VALUE']) === 'DURATION') {
+ $triggerDuration = VObject\DateTimeParser::parseDuration($this->TRIGGER);
+ $related = (isset($trigger['RELATED']) && strtoupper($trigger['RELATED']) == 'END') ? 'END' : 'START';
+
+ $parentComponent = $this->parent;
+ if ($related === 'START') {
+
+ if ($parentComponent->name === 'VTODO') {
+ $propName = 'DUE';
+ } else {
+ $propName = 'DTSTART';
+ }
+
+ $effectiveTrigger = clone $parentComponent->$propName->getDateTime();
+ $effectiveTrigger->add($triggerDuration);
+ } else {
+ if ($parentComponent->name === 'VTODO') {
+ $endProp = 'DUE';
+ } elseif ($parentComponent->name === 'VEVENT') {
+ $endProp = 'DTEND';
+ } else {
+ throw new \LogicException('time-range filters on VALARM components are only supported when they are a child of VTODO or VEVENT');
+ }
+
+ if (isset($parentComponent->$endProp)) {
+ $effectiveTrigger = clone $parentComponent->$endProp->getDateTime();
+ $effectiveTrigger->add($triggerDuration);
+ } elseif (isset($parentComponent->DURATION)) {
+ $effectiveTrigger = clone $parentComponent->DTSTART->getDateTime();
+ $duration = VObject\DateTimeParser::parseDuration($parentComponent->DURATION);
+ $effectiveTrigger->add($duration);
+ $effectiveTrigger->add($triggerDuration);
+ } else {
+ $effectiveTrigger = clone $parentComponent->DTSTART->getDateTime();
+ $effectiveTrigger->add($triggerDuration);
+ }
+ }
+ } else {
+ $effectiveTrigger = $trigger->getDateTime();
+ }
+ return $effectiveTrigger;
+
+ }
+
+ /**
+ * Returns true or false depending on if the event falls in the specified
+ * time-range. This is used for filtering purposes.
+ *
+ * The rules used to determine if an event falls within the specified
+ * time-range is based on the CalDAV specification.
+ *
+ * @param \DateTime $start
+ * @param \DateTime $end
+ * @return bool
+ */
+ public function isInTimeRange(\DateTime $start, \DateTime $end) {
+
+ $effectiveTrigger = $this->getEffectiveTriggerTime();
+
+ if (isset($this->DURATION)) {
+ $duration = VObject\DateTimeParser::parseDuration($this->DURATION);
+ $repeat = (string)$this->repeat;
+ if (!$repeat) {
+ $repeat = 1;
+ }
+
+ $period = new \DatePeriod($effectiveTrigger, $duration, (int)$repeat);
+
+ foreach($period as $occurrence) {
+
+ if ($start <= $occurrence && $end > $occurrence) {
+ return true;
+ }
+ }
+ return false;
+ } else {
+ return ($start <= $effectiveTrigger && $end > $effectiveTrigger);
+ }
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ public function getValidationRules() {
+
+ return array(
+ 'ACTION' => 1,
+ 'TRIGGER' => 1,
+
+ 'DURATION' => '?',
+ 'REPEAT' => '?',
+
+ 'ATTACH' => '?',
+ );
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAvailability.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAvailability.php
new file mode 100644
index 000000000..144126081
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VAvailability.php
@@ -0,0 +1,99 @@
+ 1,
+ 'DTSTAMP' => 1,
+
+ 'BUSYTYPE' => '?',
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'DTSTART' => '?',
+ 'LAST-MODIFIED' => '?',
+ 'ORGANIZER' => '?',
+ 'PRIORITY' => '?',
+ 'SEQUENCE' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
+ 'DTEND' => '?',
+ 'DURATION' => '?',
+
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ );
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ * Node::PROFILE_CARDDAV - Validate the vCard for CardDAV purposes.
+ * Node::PROFILE_CALDAV - Validate the iCalendar for CalDAV purposes.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on).
+ * 2 - A warning.
+ * 3 - An error.
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $result = parent::validate($options);
+
+ if (isset($this->DTEND) && isset($this->DURATION)) {
+ $result[] = array(
+ 'level' => 3,
+ 'message' => 'DTEND and DURATION cannot both be present',
+ 'node' => $this
+ );
+ }
+
+ return $result;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCalendar.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCalendar.php
new file mode 100644
index 000000000..39224f0d3
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCalendar.php
@@ -0,0 +1,526 @@
+ 'Sabre\\VObject\\Component\\VAlarm',
+ 'VEVENT' => 'Sabre\\VObject\\Component\\VEvent',
+ 'VFREEBUSY' => 'Sabre\\VObject\\Component\\VFreeBusy',
+ 'VAVAILABILITY' => 'Sabre\\VObject\\Component\\VAvailability',
+ 'AVAILABLE' => 'Sabre\\VObject\\Component\\Available',
+ 'VJOURNAL' => 'Sabre\\VObject\\Component\\VJournal',
+ 'VTIMEZONE' => 'Sabre\\VObject\\Component\\VTimeZone',
+ 'VTODO' => 'Sabre\\VObject\\Component\\VTodo',
+ );
+
+ /**
+ * List of value-types, and which classes they map to.
+ *
+ * @var array
+ */
+ static $valueMap = array(
+ 'BINARY' => 'Sabre\\VObject\\Property\\Binary',
+ 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
+ 'CAL-ADDRESS' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date',
+ 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'TEXT' => 'Sabre\\VObject\\Property\\Text',
+ 'TIME' => 'Sabre\\VObject\\Property\\Time',
+ 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
+ 'URI' => 'Sabre\\VObject\\Property\\Uri',
+ 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
+ );
+
+ /**
+ * List of properties, and which classes they map to.
+ *
+ * @var array
+ */
+ static $propertyMap = array(
+ // Calendar properties
+ 'CALSCALE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'METHOD' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
+
+ // Component properties
+ 'ATTACH' => 'Sabre\\VObject\\Property\\Uri',
+ 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
+ 'CLASS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'GEO' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PERCENT-COMPLETE' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'RESOURCES' => 'Sabre\\VObject\\Property\\Text',
+ 'STATUS' => 'Sabre\\VObject\\Property\\FlatText',
+ 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText',
+
+ // Date and Time Component Properties
+ 'COMPLETED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+ 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period',
+ 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText',
+
+ // Time Zone Component Properties
+ 'TZID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZOFFSETFROM' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset',
+ 'TZURL' => 'Sabre\\VObject\\Property\\Uri',
+
+ // Relationship Component Properties
+ 'ATTENDEE' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'CONTACT' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ORGANIZER' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress',
+ 'RECURRENCE-ID' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RELATED-TO' => 'Sabre\\VObject\\Property\\FlatText',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri',
+ 'UID' => 'Sabre\\VObject\\Property\\FlatText',
+
+ // Recurrence Component Properties
+ 'EXDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur',
+ 'EXRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', // Deprecated since rfc5545
+
+ // Alarm Component Properties
+ 'ACTION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'TRIGGER' => 'Sabre\\VObject\\Property\\ICalendar\\Duration',
+
+ // Change Management Component Properties
+ 'CREATED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'DTSTAMP' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'LAST-MODIFIED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'SEQUENCE' => 'Sabre\\VObject\\Property\\IntegerValue',
+
+ // Request Status
+ 'REQUEST-STATUS' => 'Sabre\\VObject\\Property\\Text',
+
+ // Additions from draft-daboo-valarm-extensions-04
+ 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text',
+ 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime',
+ 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text',
+ 'DEFAULT-ALARM' => 'Sabre\\VObject\\Property\\Boolean',
+
+ // Additions from draft-daboo-calendar-availability-05
+ 'BUSYTYPE' => 'Sabre\\VObject\\Property\\Text',
+
+ );
+
+ /**
+ * Returns the current document type.
+ *
+ * @return void
+ */
+ function getDocumentType() {
+
+ return self::ICALENDAR20;
+
+ }
+
+ /**
+ * Returns a list of all 'base components'. For instance, if an Event has
+ * a recurrence rule, and one instance is overridden, the overridden event
+ * will have the same UID, but will be excluded from this list.
+ *
+ * VTIMEZONE components will always be excluded.
+ *
+ * @param string $componentName filter by component name
+ * @return VObject\Component[]
+ */
+ function getBaseComponents($componentName = null) {
+
+ $components = array();
+ foreach($this->children as $component) {
+
+ if (!$component instanceof VObject\Component)
+ continue;
+
+ if (isset($component->{'RECURRENCE-ID'}))
+ continue;
+
+ if ($componentName && $component->name !== strtoupper($componentName))
+ continue;
+
+ if ($component->name === 'VTIMEZONE')
+ continue;
+
+ $components[] = $component;
+
+ }
+
+ return $components;
+
+ }
+
+ /**
+ * Returns the first component that is not a VTIMEZONE, and does not have
+ * an RECURRENCE-ID.
+ *
+ * If there is no such component, null will be returned.
+ *
+ * @param string $componentName filter by component name
+ * @return VObject\Component|null
+ */
+ function getBaseComponent($componentName = null) {
+
+ foreach($this->children as $component) {
+
+ if (!$component instanceof VObject\Component)
+ continue;
+
+ if (isset($component->{'RECURRENCE-ID'}))
+ continue;
+
+ if ($componentName && $component->name !== strtoupper($componentName))
+ continue;
+
+ if ($component->name === 'VTIMEZONE')
+ continue;
+
+ return $component;
+
+ }
+
+ }
+
+ /**
+ * If this calendar object, has events with recurrence rules, this method
+ * can be used to expand the event into multiple sub-events.
+ *
+ * Each event will be stripped from it's recurrence information, and only
+ * the instances of the event in the specified timerange will be left
+ * alone.
+ *
+ * In addition, this method will cause timezone information to be stripped,
+ * and normalized to UTC.
+ *
+ * This method will alter the VCalendar. This cannot be reversed.
+ *
+ * This functionality is specifically used by the CalDAV standard. It is
+ * possible for clients to request expand events, if they are rather simple
+ * clients and do not have the possibility to calculate recurrences.
+ *
+ * @param DateTime $start
+ * @param DateTime $end
+ * @param DateTimeZone $timeZone reference timezone for floating dates and
+ * times.
+ * @return void
+ */
+ function expand(DateTime $start, DateTime $end, DateTimeZone $timeZone = null) {
+
+ $newEvents = array();
+
+ if (!$timeZone) {
+ $timeZone = new DateTimeZone('UTC');
+ }
+
+ // An array of events. Events are indexed by UID. Each item in this
+ // array is a list of one or more events that match the UID.
+ $recurringEvents = array();
+
+ foreach($this->select('VEVENT') as $key=>$vevent) {
+
+ $uid = (string)$vevent->UID;
+ if (!$uid) {
+ throw new \LogicException('Event did not have a UID!');
+ }
+
+ if (isset($vevent->{'RECURRENCE-ID'}) || isset($vevent->RRULE)) {
+ if (isset($recurringEvents[$uid])) {
+ $recurringEvents[$uid][] = $vevent;
+ } else {
+ $recurringEvents[$uid] = array($vevent);
+ }
+ continue;
+ }
+
+ if (!isset($vevent->RRULE)) {
+ if ($vevent->isInTimeRange($start, $end)) {
+ $newEvents[] = $vevent;
+ }
+ continue;
+ }
+
+ }
+
+ foreach($recurringEvents as $events) {
+
+ try {
+ $it = new EventIterator($events, $timeZone);
+
+ } catch (NoInstancesException $e) {
+ // This event is recurring, but it doesn't have a single
+ // instance. We are skipping this event from the output
+ // entirely.
+ continue;
+ }
+ $it->fastForward($start);
+
+ while($it->valid() && $it->getDTStart() < $end) {
+
+ if ($it->getDTEnd() > $start) {
+
+ $newEvents[] = $it->getEventObject();
+
+ }
+ $it->next();
+
+ }
+
+ }
+
+ // Wiping out all old VEVENT objects
+ unset($this->VEVENT);
+
+ // Setting all properties to UTC time.
+ foreach($newEvents as $newEvent) {
+
+ foreach($newEvent->children as $child) {
+ if ($child instanceof VObject\Property\ICalendar\DateTime && $child->hasTime()) {
+ $dt = $child->getDateTimes($timeZone);
+ // We only need to update the first timezone, because
+ // setDateTimes will match all other timezones to the
+ // first.
+ $dt[0]->setTimeZone(new DateTimeZone('UTC'));
+ $child->setDateTimes($dt);
+ }
+
+ }
+ $this->add($newEvent);
+
+ }
+
+ // Removing all VTIMEZONE components
+ unset($this->VTIMEZONE);
+
+ }
+
+ /**
+ * This method should return a list of default property values.
+ *
+ * @return array
+ */
+ protected function getDefaults() {
+
+ return array(
+ 'VERSION' => '2.0',
+ 'PRODID' => '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN',
+ 'CALSCALE' => 'GREGORIAN',
+ );
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ function getValidationRules() {
+
+ return array(
+ 'PRODID' => 1,
+ 'VERSION' => 1,
+
+ 'CALSCALE' => '?',
+ 'METHOD' => '?',
+ );
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ * Node::PROFILE_CARDDAV - Validate the vCard for CardDAV purposes.
+ * Node::PROFILE_CALDAV - Validate the iCalendar for CalDAV purposes.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on).
+ * 2 - A warning.
+ * 3 - An error.
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $warnings = parent::validate($options);
+
+ if ($ver = $this->VERSION) {
+ if ((string)$ver !== '2.0') {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'Only iCalendar version 2.0 as defined in rfc5545 is supported.',
+ 'node' => $this,
+ );
+ }
+
+ }
+
+ $uidList = array();
+
+ $componentsFound = 0;
+
+ $componentTypes = array();
+
+ foreach($this->children as $child) {
+ if($child instanceof Component) {
+ $componentsFound++;
+
+ if (!in_array($child->name, array('VEVENT', 'VTODO', 'VJOURNAL'))) {
+ continue;
+ }
+ $componentTypes[] = $child->name;
+
+ $uid = (string)$child->UID;
+ $isMaster = isset($child->{'RECURRENCE-ID'})?0:1;
+ if (isset($uidList[$uid])) {
+ $uidList[$uid]['count']++;
+ if ($isMaster && $uidList[$uid]['hasMaster']) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'More than one master object was found for the object with UID ' . $uid,
+ 'node' => $this,
+ );
+ }
+ $uidList[$uid]['hasMaster']+=$isMaster;
+ } else {
+ $uidList[$uid] = array(
+ 'count' => 1,
+ 'hasMaster' => $isMaster,
+ );
+ }
+
+ }
+ }
+
+ if ($componentsFound===0) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'An iCalendar object must have at least 1 component.',
+ 'node' => $this,
+ );
+ }
+
+ if ($options & self::PROFILE_CALDAV) {
+ if (count($uidList)>1) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'A calendar object on a CalDAV server may only have components with the same UID.',
+ 'node' => $this,
+ );
+ }
+ if (count(array_unique($componentTypes))===0) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'A calendar object on a CalDAV server must have at least 1 component (VTODO, VEVENT, VJOURNAL).',
+ 'node' => $this,
+ );
+ }
+ if (count(array_unique($componentTypes))>1) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'A calendar object on a CalDAV server may only have 1 type of component (VEVENT, VTODO or VJOURNAL).',
+ 'node' => $this,
+ );
+ }
+
+ if (isset($this->METHOD)) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'A calendar object on a CalDAV server MUST NOT have a METHOD property.',
+ 'node' => $this,
+ );
+ }
+ }
+
+ return $warnings;
+
+ }
+
+ /**
+ * Returns all components with a specific UID value.
+ *
+ * @return array
+ */
+ function getByUID($uid) {
+
+ return array_filter($this->children, function($item) use ($uid) {
+
+ if (!$item instanceof Component) {
+ return false;
+ }
+ if (!$itemUid = $item->select('UID')) {
+ return false;
+ }
+ $itemUid = current($itemUid)->getValue();
+ return $uid === $itemUid;
+
+ });
+
+ }
+
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCard.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCard.php
new file mode 100644
index 000000000..7d98f8ab5
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VCard.php
@@ -0,0 +1,452 @@
+ 'Sabre\\VObject\\Property\\Binary',
+ 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean',
+ 'CONTENT-ID' => 'Sabre\\VObject\\Property\\FlatText', // vCard 2.1 only
+ 'DATE' => 'Sabre\\VObject\\Property\\VCard\\Date',
+ 'DATE-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateTime',
+ 'DATE-AND-OR-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', // vCard only
+ 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue',
+ 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue',
+ 'LANGUAGE-TAG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
+ 'TIMESTAMP' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
+ 'TEXT' => 'Sabre\\VObject\\Property\\Text',
+ 'TIME' => 'Sabre\\VObject\\Property\\Time',
+ 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only.
+ 'URI' => 'Sabre\\VObject\\Property\\Uri',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri', // vCard 2.1 only
+ 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset',
+ );
+
+ /**
+ * List of properties, and which classes they map to.
+ *
+ * @var array
+ */
+ static $propertyMap = array(
+
+ // vCard 2.1 properties and up
+ 'N' => 'Sabre\\VObject\\Property\\Text',
+ 'FN' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PHOTO' => 'Sabre\\VObject\\Property\\Binary', // Todo: we should add a class for Binary values.
+ 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'ADR' => 'Sabre\\VObject\\Property\\Text',
+ 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'TEL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText',
+ 'MAILER' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+ 'GEO' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TITLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ROLE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'LOGO' => 'Sabre\\VObject\\Property\\Binary',
+ // 'AGENT' => 'Sabre\\VObject\\Property\\', // Todo: is an embedded vCard. Probably rare, so
+ // not supported at the moment
+ 'ORG' => 'Sabre\\VObject\\Property\\Text',
+ 'NOTE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'REV' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp',
+ 'SOUND' => 'Sabre\\VObject\\Property\\FlatText',
+ 'URL' => 'Sabre\\VObject\\Property\\Uri',
+ 'UID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'VERSION' => 'Sabre\\VObject\\Property\\FlatText',
+ 'KEY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'TZ' => 'Sabre\\VObject\\Property\\Text',
+
+ // vCard 3.0 properties
+ 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text',
+ 'SORT-STRING' => 'Sabre\\VObject\\Property\\FlatText',
+ 'PRODID' => 'Sabre\\VObject\\Property\\FlatText',
+ 'NICKNAME' => 'Sabre\\VObject\\Property\\Text',
+ 'CLASS' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0
+
+ // rfc2739 properties
+ 'FBURL' => 'Sabre\\VObject\\Property\\Uri',
+ 'CAPURI' => 'Sabre\\VObject\\Property\\Uri',
+ 'CALURI' => 'Sabre\\VObject\\Property\\Uri',
+
+ // rfc4770 properties
+ 'IMPP' => 'Sabre\\VObject\\Property\\Uri',
+
+ // vCard 4.0 properties
+ 'XML' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ANNIVERSARY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+ 'CLIENTPIDMAP' => 'Sabre\\VObject\\Property\\Text',
+ 'LANG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag',
+ 'GENDER' => 'Sabre\\VObject\\Property\\Text',
+ 'KIND' => 'Sabre\\VObject\\Property\\FlatText',
+
+ // rfc6474 properties
+ 'BIRTHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DEATHPLACE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime',
+
+ // rfc6715 properties
+ 'EXPERTISE' => 'Sabre\\VObject\\Property\\FlatText',
+ 'HOBBY' => 'Sabre\\VObject\\Property\\FlatText',
+ 'INTEREST' => 'Sabre\\VObject\\Property\\FlatText',
+ 'ORG-DIRECTORY' => 'Sabre\\VObject\\Property\\FlatText',
+
+ );
+
+ /**
+ * Returns the current document type.
+ *
+ * @return void
+ */
+ function getDocumentType() {
+
+ if (!$this->version) {
+ $version = (string)$this->VERSION;
+ switch($version) {
+ case '2.1' :
+ $this->version = self::VCARD21;
+ break;
+ case '3.0' :
+ $this->version = self::VCARD30;
+ break;
+ case '4.0' :
+ $this->version = self::VCARD40;
+ break;
+ default :
+ $this->version = self::UNKNOWN;
+ break;
+
+ }
+ }
+
+ return $this->version;
+
+ }
+
+ /**
+ * Converts the document to a different vcard version.
+ *
+ * Use one of the VCARD constants for the target. This method will return
+ * a copy of the vcard in the new version.
+ *
+ * At the moment the only supported conversion is from 3.0 to 4.0.
+ *
+ * If input and output version are identical, a clone is returned.
+ *
+ * @param int $target
+ * @return VCard
+ */
+ function convert($target) {
+
+ $converter = new VObject\VCardConverter();
+ return $converter->convert($this, $target);
+
+ }
+
+ /**
+ * VCards with version 2.1, 3.0 and 4.0 are found.
+ *
+ * If the VCARD doesn't know its version, 2.1 is assumed.
+ */
+ const DEFAULT_VERSION = self::VCARD21;
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on)
+ * 2 - An inconsequential issue
+ * 3 - A severe issue.
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $warnings = array();
+
+ $versionMap = array(
+ self::VCARD21 => '2.1',
+ self::VCARD30 => '3.0',
+ self::VCARD40 => '4.0',
+ );
+
+ $version = $this->select('VERSION');
+ if (count($version)===1) {
+ $version = (string)$this->VERSION;
+ if ($version!=='2.1' && $version!=='3.0' && $version!=='4.0') {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'Only vcard version 4.0 (RFC6350), version 3.0 (RFC2426) or version 2.1 (icm-vcard-2.1) are supported.',
+ 'node' => $this,
+ );
+ if ($options & self::REPAIR) {
+ $this->VERSION = $versionMap[self::DEFAULT_VERSION];
+ }
+ }
+ if ($version === '2.1' && ($options & self::PROFILE_CARDDAV)) {
+ $warnings[] = array(
+ 'level' => 3,
+ 'message' => 'CardDAV servers are not allowed to accept vCard 2.1.',
+ 'node' => $this,
+ );
+ }
+
+ }
+ $uid = $this->select('UID');
+ if (count($uid) === 0) {
+ if ($options & self::PROFILE_CARDDAV) {
+ // Required for CardDAV
+ $warningLevel = 3;
+ $message = 'vCards on CardDAV servers MUST have a UID property.';
+ } else {
+ // Not required for regular vcards
+ $warningLevel = 2;
+ $message = 'Adding a UID to a vCard property is recommended.';
+ }
+ if ($options & self::REPAIR) {
+ $this->UID = VObject\UUIDUtil::getUUID();
+ $warningLevel = 1;
+ }
+ $warnings[] = array(
+ 'level' => $warningLevel,
+ 'message' => $message,
+ 'node' => $this,
+ );
+ }
+
+ $fn = $this->select('FN');
+ if (count($fn)!==1) {
+
+ $repaired = false;
+ if (($options & self::REPAIR) && count($fn) === 0) {
+ // We're going to try to see if we can use the contents of the
+ // N property.
+ if (isset($this->N)) {
+ $value = explode(';', (string)$this->N);
+ if (isset($value[1]) && $value[1]) {
+ $this->FN = $value[1] . ' ' . $value[0];
+ } else {
+ $this->FN = $value[0];
+ }
+ $repaired = true;
+
+ // Otherwise, the ORG property may work
+ } elseif (isset($this->ORG)) {
+ $this->FN = (string)$this->ORG;
+ $repaired = true;
+ }
+
+ }
+ $warnings[] = array(
+ 'level' => $repaired?1:3,
+ 'message' => 'The FN property must appear in the VCARD component exactly 1 time',
+ 'node' => $this,
+ );
+ }
+
+ return array_merge(
+ parent::validate($options),
+ $warnings
+ );
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ function getValidationRules() {
+
+ return array(
+ 'ADR' => '*',
+ 'ANNIVERSARY' => '?',
+ 'BDAY' => '?',
+ 'CALADRURI' => '*',
+ 'CALURI' => '*',
+ 'CATEGORIES' => '*',
+ 'CLIENTPIDMAP' => '*',
+ 'EMAIL' => '*',
+ 'FBURL' => '*',
+ 'IMPP' => '*',
+ 'GENDER' => '?',
+ 'GEO' => '*',
+ 'KEY' => '*',
+ 'KIND' => '?',
+ 'LANG' => '*',
+ 'LOGO' => '*',
+ 'MEMBER' => '*',
+ 'N' => '?',
+ 'NICKNAME' => '*',
+ 'NOTE' => '*',
+ 'ORG' => '*',
+ 'PHOTO' => '*',
+ 'PRODID' => '?',
+ 'RELATED' => '*',
+ 'REV' => '?',
+ 'ROLE' => '*',
+ 'SOUND' => '*',
+ 'SOURCE' => '*',
+ 'TEL' => '*',
+ 'TITLE' => '*',
+ 'TZ' => '*',
+ 'URL' => '*',
+ 'VERSION' => '1',
+ 'XML' => '*',
+
+ // FN is commented out, because it's already handled by the
+ // validate function, which may also try to repair it.
+ // 'FN' => '+',
+
+ 'UID' => '?',
+ );
+
+ }
+
+ /**
+ * Returns a preferred field.
+ *
+ * VCards can indicate wether a field such as ADR, TEL or EMAIL is
+ * preferred by specifying TYPE=PREF (vcard 2.1, 3) or PREF=x (vcard 4, x
+ * being a number between 1 and 100).
+ *
+ * If neither of those parameters are specified, the first is returned, if
+ * a field with that name does not exist, null is returned.
+ *
+ * @param string $fieldName
+ * @return VObject\Property|null
+ */
+ function preferred($propertyName) {
+
+ $preferred = null;
+ $lastPref = 101;
+ foreach($this->select($propertyName) as $field) {
+
+ $pref = 101;
+ if (isset($field['TYPE']) && $field['TYPE']->has('PREF')) {
+ $pref = 1;
+ } elseif (isset($field['PREF'])) {
+ $pref = $field['PREF']->getValue();
+ }
+
+ if ($pref < $lastPref || is_null($preferred)) {
+ $preferred = $field;
+ $lastPref = $pref;
+ }
+
+ }
+ return $preferred;
+
+ }
+
+ /**
+ * This method should return a list of default property values.
+ *
+ * @return array
+ */
+ protected function getDefaults() {
+
+ return array(
+ 'VERSION' => '3.0',
+ 'PRODID' => '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN',
+ );
+
+ }
+
+ /**
+ * This method returns an array, with the representation as it should be
+ * encoded in json. This is used to create jCard or jCal documents.
+ *
+ * @return array
+ */
+ function jsonSerialize() {
+
+ // A vcard does not have sub-components, so we're overriding this
+ // method to remove that array element.
+ $properties = array();
+
+ foreach($this->children as $child) {
+ $properties[] = $child->jsonSerialize();
+ }
+
+ return array(
+ strtolower($this->name),
+ $properties,
+ );
+
+ }
+
+ /**
+ * Returns the default class for a property name.
+ *
+ * @param string $propertyName
+ * @return string
+ */
+ function getClassNameForPropertyName($propertyName) {
+
+ $className = parent::getClassNameForPropertyName($propertyName);
+ // In vCard 4, BINARY no longer exists, and we need URI instead.
+
+ if ($className == 'Sabre\\VObject\\Property\\Binary' && $this->getDocumentType()===self::VCARD40) {
+ return 'Sabre\\VObject\\Property\\Uri';
+ }
+ return $className;
+
+ }
+
+}
+
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VEvent.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VEvent.php
new file mode 100644
index 000000000..930250357
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VEvent.php
@@ -0,0 +1,153 @@
+RRULE) {
+
+ try {
+
+ $it = new EventIterator($this, null, $start->getTimezone());
+
+ } catch (NoInstancesException $e) {
+
+ // If we've catched this exception, there are no instances
+ // for the event that fall into the specified time-range.
+ return false;
+
+ }
+
+ $it->fastForward($start);
+
+ // We fast-forwarded to a spot where the end-time of the
+ // recurrence instance exceeded the start of the requested
+ // time-range.
+ //
+ // If the starttime of the recurrence did not exceed the
+ // end of the time range as well, we have a match.
+ return ($it->getDTStart() < $end && $it->getDTEnd() > $start);
+
+ }
+
+ $effectiveStart = $this->DTSTART->getDateTime($start->getTimezone());
+ if (isset($this->DTEND)) {
+
+ // The DTEND property is considered non inclusive. So for a 3 day
+ // event in july, dtstart and dtend would have to be July 1st and
+ // July 4th respectively.
+ //
+ // See:
+ // http://tools.ietf.org/html/rfc5545#page-54
+ $effectiveEnd = $this->DTEND->getDateTime($end->getTimezone());
+
+ } elseif (isset($this->DURATION)) {
+ $effectiveEnd = clone $effectiveStart;
+ $effectiveEnd->add(VObject\DateTimeParser::parseDuration($this->DURATION));
+ } elseif (!$this->DTSTART->hasTime()) {
+ $effectiveEnd = clone $effectiveStart;
+ $effectiveEnd->modify('+1 day');
+ } else {
+ $effectiveEnd = clone $effectiveStart;
+ }
+ return (
+ ($start < $effectiveEnd) && ($end > $effectiveStart)
+ );
+
+ }
+
+ /**
+ * This method should return a list of default property values.
+ *
+ * @return array
+ */
+ protected function getDefaults() {
+
+ return array(
+ 'UID' => 'sabre-vobject-' . VObject\UUIDUtil::getUUID(),
+ 'DTSTAMP' => date('Ymd\\THis\\Z'),
+ );
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ public function getValidationRules() {
+
+ $hasMethod = isset($this->parent->METHOD);
+ return array(
+ 'UID' => 1,
+ 'DTSTAMP' => 1,
+ 'DTSTART' => $hasMethod?'?':'1',
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'GEO' => '?',
+ 'LAST-MODIFIED' => '?',
+ 'LOCATION' => '?',
+ 'ORGANIZER' => '?',
+ 'PRIORITY' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'TRANSP' => '?',
+ 'URL' => '?',
+ 'RECURRENCE-ID' => '?',
+ 'RRULE' => '?',
+ 'DTEND' => '?',
+ 'DURATION' => '?',
+
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
+ 'REQUEST-STATUS' => '*',
+ 'RELATED-TO' => '*',
+ 'RESOURCES' => '*',
+ 'RDATE' => '*',
+ );
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VFreeBusy.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VFreeBusy.php
new file mode 100644
index 000000000..f1b0b2566
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VFreeBusy.php
@@ -0,0 +1,103 @@
+select('FREEBUSY') as $freebusy) {
+
+ // We are only interested in FBTYPE=BUSY (the default),
+ // FBTYPE=BUSY-TENTATIVE or FBTYPE=BUSY-UNAVAILABLE.
+ if (isset($freebusy['FBTYPE']) && strtoupper(substr((string)$freebusy['FBTYPE'],0,4))!=='BUSY') {
+ continue;
+ }
+
+ // The freebusy component can hold more than 1 value, separated by
+ // commas.
+ $periods = explode(',', (string)$freebusy);
+
+ foreach($periods as $period) {
+ // Every period is formatted as [start]/[end]. The start is an
+ // absolute UTC time, the end may be an absolute UTC time, or
+ // duration (relative) value.
+ list($busyStart, $busyEnd) = explode('/', $period);
+
+ $busyStart = VObject\DateTimeParser::parse($busyStart);
+ $busyEnd = VObject\DateTimeParser::parse($busyEnd);
+ if ($busyEnd instanceof \DateInterval) {
+ $tmp = clone $busyStart;
+ $tmp->add($busyEnd);
+ $busyEnd = $tmp;
+ }
+
+ if($start < $busyEnd && $end > $busyStart) {
+ return false;
+ }
+
+ }
+
+ }
+
+ return true;
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ public function getValidationRules() {
+
+ return array(
+ 'UID' => 1,
+ 'DTSTAMP' => 1,
+
+ 'CONTACT' => '?',
+ 'DTSTART' => '?',
+ 'DTEND' => '?',
+ 'ORGANIZER' => '?',
+ 'URL' => '?',
+
+ 'ATTENDEE' => '*',
+ 'COMMENT' => '*',
+ 'FREEBUSY' => '*',
+ 'REQUEST-STATUS' => '*',
+ );
+
+ }
+
+}
+
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VJournal.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VJournal.php
new file mode 100644
index 000000000..783efd61d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VJournal.php
@@ -0,0 +1,91 @@
+DTSTART)?$this->DTSTART->getDateTime():null;
+ if ($dtstart) {
+ $effectiveEnd = clone $dtstart;
+ if (!$this->DTSTART->hasTime()) {
+ $effectiveEnd->modify('+1 day');
+ }
+
+ return ($start <= $effectiveEnd && $end > $dtstart);
+
+ }
+ return false;
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ public function getValidationRules() {
+
+ return array(
+ 'UID' => 1,
+ 'DTSTAMP' => 1,
+
+ 'CLASS' => '?',
+ 'CREATED' => '?',
+ 'DTSTART' => '?',
+ 'LAST-MODIFIED' => '?',
+ 'ORGANIZER' => '?',
+ 'RECURRENCE-ID' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
+
+ 'RRULE' => '?',
+
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'DESCRIPTION' => '*',
+ 'EXDATE' => '*',
+ 'RELATED-TO' => '*',
+ 'RDATE' => '*',
+ );
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTimeZone.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTimeZone.php
new file mode 100644
index 000000000..a1369dcd2
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTimeZone.php
@@ -0,0 +1,68 @@
+TZID, $this->root);
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ function getValidationRules() {
+
+ return array(
+ 'TZID' => 1,
+
+ 'LAST-MODIFIED' => '?',
+ 'TZURL' => '?',
+
+ // At least 1 STANDARD or DAYLIGHT must appear, or more. But both
+ // cannot appear in the same VTIMEZONE.
+ //
+ // The validator is not specific yet to pick this up, so these
+ // rules are too loose.
+ 'STANDARD' => '*',
+ 'DAYLIGHT' => '*',
+ );
+
+ }
+
+}
+
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTodo.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTodo.php
new file mode 100644
index 000000000..ac2770e1d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Component/VTodo.php
@@ -0,0 +1,177 @@
+DTSTART)?$this->DTSTART->getDateTime():null;
+ $duration = isset($this->DURATION)?VObject\DateTimeParser::parseDuration($this->DURATION):null;
+ $due = isset($this->DUE)?$this->DUE->getDateTime():null;
+ $completed = isset($this->COMPLETED)?$this->COMPLETED->getDateTime():null;
+ $created = isset($this->CREATED)?$this->CREATED->getDateTime():null;
+
+ if ($dtstart) {
+ if ($duration) {
+ $effectiveEnd = clone $dtstart;
+ $effectiveEnd->add($duration);
+ return $start <= $effectiveEnd && $end > $dtstart;
+ } elseif ($due) {
+ return
+ ($start < $due || $start <= $dtstart) &&
+ ($end > $dtstart || $end >= $due);
+ } else {
+ return $start <= $dtstart && $end > $dtstart;
+ }
+ }
+ if ($due) {
+ return ($start < $due && $end >= $due);
+ }
+ if ($completed && $created) {
+ return
+ ($start <= $created || $start <= $completed) &&
+ ($end >= $created || $end >= $completed);
+ }
+ if ($completed) {
+ return ($start <= $completed && $end >= $completed);
+ }
+ if ($created) {
+ return ($end > $created);
+ }
+ return true;
+
+ }
+
+ /**
+ * A simple list of validation rules.
+ *
+ * This is simply a list of properties, and how many times they either
+ * must or must not appear.
+ *
+ * Possible values per property:
+ * * 0 - Must not appear.
+ * * 1 - Must appear exactly once.
+ * * + - Must appear at least once.
+ * * * - Can appear any number of times.
+ * * ? - May appear, but not more than once.
+ *
+ * @var array
+ */
+ public function getValidationRules() {
+
+ return array(
+ 'UID' => 1,
+ 'DTSTAMP' => 1,
+
+ 'CLASS' => '?',
+ 'COMPLETED' => '?',
+ 'CREATED' => '?',
+ 'DESCRIPTION' => '?',
+ 'DTSTART' => '?',
+ 'GEO' => '?',
+ 'LAST-MODIFIED' => '?',
+ 'LOCATION' => '?',
+ 'ORGANIZER' => '?',
+ 'PERCENT' => '?',
+ 'PRIORITY' => '?',
+ 'RECURRENCE-ID' => '?',
+ 'SEQUENCE' => '?',
+ 'STATUS' => '?',
+ 'SUMMARY' => '?',
+ 'URL' => '?',
+
+ 'RRULE' => '?',
+ 'DUE' => '?',
+ 'DURATION' => '?',
+
+ 'ATTACH' => '*',
+ 'ATTENDEE' => '*',
+ 'CATEGORIES' => '*',
+ 'COMMENT' => '*',
+ 'CONTACT' => '*',
+ 'EXDATE' => '*',
+ 'REQUEST-STATUS' => '*',
+ 'RELATED-TO' => '*',
+ 'RESOURCES' => '*',
+ 'RDATE' => '*',
+ );
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on)
+ * 2 - An inconsequential issue
+ * 3 - A severe issue.
+ *
+ * @param int $options
+ * @return array
+ */
+ public function validate($options = 0) {
+
+ $result = parent::validate($options);
+ if (isset($this->DUE) && isset($this->DTSTART)) {
+
+ $due = $this->DUE;
+ $dtStart = $this->DTSTART;
+
+ if ($due->getValueType() !== $dtStart->getValueType()) {
+
+ $result[] = array(
+ 'level' => 3,
+ 'message' => 'The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART',
+ 'node' => $due,
+ );
+
+ } elseif ($due->getDateTime() < $dtStart->getDateTime()) {
+
+ $result[] = array(
+ 'level' => 3,
+ 'message' => 'DUE must occur after DTSTART',
+ 'node' => $due,
+ );
+
+ }
+
+ }
+
+ return $result;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/DateTimeParser.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/DateTimeParser.php
new file mode 100644
index 000000000..e79328146
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/DateTimeParser.php
@@ -0,0 +1,431 @@
+setTimeZone(new \DateTimeZone('UTC'));
+ return $date;
+
+ }
+
+ /**
+ * Parses an iCalendar (rfc5545) formatted date and returns a DateTime object.
+ *
+ * @param string $date
+ * @param DateTimeZone $tz
+ * @return DateTime
+ */
+ static public function parseDate($date, DateTimeZone $tz = null) {
+
+ // Format is YYYYMMDD
+ $result = preg_match('/^([0-9]{4})([0-1][0-9])([0-3][0-9])$/',$date,$matches);
+
+ if (!$result) {
+ throw new LogicException('The supplied iCalendar date value is incorrect: ' . $date);
+ }
+
+ if (is_null($tz)) {
+ $tz = new DateTimeZone('UTC');
+ }
+
+ $date = new DateTime($matches[1] . '-' . $matches[2] . '-' . $matches[3], $tz);
+ return $date;
+
+ }
+
+ /**
+ * Parses an iCalendar (RFC5545) formatted duration value.
+ *
+ * This method will either return a DateTimeInterval object, or a string
+ * suitable for strtotime or DateTime::modify.
+ *
+ * @param string $duration
+ * @param bool $asString
+ * @return DateInterval|string
+ */
+ static public function parseDuration($duration, $asString = false) {
+
+ $result = preg_match('/^(?P\+|-)?P((?P\d+)W)?((?P\d+)D)?(T((?P\d+)H)?((?P\d+)M)?((?P\d+)S)?)?$/', $duration, $matches);
+ if (!$result) {
+ throw new LogicException('The supplied iCalendar duration value is incorrect: ' . $duration);
+ }
+
+ if (!$asString) {
+ $invert = false;
+ if ($matches['plusminus']==='-') {
+ $invert = true;
+ }
+
+
+ $parts = array(
+ 'week',
+ 'day',
+ 'hour',
+ 'minute',
+ 'second',
+ );
+ foreach($parts as $part) {
+ $matches[$part] = isset($matches[$part])&&$matches[$part]?(int)$matches[$part]:0;
+ }
+
+
+ // We need to re-construct the $duration string, because weeks and
+ // days are not supported by DateInterval in the same string.
+ $duration = 'P';
+ $days = $matches['day'];
+ if ($matches['week']) {
+ $days+=$matches['week']*7;
+ }
+ if ($days)
+ $duration.=$days . 'D';
+
+ if ($matches['minute'] || $matches['second'] || $matches['hour']) {
+ $duration.='T';
+
+ if ($matches['hour'])
+ $duration.=$matches['hour'].'H';
+
+ if ($matches['minute'])
+ $duration.=$matches['minute'].'M';
+
+ if ($matches['second'])
+ $duration.=$matches['second'].'S';
+
+ }
+
+ if ($duration==='P') {
+ $duration = 'PT0S';
+ }
+ $iv = new DateInterval($duration);
+ if ($invert) $iv->invert = true;
+
+ return $iv;
+
+ }
+
+
+
+ $parts = array(
+ 'week',
+ 'day',
+ 'hour',
+ 'minute',
+ 'second',
+ );
+
+ $newDur = '';
+ foreach($parts as $part) {
+ if (isset($matches[$part]) && $matches[$part]) {
+ $newDur.=' '.$matches[$part] . ' ' . $part . 's';
+ }
+ }
+
+ $newDur = ($matches['plusminus']==='-'?'-':'+') . trim($newDur);
+ if ($newDur === '+') {
+ $newDur = '+0 seconds';
+ };
+ return $newDur;
+
+ }
+
+ /**
+ * Parses either a Date or DateTime, or Duration value.
+ *
+ * @param string $date
+ * @param DateTimeZone|string $referenceTz
+ * @return DateTime|DateInterval
+ */
+ static public function parse($date, $referenceTz = null) {
+
+ if ($date[0]==='P' || ($date[0]==='-' && $date[1]==='P')) {
+ return self::parseDuration($date);
+ } elseif (strlen($date)===8) {
+ return self::parseDate($date, $referenceTz);
+ } else {
+ return self::parseDateTime($date, $referenceTz);
+ }
+
+ }
+
+ /**
+ * This method parses a vCard date and or time value.
+ *
+ * This can be used for the DATE, DATE-TIME, TIMESTAMP and
+ * DATE-AND-OR-TIME value.
+ *
+ * This method returns an array, not a DateTime value.
+ *
+ * The elements in the array are in the following order:
+ * year, month, date, hour, minute, second, timezone
+ *
+ * Almost any part of the string may be omitted. It's for example legal to
+ * just specify seconds, leave out the year, etc.
+ *
+ * Timezone is either returned as 'Z' or as '+08:00'
+ *
+ * For any non-specified values null is returned.
+ *
+ * List of date formats that are supported:
+ * YYYY
+ * YYYY-MM
+ * YYYYMMDD
+ * --MMDD
+ * ---DD
+ *
+ * YYYY-MM-DD
+ * --MM-DD
+ * ---DD
+ *
+ * List of supported time formats:
+ *
+ * HH
+ * HHMM
+ * HHMMSS
+ * -MMSS
+ * --SS
+ *
+ * HH
+ * HH:MM
+ * HH:MM:SS
+ * -MM:SS
+ * --SS
+ *
+ * A full basic-format date-time string looks like :
+ * 20130603T133901
+ *
+ * A full extended-format date-time string looks like :
+ * 2013-06-03T13:39:01
+ *
+ * Times may be postfixed by a timezone offset. This can be either 'Z' for
+ * UTC, or a string like -0500 or +1100.
+ *
+ * @param string $date
+ * @return array
+ */
+ static public function parseVCardDateTime($date) {
+
+ $regex = '/^
+ (?: # date part
+ (?:
+ (?: (?P [0-9]{4}) (?: -)?| --)
+ (?P [0-9]{2})?
+ |---)
+ (?P [0-9]{2})?
+ )?
+ (?:T # time part
+ (?P [0-9]{2} | -)
+ (?P [0-9]{2} | -)?
+ (?P [0-9]{2})?
+
+ (?: \.[0-9]{3})? # milliseconds
+ (?P # timezone offset
+
+ Z | (?: \+|-)(?: [0-9]{4})
+
+ )?
+
+ )?
+ $/x';
+
+ if (!preg_match($regex, $date, $matches)) {
+
+ // Attempting to parse the extended format.
+ $regex = '/^
+ (?: # date part
+ (?: (?P [0-9]{4}) - | -- )
+ (?P [0-9]{2}) -
+ (?P [0-9]{2})
+ )?
+ (?:T # time part
+
+ (?: (?P [0-9]{2}) : | -)
+ (?: (?P [0-9]{2}) : | -)?
+ (?P [0-9]{2})?
+
+ (?: \.[0-9]{3})? # milliseconds
+ (?P # timezone offset
+
+ Z | (?: \+|-)(?: [0-9]{2}:[0-9]{2})
+
+ )?
+
+ )?
+ $/x';
+
+ if (!preg_match($regex, $date, $matches)) {
+ throw new InvalidArgumentException('Invalid vCard date-time string: ' . $date);
+ }
+
+ }
+ $parts = array(
+ 'year',
+ 'month',
+ 'date',
+ 'hour',
+ 'minute',
+ 'second',
+ 'timezone'
+ );
+
+ $result = array();
+ foreach($parts as $part) {
+
+ if (empty($matches[$part])) {
+ $result[$part] = null;
+ } elseif ($matches[$part] === '-' || $matches[$part] === '--') {
+ $result[$part] = null;
+ } else {
+ $result[$part] = $matches[$part];
+ }
+
+ }
+
+ return $result;
+
+ }
+
+ /**
+ * This method parses a vCard TIME value.
+ *
+ * This method returns an array, not a DateTime value.
+ *
+ * The elements in the array are in the following order:
+ * hour, minute, second, timezone
+ *
+ * Almost any part of the string may be omitted. It's for example legal to
+ * just specify seconds, leave out the hour etc.
+ *
+ * Timezone is either returned as 'Z' or as '+08:00'
+ *
+ * For any non-specified values null is returned.
+ *
+ * List of supported time formats:
+ *
+ * HH
+ * HHMM
+ * HHMMSS
+ * -MMSS
+ * --SS
+ *
+ * HH
+ * HH:MM
+ * HH:MM:SS
+ * -MM:SS
+ * --SS
+ *
+ * A full basic-format time string looks like :
+ * 133901
+ *
+ * A full extended-format time string looks like :
+ * 13:39:01
+ *
+ * Times may be postfixed by a timezone offset. This can be either 'Z' for
+ * UTC, or a string like -0500 or +11:00.
+ *
+ * @param string $date
+ * @return array
+ */
+ static public function parseVCardTime($date) {
+
+ $regex = '/^
+ (?P [0-9]{2} | -)
+ (?P [0-9]{2} | -)?
+ (?P [0-9]{2})?
+
+ (?: \.[0-9]{3})? # milliseconds
+ (?P # timezone offset
+
+ Z | (?: \+|-)(?: [0-9]{4})
+
+ )?
+ $/x';
+
+
+ if (!preg_match($regex, $date, $matches)) {
+
+ // Attempting to parse the extended format.
+ $regex = '/^
+ (?: (?P [0-9]{2}) : | -)
+ (?: (?P [0-9]{2}) : | -)?
+ (?P [0-9]{2})?
+
+ (?: \.[0-9]{3})? # milliseconds
+ (?P # timezone offset
+
+ Z | (?: \+|-)(?: [0-9]{2}:[0-9]{2})
+
+ )?
+ $/x';
+
+ if (!preg_match($regex, $date, $matches)) {
+ throw new InvalidArgumentException('Invalid vCard time string: ' . $date);
+ }
+
+ }
+ $parts = array(
+ 'hour',
+ 'minute',
+ 'second',
+ 'timezone'
+ );
+
+ $result = array();
+ foreach($parts as $part) {
+
+ if (empty($matches[$part])) {
+ $result[$part] = null;
+ } elseif ($matches[$part] === '-') {
+ $result[$part] = null;
+ } else {
+ $result[$part] = $matches[$part];
+ }
+
+ }
+
+ return $result;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Document.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Document.php
new file mode 100644
index 000000000..63806ee9f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Document.php
@@ -0,0 +1,261 @@
+value syntax, in which case
+ * properties will automatically be created, or you can just pass a list of
+ * Component and Property object.
+ *
+ * By default, a set of sensible values will be added to the component. For
+ * an iCalendar object, this may be something like CALSCALE:GREGORIAN. To
+ * ensure that this does not happen, set $defaults to false.
+ *
+ * @param string $name
+ * @param array $children
+ * @param bool $defaults
+ * @return Component
+ */
+ public function createComponent($name, array $children = null, $defaults = true) {
+
+ $name = strtoupper($name);
+ $class = 'Sabre\\VObject\\Component';
+
+ if (isset(static::$componentMap[$name])) {
+ $class=static::$componentMap[$name];
+ }
+ if (is_null($children)) $children = array();
+ return new $class($this, $name, $children, $defaults);
+
+ }
+
+ /**
+ * Factory method for creating new properties
+ *
+ * This method automatically searches for the correct property class, based
+ * on its name.
+ *
+ * You can specify the parameters either in key=>value syntax, in which case
+ * parameters will automatically be created, or you can just pass a list of
+ * Parameter objects.
+ *
+ * @param string $name
+ * @param mixed $value
+ * @param array $parameters
+ * @param string $valueType Force a specific valuetype, such as URI or TEXT
+ * @return Property
+ */
+ public function createProperty($name, $value = null, array $parameters = null, $valueType = null) {
+
+ // If there's a . in the name, it means it's prefixed by a groupname.
+ if (($i=strpos($name,'.'))!==false) {
+ $group = substr($name, 0, $i);
+ $name = strtoupper(substr($name, $i+1));
+ } else {
+ $name = strtoupper($name);
+ $group = null;
+ }
+
+ $class = null;
+
+ if ($valueType) {
+ // The valueType argument comes first to figure out the correct
+ // class.
+ $class = $this->getClassNameForPropertyValue($valueType);
+ }
+
+ if (is_null($class) && isset($parameters['VALUE'])) {
+ // If a VALUE parameter is supplied, we should use that.
+ $class = $this->getClassNameForPropertyValue($parameters['VALUE']);
+ }
+ if (is_null($class)) {
+ $class = $this->getClassNameForPropertyName($name);
+ }
+ if (is_null($parameters)) $parameters = array();
+
+ return new $class($this, $name, $value, $parameters, $group);
+
+ }
+
+ /**
+ * This method returns a full class-name for a value parameter.
+ *
+ * For instance, DTSTART may have VALUE=DATE. In that case we will look in
+ * our valueMap table and return the appropriate class name.
+ *
+ * This method returns null if we don't have a specialized class.
+ *
+ * @param string $valueParam
+ * @return void
+ */
+ public function getClassNameForPropertyValue($valueParam) {
+
+ $valueParam = strtoupper($valueParam);
+ if (isset(static::$valueMap[$valueParam])) {
+ return static::$valueMap[$valueParam];
+ }
+
+ }
+
+ /**
+ * Returns the default class for a property name.
+ *
+ * @param string $propertyName
+ * @return string
+ */
+ public function getClassNameForPropertyName($propertyName) {
+
+ if (isset(static::$propertyMap[$propertyName])) {
+ return static::$propertyMap[$propertyName];
+ } else {
+ return 'Sabre\\VObject\\Property\\Unknown';
+ }
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ElementList.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ElementList.php
new file mode 100644
index 000000000..dbfead0a7
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ElementList.php
@@ -0,0 +1,172 @@
+vevent where there's multiple VEVENT objects.
+ *
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
+ * @author Evert Pot (http://evertpot.com/)
+ * @license http://sabre.io/license/ Modified BSD License
+ */
+class ElementList implements \Iterator, \Countable, \ArrayAccess {
+
+ /**
+ * Inner elements
+ *
+ * @var array
+ */
+ protected $elements = array();
+
+ /**
+ * Creates the element list.
+ *
+ * @param array $elements
+ */
+ public function __construct(array $elements) {
+
+ $this->elements = $elements;
+
+ }
+
+ /* {{{ Iterator interface */
+
+ /**
+ * Current position
+ *
+ * @var int
+ */
+ private $key = 0;
+
+ /**
+ * Returns current item in iteration
+ *
+ * @return Element
+ */
+ public function current() {
+
+ return $this->elements[$this->key];
+
+ }
+
+ /**
+ * To the next item in the iterator
+ *
+ * @return void
+ */
+ public function next() {
+
+ $this->key++;
+
+ }
+
+ /**
+ * Returns the current iterator key
+ *
+ * @return int
+ */
+ public function key() {
+
+ return $this->key;
+
+ }
+
+ /**
+ * Returns true if the current position in the iterator is a valid one
+ *
+ * @return bool
+ */
+ public function valid() {
+
+ return isset($this->elements[$this->key]);
+
+ }
+
+ /**
+ * Rewinds the iterator
+ *
+ * @return void
+ */
+ public function rewind() {
+
+ $this->key = 0;
+
+ }
+
+ /* }}} */
+
+ /* {{{ Countable interface */
+
+ /**
+ * Returns the number of elements
+ *
+ * @return int
+ */
+ public function count() {
+
+ return count($this->elements);
+
+ }
+
+ /* }}} */
+
+ /* {{{ ArrayAccess Interface */
+
+
+ /**
+ * Checks if an item exists through ArrayAccess.
+ *
+ * @param int $offset
+ * @return bool
+ */
+ public function offsetExists($offset) {
+
+ return isset($this->elements[$offset]);
+
+ }
+
+ /**
+ * Gets an item through ArrayAccess.
+ *
+ * @param int $offset
+ * @return mixed
+ */
+ public function offsetGet($offset) {
+
+ return $this->elements[$offset];
+
+ }
+
+ /**
+ * Sets an item through ArrayAccess.
+ *
+ * @param int $offset
+ * @param mixed $value
+ * @return void
+ */
+ public function offsetSet($offset, $value) {
+
+ throw new \LogicException('You can not add new objects to an ElementList');
+
+ }
+
+ /**
+ * Sets an item through ArrayAccess.
+ *
+ * This method just forwards the request to the inner iterator
+ *
+ * @param int $offset
+ * @return void
+ */
+ public function offsetUnset($offset) {
+
+ throw new \LogicException('You can not remove objects from an ElementList');
+
+ }
+
+ /* }}} */
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/EofException.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/EofException.php
new file mode 100644
index 000000000..e9bd55878
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/EofException.php
@@ -0,0 +1,15 @@
+setTimeRange($start, $end);
+ }
+
+ if ($objects) {
+ $this->setObjects($objects);
+ }
+ if (is_null($timeZone)) {
+ $timeZone = new DateTimeZone('UTC');
+ }
+ $this->setTimeZone($timeZone);
+
+ }
+
+ /**
+ * Sets the VCALENDAR object.
+ *
+ * If this is set, it will not be generated for you. You are responsible
+ * for setting things like the METHOD, CALSCALE, VERSION, etc..
+ *
+ * The VFREEBUSY object will be automatically added though.
+ *
+ * @param Component $vcalendar
+ * @return void
+ */
+ public function setBaseObject(Component $vcalendar) {
+
+ $this->baseObject = $vcalendar;
+
+ }
+
+ /**
+ * Sets the input objects
+ *
+ * You must either specify a valendar object as a strong, or as the parse
+ * Component.
+ * It's also possible to specify multiple objects as an array.
+ *
+ * @param mixed $objects
+ * @return void
+ */
+ public function setObjects($objects) {
+
+ if (!is_array($objects)) {
+ $objects = array($objects);
+ }
+
+ $this->objects = array();
+ foreach($objects as $object) {
+
+ if (is_string($object)) {
+ $this->objects[] = Reader::read($object);
+ } elseif ($object instanceof Component) {
+ $this->objects[] = $object;
+ } else {
+ throw new \InvalidArgumentException('You can only pass strings or \\Sabre\\VObject\\Component arguments to setObjects');
+ }
+
+ }
+
+ }
+
+ /**
+ * Sets the time range
+ *
+ * Any freebusy object falling outside of this time range will be ignored.
+ *
+ * @param DateTime $start
+ * @param DateTime $end
+ * @return void
+ */
+ public function setTimeRange(\DateTime $start = null, \DateTime $end = null) {
+
+ $this->start = $start;
+ $this->end = $end;
+
+ }
+
+ /**
+ * Sets the reference timezone for floating times.
+ *
+ * @param DateTimeZone $timeZone
+ * @return void
+ */
+ public function setTimeZone(DateTimeZone $timeZone) {
+
+ $this->timeZone = $timeZone;
+
+ }
+
+ /**
+ * Parses the input data and returns a correct VFREEBUSY object, wrapped in
+ * a VCALENDAR.
+ *
+ * @return Component
+ */
+ public function getResult() {
+
+ $busyTimes = array();
+
+ foreach($this->objects as $key=>$object) {
+
+ foreach($object->getBaseComponents() as $component) {
+
+ switch($component->name) {
+
+ case 'VEVENT' :
+
+ $FBTYPE = 'BUSY';
+ if (isset($component->TRANSP) && (strtoupper($component->TRANSP) === 'TRANSPARENT')) {
+ break;
+ }
+ if (isset($component->STATUS)) {
+ $status = strtoupper($component->STATUS);
+ if ($status==='CANCELLED') {
+ break;
+ }
+ if ($status==='TENTATIVE') {
+ $FBTYPE = 'BUSY-TENTATIVE';
+ }
+ }
+
+ $times = array();
+
+ if ($component->RRULE) {
+ try {
+ $iterator = new EventIterator($object, (string)$component->uid, $this->timeZone);
+ } catch (NoInstancesException $e) {
+ // This event is recurring, but it doesn't have a single
+ // instance. We are skipping this event from the output
+ // entirely.
+ unset($this->objects[$key]);
+ continue;
+ }
+
+ if ($this->start) {
+ $iterator->fastForward($this->start);
+ }
+
+ $maxRecurrences = 200;
+
+ while($iterator->valid() && --$maxRecurrences) {
+
+ $startTime = $iterator->getDTStart();
+ if ($this->end && $startTime > $this->end) {
+ break;
+ }
+ $times[] = array(
+ $iterator->getDTStart(),
+ $iterator->getDTEnd(),
+ );
+
+ $iterator->next();
+
+ }
+
+ } else {
+
+ $startTime = $component->DTSTART->getDateTime($this->timeZone);
+ if ($this->end && $startTime > $this->end) {
+ break;
+ }
+ $endTime = null;
+ if (isset($component->DTEND)) {
+ $endTime = $component->DTEND->getDateTime($this->timeZone);
+ } elseif (isset($component->DURATION)) {
+ $duration = DateTimeParser::parseDuration((string)$component->DURATION);
+ $endTime = clone $startTime;
+ $endTime->add($duration);
+ } elseif (!$component->DTSTART->hasTime()) {
+ $endTime = clone $startTime;
+ $endTime->modify('+1 day');
+ } else {
+ // The event had no duration (0 seconds)
+ break;
+ }
+
+ $times[] = array($startTime, $endTime);
+
+ }
+
+ foreach($times as $time) {
+
+ if ($this->end && $time[0] > $this->end) break;
+ if ($this->start && $time[1] < $this->start) break;
+
+ $busyTimes[] = array(
+ $time[0],
+ $time[1],
+ $FBTYPE,
+ );
+ }
+ break;
+
+ case 'VFREEBUSY' :
+ foreach($component->FREEBUSY as $freebusy) {
+
+ $fbType = isset($freebusy['FBTYPE'])?strtoupper($freebusy['FBTYPE']):'BUSY';
+
+ // Skipping intervals marked as 'free'
+ if ($fbType==='FREE')
+ continue;
+
+ $values = explode(',', $freebusy);
+ foreach($values as $value) {
+ list($startTime, $endTime) = explode('/', $value);
+ $startTime = DateTimeParser::parseDateTime($startTime);
+
+ if (substr($endTime,0,1)==='P' || substr($endTime,0,2)==='-P') {
+ $duration = DateTimeParser::parseDuration($endTime);
+ $endTime = clone $startTime;
+ $endTime->add($duration);
+ } else {
+ $endTime = DateTimeParser::parseDateTime($endTime);
+ }
+
+ if($this->start && $this->start > $endTime) continue;
+ if($this->end && $this->end < $startTime) continue;
+ $busyTimes[] = array(
+ $startTime,
+ $endTime,
+ $fbType
+ );
+
+ }
+
+
+ }
+ break;
+
+
+
+ }
+
+
+ }
+
+ }
+
+ if ($this->baseObject) {
+ $calendar = $this->baseObject;
+ } else {
+ $calendar = new VCalendar();
+ }
+
+ $vfreebusy = $calendar->createComponent('VFREEBUSY');
+ $calendar->add($vfreebusy);
+
+ if ($this->start) {
+ $dtstart = $calendar->createProperty('DTSTART');
+ $dtstart->setDateTime($this->start);
+ $vfreebusy->add($dtstart);
+ }
+ if ($this->end) {
+ $dtend = $calendar->createProperty('DTEND');
+ $dtend->setDateTime($this->end);
+ $vfreebusy->add($dtend);
+ }
+ $dtstamp = $calendar->createProperty('DTSTAMP');
+ $dtstamp->setDateTime(new \DateTime('now', new \DateTimeZone('UTC')));
+ $vfreebusy->add($dtstamp);
+
+ foreach($busyTimes as $busyTime) {
+
+ $busyTime[0]->setTimeZone(new \DateTimeZone('UTC'));
+ $busyTime[1]->setTimeZone(new \DateTimeZone('UTC'));
+
+ $prop = $calendar->createProperty(
+ 'FREEBUSY',
+ $busyTime[0]->format('Ymd\\THis\\Z') . '/' . $busyTime[1]->format('Ymd\\THis\\Z')
+ );
+ $prop['FBTYPE'] = $busyTime[2];
+ $vfreebusy->add($prop);
+
+ }
+
+ return $calendar;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/Broker.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/Broker.php
new file mode 100644
index 000000000..a72de4f1c
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/Broker.php
@@ -0,0 +1,981 @@
+component !== 'VEVENT') {
+ return false;
+ }
+
+ switch($itipMessage->method) {
+
+ case 'REQUEST' :
+ return $this->processMessageRequest($itipMessage, $existingObject);
+
+ case 'CANCEL' :
+ return $this->processMessageCancel($itipMessage, $existingObject);
+
+ case 'REPLY' :
+ return $this->processMessageReply($itipMessage, $existingObject);
+
+ default :
+ // Unsupported iTip message
+ return null;
+
+ }
+
+ return $existingObject;
+
+ }
+
+ /**
+ * This function parses a VCALENDAR object and figure out if any messages
+ * need to be sent.
+ *
+ * A VCALENDAR object will be created from the perspective of either an
+ * attendee, or an organizer. You must pass a string identifying the
+ * current user, so we can figure out who in the list of attendees or the
+ * organizer we are sending this message on behalf of.
+ *
+ * It's possible to specify the current user as an array, in case the user
+ * has more than one identifying href (such as multiple emails).
+ *
+ * It $oldCalendar is specified, it is assumed that the operation is
+ * updating an existing event, which means that we need to look at the
+ * differences between events, and potentially send old attendees
+ * cancellations, and current attendees updates.
+ *
+ * If $calendar is null, but $oldCalendar is specified, we treat the
+ * operation as if the user has deleted an event. If the user was an
+ * organizer, this means that we need to send cancellation notices to
+ * people. If the user was an attendee, we need to make sure that the
+ * organizer gets the 'declined' message.
+ *
+ * @param VCalendar|string $calendar
+ * @param string|array $userHref
+ * @param VCalendar|string $oldCalendar
+ * @return array
+ */
+ public function parseEvent($calendar = null, $userHref, $oldCalendar = null) {
+
+ if ($oldCalendar) {
+ if (is_string($oldCalendar)) {
+ $oldCalendar = Reader::read($oldCalendar);
+ }
+ if (!isset($oldCalendar->VEVENT)) {
+ // We only support events at the moment
+ return array();
+ }
+
+ $oldEventInfo = $this->parseEventInfo($oldCalendar);
+ } else {
+ $oldEventInfo = array(
+ 'organizer' => null,
+ 'significantChangeHash' => '',
+ 'attendees' => array(),
+ );
+ }
+
+ $userHref = (array)$userHref;
+
+ if (!is_null($calendar)) {
+
+ if (is_string($calendar)) {
+ $calendar = Reader::read($calendar);
+ }
+ if (!isset($calendar->VEVENT)) {
+ // We only support events at the moment
+ return array();
+ }
+ $eventInfo = $this->parseEventInfo($calendar);
+ if (!$eventInfo['attendees'] && !$oldEventInfo['attendees']) {
+ // If there were no attendees on either side of the equation,
+ // we don't need to do anything.
+ return array();
+ }
+ if (!$eventInfo['organizer'] && !$oldEventInfo['organizer']) {
+ // There was no organizer before or after the change.
+ return array();
+ }
+
+ $baseCalendar = $calendar;
+
+ // If the new object didn't have an organizer, the organizer
+ // changed the object from a scheduling object to a non-scheduling
+ // object. We just copy the info from the old object.
+ if (!$eventInfo['organizer'] && $oldEventInfo['organizer']) {
+ $eventInfo['organizer'] = $oldEventInfo['organizer'];
+ $eventInfo['organizerName'] = $oldEventInfo['organizerName'];
+ }
+
+ } else {
+ // The calendar object got deleted, we need to process this as a
+ // cancellation / decline.
+ if (!$oldCalendar) {
+ // No old and no new calendar, there's no thing to do.
+ return array();
+ }
+
+ $eventInfo = $oldEventInfo;
+
+ if (in_array($eventInfo['organizer'], $userHref)) {
+ // This is an organizer deleting the event.
+ $eventInfo['attendees'] = array();
+ // Increasing the sequence, but only if the organizer deleted
+ // the event.
+ $eventInfo['sequence']++;
+ } else {
+ // This is an attendee deleting the event.
+ foreach($eventInfo['attendees'] as $key=>$attendee) {
+ if (in_array($attendee['href'], $userHref)) {
+ $eventInfo['attendees'][$key]['instances'] = array('master' =>
+ array('id'=>'master', 'partstat' => 'DECLINED')
+ );
+ }
+ }
+ }
+ $baseCalendar = $oldCalendar;
+
+ }
+
+ if (in_array($eventInfo['organizer'], $userHref)) {
+ return $this->parseEventForOrganizer($baseCalendar, $eventInfo, $oldEventInfo);
+ } elseif ($oldCalendar) {
+ // We need to figure out if the user is an attendee, but we're only
+ // doing so if there's an oldCalendar, because we only want to
+ // process updates, not creation of new events.
+ foreach($eventInfo['attendees'] as $attendee) {
+ if (in_array($attendee['href'], $userHref)) {
+ return $this->parseEventForAttendee($baseCalendar, $eventInfo, $oldEventInfo, $attendee['href']);
+ }
+ }
+ }
+ return array();
+
+ }
+
+ /**
+ * Processes incoming REQUEST messages.
+ *
+ * This is message from an organizer, and is either a new event
+ * invite, or an update to an existing one.
+ *
+ *
+ * @param Message $itipMessage
+ * @param VCalendar $existingObject
+ * @return VCalendar|null
+ */
+ protected function processMessageRequest(Message $itipMessage, VCalendar $existingObject = null) {
+
+ if (!$existingObject) {
+ // This is a new invite, and we're just going to copy over
+ // all the components from the invite.
+ $existingObject = new VCalendar();
+ foreach($itipMessage->message->getComponents() as $component) {
+ $existingObject->add(clone $component);
+ }
+ } else {
+ // We need to update an existing object with all the new
+ // information. We can just remove all existing components
+ // and create new ones.
+ foreach($existingObject->getComponents() as $component) {
+ $existingObject->remove($component);
+ }
+ foreach($itipMessage->message->getComponents() as $component) {
+ $existingObject->add(clone $component);
+ }
+ }
+ return $existingObject;
+
+ }
+
+ /**
+ * Processes incoming CANCEL messages.
+ *
+ * This is a message from an organizer, and means that either an
+ * attendee got removed from an event, or an event got cancelled
+ * altogether.
+ *
+ * @param Message $itipMessage
+ * @param VCalendar $existingObject
+ * @return VCalendar|null
+ */
+ protected function processMessageCancel(Message $itipMessage, VCalendar $existingObject = null) {
+
+ if (!$existingObject) {
+ // The event didn't exist in the first place, so we're just
+ // ignoring this message.
+ } else {
+ foreach($existingObject->VEVENT as $vevent) {
+ $vevent->STATUS = 'CANCELLED';
+ $vevent->SEQUENCE = $itipMessage->sequence;
+ }
+ }
+ return $existingObject;
+
+ }
+
+ /**
+ * Processes incoming REPLY messages.
+ *
+ * The message is a reply. This is for example an attendee telling
+ * an organizer he accepted the invite, or declined it.
+ *
+ * @param Message $itipMessage
+ * @param VCalendar $existingObject
+ * @return VCalendar|null
+ */
+ protected function processMessageReply(Message $itipMessage, VCalendar $existingObject = null) {
+
+ // A reply can only be processed based on an existing object.
+ // If the object is not available, the reply is ignored.
+ if (!$existingObject) {
+ return null;
+ }
+ $instances = array();
+ $requestStatus = '2.0';
+
+ // Finding all the instances the attendee replied to.
+ foreach($itipMessage->message->VEVENT as $vevent) {
+ $recurId = isset($vevent->{'RECURRENCE-ID'})?$vevent->{'RECURRENCE-ID'}->getValue():'master';
+ $attendee = $vevent->ATTENDEE;
+ $instances[$recurId] = $attendee['PARTSTAT']->getValue();
+ if (isset($vevent->{'REQUEST-STATUS'})) {
+ $requestStatus = $vevent->{'REQUEST-STATUS'}->getValue();
+ list($requestStatus) = explode(';', $requestStatus);
+ }
+ }
+
+ // Now we need to loop through the original organizer event, to find
+ // all the instances where we have a reply for.
+ $masterObject = null;
+ foreach($existingObject->VEVENT as $vevent) {
+ $recurId = isset($vevent->{'RECURRENCE-ID'})?$vevent->{'RECURRENCE-ID'}->getValue():'master';
+ if ($recurId==='master') {
+ $masterObject = $vevent;
+ }
+ if (isset($instances[$recurId])) {
+ $attendeeFound = false;
+ if (isset($vevent->ATTENDEE)) {
+ foreach($vevent->ATTENDEE as $attendee) {
+ if ($attendee->getValue() === $itipMessage->sender) {
+ $attendeeFound = true;
+ $attendee['PARTSTAT'] = $instances[$recurId];
+ $attendee['SCHEDULE-STATUS'] = $requestStatus;
+ // Un-setting the RSVP status, because we now know
+ // that the attende already replied.
+ unset($attendee['RSVP']);
+ break;
+ }
+ }
+ }
+ if (!$attendeeFound) {
+ // Adding a new attendee. The iTip documentation calls this
+ // a party crasher.
+ $attendee = $vevent->add('ATTENDEE', $itipMessage->sender, array(
+ 'PARTSTAT' => $instances[$recurId]
+ ));
+ if ($itipMessage->senderName) $attendee['CN'] = $itipMessage->senderName;
+ }
+ unset($instances[$recurId]);
+ }
+ }
+
+ if(!$masterObject) {
+ // No master object, we can't add new instances.
+ return null;
+ }
+ // If we got replies to instances that did not exist in the
+ // original list, it means that new exceptions must be created.
+ foreach($instances as $recurId=>$partstat) {
+
+ $recurrenceIterator = new EventIterator($existingObject, $itipMessage->uid);
+ $found = false;
+ $iterations = 1000;
+ do {
+
+ $newObject = $recurrenceIterator->getEventObject();
+ $recurrenceIterator->next();
+
+ if (isset($newObject->{'RECURRENCE-ID'}) && $newObject->{'RECURRENCE-ID'}->getValue()===$recurId) {
+ $found = true;
+ }
+ $iterations--;
+
+ } while($recurrenceIterator->valid() && !$found && $iterations);
+
+ // Invalid recurrence id. Skipping this object.
+ if (!$found) continue;
+
+ unset(
+ $newObject->RRULE,
+ $newObject->EXDATE,
+ $newObject->RDATE
+ );
+ $attendeeFound = false;
+ if (isset($newObject->ATTENDEE)) {
+ foreach($newObject->ATTENDEE as $attendee) {
+ if ($attendee->getValue() === $itipMessage->sender) {
+ $attendeeFound = true;
+ $attendee['PARTSTAT'] = $partstat;
+ break;
+ }
+ }
+ }
+ if (!$attendeeFound) {
+ // Adding a new attendee
+ $attendee = $newObject->add('ATTENDEE', $itipMessage->sender, array(
+ 'PARTSTAT' => $partstat
+ ));
+ if ($itipMessage->senderName) {
+ $attendee['CN'] = $itipMessage->senderName;
+ }
+ }
+ $existingObject->add($newObject);
+
+ }
+ return $existingObject;
+
+ }
+
+ /**
+ * This method is used in cases where an event got updated, and we
+ * potentially need to send emails to attendees to let them know of updates
+ * in the events.
+ *
+ * We will detect which attendees got added, which got removed and create
+ * specific messages for these situations.
+ *
+ * @param VCalendar $calendar
+ * @param array $eventInfo
+ * @param array $oldEventInfo
+ * @return array
+ */
+ protected function parseEventForOrganizer(VCalendar $calendar, array $eventInfo, array $oldEventInfo) {
+
+ // Merging attendee lists.
+ $attendees = array();
+ foreach($oldEventInfo['attendees'] as $attendee) {
+ $attendees[$attendee['href']] = array(
+ 'href' => $attendee['href'],
+ 'oldInstances' => $attendee['instances'],
+ 'newInstances' => array(),
+ 'name' => $attendee['name'],
+ 'forceSend' => null,
+ );
+ }
+ foreach($eventInfo['attendees'] as $attendee) {
+ if (isset($attendees[$attendee['href']])) {
+ $attendees[$attendee['href']]['name'] = $attendee['name'];
+ $attendees[$attendee['href']]['newInstances'] = $attendee['instances'];
+ $attendees[$attendee['href']]['forceSend'] = $attendee['forceSend'];
+ } else {
+ $attendees[$attendee['href']] = array(
+ 'href' => $attendee['href'],
+ 'oldInstances' => array(),
+ 'newInstances' => $attendee['instances'],
+ 'name' => $attendee['name'],
+ 'forceSend' => $attendee['forceSend'],
+ );
+ }
+ }
+
+ $messages = array();
+
+ foreach($attendees as $attendee) {
+
+ // An organizer can also be an attendee. We should not generate any
+ // messages for those.
+ if ($attendee['href']===$eventInfo['organizer']) {
+ continue;
+ }
+
+ $message = new Message();
+ $message->uid = $eventInfo['uid'];
+ $message->component = 'VEVENT';
+ $message->sequence = $eventInfo['sequence'];
+ $message->sender = $eventInfo['organizer'];
+ $message->senderName = $eventInfo['organizerName'];
+ $message->recipient = $attendee['href'];
+ $message->recipientName = $attendee['name'];
+
+ if (!$attendee['newInstances']) {
+
+ // If there are no instances the attendee is a part of, it
+ // means the attendee was removed and we need to send him a
+ // CANCEL.
+ $message->method = 'CANCEL';
+
+ // Creating the new iCalendar body.
+ $icalMsg = new VCalendar();
+ $icalMsg->METHOD = $message->method;
+ $event = $icalMsg->add('VEVENT', array(
+ 'UID' => $message->uid,
+ 'SEQUENCE' => $message->sequence,
+ ));
+ if (isset($calendar->VEVENT->SUMMARY)) {
+ $event->add('SUMMARY', $calendar->VEVENT->SUMMARY->getValue());
+ }
+ $event->add(clone $calendar->VEVENT->DTSTART);
+ if (isset($calendar->VEVENT->DTEND)) {
+ $event->add(clone $calendar->VEVENT->DTEND);
+ } elseif (isset($calendar->VEVENT->DURATION)) {
+ $event->add(clone $calendar->VEVENT->DURATION);
+ }
+ $org = $event->add('ORGANIZER', $eventInfo['organizer']);
+ if ($eventInfo['organizerName']) $org['CN'] = $eventInfo['organizerName'];
+ $event->add('ATTENDEE', $attendee['href'], array(
+ 'CN' => $attendee['name'],
+ ));
+ $message->significantChange = true;
+
+ } else {
+
+ // The attendee gets the updated event body
+ $message->method = 'REQUEST';
+
+ // Creating the new iCalendar body.
+ $icalMsg = new VCalendar();
+ $icalMsg->METHOD = $message->method;
+
+ foreach($calendar->select('VTIMEZONE') as $timezone) {
+ $icalMsg->add(clone $timezone);
+ }
+
+ // We need to find out that this change is significant. If it's
+ // not, systems may opt to not send messages.
+ //
+ // We do this based on the 'significantChangeHash' which is
+ // some value that changes if there's a certain set of
+ // properties changed in the event, or simply if there's a
+ // difference in instances that the attendee is invited to.
+
+ $message->significantChange =
+ $attendee['forceSend'] === 'REQUEST' ||
+ array_keys($attendee['oldInstances']) != array_keys($attendee['newInstances']) ||
+ $oldEventInfo['significantChangeHash']!==$eventInfo['significantChangeHash'];
+
+ foreach($attendee['newInstances'] as $instanceId => $instanceInfo) {
+
+ $currentEvent = clone $eventInfo['instances'][$instanceId];
+ if ($instanceId === 'master') {
+
+ // We need to find a list of events that the attendee
+ // is not a part of to add to the list of exceptions.
+ $exceptions = array();
+ foreach($eventInfo['instances'] as $instanceId=>$vevent) {
+ if (!isset($attendee['newInstances'][$instanceId])) {
+ $exceptions[] = $instanceId;
+ }
+ }
+
+ // If there were exceptions, we need to add it to an
+ // existing EXDATE property, if it exists.
+ if ($exceptions) {
+ if (isset($currentEvent->EXDATE)) {
+ $currentEvent->EXDATE->setParts(array_merge(
+ $currentEvent->EXDATE->getParts(),
+ $exceptions
+ ));
+ } else {
+ $currentEvent->EXDATE = $exceptions;
+ }
+ }
+
+ // Cleaning up any scheduling information that
+ // shouldn't be sent along.
+ unset($currentEvent->ORGANIZER['SCHEDULE-FORCE-SEND']);
+ unset($currentEvent->ORGANIZER['SCHEDULE-STATUS']);
+
+ foreach($currentEvent->ATTENDEE as $attendee) {
+ unset($attendee['SCHEDULE-FORCE-SEND']);
+ unset($attendee['SCHEDULE-STATUS']);
+
+ // We're adding PARTSTAT=NEEDS-ACTION to ensure that
+ // iOS shows an "Inbox Item"
+ if (!isset($attendee['PARTSTAT'])) {
+ $attendee['PARTSTAT'] = 'NEEDS-ACTION';
+ }
+
+ }
+
+ }
+
+ $icalMsg->add($currentEvent);
+
+ }
+
+ }
+
+ $message->message = $icalMsg;
+ $messages[] = $message;
+
+ }
+
+ return $messages;
+
+ }
+
+ /**
+ * Parse an event update for an attendee.
+ *
+ * This function figures out if we need to send a reply to an organizer.
+ *
+ * @param VCalendar $calendar
+ * @param array $eventInfo
+ * @param array $oldEventInfo
+ * @param string $attendee
+ * @return Message[]
+ */
+ protected function parseEventForAttendee(VCalendar $calendar, array $eventInfo, array $oldEventInfo, $attendee) {
+
+ if ($this->scheduleAgentServerRules && $eventInfo['organizerScheduleAgent']==='CLIENT') {
+ return array();
+ }
+
+ // Don't bother generating messages for events that have already been
+ // cancelled.
+ if ($eventInfo['status']==='CANCELLED') {
+ return array();
+ }
+
+ $oldInstances = !empty($oldEventInfo['attendees'][$attendee]['instances']) ?
+ $oldEventInfo['attendees'][$attendee]['instances'] :
+ array();
+
+ $instances = array();
+ foreach($oldInstances as $instance) {
+
+ $instances[$instance['id']] = array(
+ 'id' => $instance['id'],
+ 'oldstatus' => $instance['partstat'],
+ 'newstatus' => null,
+ );
+
+ }
+ foreach($eventInfo['attendees'][$attendee]['instances'] as $instance) {
+
+ if (isset($instances[$instance['id']])) {
+ $instances[$instance['id']]['newstatus'] = $instance['partstat'];
+ } else {
+ $instances[$instance['id']] = array(
+ 'id' => $instance['id'],
+ 'oldstatus' => null,
+ 'newstatus' => $instance['partstat'],
+ );
+ }
+
+ }
+
+ // We need to also look for differences in EXDATE. If there are new
+ // items in EXDATE, it means that an attendee deleted instances of an
+ // event, which means we need to send DECLINED specifically for those
+ // instances.
+ // We only need to do that though, if the master event is not declined.
+ if (isset($instances['master']) && $instances['master']['newstatus'] !== 'DECLINED') {
+ foreach($eventInfo['exdate'] as $exDate) {
+
+ if (!in_array($exDate, $oldEventInfo['exdate'])) {
+ if (isset($instances[$exDate])) {
+ $instances[$exDate]['newstatus'] = 'DECLINED';
+ } else {
+ $instances[$exDate] = array(
+ 'id' => $exDate,
+ 'oldstatus' => null,
+ 'newstatus' => 'DECLINED',
+ );
+ }
+ }
+
+ }
+ }
+
+ // Gathering a few extra properties for each instance.
+ foreach($instances as $recurId=>$instanceInfo) {
+
+ if (isset($eventInfo['instances'][$recurId])) {
+ $instances[$recurId]['dtstart'] = clone $eventInfo['instances'][$recurId]->DTSTART;
+ } else {
+ $instances[$recurId]['dtstart'] = $recurId;
+ }
+
+ }
+
+ $message = new Message();
+ $message->uid = $eventInfo['uid'];
+ $message->method = 'REPLY';
+ $message->component = 'VEVENT';
+ $message->sequence = $eventInfo['sequence'];
+ $message->sender = $attendee;
+ $message->senderName = $eventInfo['attendees'][$attendee]['name'];
+ $message->recipient = $eventInfo['organizer'];
+ $message->recipientName = $eventInfo['organizerName'];
+
+ $icalMsg = new VCalendar();
+ $icalMsg->METHOD = 'REPLY';
+
+ $hasReply = false;
+
+ foreach($instances as $instance) {
+
+ if ($instance['oldstatus']==$instance['newstatus'] && $eventInfo['organizerForceSend'] !== 'REPLY') {
+ // Skip
+ continue;
+ }
+
+ $event = $icalMsg->add('VEVENT', array(
+ 'UID' => $message->uid,
+ 'SEQUENCE' => $message->sequence,
+ ));
+ $summary = isset($calendar->VEVENT->SUMMARY)?$calendar->VEVENT->SUMMARY->getValue():'';
+ // Adding properties from the correct source instance
+ if (isset($eventInfo['instances'][$instance['id']])) {
+ $instanceObj = $eventInfo['instances'][$instance['id']];
+ $event->add(clone $instanceObj->DTSTART);
+ if (isset($instanceObj->DTEND)) {
+ $event->add(clone $instanceObj->DTEND);
+ } elseif (isset($instanceObj->DURATION)) {
+ $event->add(clone $instanceObj->DURATION);
+ }
+ if (isset($instanceObj->SUMMARY)) {
+ $event->add('SUMMARY', $instanceObj->SUMMARY->getValue());
+ } elseif ($summary) {
+ $event->add('SUMMARY', $summary);
+ }
+ } else {
+ // This branch of the code is reached, when a reply is
+ // generated for an instance of a recurring event, through the
+ // fact that the instance has disappeared by showing up in
+ // EXDATE
+ $dt = DateTimeParser::parse($instance['id'], $eventInfo['timezone']);
+ // Treat is as a DATE field
+ if (strlen($instance['id']) <= 8) {
+ $recur = $event->add('DTSTART', $dt, array('VALUE' => 'DATE'));
+ } else {
+ $recur = $event->add('DTSTART', $dt);
+ }
+ if ($summary) {
+ $event->add('SUMMARY', $summary);
+ }
+ }
+ if ($instance['id'] !== 'master') {
+ $dt = DateTimeParser::parse($instance['id'], $eventInfo['timezone']);
+ // Treat is as a DATE field
+ if (strlen($instance['id']) <= 8) {
+ $recur = $event->add('RECURRENCE-ID', $dt, array('VALUE' => 'DATE'));
+ } else {
+ $recur = $event->add('RECURRENCE-ID', $dt);
+ }
+ }
+ $organizer = $event->add('ORGANIZER', $message->recipient);
+ if ($message->recipientName) {
+ $organizer['CN'] = $message->recipientName;
+ }
+ $attendee = $event->add('ATTENDEE', $message->sender, array(
+ 'PARTSTAT' => $instance['newstatus']
+ ));
+ if ($message->senderName) {
+ $attendee['CN'] = $message->senderName;
+ }
+ $hasReply = true;
+
+ }
+
+ if ($hasReply) {
+ $message->message = $icalMsg;
+ return array($message);
+ } else {
+ return array();
+ }
+
+ }
+
+ /**
+ * Returns attendee information and information about instances of an
+ * event.
+ *
+ * Returns an array with the following keys:
+ *
+ * 1. uid
+ * 2. organizer
+ * 3. organizerName
+ * 4. organizerScheduleAgent
+ * 5. organizerForceSend
+ * 6. instances
+ * 7. attendees
+ * 8. sequence
+ * 9. exdate
+ * 10. timezone - strictly the timezone on which the recurrence rule is
+ * based on.
+ * 11. significantChangeHash
+ * 12. status
+ * @param VCalendar $calendar
+ * @return array
+ */
+ protected function parseEventInfo(VCalendar $calendar = null) {
+
+ $uid = null;
+ $organizer = null;
+ $organizerName = null;
+ $organizerForceSend = null;
+ $sequence = null;
+ $timezone = null;
+ $status = null;
+ $organizerScheduleAgent = 'SERVER';
+
+ $significantChangeHash = '';
+
+ // Now we need to collect a list of attendees, and which instances they
+ // are a part of.
+ $attendees = array();
+
+ $instances = array();
+ $exdate = array();
+
+ foreach($calendar->VEVENT as $vevent) {
+
+ if (is_null($uid)) {
+ $uid = $vevent->UID->getValue();
+ } else {
+ if ($uid !== $vevent->UID->getValue()) {
+ throw new ITipException('If a calendar contained more than one event, they must have the same UID.');
+ }
+ }
+
+ if (!isset($vevent->DTSTART)) {
+ throw new ITipException('An event MUST have a DTSTART property.');
+ }
+
+ if (isset($vevent->ORGANIZER)) {
+ if (is_null($organizer)) {
+ $organizer = $vevent->ORGANIZER->getNormalizedValue();
+ $organizerName = isset($vevent->ORGANIZER['CN'])?$vevent->ORGANIZER['CN']:null;
+ } else {
+ if ($organizer !== $vevent->ORGANIZER->getNormalizedValue()) {
+ throw new SameOrganizerForAllComponentsException('Every instance of the event must have the same organizer.');
+ }
+ }
+ $organizerForceSend =
+ isset($vevent->ORGANIZER['SCHEDULE-FORCE-SEND']) ?
+ strtoupper($vevent->ORGANIZER['SCHEDULE-FORCE-SEND']) :
+ null;
+ $organizerScheduleAgent =
+ isset($vevent->ORGANIZER['SCHEDULE-AGENT']) ?
+ strtoupper((string)$vevent->ORGANIZER['SCHEDULE-AGENT']) :
+ 'SERVER';
+ }
+ if (is_null($sequence) && isset($vevent->SEQUENCE)) {
+ $sequence = $vevent->SEQUENCE->getValue();
+ }
+ if (isset($vevent->EXDATE)) {
+ foreach ($vevent->select('EXDATE') as $val) {
+ $exdate = array_merge($exdate, $val->getParts());
+ }
+ sort($exdate);
+ }
+ if (isset($vevent->STATUS)) {
+ $status = strtoupper($vevent->STATUS->getValue());
+ }
+
+ $recurId = isset($vevent->{'RECURRENCE-ID'}) ? $vevent->{'RECURRENCE-ID'}->getValue() : 'master';
+ if (is_null($timezone)) {
+ if ($recurId === 'master') {
+ $timezone = $vevent->DTSTART->getDateTime()->getTimeZone();
+ } else {
+ $timezone = $vevent->{'RECURRENCE-ID'}->getDateTime()->getTimeZone();
+ }
+ }
+ if(isset($vevent->ATTENDEE)) {
+ foreach($vevent->ATTENDEE as $attendee) {
+
+ if ($this->scheduleAgentServerRules &&
+ isset($attendee['SCHEDULE-AGENT']) &&
+ strtoupper($attendee['SCHEDULE-AGENT']->getValue()) === 'CLIENT'
+ ) {
+ continue;
+ }
+ $partStat =
+ isset($attendee['PARTSTAT']) ?
+ strtoupper($attendee['PARTSTAT']) :
+ 'NEEDS-ACTION';
+
+ $forceSend =
+ isset($attendee['SCHEDULE-FORCE-SEND']) ?
+ strtoupper($attendee['SCHEDULE-FORCE-SEND']) :
+ null;
+
+
+ if (isset($attendees[$attendee->getNormalizedValue()])) {
+ $attendees[$attendee->getNormalizedValue()]['instances'][$recurId] = array(
+ 'id' => $recurId,
+ 'partstat' => $partStat,
+ 'force-send' => $forceSend,
+ );
+ } else {
+ $attendees[$attendee->getNormalizedValue()] = array(
+ 'href' => $attendee->getNormalizedValue(),
+ 'instances' => array(
+ $recurId => array(
+ 'id' => $recurId,
+ 'partstat' => $partStat,
+ ),
+ ),
+ 'name' => isset($attendee['CN'])?(string)$attendee['CN']:null,
+ 'forceSend' => $forceSend,
+ );
+ }
+
+ }
+ $instances[$recurId] = $vevent;
+
+ }
+
+ foreach($this->significantChangeProperties as $prop) {
+ if (isset($vevent->$prop)) {
+ $propertyValues = $vevent->select($prop);
+
+ $significantChangeHash.=$prop.':';
+
+ if ($prop === 'EXDATE') {
+
+ $significantChangeHash.= implode(',', $exdate).';';
+
+ } else {
+
+ foreach($propertyValues as $val) {
+ $significantChangeHash.= $val->getValue().';';
+ }
+
+ }
+ }
+ }
+
+ }
+ $significantChangeHash = md5($significantChangeHash);
+
+ return compact(
+ 'uid',
+ 'organizer',
+ 'organizerName',
+ 'organizerScheduleAgent',
+ 'organizerForceSend',
+ 'instances',
+ 'attendees',
+ 'sequence',
+ 'exdate',
+ 'timezone',
+ 'significantChangeHash',
+ 'status'
+ );
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/ITipException.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/ITipException.php
new file mode 100644
index 000000000..ad5e53ab4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/ITipException.php
@@ -0,0 +1,15 @@
+scheduleStatus) {
+
+ return false;
+
+ } else {
+
+ list($scheduleStatus) = explode(';', $this->scheduleStatus);
+ return $scheduleStatus;
+
+ }
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php
new file mode 100644
index 000000000..d8af0317b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ITip/SameOrganizerForAllComponentsException.php
@@ -0,0 +1,18 @@
+iterator))
+ return $this->iterator;
+
+ return new ElementList(array($this));
+
+ }
+
+ /**
+ * Sets the overridden iterator
+ *
+ * Note that this is not actually part of the iterator interface
+ *
+ * @param ElementList $iterator
+ * @return void
+ */
+ public function setIterator(ElementList $iterator) {
+
+ $this->iterator = $iterator;
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on)
+ * 2 - An inconsequential issue
+ * 3 - A severe issue.
+ *
+ * @param int $options
+ * @return array
+ */
+ public function validate($options = 0) {
+
+ return array();
+
+ }
+
+ /* }}} */
+
+ /* {{{ Countable interface */
+
+ /**
+ * Returns the number of elements
+ *
+ * @return int
+ */
+ public function count() {
+
+ $it = $this->getIterator();
+ return $it->count();
+
+ }
+
+ /* }}} */
+
+ /* {{{ ArrayAccess Interface */
+
+
+ /**
+ * Checks if an item exists through ArrayAccess.
+ *
+ * This method just forwards the request to the inner iterator
+ *
+ * @param int $offset
+ * @return bool
+ */
+ public function offsetExists($offset) {
+
+ $iterator = $this->getIterator();
+ return $iterator->offsetExists($offset);
+
+ }
+
+ /**
+ * Gets an item through ArrayAccess.
+ *
+ * This method just forwards the request to the inner iterator
+ *
+ * @param int $offset
+ * @return mixed
+ */
+ public function offsetGet($offset) {
+
+ $iterator = $this->getIterator();
+ return $iterator->offsetGet($offset);
+
+ }
+
+ /**
+ * Sets an item through ArrayAccess.
+ *
+ * This method just forwards the request to the inner iterator
+ *
+ * @param int $offset
+ * @param mixed $value
+ * @return void
+ */
+ public function offsetSet($offset, $value) {
+
+ $iterator = $this->getIterator();
+ $iterator->offsetSet($offset,$value);
+
+ // @codeCoverageIgnoreStart
+ //
+ // This method always throws an exception, so we ignore the closing
+ // brace
+ }
+ // @codeCoverageIgnoreEnd
+
+ /**
+ * Sets an item through ArrayAccess.
+ *
+ * This method just forwards the request to the inner iterator
+ *
+ * @param int $offset
+ * @return void
+ */
+ public function offsetUnset($offset) {
+
+ $iterator = $this->getIterator();
+ $iterator->offsetUnset($offset);
+
+ // @codeCoverageIgnoreStart
+ //
+ // This method always throws an exception, so we ignore the closing
+ // brace
+ }
+ // @codeCoverageIgnoreEnd
+
+ /* }}} */
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parameter.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parameter.php
new file mode 100644
index 000000000..fb88a00c0
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parameter.php
@@ -0,0 +1,373 @@
+name = strtoupper($name);
+ $this->root = $root;
+ if (is_null($name)) {
+ $this->noName = true;
+ $this->name = static::guessParameterNameByValue($value);
+ }
+
+ // If guessParameterNameByValue() returns an empty string
+ // above, we're actually dealing with a parameter that has no value.
+ // In that case we have to move the value to the name.
+ if ($this->name === '') {
+ $this->noName = false;
+ $this->name = strtoupper($value);
+ } else {
+ $this->setValue($value);
+ }
+
+ }
+
+ /**
+ * Try to guess property name by value, can be used for vCard 2.1 nameless parameters.
+ *
+ * Figuring out what the name should have been. Note that a ton of
+ * these are rather silly in 2014 and would probably rarely be
+ * used, but we like to be complete.
+ *
+ * @param string $value
+ * @return string
+ */
+ public static function guessParameterNameByValue($value) {
+ switch(strtoupper($value)) {
+
+ // Encodings
+ case '7-BIT' :
+ case 'QUOTED-PRINTABLE' :
+ case 'BASE64' :
+ $name = 'ENCODING';
+ break;
+
+ // Common types
+ case 'WORK' :
+ case 'HOME' :
+ case 'PREF' :
+
+ // Delivery Label Type
+ case 'DOM' :
+ case 'INTL' :
+ case 'POSTAL' :
+ case 'PARCEL' :
+
+ // Telephone types
+ case 'VOICE' :
+ case 'FAX' :
+ case 'MSG' :
+ case 'CELL' :
+ case 'PAGER' :
+ case 'BBS' :
+ case 'MODEM' :
+ case 'CAR' :
+ case 'ISDN' :
+ case 'VIDEO' :
+
+ // EMAIL types (lol)
+ case 'AOL' :
+ case 'APPLELINK' :
+ case 'ATTMAIL' :
+ case 'CIS' :
+ case 'EWORLD' :
+ case 'INTERNET' :
+ case 'IBMMAIL' :
+ case 'MCIMAIL' :
+ case 'POWERSHARE' :
+ case 'PRODIGY' :
+ case 'TLX' :
+ case 'X400' :
+
+ // Photo / Logo format types
+ case 'GIF' :
+ case 'CGM' :
+ case 'WMF' :
+ case 'BMP' :
+ case 'DIB' :
+ case 'PICT' :
+ case 'TIFF' :
+ case 'PDF ':
+ case 'PS' :
+ case 'JPEG' :
+ case 'MPEG' :
+ case 'MPEG2' :
+ case 'AVI' :
+ case 'QTIME' :
+
+ // Sound Digital Audio Type
+ case 'WAVE' :
+ case 'PCM' :
+ case 'AIFF' :
+
+ // Key types
+ case 'X509' :
+ case 'PGP' :
+ $name = 'TYPE';
+ break;
+
+ // Value types
+ case 'INLINE' :
+ case 'URL' :
+ case 'CONTENT-ID' :
+ case 'CID' :
+ $name = 'VALUE';
+ break;
+
+ default:
+ $name = '';
+ }
+
+ return $name;
+ }
+
+ /**
+ * Updates the current value.
+ *
+ * This may be either a single, or multiple strings in an array.
+ *
+ * @param string|array $value
+ * @return void
+ */
+ public function setValue($value) {
+
+ $this->value = $value;
+
+ }
+
+ /**
+ * Returns the current value
+ *
+ * This method will always return a string, or null. If there were multiple
+ * values, it will automatically concatinate them (separated by comma).
+ *
+ * @return string|null
+ */
+ public function getValue() {
+
+ if (is_array($this->value)) {
+ return implode(',' , $this->value);
+ } else {
+ return $this->value;
+ }
+
+ }
+
+ /**
+ * Sets multiple values for this parameter.
+ *
+ * @param array $value
+ * @return void
+ */
+ public function setParts(array $value) {
+
+ $this->value = $value;
+
+ }
+
+ /**
+ * Returns all values for this parameter.
+ *
+ * If there were no values, an empty array will be returned.
+ *
+ * @return array
+ */
+ public function getParts() {
+
+ if (is_array($this->value)) {
+ return $this->value;
+ } elseif (is_null($this->value)) {
+ return array();
+ } else {
+ return array($this->value);
+ }
+
+ }
+
+ /**
+ * Adds a value to this parameter
+ *
+ * If the argument is specified as an array, all items will be added to the
+ * parameter value list.
+ *
+ * @param string|array $part
+ * @return void
+ */
+ public function addValue($part) {
+
+ if (is_null($this->value)) {
+ $this->value = $part;
+ } else {
+ $this->value = array_merge((array)$this->value, (array)$part);
+ }
+
+ }
+
+ /**
+ * Checks if this parameter contains the specified value.
+ *
+ * This is a case-insensitive match. It makes sense to call this for for
+ * instance the TYPE parameter, to see if it contains a keyword such as
+ * 'WORK' or 'FAX'.
+ *
+ * @param string $value
+ * @return bool
+ */
+ public function has($value) {
+
+ return in_array(
+ strtolower($value),
+ array_map('strtolower', (array)$this->value)
+ );
+
+ }
+
+ /**
+ * Turns the object back into a serialized blob.
+ *
+ * @return string
+ */
+ public function serialize() {
+
+ $value = $this->getParts();
+
+ if (count($value)===0) {
+ return $this->name . '=';
+ }
+
+ if ($this->root->getDocumentType() === Document::VCARD21 && $this->noName) {
+
+ return implode(';', $value);
+
+ }
+
+ return $this->name . '=' . array_reduce(
+ $value,
+ function($out, $item) {
+
+ if (!is_null($out)) $out.=',';
+
+ // If there's no special characters in the string, we'll use the simple
+ // format.
+ //
+ // The list of special characters is defined as:
+ //
+ // Any character except CONTROL, DQUOTE, ";", ":", ","
+ //
+ // by the iCalendar spec:
+ // https://tools.ietf.org/html/rfc5545#section-3.1
+ //
+ // And we add ^ to that because of:
+ // https://tools.ietf.org/html/rfc6868
+ //
+ // But we've found that iCal (7.0, shipped with OSX 10.9)
+ // severaly trips on + characters not being quoted, so we
+ // added + as well.
+ if (!preg_match('#(?: [\n":;\^,\+] )#x', $item)) {
+ return $out.$item;
+ } else {
+ // Enclosing in double-quotes, and using RFC6868 for encoding any
+ // special characters
+ $out.='"' . strtr(
+ $item,
+ array(
+ '^' => '^^',
+ "\n" => '^n',
+ '"' => '^\'',
+ )
+ ) . '"';
+ return $out;
+ }
+
+ }
+ );
+
+ }
+
+ /**
+ * This method returns an array, with the representation as it should be
+ * encoded in json. This is used to create jCard or jCal documents.
+ *
+ * @return array
+ */
+ public function jsonSerialize() {
+
+ return $this->value;
+
+ }
+
+ /**
+ * Called when this object is being cast to a string
+ *
+ * @return string
+ */
+ public function __toString() {
+
+ return (string)$this->getValue();
+
+ }
+
+ /**
+ * Returns the iterator for this object
+ *
+ * @return ElementList
+ */
+ public function getIterator() {
+
+ if (!is_null($this->iterator))
+ return $this->iterator;
+
+ return $this->iterator = new ArrayObject((array)$this->value);
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ParseException.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ParseException.php
new file mode 100644
index 000000000..d96d20720
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/ParseException.php
@@ -0,0 +1,13 @@
+setInput($input);
+ }
+ if (is_null($this->input)) {
+ throw new EofException('End of input stream, or no input supplied');
+ }
+
+ if (!is_null($options)) {
+ $this->options = $options;
+ }
+
+ switch($this->input[0]) {
+ case 'vcalendar' :
+ $this->root = new VCalendar(array(), false);
+ break;
+ case 'vcard' :
+ $this->root = new VCard(array(), false);
+ break;
+ default :
+ throw new ParseException('The root component must either be a vcalendar, or a vcard');
+
+ }
+ foreach($this->input[1] as $prop) {
+ $this->root->add($this->parseProperty($prop));
+ }
+ if (isset($this->input[2])) foreach($this->input[2] as $comp) {
+ $this->root->add($this->parseComponent($comp));
+ }
+
+ // Resetting the input so we can throw an feof exception the next time.
+ $this->input = null;
+
+ return $this->root;
+
+ }
+
+ /**
+ * Parses a component
+ *
+ * @param array $jComp
+ * @return \Sabre\VObject\Component
+ */
+ public function parseComponent(array $jComp) {
+
+ // We can remove $self from PHP 5.4 onward.
+ $self = $this;
+
+ $properties = array_map(
+ function($jProp) use ($self) {
+ return $self->parseProperty($jProp);
+ },
+ $jComp[1]
+ );
+
+ if (isset($jComp[2])) {
+
+ $components = array_map(
+ function($jComp) use ($self) {
+ return $self->parseComponent($jComp);
+ },
+ $jComp[2]
+ );
+
+ } else $components = array();
+
+ return $this->root->createComponent(
+ $jComp[0],
+ array_merge($properties, $components),
+ $defaults = false
+ );
+
+ }
+
+ /**
+ * Parses properties.
+ *
+ * @param array $jProp
+ * @return \Sabre\VObject\Property
+ */
+ public function parseProperty(array $jProp) {
+
+ list(
+ $propertyName,
+ $parameters,
+ $valueType
+ ) = $jProp;
+
+ $propertyName = strtoupper($propertyName);
+
+ // This is the default class we would be using if we didn't know the
+ // value type. We're using this value later in this function.
+ $defaultPropertyClass = $this->root->getClassNameForPropertyName($propertyName);
+
+ $parameters = (array)$parameters;
+
+ $value = array_slice($jProp, 3);
+
+ $valueType = strtoupper($valueType);
+
+ if (isset($parameters['group'])) {
+ $propertyName = $parameters['group'] . '.' . $propertyName;
+ unset($parameters['group']);
+ }
+
+ $prop = $this->root->createProperty($propertyName, null, $parameters, $valueType);
+ $prop->setJsonValue($value);
+
+ // We have to do something awkward here. FlatText as well as Text
+ // represents TEXT values. We have to normalize these here. In the
+ // future we can get rid of FlatText once we're allowed to break BC
+ // again.
+ if ($defaultPropertyClass === 'Sabre\VObject\Property\FlatText') {
+ $defaultPropertyClass = 'Sabre\VObject\Property\Text';
+ }
+
+ // If the value type we received (e.g.: TEXT) was not the default value
+ // type for the given property (e.g.: BDAY), we need to add a VALUE=
+ // parameter.
+ if ($defaultPropertyClass !== get_class($prop)) {
+ $prop["VALUE"] = $valueType;
+ }
+
+ return $prop;
+
+ }
+
+ /**
+ * Sets the input data
+ *
+ * @param resource|string|array $input
+ * @return void
+ */
+ public function setInput($input) {
+
+ if (is_resource($input)) {
+ $input = stream_get_contents($input);
+ }
+ if (is_string($input)) {
+ $input = json_decode($input);
+ }
+ $this->input = $input;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/MimeDir.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/MimeDir.php
new file mode 100644
index 000000000..e7fa2ed40
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/MimeDir.php
@@ -0,0 +1,628 @@
+root = null;
+ if (!is_null($input)) {
+
+ $this->setInput($input);
+
+ }
+
+ if (!is_null($options)) $this->options = $options;
+
+ $this->parseDocument();
+
+ return $this->root;
+
+ }
+
+ /**
+ * Sets the input buffer. Must be a string or stream.
+ *
+ * @param resource|string $input
+ * @return void
+ */
+ public function setInput($input) {
+
+ // Resetting the parser
+ $this->lineIndex = 0;
+ $this->startLine = 0;
+
+ if (is_string($input)) {
+ // Convering to a stream.
+ $stream = fopen('php://temp', 'r+');
+ fwrite($stream, $input);
+ rewind($stream);
+ $this->input = $stream;
+ } elseif (is_resource($input)) {
+ $this->input = $input;
+ } else {
+ throw new \InvalidArgumentException('This parser can only read from strings or streams.');
+ }
+
+ }
+
+ /**
+ * Parses an entire document.
+ *
+ * @return void
+ */
+ protected function parseDocument() {
+
+ $line = $this->readLine();
+
+ // BOM is ZERO WIDTH NO-BREAK SPACE (U+FEFF).
+ // It's 0xEF 0xBB 0xBF in UTF-8 hex.
+ if ( 3 <= strlen($line)
+ && ord($line[0]) === 0xef
+ && ord($line[1]) === 0xbb
+ && ord($line[2]) === 0xbf) {
+ $line = substr($line, 3);
+ }
+
+ switch(strtoupper($line)) {
+ case 'BEGIN:VCALENDAR' :
+ $class = isset(VCalendar::$componentMap['VCALENDAR'])
+ ? VCalendar::$componentMap[$name]
+ : 'Sabre\\VObject\\Component\\VCalendar';
+ break;
+ case 'BEGIN:VCARD' :
+ $class = isset(VCard::$componentMap['VCARD'])
+ ? VCard::$componentMap['VCARD']
+ : 'Sabre\\VObject\\Component\\VCard';
+ break;
+ default :
+ throw new ParseException('This parser only supports VCARD and VCALENDAR files');
+ }
+
+ $this->root = new $class(array(), false);
+
+ while(true) {
+
+ // Reading until we hit END:
+ $line = $this->readLine();
+ if (strtoupper(substr($line,0,4)) === 'END:') {
+ break;
+ }
+ $result = $this->parseLine($line);
+ if ($result) {
+ $this->root->add($result);
+ }
+
+ }
+
+ $name = strtoupper(substr($line, 4));
+ if ($name!==$this->root->name) {
+ throw new ParseException('Invalid MimeDir file. expected: "END:' . $this->root->name . '" got: "END:' . $name . '"');
+ }
+
+ }
+
+ /**
+ * Parses a line, and if it hits a component, it will also attempt to parse
+ * the entire component
+ *
+ * @param string $line Unfolded line
+ * @return Node
+ */
+ protected function parseLine($line) {
+
+ // Start of a new component
+ if (strtoupper(substr($line, 0, 6)) === 'BEGIN:') {
+
+ $component = $this->root->createComponent(substr($line,6), array(), false);
+
+ while(true) {
+
+ // Reading until we hit END:
+ $line = $this->readLine();
+ if (strtoupper(substr($line,0,4)) === 'END:') {
+ break;
+ }
+ $result = $this->parseLine($line);
+ if ($result) {
+ $component->add($result);
+ }
+
+ }
+
+ $name = strtoupper(substr($line, 4));
+ if ($name!==$component->name) {
+ throw new ParseException('Invalid MimeDir file. expected: "END:' . $component->name . '" got: "END:' . $name . '"');
+ }
+
+ return $component;
+
+ } else {
+
+ // Property reader
+ $property = $this->readProperty($line);
+ if (!$property) {
+ // Ignored line
+ return false;
+ }
+ return $property;
+
+ }
+
+ }
+
+ /**
+ * We need to look ahead 1 line every time to see if we need to 'unfold'
+ * the next line.
+ *
+ * If that was not the case, we store it here.
+ *
+ * @var null|string
+ */
+ protected $lineBuffer;
+
+ /**
+ * The real current line number.
+ */
+ protected $lineIndex = 0;
+
+ /**
+ * In the case of unfolded lines, this property holds the line number for
+ * the start of the line.
+ *
+ * @var int
+ */
+ protected $startLine = 0;
+
+ /**
+ * Contains a 'raw' representation of the current line.
+ *
+ * @var string
+ */
+ protected $rawLine;
+
+ /**
+ * Reads a single line from the buffer.
+ *
+ * This method strips any newlines and also takes care of unfolding.
+ *
+ * @throws \Sabre\VObject\EofException
+ * @return string
+ */
+ protected function readLine() {
+
+ if (!is_null($this->lineBuffer)) {
+ $rawLine = $this->lineBuffer;
+ $this->lineBuffer = null;
+ } else {
+ do {
+ $eof = feof($this->input);
+
+ $rawLine = fgets($this->input);
+
+ if ($eof || (feof($this->input) && $rawLine===false)) {
+ throw new EofException('End of document reached prematurely');
+ }
+ if ($rawLine === false) {
+ throw new ParseException('Error reading from input stream');
+ }
+ $rawLine = rtrim($rawLine, "\r\n");
+ } while ($rawLine === ''); // Skipping empty lines
+ $this->lineIndex++;
+ }
+ $line = $rawLine;
+
+ $this->startLine = $this->lineIndex;
+
+ // Looking ahead for folded lines.
+ while (true) {
+
+ $nextLine = rtrim(fgets($this->input), "\r\n");
+ $this->lineIndex++;
+ if (!$nextLine) {
+ break;
+ }
+ if ($nextLine[0] === "\t" || $nextLine[0] === " ") {
+ $line .= substr($nextLine, 1);
+ $rawLine .= "\n " . substr($nextLine, 1);
+ } else {
+ $this->lineBuffer = $nextLine;
+ break;
+ }
+
+ }
+ $this->rawLine = $rawLine;
+ return $line;
+
+ }
+
+ /**
+ * Reads a property or component from a line.
+ *
+ * @return void
+ */
+ protected function readProperty($line) {
+
+ if ($this->options & self::OPTION_FORGIVING) {
+ $propNameToken = 'A-Z0-9\-\._\\/';
+ } else {
+ $propNameToken = 'A-Z0-9\-\.';
+ }
+
+ $paramNameToken = 'A-Z0-9\-';
+ $safeChar = '^";:,';
+ $qSafeChar = '^"';
+
+ $regex = "/
+ ^(?P [$propNameToken]+ ) (?=[;:]) # property name
+ |
+ (?<=:)(?P .+)$ # property value
+ |
+ ;(?P [$paramNameToken]+) (?=[=;:]) # parameter name
+ |
+ (=|,)(?P # parameter value
+ (?: [$safeChar]*) |
+ \"(?: [$qSafeChar]+)\"
+ ) (?=[;:,])
+ /xi";
+
+ //echo $regex, "\n"; die();
+ preg_match_all($regex, $line, $matches, PREG_SET_ORDER);
+
+ $property = array(
+ 'name' => null,
+ 'parameters' => array(),
+ 'value' => null
+ );
+
+ $lastParam = null;
+
+ /**
+ * Looping through all the tokens.
+ *
+ * Note that we are looping through them in reverse order, because if a
+ * sub-pattern matched, the subsequent named patterns will not show up
+ * in the result.
+ */
+ foreach($matches as $match) {
+
+ if (isset($match['paramValue'])) {
+ if ($match['paramValue'] && $match['paramValue'][0] === '"') {
+ $value = substr($match['paramValue'], 1, -1);
+ } else {
+ $value = $match['paramValue'];
+ }
+
+ $value = $this->unescapeParam($value);
+
+ if (is_null($property['parameters'][$lastParam])) {
+ $property['parameters'][$lastParam] = $value;
+ } elseif (is_array($property['parameters'][$lastParam])) {
+ $property['parameters'][$lastParam][] = $value;
+ } else {
+ $property['parameters'][$lastParam] = array(
+ $property['parameters'][$lastParam],
+ $value
+ );
+ }
+ continue;
+ }
+ if (isset($match['paramName'])) {
+ $lastParam = strtoupper($match['paramName']);
+ if (!isset($property['parameters'][$lastParam])) {
+ $property['parameters'][$lastParam] = null;
+ }
+ continue;
+ }
+ if (isset($match['propValue'])) {
+ $property['value'] = $match['propValue'];
+ continue;
+ }
+ if (isset($match['name']) && $match['name']) {
+ $property['name'] = strtoupper($match['name']);
+ continue;
+ }
+
+ // @codeCoverageIgnoreStart
+ throw new \LogicException('This code should not be reachable');
+ // @codeCoverageIgnoreEnd
+
+ }
+
+ if (is_null($property['value'])) {
+ $property['value'] = '';
+ }
+ if (!$property['name']) {
+ if ($this->options & self::OPTION_IGNORE_INVALID_LINES) {
+ return false;
+ }
+ throw new ParseException('Invalid Mimedir file. Line starting at ' . $this->startLine . ' did not follow iCalendar/vCard conventions');
+ }
+
+ // vCard 2.1 states that parameters may appear without a name, and only
+ // a value. We can deduce the value based on it's name.
+ //
+ // Our parser will get those as parameters without a value instead, so
+ // we're filtering these parameters out first.
+ $namedParameters = array();
+ $namelessParameters = array();
+
+ foreach($property['parameters'] as $name=>$value) {
+ if (!is_null($value)) {
+ $namedParameters[$name] = $value;
+ } else {
+ $namelessParameters[] = $name;
+ }
+ }
+
+ $propObj = $this->root->createProperty($property['name'], null, $namedParameters);
+
+ foreach($namelessParameters as $namelessParameter) {
+ $propObj->add(null, $namelessParameter);
+ }
+
+ if (strtoupper($propObj['ENCODING']) === 'QUOTED-PRINTABLE') {
+ $propObj->setQuotedPrintableValue($this->extractQuotedPrintableValue());
+ } else {
+ $propObj->setRawMimeDirValue($property['value']);
+ }
+
+ return $propObj;
+
+ }
+
+ /**
+ * Unescapes a property value.
+ *
+ * vCard 2.1 says:
+ * * Semi-colons must be escaped in some property values, specifically
+ * ADR, ORG and N.
+ * * Semi-colons must be escaped in parameter values, because semi-colons
+ * are also use to separate values.
+ * * No mention of escaping backslashes with another backslash.
+ * * newlines are not escaped either, instead QUOTED-PRINTABLE is used to
+ * span values over more than 1 line.
+ *
+ * vCard 3.0 says:
+ * * (rfc2425) Backslashes, newlines (\n or \N) and comma's must be
+ * escaped, all time time.
+ * * Comma's are used for delimeters in multiple values
+ * * (rfc2426) Adds to to this that the semi-colon MUST also be escaped,
+ * as in some properties semi-colon is used for separators.
+ * * Properties using semi-colons: N, ADR, GEO, ORG
+ * * Both ADR and N's individual parts may be broken up further with a
+ * comma.
+ * * Properties using commas: NICKNAME, CATEGORIES
+ *
+ * vCard 4.0 (rfc6350) says:
+ * * Commas must be escaped.
+ * * Semi-colons may be escaped, an unescaped semi-colon _may_ be a
+ * delimiter, depending on the property.
+ * * Backslashes must be escaped
+ * * Newlines must be escaped as either \N or \n.
+ * * Some compound properties may contain multiple parts themselves, so a
+ * comma within a semi-colon delimited property may also be unescaped
+ * to denote multiple parts _within_ the compound property.
+ * * Text-properties using semi-colons: N, ADR, ORG, CLIENTPIDMAP.
+ * * Text-properties using commas: NICKNAME, RELATED, CATEGORIES, PID.
+ *
+ * Even though the spec says that commas must always be escaped, the
+ * example for GEO in Section 6.5.2 seems to violate this.
+ *
+ * iCalendar 2.0 (rfc5545) says:
+ * * Commas or semi-colons may be used as delimiters, depending on the
+ * property.
+ * * Commas, semi-colons, backslashes, newline (\N or \n) are always
+ * escaped, unless they are delimiters.
+ * * Colons shall not be escaped.
+ * * Commas can be considered the 'default delimiter' and is described as
+ * the delimiter in cases where the order of the multiple values is
+ * insignificant.
+ * * Semi-colons are described as the delimiter for 'structured values'.
+ * They are specifically used in Semi-colons are used as a delimiter in
+ * REQUEST-STATUS, RRULE, GEO and EXRULE. EXRULE is deprecated however.
+ *
+ * Now for the parameters
+ *
+ * If delimiter is not set (null) this method will just return a string.
+ * If it's a comma or a semi-colon the string will be split on those
+ * characters, and always return an array.
+ *
+ * @param string $input
+ * @param string $delimiter
+ * @return string|string[]
+ */
+ static public function unescapeValue($input, $delimiter = ';') {
+
+ $regex = '# (?: (\\\\ (?: \\\\ | N | n | ; | , ) )';
+ if ($delimiter) {
+ $regex .= ' | (' . $delimiter . ')';
+ }
+ $regex .= ') #x';
+
+ $matches = preg_split($regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+
+ $resultArray = array();
+ $result = '';
+
+ foreach($matches as $match) {
+
+ switch ($match) {
+ case '\\\\' :
+ $result .='\\';
+ break;
+ case '\N' :
+ case '\n' :
+ $result .="\n";
+ break;
+ case '\;' :
+ $result .=';';
+ break;
+ case '\,' :
+ $result .=',';
+ break;
+ case $delimiter :
+ $resultArray[] = $result;
+ $result = '';
+ break;
+ default :
+ $result .= $match;
+ break;
+
+ }
+
+ }
+
+ $resultArray[] = $result;
+ return $delimiter ? $resultArray : $result;
+
+ }
+
+ /**
+ * Unescapes a parameter value.
+ *
+ * vCard 2.1:
+ * * Does not mention a mechanism for this. In addition, double quotes
+ * are never used to wrap values.
+ * * This means that parameters can simply not contain colons or
+ * semi-colons.
+ *
+ * vCard 3.0 (rfc2425, rfc2426):
+ * * Parameters _may_ be surrounded by double quotes.
+ * * If this is not the case, semi-colon, colon and comma may simply not
+ * occur (the comma used for multiple parameter values though).
+ * * If it is surrounded by double-quotes, it may simply not contain
+ * double-quotes.
+ * * This means that a parameter can in no case encode double-quotes, or
+ * newlines.
+ *
+ * vCard 4.0 (rfc6350)
+ * * Behavior seems to be identical to vCard 3.0
+ *
+ * iCalendar 2.0 (rfc5545)
+ * * Behavior seems to be identical to vCard 3.0
+ *
+ * Parameter escaping mechanism (rfc6868) :
+ * * This rfc describes a new way to escape parameter values.
+ * * New-line is encoded as ^n
+ * * ^ is encoded as ^^.
+ * * " is encoded as ^'
+ *
+ * @param string $input
+ * @return void
+ */
+ private function unescapeParam($input) {
+
+ return
+ preg_replace_callback(
+ '#(\^(\^|n|\'))#',
+ function($matches) {
+ switch($matches[2]) {
+ case 'n' :
+ return "\n";
+ case '^' :
+ return '^';
+ case '\'' :
+ return '"';
+
+ // @codeCoverageIgnoreStart
+ }
+ // @codeCoverageIgnoreEnd
+ },
+ $input
+ );
+ }
+
+ /**
+ * Gets the full quoted printable value.
+ *
+ * We need a special method for this, because newlines have both a meaning
+ * in vCards, and in QuotedPrintable.
+ *
+ * This method does not do any decoding.
+ *
+ * @return string
+ */
+ private function extractQuotedPrintableValue() {
+
+ // We need to parse the raw line again to get the start of the value.
+ //
+ // We are basically looking for the first colon (:), but we need to
+ // skip over the parameters first, as they may contain one.
+ $regex = '/^
+ (?: [^:])+ # Anything but a colon
+ (?: "[^"]")* # A parameter in double quotes
+ : # start of the value we really care about
+ (.*)$
+ /xs';
+
+ preg_match($regex, $this->rawLine, $matches);
+
+ $value = $matches[1];
+ // Removing the first whitespace character from every line. Kind of
+ // like unfolding, but we keep the newline.
+ $value = str_replace("\n ", "\n", $value);
+
+ // Microsoft products don't always correctly fold lines, they may be
+ // missing a whitespace. So if 'forgiving' is turned on, we will take
+ // those as well.
+ if ($this->options & self::OPTION_FORGIVING) {
+ while(substr($value,-1) === '=') {
+ // Reading the line
+ $this->readLine();
+ // Grabbing the raw form
+ $value.="\n" . $this->rawLine;
+ }
+ }
+
+ return $value;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/Parser.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/Parser.php
new file mode 100644
index 000000000..dcaa38a13
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Parser/Parser.php
@@ -0,0 +1,77 @@
+setInput($input);
+ }
+ $this->options = $options;
+ }
+
+ /**
+ * This method starts the parsing process.
+ *
+ * If the input was not supplied during construction, it's possible to pass
+ * it here instead.
+ *
+ * If either input or options are not supplied, the defaults will be used.
+ *
+ * @param mixed $input
+ * @param int|null $options
+ * @return array
+ */
+ abstract public function parse($input = null, $options = null);
+
+ /**
+ * Sets the input data
+ *
+ * @param mixed $input
+ * @return void
+ */
+ abstract public function setInput($input);
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property.php
new file mode 100644
index 000000000..73686bcac
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property.php
@@ -0,0 +1,555 @@
+value syntax.
+ *
+ * @param Component $root The root document
+ * @param string $name
+ * @param string|array|null $value
+ * @param array $parameters List of parameters
+ * @param string $group The vcard property group
+ * @return void
+ */
+ function __construct(Component $root, $name, $value = null, array $parameters = array(), $group = null) {
+
+ $this->name = $name;
+ $this->group = $group;
+
+ $this->root = $root;
+
+ foreach($parameters as $k=>$v) {
+ $this->add($k, $v);
+ }
+
+ if (!is_null($value)) {
+ $this->setValue($value);
+ }
+
+ }
+
+ /**
+ * Updates the current value.
+ *
+ * This may be either a single, or multiple strings in an array.
+ *
+ * @param string|array $value
+ * @return void
+ */
+ function setValue($value) {
+
+ $this->value = $value;
+
+ }
+
+ /**
+ * Returns the current value.
+ *
+ * This method will always return a singular value. If this was a
+ * multi-value object, some decision will be made first on how to represent
+ * it as a string.
+ *
+ * To get the correct multi-value version, use getParts.
+ *
+ * @return string
+ */
+ function getValue() {
+
+ if (is_array($this->value)) {
+ if (count($this->value)==0) {
+ return null;
+ } elseif (count($this->value)===1) {
+ return $this->value[0];
+ } else {
+ return $this->getRawMimeDirValue($this->value);
+ }
+ } else {
+ return $this->value;
+ }
+
+ }
+
+ /**
+ * Sets a multi-valued property.
+ *
+ * @param array $parts
+ * @return void
+ */
+ function setParts(array $parts) {
+
+ $this->value = $parts;
+
+ }
+
+ /**
+ * Returns a multi-valued property.
+ *
+ * This method always returns an array, if there was only a single value,
+ * it will still be wrapped in an array.
+ *
+ * @return array
+ */
+ function getParts() {
+
+ if (is_null($this->value)) {
+ return array();
+ } elseif (is_array($this->value)) {
+ return $this->value;
+ } else {
+ return array($this->value);
+ }
+
+ }
+
+ /**
+ * Adds a new parameter, and returns the new item.
+ *
+ * If a parameter with same name already existed, the values will be
+ * combined.
+ * If nameless parameter is added, we try to guess it's name.
+ *
+ * @param string $name
+ * @param string|null|array $value
+ * @return Node
+ */
+ function add($name, $value = null) {
+ $noName = false;
+ if ($name === null) {
+ $name = Parameter::guessParameterNameByValue($value);
+ $noName = true;
+ }
+
+ if (isset($this->parameters[strtoupper($name)])) {
+ $this->parameters[strtoupper($name)]->addValue($value);
+ }
+ else {
+ $param = new Parameter($this->root, $name, $value);
+ $param->noName = $noName;
+ $this->parameters[$param->name] = $param;
+ }
+ }
+
+ /**
+ * Returns an iterable list of children
+ *
+ * @return array
+ */
+ function parameters() {
+
+ return $this->parameters;
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ abstract function getValueType();
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ abstract function setRawMimeDirValue($val);
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ abstract function getRawMimeDirValue();
+
+ /**
+ * Turns the object back into a serialized blob.
+ *
+ * @return string
+ */
+ function serialize() {
+
+ $str = $this->name;
+ if ($this->group) $str = $this->group . '.' . $this->name;
+
+ foreach($this->parameters as $param) {
+
+ $str.=';' . $param->serialize();
+
+ }
+
+ $str.=':' . $this->getRawMimeDirValue();
+
+ $out = '';
+ while(strlen($str)>0) {
+ if (strlen($str)>75) {
+ $out.= mb_strcut($str,0,75,'utf-8') . "\r\n";
+ $str = ' ' . mb_strcut($str,75,strlen($str),'utf-8');
+ } else {
+ $out.=$str . "\r\n";
+ $str='';
+ break;
+ }
+ }
+
+ return $out;
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ function getJsonValue() {
+
+ return $this->getParts();
+
+ }
+
+ /**
+ * Sets the json value, as it would appear in a jCard or jCal object.
+ *
+ * The value must always be an array.
+ *
+ * @param array $value
+ * @return void
+ */
+ function setJsonValue(array $value) {
+
+ if (count($value)===1) {
+ $this->setValue(reset($value));
+ } else {
+ $this->setValue($value);
+ }
+
+ }
+
+ /**
+ * This method returns an array, with the representation as it should be
+ * encoded in json. This is used to create jCard or jCal documents.
+ *
+ * @return array
+ */
+ function jsonSerialize() {
+
+ $parameters = array();
+
+ foreach($this->parameters as $parameter) {
+ if ($parameter->name === 'VALUE') {
+ continue;
+ }
+ $parameters[strtolower($parameter->name)] = $parameter->jsonSerialize();
+ }
+ // In jCard, we need to encode the property-group as a separate 'group'
+ // parameter.
+ if ($this->group) {
+ $parameters['group'] = $this->group;
+ }
+
+ return array_merge(
+ array(
+ strtolower($this->name),
+ (object)$parameters,
+ strtolower($this->getValueType()),
+ ),
+ $this->getJsonValue()
+ );
+ }
+
+
+ /**
+ * Called when this object is being cast to a string.
+ *
+ * If the property only had a single value, you will get just that. In the
+ * case the property had multiple values, the contents will be escaped and
+ * combined with ,.
+ *
+ * @return string
+ */
+ function __toString() {
+
+ return (string)$this->getValue();
+
+ }
+
+ /* ArrayAccess interface {{{ */
+
+ /**
+ * Checks if an array element exists
+ *
+ * @param mixed $name
+ * @return bool
+ */
+ function offsetExists($name) {
+
+ if (is_int($name)) return parent::offsetExists($name);
+
+ $name = strtoupper($name);
+
+ foreach($this->parameters as $parameter) {
+ if ($parameter->name == $name) return true;
+ }
+ return false;
+
+ }
+
+ /**
+ * Returns a parameter.
+ *
+ * If the parameter does not exist, null is returned.
+ *
+ * @param string $name
+ * @return Node
+ */
+ function offsetGet($name) {
+
+ if (is_int($name)) return parent::offsetGet($name);
+ $name = strtoupper($name);
+
+ if (!isset($this->parameters[$name])) {
+ return null;
+ }
+
+ return $this->parameters[$name];
+
+ }
+
+ /**
+ * Creates a new parameter
+ *
+ * @param string $name
+ * @param mixed $value
+ * @return void
+ */
+ function offsetSet($name, $value) {
+
+ if (is_int($name)) {
+ parent::offsetSet($name, $value);
+ // @codeCoverageIgnoreStart
+ // This will never be reached, because an exception is always
+ // thrown.
+ return;
+ // @codeCoverageIgnoreEnd
+ }
+
+ $param = new Parameter($this->root, $name, $value);
+ $this->parameters[$param->name] = $param;
+
+ }
+
+ /**
+ * Removes one or more parameters with the specified name
+ *
+ * @param string $name
+ * @return void
+ */
+ function offsetUnset($name) {
+
+ if (is_int($name)) {
+ parent::offsetUnset($name);
+ // @codeCoverageIgnoreStart
+ // This will never be reached, because an exception is always
+ // thrown.
+ return;
+ // @codeCoverageIgnoreEnd
+ }
+
+ unset($this->parameters[strtoupper($name)]);
+
+ }
+ /* }}} */
+
+ /**
+ * This method is automatically called when the object is cloned.
+ * Specifically, this will ensure all child elements are also cloned.
+ *
+ * @return void
+ */
+ function __clone() {
+
+ foreach($this->parameters as $key=>$child) {
+ $this->parameters[$key] = clone $child;
+ $this->parameters[$key]->parent = $this;
+ }
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * - Node::REPAIR - If something is broken, and automatic repair may
+ * be attempted.
+ *
+ * An array is returned with warnings.
+ *
+ * Every item in the array has the following properties:
+ * * level - (number between 1 and 3 with severity information)
+ * * message - (human readable message)
+ * * node - (reference to the offending node)
+ *
+ * @param int $options
+ * @return array
+ */
+ function validate($options = 0) {
+
+ $warnings = array();
+
+ // Checking if our value is UTF-8
+ if (!StringUtil::isUTF8($this->getRawMimeDirValue())) {
+
+ $oldValue = $this->getRawMimeDirValue();
+ $level = 3;
+ if ($options & self::REPAIR) {
+ $newValue = StringUtil::convertToUTF8($oldValue);
+ if (true || StringUtil::isUTF8($newValue)) {
+ $this->setRawMimeDirValue($newValue);
+ $level = 1;
+ }
+
+ }
+
+
+ if (preg_match('%([\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', $oldValue, $matches)) {
+ $message = 'Property contained a control character (0x' . bin2hex($matches[1]) . ')';
+ } else {
+ $message = 'Property is not valid UTF-8! ' . $oldValue;
+ }
+
+ $warnings[] = array(
+ 'level' => $level,
+ 'message' => $message,
+ 'node' => $this,
+ );
+ }
+
+ // Checking if the propertyname does not contain any invalid bytes.
+ if (!preg_match('/^([A-Z0-9-]+)$/', $this->name)) {
+ $warnings[] = array(
+ 'level' => 1,
+ 'message' => 'The propertyname: ' . $this->name . ' contains invalid characters. Only A-Z, 0-9 and - are allowed',
+ 'node' => $this,
+ );
+ if ($options & self::REPAIR) {
+ // Uppercasing and converting underscores to dashes.
+ $this->name = strtoupper(
+ str_replace('_', '-', $this->name)
+ );
+ // Removing every other invalid character
+ $this->name = preg_replace('/([^A-Z0-9-])/u', '', $this->name);
+
+ }
+
+ }
+
+ if ($encoding = $this->offsetGet('ENCODING')) {
+
+ if ($this->root->getDocumentType()===Document::VCARD40) {
+ $warnings[] = array(
+ 'level' => 1,
+ 'message' => 'ENCODING parameter is not valid in vCard 4.',
+ 'node' => $this
+ );
+ } else {
+
+ $encoding = (string)$encoding;
+
+ $allowedEncoding = array();
+
+ switch($this->root->getDocumentType()) {
+ case Document::ICALENDAR20 :
+ $allowedEncoding = array('8BIT', 'BASE64');
+ break;
+ case Document::VCARD21 :
+ $allowedEncoding = array('QUOTED-PRINTABLE', 'BASE64', '8BIT');
+ break;
+ case Document::VCARD30 :
+ $allowedEncoding = array('B');
+ break;
+
+ }
+ if ($allowedEncoding && !in_array(strtoupper($encoding), $allowedEncoding)) {
+ $warnings[] = array(
+ 'level' => 1,
+ 'message' => 'ENCODING=' . strtoupper($encoding) . ' is not valid for this document type.',
+ 'node' => $this
+ );
+ }
+ }
+
+ }
+
+ // Validating inner parameters
+ foreach($this->parameters as $param) {
+ $warnings = array_merge($warnings, $param->validate($options));
+ }
+
+ return $warnings;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Binary.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Binary.php
new file mode 100644
index 000000000..c55467e72
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Binary.php
@@ -0,0 +1,127 @@
+value = $value[0];
+ } else {
+ throw new \InvalidArgumentException('The argument must either be a string or an array with only one child');
+ }
+
+ } else {
+
+ $this->value = $value;
+
+ }
+
+ }
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setRawMimeDirValue($val) {
+
+ $this->value = base64_decode($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return base64_encode($this->value);
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return 'BINARY';
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ return array(base64_encode($this->getValue()));
+
+ }
+
+ /**
+ * Sets the json value, as it would appear in a jCard or jCal object.
+ *
+ * The value must always be an array.
+ *
+ * @param array $value
+ * @return void
+ */
+ public function setJsonValue(array $value) {
+
+ $value = array_map('base64_decode', $value);
+ parent::setJsonValue($value);
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Boolean.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Boolean.php
new file mode 100644
index 000000000..255dc3c18
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Boolean.php
@@ -0,0 +1,63 @@
+setValue($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return $this->value?'TRUE':'FALSE';
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return 'BOOLEAN';
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FlatText.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FlatText.php
new file mode 100644
index 000000000..5800d29f6
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FlatText.php
@@ -0,0 +1,49 @@
+setValue($val);
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FloatValue.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FloatValue.php
new file mode 100644
index 000000000..531bcfd04
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/FloatValue.php
@@ -0,0 +1,104 @@
+delimiter, $val);
+ foreach($val as &$item) {
+ $item = (float)$item;
+ }
+ $this->setParts($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return implode(
+ $this->delimiter,
+ $this->getParts()
+ );
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "FLOAT";
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ $val = array_map(
+ function($item) {
+
+ return (float)$item;
+
+ },
+ $this->getParts()
+ );
+
+ // Special-casing the GEO property.
+ //
+ // See:
+ // http://tools.ietf.org/html/draft-ietf-jcardcal-jcal-04#section-3.4.1.2
+ if ($this->name==='GEO') {
+ return array($val);
+ } else {
+ return $val;
+ }
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php
new file mode 100644
index 000000000..03a34c8fe
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/CalAddress.php
@@ -0,0 +1,61 @@
+getValue();
+ if (!strpos($input, ':')) {
+ return $input;
+ }
+ list($schema, $everythingElse) = explode(':', $input, 2);
+ return strtolower($schema) . ':' . $everythingElse;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Date.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Date.php
new file mode 100644
index 000000000..95fdd1711
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Date.php
@@ -0,0 +1,18 @@
+setDateTimes($parts);
+ } else {
+ parent::setParts($parts);
+ }
+
+ }
+
+ /**
+ * Updates the current value.
+ *
+ * This may be either a single, or multiple strings in an array.
+ *
+ * Instead of strings, you may also use DateTime here.
+ *
+ * @param string|array|\DateTime $value
+ * @return void
+ */
+ public function setValue($value) {
+
+ if (is_array($value) && isset($value[0]) && $value[0] instanceof \DateTime) {
+ $this->setDateTimes($value);
+ } elseif ($value instanceof \DateTime) {
+ $this->setDateTimes(array($value));
+ } else {
+ parent::setValue($value);
+ }
+
+ }
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setRawMimeDirValue($val) {
+
+ $this->setValue(explode($this->delimiter, $val));
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return implode($this->delimiter, $this->getParts());
+
+ }
+
+ /**
+ * Returns true if this is a DATE-TIME value, false if it's a DATE.
+ *
+ * @return bool
+ */
+ public function hasTime() {
+
+ return strtoupper((string)$this['VALUE']) !== 'DATE';
+
+ }
+
+ /**
+ * Returns true if this is a floating DATE or DATE-TIME.
+ *
+ * Note that DATE is always floating.
+ */
+ public function isFloating() {
+
+ return
+ !$this->hasTime() ||
+ (
+ !isset($this['TZID']) &&
+ strpos($this->getValue(),'Z')===false
+ );
+
+ }
+
+ /**
+ * Returns a date-time value.
+ *
+ * Note that if this property contained more than 1 date-time, only the
+ * first will be returned. To get an array with multiple values, call
+ * getDateTimes.
+ *
+ * If no timezone information is known, because it's either an all-day
+ * property or floating time, we will use the DateTimeZone argument to
+ * figure out the exact date.
+ *
+ * @param DateTimeZone $timeZone
+ * @return \DateTime
+ */
+ public function getDateTime(DateTimeZone $timeZone = null) {
+
+ $dt = $this->getDateTimes($timeZone);
+ if (!$dt) return null;
+
+ return $dt[0];
+
+ }
+
+ /**
+ * Returns multiple date-time values.
+ *
+ * If no timezone information is known, because it's either an all-day
+ * property or floating time, we will use the DateTimeZone argument to
+ * figure out the exact date.
+ *
+ * @param DateTimeZone $timeZone
+ * @return \DateTime[]
+ */
+ public function getDateTimes(DateTimeZone $timeZone = null) {
+
+ // Does the property have a TZID?
+ $tzid = $this['TZID'];
+
+ if ($tzid) {
+ $timeZone = TimeZoneUtil::getTimeZone((string)$tzid, $this->root);
+ }
+
+ $dts = array();
+ foreach($this->getParts() as $part) {
+ $dts[] = DateTimeParser::parse($part, $timeZone);
+ }
+ return $dts;
+
+ }
+
+ /**
+ * Sets the property as a DateTime object.
+ *
+ * @param \DateTime $dt
+ * @param bool isFloating If set to true, timezones will be ignored.
+ * @return void
+ */
+ public function setDateTime(\DateTime $dt, $isFloating = false) {
+
+ $this->setDateTimes(array($dt), $isFloating);
+
+ }
+
+ /**
+ * Sets the property as multiple date-time objects.
+ *
+ * The first value will be used as a reference for the timezones, and all
+ * the otehr values will be adjusted for that timezone
+ *
+ * @param \DateTime[] $dt
+ * @param bool isFloating If set to true, timezones will be ignored.
+ * @return void
+ */
+ public function setDateTimes(array $dt, $isFloating = false) {
+
+ $values = array();
+
+ if($this->hasTime()) {
+
+ $tz = null;
+ $isUtc = false;
+
+ foreach($dt as $d) {
+
+ if ($isFloating) {
+ $values[] = $d->format('Ymd\\THis');
+ continue;
+ }
+ if (is_null($tz)) {
+ $tz = $d->getTimeZone();
+ $isUtc = in_array($tz->getName() , array('UTC', 'GMT', 'Z'));
+ if (!$isUtc) {
+ $this->offsetSet('TZID', $tz->getName());
+ }
+ } else {
+ $d->setTimeZone($tz);
+ }
+
+ if ($isUtc) {
+ $values[] = $d->format('Ymd\\THis\\Z');
+ } else {
+ $values[] = $d->format('Ymd\\THis');
+ }
+
+ }
+ if ($isUtc || $isFloating) {
+ $this->offsetUnset('TZID');
+ }
+
+ } else {
+
+ foreach($dt as $d) {
+
+ $values[] = $d->format('Ymd');
+
+ }
+ $this->offsetUnset('TZID');
+
+ }
+
+ $this->value = $values;
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return $this->hasTime()?'DATE-TIME':'DATE';
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ $dts = $this->getDateTimes();
+ $hasTime = $this->hasTime();
+ $isFloating = $this->isFloating();
+
+ $tz = $dts[0]->getTimeZone();
+ $isUtc = $isFloating ? false : in_array($tz->getName() , array('UTC', 'GMT', 'Z'));
+
+ return array_map(
+ function($dt) use ($hasTime, $isUtc) {
+
+ if ($hasTime) {
+ return $dt->format('Y-m-d\\TH:i:s') . ($isUtc?'Z':'');
+ } else {
+ return $dt->format('Y-m-d');
+ }
+
+ },
+ $dts
+ );
+
+ }
+
+ /**
+ * Sets the json value, as it would appear in a jCard or jCal object.
+ *
+ * The value must always be an array.
+ *
+ * @param array $value
+ * @return void
+ */
+ public function setJsonValue(array $value) {
+
+ // dates and times in jCal have one difference to dates and times in
+ // iCalendar. In jCal date-parts are separated by dashes, and
+ // time-parts are separated by colons. It makes sense to just remove
+ // those.
+ $this->setValue(
+ array_map(
+ function($item) {
+
+ return strtr($item, array(':'=>'', '-'=>''));
+
+ },
+ $value
+ )
+ );
+
+ }
+ /**
+ * We need to intercept offsetSet, because it may be used to alter the
+ * VALUE from DATE-TIME to DATE or vice-versa.
+ *
+ * @param string $name
+ * @param mixed $value
+ * @return void
+ */
+ public function offsetSet($name, $value) {
+
+ parent::offsetSet($name, $value);
+ if (strtoupper($name)!=='VALUE') {
+ return;
+ }
+
+ // This will ensure that dates are correctly encoded.
+ $this->setDateTimes($this->getDateTimes());
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on)
+ * 2 - An inconsequential issue
+ * 3 - A severe issue.
+ *
+ * @param int $options
+ * @return array
+ */
+ public function validate($options = 0) {
+
+ $messages = parent::validate($options);
+ $valueType = $this->getValueType();
+ $values = $this->getParts();
+ try {
+ foreach($values as $value) {
+ switch($valueType) {
+ case 'DATE' :
+ $foo = DateTimeParser::parseDate($value);
+ break;
+ case 'DATE-TIME' :
+ $foo = DateTimeParser::parseDateTime($value);
+ break;
+ }
+ }
+ } catch (\LogicException $e) {
+ $messages[] = array(
+ 'level' => 3,
+ 'message' => 'The supplied value (' . $value . ') is not a correct ' . $valueType,
+ 'node' => $this,
+ );
+ }
+ return $messages;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
new file mode 100644
index 000000000..15679589e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Duration.php
@@ -0,0 +1,86 @@
+setValue(explode($this->delimiter, $val));
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return implode($this->delimiter, $this->getParts());
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return 'DURATION';
+
+ }
+
+ /**
+ * Returns a DateInterval representation of the Duration property.
+ *
+ * If the property has more than one value, only the first is returned.
+ *
+ * @return \DateInterval
+ */
+ public function getDateInterval() {
+
+ $parts = $this->getParts();
+ $value = $parts[0];
+ return DateTimeParser::parseDuration($value);
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Period.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
new file mode 100644
index 000000000..d9f629365
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Period.php
@@ -0,0 +1,129 @@
+setValue(explode($this->delimiter, $val));
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return implode($this->delimiter, $this->getParts());
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "PERIOD";
+
+ }
+
+ /**
+ * Sets the json value, as it would appear in a jCard or jCal object.
+ *
+ * The value must always be an array.
+ *
+ * @param array $value
+ * @return void
+ */
+ public function setJsonValue(array $value) {
+
+ $value = array_map(
+ function($item) {
+
+ return strtr(implode('/', $item), array(':' => '', '-' => ''));
+
+ },
+ $value
+ );
+ parent::setJsonValue($value);
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ $return = array();
+ foreach($this->getParts() as $item) {
+
+ list($start, $end) = explode('/', $item, 2);
+
+ $start = DateTimeParser::parseDateTime($start);
+
+ // This is a duration value.
+ if ($end[0]==='P') {
+ $return[] = array(
+ $start->format('Y-m-d\\TH:i:s'),
+ $end
+ );
+ } else {
+ $end = DateTimeParser::parseDateTime($end);
+ $return[] = array(
+ $start->format('Y-m-d\\TH:i:s'),
+ $end->format('Y-m-d\\TH:i:s'),
+ );
+ }
+
+ }
+
+ return $return;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
new file mode 100644
index 000000000..6cdb2b78a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php
@@ -0,0 +1,203 @@
+value array that is accessible using
+ * getParts, and may be set using setParts.
+ *
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
+ * @author Evert Pot (http://evertpot.com/)
+ * @license http://sabre.io/license/ Modified BSD License
+ */
+class Recur extends Property {
+
+ /**
+ * Updates the current value.
+ *
+ * This may be either a single, or multiple strings in an array.
+ *
+ * @param string|array $value
+ * @return void
+ */
+ public function setValue($value) {
+
+ // If we're getting the data from json, we'll be receiving an object
+ if ($value instanceof \StdClass) {
+ $value = (array)$value;
+ }
+
+ if (is_array($value)) {
+ $newVal = array();
+ foreach($value as $k=>$v) {
+
+ if (is_string($v)) {
+ $v = strtoupper($v);
+
+ // The value had multiple sub-values
+ if (strpos($v,',')!==false) {
+ $v = explode(',', $v);
+ }
+ } else {
+ $v = array_map('strtoupper', $v);
+ }
+
+ $newVal[strtoupper($k)] = $v;
+ }
+ $this->value = $newVal;
+ } elseif (is_string($value)) {
+ $this->value = self::stringToArray($value);
+ } else {
+ throw new \InvalidArgumentException('You must either pass a string, or a key=>value array');
+ }
+
+ }
+
+ /**
+ * Returns the current value.
+ *
+ * This method will always return a singular value. If this was a
+ * multi-value object, some decision will be made first on how to represent
+ * it as a string.
+ *
+ * To get the correct multi-value version, use getParts.
+ *
+ * @return string
+ */
+ public function getValue() {
+
+ $out = array();
+ foreach($this->value as $key=>$value) {
+ $out[] = $key . '=' . (is_array($value)?implode(',', $value):$value);
+ }
+ return strtoupper(implode(';',$out));
+
+ }
+
+ /**
+ * Sets a multi-valued property.
+ *
+ * @param array $parts
+ * @return void
+ */
+ public function setParts(array $parts) {
+
+ $this->setValue($parts);
+
+ }
+
+ /**
+ * Returns a multi-valued property.
+ *
+ * This method always returns an array, if there was only a single value,
+ * it will still be wrapped in an array.
+ *
+ * @return array
+ */
+ public function getParts() {
+
+ return $this->value;
+
+ }
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setRawMimeDirValue($val) {
+
+ $this->setValue($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return $this->getValue();
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "RECUR";
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ $values = array();
+ foreach($this->getParts() as $k=>$v) {
+ $values[strtolower($k)] = $v;
+ }
+ return array($values);
+
+ }
+
+ /**
+ * Parses an RRULE value string, and turns it into a struct-ish array.
+ *
+ * @param string $value
+ * @return array
+ */
+ static function stringToArray($value) {
+
+ $value = strtoupper($value);
+ $newValue = array();
+ foreach(explode(';', $value) as $part) {
+
+ // Skipping empty parts.
+ if (empty($part)) {
+ continue;
+ }
+ list($partName, $partValue) = explode('=', $part);
+
+ // The value itself had multiple values..
+ if (strpos($partValue,',')!==false) {
+ $partValue=explode(',', $partValue);
+ }
+ $newValue[$partName] = $partValue;
+
+ }
+
+ return $newValue;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/IntegerValue.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/IntegerValue.php
new file mode 100644
index 000000000..0428633a1
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/IntegerValue.php
@@ -0,0 +1,72 @@
+setValue((int)$val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return $this->value;
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "INTEGER";
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ return array((int)$this->getValue());
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Text.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Text.php
new file mode 100644
index 000000000..ffd4c4b65
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Text.php
@@ -0,0 +1,333 @@
+ 5,
+ 'ADR' => 7,
+ );
+
+ /**
+ * Creates the property.
+ *
+ * You can specify the parameters either in key=>value syntax, in which case
+ * parameters will automatically be created, or you can just pass a list of
+ * Parameter objects.
+ *
+ * @param Component $root The root document
+ * @param string $name
+ * @param string|array|null $value
+ * @param array $parameters List of parameters
+ * @param string $group The vcard property group
+ * @return void
+ */
+ public function __construct(Component $root, $name, $value = null, array $parameters = array(), $group = null) {
+
+ // There's two types of multi-valued text properties:
+ // 1. multivalue properties.
+ // 2. structured value properties
+ //
+ // The former is always separated by a comma, the latter by semi-colon.
+ if (in_array($name, $this->structuredValues)) {
+ $this->delimiter = ';';
+ }
+
+ parent::__construct($root, $name, $value, $parameters, $group);
+
+ }
+
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setRawMimeDirValue($val) {
+
+ $this->setValue(MimeDir::unescapeValue($val, $this->delimiter));
+
+ }
+
+ /**
+ * Sets the value as a quoted-printable encoded string.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setQuotedPrintableValue($val) {
+
+ $val = quoted_printable_decode($val);
+
+ // Quoted printable only appears in vCard 2.1, and the only character
+ // that may be escaped there is ;. So we are simply splitting on just
+ // that.
+ //
+ // We also don't have to unescape \\, so all we need to look for is a ;
+ // that's not preceeded with a \.
+ $regex = '# (?setValue($matches);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ $val = $this->getParts();
+
+ if (isset($this->minimumPropertyValues[$this->name])) {
+ $val = array_pad($val, $this->minimumPropertyValues[$this->name], '');
+ }
+
+ foreach($val as &$item) {
+
+ if (!is_array($item)) {
+ $item = array($item);
+ }
+
+ foreach($item as &$subItem) {
+ $subItem = strtr(
+ $subItem,
+ array(
+ '\\' => '\\\\',
+ ';' => '\;',
+ ',' => '\,',
+ "\n" => '\n',
+ "\r" => "",
+ )
+ );
+ }
+ $item = implode(',', $item);
+
+ }
+
+ return implode($this->delimiter, $val);
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ // Structured text values should always be returned as a single
+ // array-item. Multi-value text should be returned as multiple items in
+ // the top-array.
+ if (in_array($this->name, $this->structuredValues)) {
+ return array($this->getParts());
+ } else {
+ return $this->getParts();
+ }
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "TEXT";
+
+ }
+
+ /**
+ * Turns the object back into a serialized blob.
+ *
+ * @return string
+ */
+ public function serialize() {
+
+ // We need to kick in a special type of encoding, if it's a 2.1 vcard.
+ if ($this->root->getDocumentType() !== Document::VCARD21) {
+ return parent::serialize();
+ }
+
+ $val = $this->getParts();
+
+ if (isset($this->minimumPropertyValues[$this->name])) {
+ $val = array_pad($val, $this->minimumPropertyValues[$this->name], '');
+ }
+
+ // Imploding multiple parts into a single value, and splitting the
+ // values with ;.
+ if (count($val)>1) {
+ foreach($val as $k=>$v) {
+ $val[$k] = str_replace(';','\;', $v);
+ }
+ $val = implode(';', $val);
+ } else {
+ $val = $val[0];
+ }
+
+ $str = $this->name;
+ if ($this->group) $str = $this->group . '.' . $this->name;
+ foreach($this->parameters as $param) {
+
+ if ($param->getValue() === 'QUOTED-PRINTABLE') {
+ continue;
+ }
+ $str.=';' . $param->serialize();
+
+ }
+
+
+
+ // If the resulting value contains a \n, we must encode it as
+ // quoted-printable.
+ if (strpos($val,"\n") !== false) {
+
+ $str.=';ENCODING=QUOTED-PRINTABLE:';
+ $lastLine=$str;
+ $out = null;
+
+ // The PHP built-in quoted-printable-encode does not correctly
+ // encode newlines for us. Specifically, the \r\n sequence must in
+ // vcards be encoded as =0D=OA and we must insert soft-newlines
+ // every 75 bytes.
+ for($ii=0;$ii= 32 && $ord <=126) {
+ $lastLine.=$val[$ii];
+ } else {
+ $lastLine.='=' . strtoupper(bin2hex($val[$ii]));
+ }
+ if (strlen($lastLine)>=75) {
+ // Soft line break
+ $out.=$lastLine. "=\r\n ";
+ $lastLine = null;
+ }
+
+ }
+ if (!is_null($lastLine)) $out.= $lastLine . "\r\n";
+ return $out;
+
+ } else {
+ $str.=':' . $val;
+ $out = '';
+ while(strlen($str)>0) {
+ if (strlen($str)>75) {
+ $out.= mb_strcut($str,0,75,'utf-8') . "\r\n";
+ $str = ' ' . mb_strcut($str,75,strlen($str),'utf-8');
+ } else {
+ $out.=$str . "\r\n";
+ $str='';
+ break;
+ }
+ }
+
+ return $out;
+
+
+ }
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * - Node::REPAIR - If something is broken, and automatic repair may
+ * be attempted.
+ *
+ * An array is returned with warnings.
+ *
+ * Every item in the array has the following properties:
+ * * level - (number between 1 and 3 with severity information)
+ * * message - (human readable message)
+ * * node - (reference to the offending node)
+ *
+ * @param int $options
+ * @return array
+ */
+ public function validate($options = 0) {
+
+ $warnings = parent::validate($options);
+
+ if (isset($this->minimumPropertyValues[$this->name])) {
+
+ $minimum = $this->minimumPropertyValues[$this->name];
+ $parts = $this->getParts();
+ if (count($parts) < $minimum) {
+ $warnings[] = array(
+ 'level' => 1,
+ 'message' => 'This property must have at least ' . $minimum . ' components. It only has ' . count($parts),
+ 'node' => $this,
+ );
+ if ($options & self::REPAIR) {
+ $parts = array_pad($parts, $minimum, '');
+ $this->setParts($parts);
+ }
+ }
+
+ }
+ return $warnings;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Time.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Time.php
new file mode 100644
index 000000000..33e76c7db
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Time.php
@@ -0,0 +1,94 @@
+getValue());
+
+ $timeStr = '';
+
+ // Hour
+ if (!is_null($parts['hour'])) {
+ $timeStr.=$parts['hour'];
+
+ if (!is_null($parts['minute'])) {
+ $timeStr.=':';
+ }
+ } else {
+ // We know either minute or second _must_ be set, so we insert a
+ // dash for an empty value.
+ $timeStr.='-';
+ }
+
+ // Minute
+ if (!is_null($parts['minute'])) {
+ $timeStr.=$parts['minute'];
+
+ if (!is_null($parts['second'])) {
+ $timeStr.=':';
+ }
+ } else {
+ if (isset($parts['second'])) {
+ // Dash for empty minute
+ $timeStr.='-';
+ }
+ }
+
+ // Second
+ if (!is_null($parts['second'])) {
+ $timeStr.=$parts['second'];
+ }
+
+ // Timezone
+ if (!is_null($parts['timezone'])) {
+ $timeStr.=$parts['timezone'];
+ }
+
+ return array($timeStr);
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Unknown.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Unknown.php
new file mode 100644
index 000000000..36a4e430d
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Unknown.php
@@ -0,0 +1,50 @@
+getRawMimeDirValue());
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "UNKNOWN";
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Uri.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Uri.php
new file mode 100644
index 000000000..33e63d146
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/Uri.php
@@ -0,0 +1,95 @@
+name === 'URL') {
+ $regex = '# (?: (\\\\ (?: \\\\ | : ) ) ) #x';
+ $matches = preg_split($regex, $val, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+ $newVal = '';
+ foreach($matches as $match) {
+ switch($match) {
+ case '\:' :
+ $newVal.=':';
+ break;
+ default :
+ $newVal.=$match;
+ break;
+ }
+ }
+ $this->value = $newVal;
+ } else {
+ $this->value = $val;
+ }
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ if (is_array($this->value)) {
+ return $this->value[0];
+ } else {
+ return $this->value;
+ }
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/UtcOffset.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/UtcOffset.php
new file mode 100644
index 000000000..185ab829f
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/UtcOffset.php
@@ -0,0 +1,37 @@
+value = $dt->format('Ymd');
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
new file mode 100644
index 000000000..f36868a52
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php
@@ -0,0 +1,317 @@
+1) {
+ throw new \InvalidArgumentException('Only one value allowed');
+ }
+ if (isset($parts[0]) && $parts[0] instanceof \DateTime) {
+ $this->setDateTime($parts[0]);
+ } else {
+ parent::setParts($parts);
+ }
+
+ }
+
+ /**
+ * Updates the current value.
+ *
+ * This may be either a single, or multiple strings in an array.
+ *
+ * Instead of strings, you may also use DateTime here.
+ *
+ * @param string|array|\DateTime $value
+ * @return void
+ */
+ public function setValue($value) {
+
+ if ($value instanceof \DateTime) {
+ $this->setDateTime($value);
+ } else {
+ parent::setValue($value);
+ }
+
+ }
+
+ /**
+ * Sets the property as a DateTime object.
+ *
+ * @param \DateTime $dt
+ * @return void
+ */
+ public function setDateTime(\DateTime $dt) {
+
+ $values = array();
+
+ $tz = null;
+ $isUtc = false;
+
+ $tz = $dt->getTimeZone();
+ $isUtc = in_array($tz->getName() , array('UTC', 'GMT', 'Z'));
+
+ if ($isUtc) {
+ $value = $dt->format('Ymd\\THis\\Z');
+ } else {
+ // Calculating the offset.
+ $value = $dt->format('Ymd\\THisO');
+ }
+
+ $this->value = $value;
+
+ }
+
+ /**
+ * Returns a date-time value.
+ *
+ * Note that if this property contained more than 1 date-time, only the
+ * first will be returned. To get an array with multiple values, call
+ * getDateTimes.
+ *
+ * If no time was specified, we will always use midnight (in the default
+ * timezone) as the time.
+ *
+ * If parts of the date were omitted, such as the year, we will grab the
+ * current values for those. So at the time of writing, if the year was
+ * omitted, we would have filled in 2014.
+ *
+ * @return \DateTime
+ */
+ public function getDateTime() {
+
+ $dts = array();
+ $now = new DateTime();
+
+ $tzFormat = $now->getTimezone()->getOffset($now)===0?'\\Z':'O';
+ $nowParts = DateTimeParser::parseVCardDateTime($now->format('Ymd\\This' . $tzFormat));
+
+ $value = $this->getValue();
+
+ $dateParts = DateTimeParser::parseVCardDateTime($this->getValue());
+
+ // This sets all the missing parts to the current date/time.
+ // So if the year was missing for a birthday, we're making it 'this
+ // year'.
+ foreach($dateParts as $k=>$v) {
+ if (is_null($v)) {
+ $dateParts[$k] = $nowParts[$k];
+ }
+ }
+ return new DateTime("$dateParts[year]-$dateParts[month]-$dateParts[date] $dateParts[hour]:$dateParts[minute]:$dateParts[second] $dateParts[timezone]");
+
+ }
+
+ /**
+ * Returns the value, in the format it should be encoded for json.
+ *
+ * This method must always return an array.
+ *
+ * @return array
+ */
+ public function getJsonValue() {
+
+ $parts = DateTimeParser::parseVCardDateTime($this->getValue());
+
+ $dateStr = '';
+
+ // Year
+ if (!is_null($parts['year'])) {
+ $dateStr.=$parts['year'];
+
+ if (!is_null($parts['month'])) {
+ // If a year and a month is set, we need to insert a separator
+ // dash.
+ $dateStr.='-';
+ }
+
+ } else {
+
+ if (!is_null($parts['month']) || !is_null($parts['date'])) {
+ // Inserting two dashes
+ $dateStr.='--';
+ }
+
+ }
+
+ // Month
+
+ if (!is_null($parts['month'])) {
+ $dateStr.=$parts['month'];
+
+ if (isset($parts['date'])) {
+ // If month and date are set, we need the separator dash.
+ $dateStr.='-';
+ }
+ } else {
+ if (isset($parts['date'])) {
+ // If the month is empty, and a date is set, we need a 'empty
+ // dash'
+ $dateStr.='-';
+ }
+ }
+
+ // Date
+ if (!is_null($parts['date'])) {
+ $dateStr.=$parts['date'];
+ }
+
+
+ // Early exit if we don't have a time string.
+ if (is_null($parts['hour']) && is_null($parts['minute']) && is_null($parts['second'])) {
+ return array($dateStr);
+ }
+
+ $dateStr.='T';
+
+ // Hour
+ if (!is_null($parts['hour'])) {
+ $dateStr.=$parts['hour'];
+
+ if (!is_null($parts['minute'])) {
+ $dateStr.=':';
+ }
+ } else {
+ // We know either minute or second _must_ be set, so we insert a
+ // dash for an empty value.
+ $dateStr.='-';
+ }
+
+ // Minute
+ if (!is_null($parts['minute'])) {
+ $dateStr.=$parts['minute'];
+
+ if (!is_null($parts['second'])) {
+ $dateStr.=':';
+ }
+ } else {
+ if (isset($parts['second'])) {
+ // Dash for empty minute
+ $dateStr.='-';
+ }
+ }
+
+ // Second
+ if (!is_null($parts['second'])) {
+ $dateStr.=$parts['second'];
+ }
+
+ // Timezone
+ if (!is_null($parts['timezone'])) {
+ $dateStr.=$parts['timezone'];
+ }
+
+ return array($dateStr);
+
+ }
+
+ /**
+ * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
+ *
+ * This has been 'unfolded', so only 1 line will be passed. Unescaping is
+ * not yet done, but parameters are not included.
+ *
+ * @param string $val
+ * @return void
+ */
+ public function setRawMimeDirValue($val) {
+
+ $this->setValue($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return implode($this->delimiter, $this->getParts());
+
+ }
+
+ /**
+ * Validates the node for correctness.
+ *
+ * The following options are supported:
+ * Node::REPAIR - May attempt to automatically repair the problem.
+ *
+ * This method returns an array with detected problems.
+ * Every element has the following properties:
+ *
+ * * level - problem level.
+ * * message - A human-readable string describing the issue.
+ * * node - A reference to the problematic node.
+ *
+ * The level means:
+ * 1 - The issue was repaired (only happens if REPAIR was turned on)
+ * 2 - An inconsequential issue
+ * 3 - A severe issue.
+ *
+ * @param int $options
+ * @return array
+ */
+ public function validate($options = 0) {
+
+ $messages = parent::validate($options);
+ $value = $this->getValue();
+ try {
+ DateTimeParser::parseVCardDateTime($value);
+ } catch (\InvalidArgumentException $e) {
+ $messages[] = array(
+ 'level' => 3,
+ 'message' => 'The supplied value (' . $value . ') is not a correct DATE-AND-OR-TIME property',
+ 'node' => $this,
+ );
+ }
+ return $messages;
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateTime.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateTime.php
new file mode 100644
index 000000000..7daad89db
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/DateTime.php
@@ -0,0 +1,33 @@
+setValue($val);
+
+ }
+
+ /**
+ * Returns a raw mime-dir representation of the value.
+ *
+ * @return string
+ */
+ public function getRawMimeDirValue() {
+
+ return $this->getValue();
+
+ }
+
+ /**
+ * Returns the type of value.
+ *
+ * This corresponds to the VALUE= parameter. Every property also has a
+ * 'default' valueType.
+ *
+ * @return string
+ */
+ public function getValueType() {
+
+ return "LANGUAGE-TAG";
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php
new file mode 100644
index 000000000..5f7f4986a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Property/VCard/TimeStamp.php
@@ -0,0 +1,69 @@
+getValue());
+
+ $dateStr =
+ $parts['year'] . '-' .
+ $parts['month'] . '-' .
+ $parts['date'] . 'T' .
+ $parts['hour'] . ':' .
+ $parts['minute'] . ':' .
+ $parts['second'];
+
+ // Timezone
+ if (!is_null($parts['timezone'])) {
+ $dateStr.=$parts['timezone'];
+ }
+
+ return array($dateStr);
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Reader.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Reader.php
new file mode 100644
index 000000000..d61fa51ac
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Reader.php
@@ -0,0 +1,73 @@
+parse($data, $options);
+
+ return $result;
+
+ }
+
+ /**
+ * Parses a jCard or jCal object, and returns the top component.
+ *
+ * The options argument is a bitfield. Pass any of the OPTIONS constant to
+ * alter the parsers' behaviour.
+ *
+ * You can either a string, a readable stream, or an array for it's input.
+ * Specifying the array is useful if json_decode was already called on the
+ * input.
+ *
+ * @param string|resource|array $data
+ * @param int $options
+ * @return Node
+ */
+ static public function readJson($data, $options = 0) {
+
+ $parser = new Parser\Json();
+ $result = $parser->parse($data, $options);
+
+ return $result;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/EventIterator.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/EventIterator.php
new file mode 100644
index 000000000..506a1213a
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/EventIterator.php
@@ -0,0 +1,500 @@
+timeZone)) {
+ $timeZone = new DateTimeZone('UTC');
+ }
+ $this->timeZone = $timeZone;
+
+ if (is_array($input)) {
+ $events = $input;
+ } elseif ($input instanceof VEvent) {
+ // Single instance mode.
+ $events = array($input);
+ } else {
+ // Calendar + UID mode.
+ $uid = (string)$uid;
+ if (!$uid) {
+ throw new InvalidArgumentException('The UID argument is required when a VCALENDAR is passed to this constructor');
+ }
+ if (!isset($input->VEVENT)) {
+ throw new InvalidArgumentException('No events found in this calendar');
+ }
+ $events = $input->getByUID($uid);
+
+ }
+
+ foreach($events as $vevent) {
+
+ if (!isset($vevent->{'RECURRENCE-ID'})) {
+
+ $this->masterEvent = $vevent;
+
+ } else {
+
+ $this->exceptions[
+ $vevent->{'RECURRENCE-ID'}->getDateTime($this->timeZone)->getTimeStamp()
+ ] = true;
+ $this->overriddenEvents[] = $vevent;
+
+ }
+
+ }
+
+ if (!$this->masterEvent) {
+ // No base event was found. CalDAV does allow cases where only
+ // overridden instances are stored.
+ //
+ // In this particular case, we're just going to grab the first
+ // event and use that instead. This may not always give the
+ // desired result.
+ if (!count($this->overriddenEvents)) {
+ throw new InvalidArgumentException('This VCALENDAR did not have an event with UID: ' . $uid);
+ }
+ $this->masterEvent = array_shift($this->overriddenEvents);
+ }
+
+ $this->startDate = $this->masterEvent->DTSTART->getDateTime($this->timeZone);
+ $this->allDay = !$this->masterEvent->DTSTART->hasTime();
+
+ if (isset($this->masterEvent->EXDATE)) {
+
+ foreach($this->masterEvent->EXDATE as $exDate) {
+
+ foreach($exDate->getDateTimes($this->timeZone) as $dt) {
+ $this->exceptions[$dt->getTimeStamp()] = true;
+ }
+
+ }
+
+ }
+
+ if (isset($this->masterEvent->DTEND)) {
+ $this->eventDuration =
+ $this->masterEvent->DTEND->getDateTime($this->timeZone)->getTimeStamp() -
+ $this->startDate->getTimeStamp();
+ } elseif (isset($this->masterEvent->DURATION)) {
+ $duration = $this->masterEvent->DURATION->getDateInterval();
+ $end = clone $this->startDate;
+ $end->add($duration);
+ $this->eventDuration = $end->getTimeStamp() - $this->startDate->getTimeStamp();
+ } elseif ($this->allDay) {
+ $this->eventDuration = 3600 * 24;
+ } else {
+ $this->eventDuration = 0;
+ }
+
+ if (isset($this->masterEvent->RDATE)) {
+ $this->recurIterator = new RDateIterator(
+ $this->masterEvent->RDATE->getParts(),
+ $this->startDate
+ );
+ } elseif (isset($this->masterEvent->RRULE)) {
+ $this->recurIterator = new RRuleIterator(
+ $this->masterEvent->RRULE->getParts(),
+ $this->startDate
+ );
+ } else {
+ $this->recurIterator = new RRuleIterator(
+ array(
+ 'FREQ' => 'DAILY',
+ 'COUNT' => 1,
+ ),
+ $this->startDate
+ );
+ }
+
+ $this->rewind();
+ if (!$this->valid()) {
+ throw new NoInstancesException('This recurrence rule does not generate any valid instances');
+ }
+
+ }
+
+ /**
+ * Returns the date for the current position of the iterator.
+ *
+ * @return DateTime
+ */
+ public function current() {
+
+ if ($this->currentDate) {
+ return clone $this->currentDate;
+ }
+
+ }
+
+ /**
+ * This method returns the start date for the current iteration of the
+ * event.
+ *
+ * @return DateTime
+ */
+ public function getDtStart() {
+
+ if ($this->currentDate) {
+ return clone $this->currentDate;
+ }
+
+ }
+
+ /**
+ * This method returns the end date for the current iteration of the
+ * event.
+ *
+ * @return DateTime
+ */
+ public function getDtEnd() {
+
+ if (!$this->valid()) {
+ return null;
+ }
+ $end = clone $this->currentDate;
+ $end->modify('+' . $this->eventDuration . ' seconds');
+ return $end;
+
+ }
+
+ /**
+ * Returns a VEVENT for the current iterations of the event.
+ *
+ * This VEVENT will have a recurrence id, and it's DTSTART and DTEND
+ * altered.
+ *
+ * @return VEvent
+ */
+ public function getEventObject() {
+
+ if ($this->currentOverriddenEvent) {
+ return $this->currentOverriddenEvent;
+ }
+
+ $event = clone $this->masterEvent;
+
+ // Ignoring the following block, because PHPUnit's code coverage
+ // ignores most of these lines, and this messes with our stats.
+ //
+ // @codeCoverageIgnoreStart
+ unset(
+ $event->RRULE,
+ $event->EXDATE,
+ $event->RDATE,
+ $event->EXRULE,
+ $event->{'RECURRENCE-ID'}
+ );
+ // @codeCoverageIgnoreEnd
+
+ $event->DTSTART->setDateTime($this->getDtStart(), $event->DTSTART->isFloating());
+ if (isset($event->DTEND)) {
+ $event->DTEND->setDateTime($this->getDtEnd(), $event->DTEND->isFloating());
+ }
+ $recurid = clone $event->DTSTART;
+ $recurid->name = 'RECURRENCE-ID';
+ $event->add($recurid);
+ return $event;
+
+ }
+
+ /**
+ * Returns the current position of the iterator.
+ *
+ * This is for us simply a 0-based index.
+ *
+ * @return int
+ */
+ public function key() {
+
+ // The counter is always 1 ahead.
+ return $this->counter - 1;
+
+ }
+
+ /**
+ * This is called after next, to see if the iterator is still at a valid
+ * position, or if it's at the end.
+ *
+ * @return bool
+ */
+ public function valid() {
+
+ return !!$this->currentDate;
+
+ }
+
+ /**
+ * Sets the iterator back to the starting point.
+ */
+ public function rewind() {
+
+ $this->recurIterator->rewind();
+ // re-creating overridden event index.
+ $index = array();
+ foreach($this->overriddenEvents as $key=>$event) {
+ $stamp = $event->DTSTART->getDateTime($this->timeZone)->getTimeStamp();
+ $index[$stamp][] = $key;
+ }
+ krsort($index);
+ $this->counter = 0;
+ $this->overriddenEventsIndex = $index;
+ $this->currentOverriddenEvent = null;
+
+ $this->nextDate = null;
+ $this->currentDate = clone $this->startDate;
+
+ $this->next();
+
+ }
+
+ /**
+ * Advances the iterator with one step.
+ *
+ * @return void
+ */
+ public function next() {
+
+ $this->currentOverriddenEvent = null;
+ $this->counter++;
+ if ($this->nextDate) {
+ // We had a stored value.
+ $nextDate = $this->nextDate;
+ $this->nextDate = null;
+ } else {
+ // We need to ask rruleparser for the next date.
+ // We need to do this until we find a date that's not in the
+ // exception list.
+ do {
+ if (!$this->recurIterator->valid()) {
+ $nextDate = null;
+ break;
+ }
+ $nextDate = $this->recurIterator->current();
+ $this->recurIterator->next();
+ } while(isset($this->exceptions[$nextDate->getTimeStamp()]));
+
+ }
+
+
+ // $nextDate now contains what rrule thinks is the next one, but an
+ // overridden event may cut ahead.
+ if ($this->overriddenEventsIndex) {
+
+ $offsets = end($this->overriddenEventsIndex);
+ $timestamp = key($this->overriddenEventsIndex);
+ $offset = end($offsets);
+ if (!$nextDate || $timestamp < $nextDate->getTimeStamp()) {
+ // Overridden event comes first.
+ $this->currentOverriddenEvent = $this->overriddenEvents[$offset];
+
+ // Putting the rrule next date aside.
+ $this->nextDate = $nextDate;
+ $this->currentDate = $this->currentOverriddenEvent->DTSTART->getDateTime($this->timeZone);
+
+ // Ensuring that this item will only be used once.
+ array_pop($this->overriddenEventsIndex[$timestamp]);
+ if (!$this->overriddenEventsIndex[$timestamp]) {
+ array_pop($this->overriddenEventsIndex);
+ }
+
+ // Exit point!
+ return;
+
+ }
+
+ }
+
+ $this->currentDate = $nextDate;
+
+ }
+
+ /**
+ * Quickly jump to a date in the future.
+ *
+ * @param DateTime $dateTime
+ */
+ public function fastForward(DateTime $dateTime) {
+
+ while($this->valid() && $this->getDtEnd() < $dateTime ) {
+ $this->next();
+ }
+
+ }
+
+ /**
+ * Returns true if this recurring event never ends.
+ *
+ * @return bool
+ */
+ public function isInfinite() {
+
+ return $this->recurIterator->isInfinite();
+
+ }
+
+ /**
+ * RRULE parser
+ *
+ * @var RRuleIterator
+ */
+ protected $recurIterator;
+
+ /**
+ * The duration, in seconds, of the master event.
+ *
+ * We use this to calculate the DTEND for subsequent events.
+ */
+ protected $eventDuration;
+
+ /**
+ * A reference to the main (master) event.
+ *
+ * @var VEVENT
+ */
+ protected $masterEvent;
+
+ /**
+ * List of overridden events.
+ *
+ * @var array
+ */
+ protected $overriddenEvents = array();
+
+ /**
+ * Overridden event index.
+ *
+ * Key is timestamp, value is the list of indexes of the item in the $overriddenEvent
+ * property.
+ *
+ * @var array
+ */
+ protected $overriddenEventsIndex;
+
+ /**
+ * A list of recurrence-id's that are either part of EXDATE, or are
+ * overridden.
+ *
+ * @var array
+ */
+ protected $exceptions = array();
+
+ /**
+ * Internal event counter
+ *
+ * @var int
+ */
+ protected $counter;
+
+ /**
+ * The very start of the iteration process.
+ *
+ * @var DateTime
+ */
+ protected $startDate;
+
+ /**
+ * Where we are currently in the iteration process
+ *
+ * @var DateTime
+ */
+ protected $currentDate;
+
+ /**
+ * The next date from the rrule parser.
+ *
+ * Sometimes we need to temporary store the next date, because an
+ * overridden event came before.
+ *
+ * @var DateTime
+ */
+ protected $nextDate;
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/NoInstancesException.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/NoInstancesException.php
new file mode 100644
index 000000000..8f8bb472b
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/NoInstancesException.php
@@ -0,0 +1,18 @@
+startDate = $start;
+ $this->parseRDate($rrule);
+ $this->currentDate = clone $this->startDate;
+
+ }
+
+ /* Implementation of the Iterator interface {{{ */
+
+ public function current() {
+
+ if (!$this->valid()) return null;
+ return clone $this->currentDate;
+
+ }
+
+ /**
+ * Returns the current item number.
+ *
+ * @return int
+ */
+ public function key() {
+
+ return $this->counter;
+
+ }
+
+ /**
+ * Returns whether the current item is a valid item for the recurrence
+ * iterator.
+ *
+ * @return bool
+ */
+ public function valid() {
+
+ return ($this->counter <= count($this->dates));
+
+ }
+
+ /**
+ * Resets the iterator.
+ *
+ * @return void
+ */
+ public function rewind() {
+
+ $this->currentDate = clone $this->startDate;
+ $this->counter = 0;
+
+ }
+
+ /**
+ * Goes on to the next iteration.
+ *
+ * @return void
+ */
+ public function next() {
+
+ $this->counter++;
+ if (!$this->valid()) return;
+
+ $this->currentDate =
+ DateTimeParser::parse(
+ $this->dates[$this->counter-1]
+ );
+
+ }
+
+ /* End of Iterator implementation }}} */
+
+ /**
+ * Returns true if this recurring event never ends.
+ *
+ * @return bool
+ */
+ public function isInfinite() {
+
+ return false;
+
+ }
+
+ /**
+ * This method allows you to quickly go to the next occurrence after the
+ * specified date.
+ *
+ * @param DateTime $dt
+ * @return void
+ */
+ public function fastForward(\DateTime $dt) {
+
+ while($this->valid() && $this->currentDate < $dt ) {
+ $this->next();
+ }
+
+ }
+
+ /**
+ * The reference start date/time for the rrule.
+ *
+ * All calculations are based on this initial date.
+ *
+ * @var DateTime
+ */
+ protected $startDate;
+
+ /**
+ * The date of the current iteration. You can get this by calling
+ * ->current().
+ *
+ * @var DateTime
+ */
+ protected $currentDate;
+
+ /**
+ * The current item in the list.
+ *
+ * You can get this number with the key() method.
+ *
+ * @var int
+ */
+ protected $counter = 0;
+
+ /* }}} */
+
+ /**
+ * This method receives a string from an RRULE property, and populates this
+ * class with all the values.
+ *
+ * @param string|array $rrule
+ * @return void
+ */
+ protected function parseRDate($rdate) {
+
+ if (is_string($rdate)) {
+ $rdate = explode(',', $rdate);
+ }
+
+ $this->dates = $rdate;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/RRuleIterator.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
new file mode 100644
index 000000000..eda411d95
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Recur/RRuleIterator.php
@@ -0,0 +1,904 @@
+startDate = $start;
+ $this->parseRRule($rrule);
+ $this->currentDate = clone $this->startDate;
+
+ }
+
+ /* Implementation of the Iterator interface {{{ */
+
+ public function current() {
+
+ if (!$this->valid()) return null;
+ return clone $this->currentDate;
+
+ }
+
+ /**
+ * Returns the current item number
+ *
+ * @return int
+ */
+ public function key() {
+
+ return $this->counter;
+
+ }
+
+ /**
+ * Returns whether the current item is a valid item for the recurrence
+ * iterator. This will return false if we've gone beyond the UNTIL or COUNT
+ * statements.
+ *
+ * @return bool
+ */
+ public function valid() {
+
+ if (!is_null($this->count)) {
+ return $this->counter < $this->count;
+ }
+ return is_null($this->until) || $this->currentDate <= $this->until;
+
+ }
+
+ /**
+ * Resets the iterator
+ *
+ * @return void
+ */
+ public function rewind() {
+
+ $this->currentDate = clone $this->startDate;
+ $this->counter = 0;
+
+ }
+
+ /**
+ * Goes on to the next iteration
+ *
+ * @return void
+ */
+ public function next() {
+
+ $previousStamp = $this->currentDate->getTimeStamp();
+
+ // Otherwise, we find the next event in the normal RRULE
+ // sequence.
+ switch($this->frequency) {
+
+ case 'hourly' :
+ $this->nextHourly();
+ break;
+
+ case 'daily' :
+ $this->nextDaily();
+ break;
+
+ case 'weekly' :
+ $this->nextWeekly();
+ break;
+
+ case 'monthly' :
+ $this->nextMonthly();
+ break;
+
+ case 'yearly' :
+ $this->nextYearly();
+ break;
+
+ }
+ $this->counter++;
+
+ }
+
+ /* End of Iterator implementation }}} */
+
+ /**
+ * Returns true if this recurring event never ends.
+ *
+ * @return bool
+ */
+ public function isInfinite() {
+
+ return !$this->count && !$this->until;
+
+ }
+
+ /**
+ * This method allows you to quickly go to the next occurrence after the
+ * specified date.
+ *
+ * @param DateTime $dt
+ * @return void
+ */
+ public function fastForward(\DateTime $dt) {
+
+ while($this->valid() && $this->currentDate < $dt ) {
+ $this->next();
+ }
+
+ }
+
+ /**
+ * The reference start date/time for the rrule.
+ *
+ * All calculations are based on this initial date.
+ *
+ * @var DateTime
+ */
+ protected $startDate;
+
+ /**
+ * The date of the current iteration. You can get this by calling
+ * ->current().
+ *
+ * @var DateTime
+ */
+ protected $currentDate;
+
+ /**
+ * Frequency is one of: secondly, minutely, hourly, daily, weekly, monthly,
+ * yearly.
+ *
+ * @var string
+ */
+ protected $frequency;
+
+ /**
+ * The number of recurrences, or 'null' if infinitely recurring.
+ *
+ * @var int
+ */
+ protected $count;
+
+ /**
+ * The interval.
+ *
+ * If for example frequency is set to daily, interval = 2 would mean every
+ * 2 days.
+ *
+ * @var int
+ */
+ protected $interval = 1;
+
+ /**
+ * The last instance of this recurrence, inclusively
+ *
+ * @var \DateTime|null
+ */
+ protected $until;
+
+ /**
+ * Which seconds to recur.
+ *
+ * This is an array of integers (between 0 and 60)
+ *
+ * @var array
+ */
+ protected $bySecond;
+
+ /**
+ * Which minutes to recur
+ *
+ * This is an array of integers (between 0 and 59)
+ *
+ * @var array
+ */
+ protected $byMinute;
+
+ /**
+ * Which hours to recur
+ *
+ * This is an array of integers (between 0 and 23)
+ *
+ * @var array
+ */
+ protected $byHour;
+
+ /**
+ * The current item in the list.
+ *
+ * You can get this number with the key() method.
+ *
+ * @var int
+ */
+ protected $counter = 0;
+
+ /**
+ * Which weekdays to recur.
+ *
+ * This is an array of weekdays
+ *
+ * This may also be preceeded by a positive or negative integer. If present,
+ * this indicates the nth occurrence of a specific day within the monthly or
+ * yearly rrule. For instance, -2TU indicates the second-last tuesday of
+ * the month, or year.
+ *
+ * @var array
+ */
+ protected $byDay;
+
+ /**
+ * Which days of the month to recur
+ *
+ * This is an array of days of the months (1-31). The value can also be
+ * negative. -5 for instance means the 5th last day of the month.
+ *
+ * @var array
+ */
+ protected $byMonthDay;
+
+ /**
+ * Which days of the year to recur.
+ *
+ * This is an array with days of the year (1 to 366). The values can also
+ * be negative. For instance, -1 will always represent the last day of the
+ * year. (December 31st).
+ *
+ * @var array
+ */
+ protected $byYearDay;
+
+ /**
+ * Which week numbers to recur.
+ *
+ * This is an array of integers from 1 to 53. The values can also be
+ * negative. -1 will always refer to the last week of the year.
+ *
+ * @var array
+ */
+ protected $byWeekNo;
+
+ /**
+ * Which months to recur.
+ *
+ * This is an array of integers from 1 to 12.
+ *
+ * @var array
+ */
+ protected $byMonth;
+
+ /**
+ * Which items in an existing st to recur.
+ *
+ * These numbers work together with an existing by* rule. It specifies
+ * exactly which items of the existing by-rule to filter.
+ *
+ * Valid values are 1 to 366 and -1 to -366. As an example, this can be
+ * used to recur the last workday of the month.
+ *
+ * This would be done by setting frequency to 'monthly', byDay to
+ * 'MO,TU,WE,TH,FR' and bySetPos to -1.
+ *
+ * @var array
+ */
+ protected $bySetPos;
+
+ /**
+ * When the week starts.
+ *
+ * @var string
+ */
+ protected $weekStart = 'MO';
+
+ /* Functions that advance the iterator {{{ */
+
+ /**
+ * Does the processing for advancing the iterator for hourly frequency.
+ *
+ * @return void
+ */
+ protected function nextHourly() {
+
+ $this->currentDate->modify('+' . $this->interval . ' hours');
+
+ }
+
+ /**
+ * Does the processing for advancing the iterator for daily frequency.
+ *
+ * @return void
+ */
+ protected function nextDaily() {
+
+ if (!$this->byHour && !$this->byDay) {
+ $this->currentDate->modify('+' . $this->interval . ' days');
+ return;
+ }
+
+ if (isset($this->byHour)) {
+ $recurrenceHours = $this->getHours();
+ }
+
+ if (isset($this->byDay)) {
+ $recurrenceDays = $this->getDays();
+ }
+
+ if (isset($this->byMonth)) {
+ $recurrenceMonths = $this->getMonths();
+ }
+
+ do {
+ if ($this->byHour) {
+ if ($this->currentDate->format('G') == '23') {
+ // to obey the interval rule
+ $this->currentDate->modify('+' . $this->interval-1 . ' days');
+ }
+
+ $this->currentDate->modify('+1 hours');
+
+ } else {
+ $this->currentDate->modify('+' . $this->interval . ' days');
+
+ }
+
+ // Current month of the year
+ $currentMonth = $this->currentDate->format('n');
+
+ // Current day of the week
+ $currentDay = $this->currentDate->format('w');
+
+ // Current hour of the day
+ $currentHour = $this->currentDate->format('G');
+
+ } while (
+ ($this->byDay && !in_array($currentDay, $recurrenceDays)) ||
+ ($this->byHour && !in_array($currentHour, $recurrenceHours)) ||
+ ($this->byMonth && !in_array($currentMonth, $recurrenceMonths))
+ );
+
+ }
+
+ /**
+ * Does the processing for advancing the iterator for weekly frequency.
+ *
+ * @return void
+ */
+ protected function nextWeekly() {
+
+ if (!$this->byHour && !$this->byDay) {
+ $this->currentDate->modify('+' . $this->interval . ' weeks');
+ return;
+ }
+
+ if ($this->byHour) {
+ $recurrenceHours = $this->getHours();
+ }
+
+ if ($this->byDay) {
+ $recurrenceDays = $this->getDays();
+ }
+
+ // First day of the week:
+ $firstDay = $this->dayMap[$this->weekStart];
+
+ do {
+
+ if ($this->byHour) {
+ $this->currentDate->modify('+1 hours');
+ } else {
+ $this->currentDate->modify('+1 days');
+ }
+
+ // Current day of the week
+ $currentDay = (int) $this->currentDate->format('w');
+
+ // Current hour of the day
+ $currentHour = (int) $this->currentDate->format('G');
+
+ // We need to roll over to the next week
+ if ($currentDay === $firstDay && (!$this->byHour || $currentHour == '0')) {
+ $this->currentDate->modify('+' . $this->interval-1 . ' weeks');
+
+ // We need to go to the first day of this week, but only if we
+ // are not already on this first day of this week.
+ if($this->currentDate->format('w') != $firstDay) {
+ $this->currentDate->modify('last ' . $this->dayNames[$this->dayMap[$this->weekStart]]);
+ }
+ }
+
+ // We have a match
+ } while (($this->byDay && !in_array($currentDay, $recurrenceDays)) || ($this->byHour && !in_array($currentHour, $recurrenceHours)));
+ }
+
+ /**
+ * Does the processing for advancing the iterator for monthly frequency.
+ *
+ * @return void
+ */
+ protected function nextMonthly() {
+
+ $currentDayOfMonth = $this->currentDate->format('j');
+ if (!$this->byMonthDay && !$this->byDay) {
+
+ // If the current day is higher than the 28th, rollover can
+ // occur to the next month. We Must skip these invalid
+ // entries.
+ if ($currentDayOfMonth < 29) {
+ $this->currentDate->modify('+' . $this->interval . ' months');
+ } else {
+ $increase = 0;
+ do {
+ $increase++;
+ $tempDate = clone $this->currentDate;
+ $tempDate->modify('+ ' . ($this->interval*$increase) . ' months');
+ } while ($tempDate->format('j') != $currentDayOfMonth);
+ $this->currentDate = $tempDate;
+ }
+ return;
+ }
+
+ while(true) {
+
+ $occurrences = $this->getMonthlyOccurrences();
+
+ foreach($occurrences as $occurrence) {
+
+ // The first occurrence thats higher than the current
+ // day of the month wins.
+ if ($occurrence > $currentDayOfMonth) {
+ break 2;
+ }
+
+ }
+
+ // If we made it all the way here, it means there were no
+ // valid occurrences, and we need to advance to the next
+ // month.
+ //
+ // This line does not currently work in hhvm. Temporary workaround
+ // follows:
+ // $this->currentDate->modify('first day of this month');
+ $this->currentDate = new \DateTime($this->currentDate->format('Y-m-1 H:i:s'), $this->currentDate->getTimezone());
+ // end of workaround
+ $this->currentDate->modify('+ ' . $this->interval . ' months');
+
+ // This goes to 0 because we need to start counting at the
+ // beginning.
+ $currentDayOfMonth = 0;
+
+ }
+
+ $this->currentDate->setDate($this->currentDate->format('Y'), $this->currentDate->format('n'), $occurrence);
+
+ }
+
+ /**
+ * Does the processing for advancing the iterator for yearly frequency.
+ *
+ * @return void
+ */
+ protected function nextYearly() {
+
+ $currentMonth = $this->currentDate->format('n');
+ $currentYear = $this->currentDate->format('Y');
+ $currentDayOfMonth = $this->currentDate->format('j');
+
+ // No sub-rules, so we just advance by year
+ if (!$this->byMonth) {
+
+ // Unless it was a leap day!
+ if ($currentMonth==2 && $currentDayOfMonth==29) {
+
+ $counter = 0;
+ do {
+ $counter++;
+ // Here we increase the year count by the interval, until
+ // we hit a date that's also in a leap year.
+ //
+ // We could just find the next interval that's dividable by
+ // 4, but that would ignore the rule that there's no leap
+ // year every year that's dividable by a 100, but not by
+ // 400. (1800, 1900, 2100). So we just rely on the datetime
+ // functions instead.
+ $nextDate = clone $this->currentDate;
+ $nextDate->modify('+ ' . ($this->interval*$counter) . ' years');
+ } while ($nextDate->format('n')!=2);
+ $this->currentDate = $nextDate;
+
+ return;
+
+ }
+
+ // The easiest form
+ $this->currentDate->modify('+' . $this->interval . ' years');
+ return;
+
+ }
+
+ $currentMonth = $this->currentDate->format('n');
+ $currentYear = $this->currentDate->format('Y');
+ $currentDayOfMonth = $this->currentDate->format('j');
+
+ $advancedToNewMonth = false;
+
+ // If we got a byDay or getMonthDay filter, we must first expand
+ // further.
+ if ($this->byDay || $this->byMonthDay) {
+
+ while(true) {
+
+ $occurrences = $this->getMonthlyOccurrences();
+
+ foreach($occurrences as $occurrence) {
+
+ // The first occurrence that's higher than the current
+ // day of the month wins.
+ // If we advanced to the next month or year, the first
+ // occurrence is always correct.
+ if ($occurrence > $currentDayOfMonth || $advancedToNewMonth) {
+ break 2;
+ }
+
+ }
+
+ // If we made it here, it means we need to advance to
+ // the next month or year.
+ $currentDayOfMonth = 1;
+ $advancedToNewMonth = true;
+ do {
+
+ $currentMonth++;
+ if ($currentMonth>12) {
+ $currentYear+=$this->interval;
+ $currentMonth = 1;
+ }
+ } while (!in_array($currentMonth, $this->byMonth));
+
+ $this->currentDate->setDate($currentYear, $currentMonth, $currentDayOfMonth);
+
+ }
+
+ // If we made it here, it means we got a valid occurrence
+ $this->currentDate->setDate($currentYear, $currentMonth, $occurrence);
+ return;
+
+ } else {
+
+ // These are the 'byMonth' rules, if there are no byDay or
+ // byMonthDay sub-rules.
+ do {
+
+ $currentMonth++;
+ if ($currentMonth>12) {
+ $currentYear+=$this->interval;
+ $currentMonth = 1;
+ }
+ } while (!in_array($currentMonth, $this->byMonth));
+ $this->currentDate->setDate($currentYear, $currentMonth, $currentDayOfMonth);
+
+ return;
+
+ }
+
+ }
+
+ /* }}} */
+
+ /**
+ * This method receives a string from an RRULE property, and populates this
+ * class with all the values.
+ *
+ * @param string|array $rrule
+ * @return void
+ */
+ protected function parseRRule($rrule) {
+
+ if (is_string($rrule)) {
+ $rrule = Property\ICalendar\Recur::stringToArray($rrule);
+ }
+
+ foreach($rrule as $key=>$value) {
+
+ $key = strtoupper($key);
+ switch($key) {
+
+ case 'FREQ' :
+ $value = strtolower($value);
+ if (!in_array(
+ $value,
+ array('secondly','minutely','hourly','daily','weekly','monthly','yearly')
+ )) {
+ throw new InvalidArgumentException('Unknown value for FREQ=' . strtoupper($value));
+ }
+ $this->frequency = $value;
+ break;
+
+ case 'UNTIL' :
+ $this->until = DateTimeParser::parse($value, $this->startDate->getTimezone());
+
+ // In some cases events are generated with an UNTIL=
+ // parameter before the actual start of the event.
+ //
+ // Not sure why this is happening. We assume that the
+ // intention was that the event only recurs once.
+ //
+ // So we are modifying the parameter so our code doesn't
+ // break.
+ if($this->until < $this->startDate) {
+ $this->until = $this->startDate;
+ }
+ break;
+
+ case 'INTERVAL' :
+ // No break
+
+ case 'COUNT' :
+ $val = (int)$value;
+ if ($val < 1) {
+ throw new \InvalidArgumentException(strtoupper($key) . ' in RRULE must be a positive integer!');
+ }
+ $key = strtolower($key);
+ $this->$key = $val;
+ break;
+
+ case 'BYSECOND' :
+ $this->bySecond = (array)$value;
+ break;
+
+ case 'BYMINUTE' :
+ $this->byMinute = (array)$value;
+ break;
+
+ case 'BYHOUR' :
+ $this->byHour = (array)$value;
+ break;
+
+ case 'BYDAY' :
+ $value = (array)$value;
+ foreach($value as $part) {
+ if (!preg_match('#^ (-|\+)? ([1-5])? (MO|TU|WE|TH|FR|SA|SU) $# xi', $part)) {
+ throw new \InvalidArgumentException('Invalid part in BYDAY clause: ' . $part);
+ }
+ }
+ $this->byDay = $value;
+ break;
+
+ case 'BYMONTHDAY' :
+ $this->byMonthDay = (array)$value;
+ break;
+
+ case 'BYYEARDAY' :
+ $this->byYearDay = (array)$value;
+ break;
+
+ case 'BYWEEKNO' :
+ $this->byWeekNo = (array)$value;
+ break;
+
+ case 'BYMONTH' :
+ $this->byMonth = (array)$value;
+ break;
+
+ case 'BYSETPOS' :
+ $this->bySetPos = (array)$value;
+ break;
+
+ case 'WKST' :
+ $this->weekStart = strtoupper($value);
+ break;
+
+ default:
+ throw new \InvalidArgumentException('Not supported: ' . strtoupper($key));
+
+ }
+
+ }
+
+ }
+
+ /**
+ * Mappings between the day number and english day name.
+ *
+ * @var array
+ */
+ protected $dayNames = array(
+ 0 => 'Sunday',
+ 1 => 'Monday',
+ 2 => 'Tuesday',
+ 3 => 'Wednesday',
+ 4 => 'Thursday',
+ 5 => 'Friday',
+ 6 => 'Saturday',
+ );
+
+ /**
+ * Returns all the occurrences for a monthly frequency with a 'byDay' or
+ * 'byMonthDay' expansion for the current month.
+ *
+ * The returned list is an array of integers with the day of month (1-31).
+ *
+ * @return array
+ */
+ protected function getMonthlyOccurrences() {
+
+ $startDate = clone $this->currentDate;
+
+ $byDayResults = array();
+
+ // Our strategy is to simply go through the byDays, advance the date to
+ // that point and add it to the results.
+ if ($this->byDay) foreach($this->byDay as $day) {
+
+ $dayName = $this->dayNames[$this->dayMap[substr($day,-2)]];
+
+
+ // Dayname will be something like 'wednesday'. Now we need to find
+ // all wednesdays in this month.
+ $dayHits = array();
+
+ // workaround for missing 'first day of the month' support in hhvm
+ $checkDate = new \DateTime($startDate->format('Y-m-1'));
+ // workaround modify always advancing the date even if the current day is a $dayName in hhvm
+ if ($checkDate->format('l') !== $dayName) {
+ $checkDate->modify($dayName);
+ }
+
+ do {
+ $dayHits[] = $checkDate->format('j');
+ $checkDate->modify('next ' . $dayName);
+ } while ($checkDate->format('n') === $startDate->format('n'));
+
+ // So now we have 'all wednesdays' for month. It is however
+ // possible that the user only really wanted the 1st, 2nd or last
+ // wednesday.
+ if (strlen($day)>2) {
+ $offset = (int)substr($day,0,-2);
+
+ if ($offset>0) {
+ // It is possible that the day does not exist, such as a
+ // 5th or 6th wednesday of the month.
+ if (isset($dayHits[$offset-1])) {
+ $byDayResults[] = $dayHits[$offset-1];
+ }
+ } else {
+
+ // if it was negative we count from the end of the array
+ // might not exist, fx. -5th tuesday
+ if (isset($dayHits[count($dayHits) + $offset])) {
+ $byDayResults[] = $dayHits[count($dayHits) + $offset];
+ }
+ }
+ } else {
+ // There was no counter (first, second, last wednesdays), so we
+ // just need to add the all to the list).
+ $byDayResults = array_merge($byDayResults, $dayHits);
+
+ }
+
+ }
+
+ $byMonthDayResults = array();
+ if ($this->byMonthDay) foreach($this->byMonthDay as $monthDay) {
+
+ // Removing values that are out of range for this month
+ if ($monthDay > $startDate->format('t') ||
+ $monthDay < 0-$startDate->format('t')) {
+ continue;
+ }
+ if ($monthDay>0) {
+ $byMonthDayResults[] = $monthDay;
+ } else {
+ // Negative values
+ $byMonthDayResults[] = $startDate->format('t') + 1 + $monthDay;
+ }
+ }
+
+ // If there was just byDay or just byMonthDay, they just specify our
+ // (almost) final list. If both were provided, then byDay limits the
+ // list.
+ if ($this->byMonthDay && $this->byDay) {
+ $result = array_intersect($byMonthDayResults, $byDayResults);
+ } elseif ($this->byMonthDay) {
+ $result = $byMonthDayResults;
+ } else {
+ $result = $byDayResults;
+ }
+ $result = array_unique($result);
+ sort($result, SORT_NUMERIC);
+
+ // The last thing that needs checking is the BYSETPOS. If it's set, it
+ // means only certain items in the set survive the filter.
+ if (!$this->bySetPos) {
+ return $result;
+ }
+
+ $filteredResult = array();
+ foreach($this->bySetPos as $setPos) {
+
+ if ($setPos<0) {
+ $setPos = count($result)+($setPos+1);
+ }
+ if (isset($result[$setPos-1])) {
+ $filteredResult[] = $result[$setPos-1];
+ }
+ }
+
+ sort($filteredResult, SORT_NUMERIC);
+ return $filteredResult;
+
+ }
+
+ /**
+ * Simple mapping from iCalendar day names to day numbers
+ *
+ * @var array
+ */
+ protected $dayMap = array(
+ 'SU' => 0,
+ 'MO' => 1,
+ 'TU' => 2,
+ 'WE' => 3,
+ 'TH' => 4,
+ 'FR' => 5,
+ 'SA' => 6,
+ );
+
+ protected function getHours()
+ {
+ $recurrenceHours = array();
+ foreach($this->byHour as $byHour) {
+ $recurrenceHours[] = $byHour;
+ }
+
+ return $recurrenceHours;
+ }
+
+ protected function getDays() {
+
+ $recurrenceDays = array();
+ foreach($this->byDay as $byDay) {
+
+ // The day may be preceeded with a positive (+n) or
+ // negative (-n) integer. However, this does not make
+ // sense in 'weekly' so we ignore it here.
+ $recurrenceDays[] = $this->dayMap[substr($byDay,-2)];
+
+ }
+
+ return $recurrenceDays;
+ }
+
+ protected function getMonths() {
+
+ $recurrenceMonths = array();
+ foreach($this->byMonth as $byMonth) {
+ $recurrenceMonths[] = $byMonth;
+ }
+
+ return $recurrenceMonths;
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/RecurrenceIterator.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/RecurrenceIterator.php
new file mode 100644
index 000000000..3af86b0af
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/RecurrenceIterator.php
@@ -0,0 +1,21 @@
+children() as $component) {
+ if (!$component instanceof VObject\Component) {
+ continue;
+ }
+
+ // Get all timezones
+ if ($component->name === 'VTIMEZONE') {
+ $this->vtimezones[(string)$component->TZID] = $component;
+ continue;
+ }
+
+ // Get component UID for recurring Events search
+ if(!$component->UID) {
+ $component->UID = sha1(microtime()) . '-vobjectimport';
+ }
+ $uid = (string)$component->UID;
+
+ // Take care of recurring events
+ if (!array_key_exists($uid, $this->objects)) {
+ $this->objects[$uid] = new VCalendar();
+ }
+
+ $this->objects[$uid]->add(clone $component);
+ }
+
+ }
+
+ /**
+ * Every time getNext() is called, a new object will be parsed, until we
+ * hit the end of the stream.
+ *
+ * When the end is reached, null will be returned.
+ *
+ * @return Sabre\VObject\Component|null
+ */
+ public function getNext() {
+
+ if($object=array_shift($this->objects)) {
+
+ // create our baseobject
+ $object->version = '2.0';
+ $object->prodid = '-//Sabre//Sabre VObject ' . VObject\Version::VERSION . '//EN';
+ $object->calscale = 'GREGORIAN';
+
+ // add vtimezone information to obj (if we have it)
+ foreach ($this->vtimezones as $vtimezone) {
+ $object->add($vtimezone);
+ }
+
+ return $object;
+
+ } else {
+
+ return null;
+
+ }
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php
new file mode 100644
index 000000000..f50544ad7
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Splitter/SplitterInterface.php
@@ -0,0 +1,39 @@
+input = $input;
+ $this->parser = new MimeDir($input, $options);
+
+ }
+
+ /**
+ * Every time getNext() is called, a new object will be parsed, until we
+ * hit the end of the stream.
+ *
+ * When the end is reached, null will be returned.
+ *
+ * @return Sabre\VObject\Component|null
+ */
+ public function getNext() {
+
+ try {
+ $object = $this->parser->parse();
+
+ if (!$object instanceof VObject\Component\VCard) {
+ throw new VObject\ParseException('The supplied input contained non-VCARD data.');
+ }
+
+ } catch (VObject\EofException $e) {
+ return null;
+ }
+
+ return $object;
+
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/StringUtil.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/StringUtil.php
new file mode 100644
index 000000000..1ecb6d1f5
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/StringUtil.php
@@ -0,0 +1,65 @@
+ 'UTC',
+ 31 => 'Africa/Casablanca',
+
+ // Insanely, id #2 is used for both Europe/Lisbon, and Europe/Sarajevo.
+ // I'm not even kidding.. We handle this special case in the
+ // getTimeZone method.
+ 2 => 'Europe/Lisbon',
+ 1 => 'Europe/London',
+ 4 => 'Europe/Berlin',
+ 6 => 'Europe/Prague',
+ 3 => 'Europe/Paris',
+ 69 => 'Africa/Luanda', // This was a best guess
+ 7 => 'Europe/Athens',
+ 5 => 'Europe/Bucharest',
+ 49 => 'Africa/Cairo',
+ 50 => 'Africa/Harare',
+ 59 => 'Europe/Helsinki',
+ 27 => 'Asia/Jerusalem',
+ 26 => 'Asia/Baghdad',
+ 74 => 'Asia/Kuwait',
+ 51 => 'Europe/Moscow',
+ 56 => 'Africa/Nairobi',
+ 25 => 'Asia/Tehran',
+ 24 => 'Asia/Muscat', // Best guess
+ 54 => 'Asia/Baku',
+ 48 => 'Asia/Kabul',
+ 58 => 'Asia/Yekaterinburg',
+ 47 => 'Asia/Karachi',
+ 23 => 'Asia/Calcutta',
+ 62 => 'Asia/Kathmandu',
+ 46 => 'Asia/Almaty',
+ 71 => 'Asia/Dhaka',
+ 66 => 'Asia/Colombo',
+ 61 => 'Asia/Rangoon',
+ 22 => 'Asia/Bangkok',
+ 64 => 'Asia/Krasnoyarsk',
+ 45 => 'Asia/Shanghai',
+ 63 => 'Asia/Irkutsk',
+ 21 => 'Asia/Singapore',
+ 73 => 'Australia/Perth',
+ 75 => 'Asia/Taipei',
+ 20 => 'Asia/Tokyo',
+ 72 => 'Asia/Seoul',
+ 70 => 'Asia/Yakutsk',
+ 19 => 'Australia/Adelaide',
+ 44 => 'Australia/Darwin',
+ 18 => 'Australia/Brisbane',
+ 76 => 'Australia/Sydney',
+ 43 => 'Pacific/Guam',
+ 42 => 'Australia/Hobart',
+ 68 => 'Asia/Vladivostok',
+ 41 => 'Asia/Magadan',
+ 17 => 'Pacific/Auckland',
+ 40 => 'Pacific/Fiji',
+ 67 => 'Pacific/Tongatapu',
+ 29 => 'Atlantic/Azores',
+ 53 => 'Atlantic/Cape_Verde',
+ 30 => 'America/Noronha',
+ 8 => 'America/Sao_Paulo', // Best guess
+ 32 => 'America/Argentina/Buenos_Aires',
+ 60 => 'America/Godthab',
+ 28 => 'America/St_Johns',
+ 9 => 'America/Halifax',
+ 33 => 'America/Caracas',
+ 65 => 'America/Santiago',
+ 35 => 'America/Bogota',
+ 10 => 'America/New_York',
+ 34 => 'America/Indiana/Indianapolis',
+ 55 => 'America/Guatemala',
+ 11 => 'America/Chicago',
+ 37 => 'America/Mexico_City',
+ 36 => 'America/Edmonton',
+ 38 => 'America/Phoenix',
+ 12 => 'America/Denver', // Best guess
+ 13 => 'America/Los_Angeles', // Best guess
+ 14 => 'America/Anchorage',
+ 15 => 'Pacific/Honolulu',
+ 16 => 'Pacific/Midway',
+ 39 => 'Pacific/Kwajalein',
+ );
+
+ /**
+ * This method will try to find out the correct timezone for an iCalendar
+ * date-time value.
+ *
+ * You must pass the contents of the TZID parameter, as well as the full
+ * calendar.
+ *
+ * If the lookup fails, this method will return the default PHP timezone
+ * (as configured using date_default_timezone_set, or the date.timezone ini
+ * setting).
+ *
+ * Alternatively, if $failIfUncertain is set to true, it will throw an
+ * exception if we cannot accurately determine the timezone.
+ *
+ * @param string $tzid
+ * @param Sabre\VObject\Component $vcalendar
+ * @return DateTimeZone
+ */
+ static public function getTimeZone($tzid, Component $vcalendar = null, $failIfUncertain = false) {
+
+ // First we will just see if the tzid is a support timezone identifier.
+ //
+ // The only exception is if the timezone starts with (. This is to
+ // handle cases where certain microsoft products generate timezone
+ // identifiers that for instance look like:
+ //
+ // (GMT+01.00) Sarajevo/Warsaw/Zagreb
+ //
+ // Since PHP 5.5.10, the first bit will be used as the timezone and
+ // this method will return just GMT+01:00. This is wrong, because it
+ // doesn't take DST into account.
+ if ($tzid[0]!=='(') {
+
+ // PHP has a bug that logs PHP warnings even it shouldn't:
+ // https://bugs.php.net/bug.php?id=67881
+ //
+ // That's why we're checking if we'll be able to successfull instantiate
+ // \DateTimeZone() before doing so. Otherwise we could simply instantiate
+ // and catch the exception.
+ $tzIdentifiers = \DateTimeZone::listIdentifiers();
+
+ try {
+ if (
+ (in_array($tzid, $tzIdentifiers)) ||
+ (preg_match('/^GMT(\+|-)([0-9]{4})$/', $tzid, $matches)) ||
+ (in_array($tzid, self::getIdentifiersBC()))
+ ) {
+ return new \DateTimeZone($tzid);
+ }
+ } catch(\Exception $e) {
+ }
+
+ }
+
+ self::loadTzMaps();
+
+ // Next, we check if the tzid is somewhere in our tzid map.
+ if (isset(self::$map[$tzid])) {
+ return new \DateTimeZone(self::$map[$tzid]);
+ }
+
+ // Maybe the author was hyper-lazy and just included an offset. We
+ // support it, but we aren't happy about it.
+ if (preg_match('/^GMT(\+|-)([0-9]{4})$/', $tzid, $matches)) {
+
+ // Note that the path in the source will never be taken from PHP 5.5.10
+ // onwards. PHP 5.5.10 supports the "GMT+0100" style of format, so it
+ // already gets returned early in this function. Once we drop support
+ // for versions under PHP 5.5.10, this bit can be taken out of the
+ // source.
+ // @codeCoverageIgnoreStart
+ return new \DateTimeZone('Etc/GMT' . $matches[1] . ltrim(substr($matches[2],0,2),'0'));
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($vcalendar) {
+
+ // If that didn't work, we will scan VTIMEZONE objects
+ foreach($vcalendar->select('VTIMEZONE') as $vtimezone) {
+
+ if ((string)$vtimezone->TZID === $tzid) {
+
+ // Some clients add 'X-LIC-LOCATION' with the olson name.
+ if (isset($vtimezone->{'X-LIC-LOCATION'})) {
+
+ $lic = (string)$vtimezone->{'X-LIC-LOCATION'};
+
+ // Libical generators may specify strings like
+ // "SystemV/EST5EDT". For those we must remove the
+ // SystemV part.
+ if (substr($lic,0,8)==='SystemV/') {
+ $lic = substr($lic,8);
+ }
+
+ return self::getTimeZone($lic, null, $failIfUncertain);
+
+ }
+ // Microsoft may add a magic number, which we also have an
+ // answer for.
+ if (isset($vtimezone->{'X-MICROSOFT-CDO-TZID'})) {
+ $cdoId = (int)$vtimezone->{'X-MICROSOFT-CDO-TZID'}->getValue();
+
+ // 2 can mean both Europe/Lisbon and Europe/Sarajevo.
+ if ($cdoId===2 && strpos((string)$vtimezone->TZID, 'Sarajevo')!==false) {
+ return new \DateTimeZone('Europe/Sarajevo');
+ }
+
+ if (isset(self::$microsoftExchangeMap[$cdoId])) {
+ return new \DateTimeZone(self::$microsoftExchangeMap[$cdoId]);
+ }
+ }
+
+ }
+
+ }
+
+ }
+
+ if ($failIfUncertain) {
+ throw new \InvalidArgumentException('We were unable to determine the correct PHP timezone for tzid: ' . $tzid);
+ }
+
+ // If we got all the way here, we default to UTC.
+ return new \DateTimeZone(date_default_timezone_get());
+
+ }
+
+ /**
+ * This method will load in all the tz mapping information, if it's not yet
+ * done.
+ */
+ static public function loadTzMaps() {
+
+ if (!is_null(self::$map)) return;
+
+ self::$map = array_merge(
+ include __DIR__ . '/timezonedata/windowszones.php',
+ include __DIR__ . '/timezonedata/lotuszones.php',
+ include __DIR__ . '/timezonedata/exchangezones.php',
+ include __DIR__ . '/timezonedata/php-workaround.php'
+ );
+
+ }
+
+ /**
+ * This method returns an array of timezone identifiers, that are supported
+ * by DateTimeZone(), but not returned by DateTimeZone::listIdentifiers()
+ *
+ * We're not using DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC) because:
+ * - It's not supported by some PHP versions as well as HHVM.
+ * - It also returns identifiers, that are invalid values for new DateTimeZone() on some PHP versions.
+ * (See timezonedata/php-bc.php and timezonedata php-workaround.php)
+ *
+ * @return array
+ */
+ static public function getIdentifiersBC() {
+ return include __DIR__ . '/timezonedata/php-bc.php';
+ }
+
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/UUIDUtil.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/UUIDUtil.php
new file mode 100644
index 000000000..dbeaf7777
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/UUIDUtil.php
@@ -0,0 +1,67 @@
+getDocumentType();
+ if ($inputVersion===$targetVersion) {
+ return clone $input;
+ }
+
+ if (!in_array($inputVersion, array(Document::VCARD21, Document::VCARD30, Document::VCARD40))) {
+ throw new \InvalidArgumentException('Only vCard 2.1, 3.0 and 4.0 are supported for the input data');
+ }
+ if (!in_array($targetVersion, array(Document::VCARD30, Document::VCARD40))) {
+ throw new \InvalidArgumentException('You can only use vCard 3.0 or 4.0 for the target version');
+ }
+
+ $newVersion = $targetVersion===Document::VCARD40?'4.0':'3.0';
+
+ $output = new Component\VCard(array(
+ 'VERSION' => $newVersion,
+ ));
+
+ foreach($input->children as $property) {
+
+ $this->convertProperty($input, $output, $property, $targetVersion);
+
+ }
+
+ return $output;
+
+ }
+
+ /**
+ * Handles conversion of a single property.
+ *
+ * @param Component\VCard $input
+ * @param Component\VCard $output
+ * @param Property $property
+ * @param int $targetVersion
+ * @return void
+ */
+ protected function convertProperty(Component\VCard $input, Component\VCard $output, Property $property, $targetVersion) {
+
+ // Skipping these, those are automatically added.
+ if (in_array($property->name, array('VERSION', 'PRODID'))) {
+ return;
+ }
+
+ $parameters = $property->parameters();
+ $valueType = null;
+ if (isset($parameters['VALUE'])) {
+ $valueType = $parameters['VALUE']->getValue();
+ unset($parameters['VALUE']);
+ }
+ if (!$valueType) {
+ $valueType = $property->getValueType();
+ }
+ $newProperty = $output->createProperty(
+ $property->name,
+ $property->getParts(),
+ array(), // parameters will get added a bit later.
+ $valueType
+ );
+
+
+ if ($targetVersion===Document::VCARD30) {
+
+ if ($property instanceof Property\Uri && in_array($property->name, array('PHOTO','LOGO','SOUND'))) {
+
+ $newProperty = $this->convertUriToBinary($output, $newProperty);
+
+ } elseif ($property instanceof Property\VCard\DateAndOrTime) {
+
+ // In vCard 4, the birth year may be optional. This is not the
+ // case for vCard 3. Apple has a workaround for this that
+ // allows applications that support Apple's extension still
+ // omit birthyears in vCard 3, but applications that do not
+ // support this, will just use a random birthyear. We're
+ // choosing 1604 for the birthyear, because that's what apple
+ // uses.
+ $parts = DateTimeParser::parseVCardDateTime($property->getValue());
+ if (is_null($parts['year'])) {
+ $newValue = '1604-' . $parts['month'] . '-' . $parts['date'];
+ $newProperty->setValue($newValue);
+ $newProperty['X-APPLE-OMIT-YEAR'] = '1604';
+ }
+
+ if ($newProperty->name == 'ANNIVERSARY') {
+ // Microsoft non-standard anniversary
+ $newProperty->name = 'X-ANNIVERSARY';
+
+ // We also need to add a new apple property for the same
+ // purpose. This apple property needs a 'label' in the same
+ // group, so we first need to find a groupname that doesn't
+ // exist yet.
+ $x = 1;
+ while($output->select('ITEM' . $x . '.')) {
+ $x++;
+ }
+ $output->add('ITEM' . $x . '.X-ABDATE', $newProperty->getValue(), array('VALUE' => 'DATE-AND-OR-TIME'));
+ $output->add('ITEM' . $x . '.X-ABLABEL', '_$!!$_');
+ }
+
+ } elseif ($property->name === 'KIND') {
+
+ switch(strtolower($property->getValue())) {
+ case 'org' :
+ // vCard 3.0 does not have an equivalent to KIND:ORG,
+ // but apple has an extension that means the same
+ // thing.
+ $newProperty = $output->createProperty('X-ABSHOWAS','COMPANY');
+ break;
+
+ case 'individual' :
+ // Individual is implicit, so we skip it.
+ return;
+
+ case 'group' :
+ // OS X addressbook property
+ $newProperty = $output->createProperty('X-ADDRESSBOOKSERVER-KIND','GROUP');
+ break;
+ }
+
+
+ }
+
+ } elseif ($targetVersion===Document::VCARD40) {
+
+ // These properties were removed in vCard 4.0
+ if (in_array($property->name, array('NAME', 'MAILER', 'LABEL', 'CLASS'))) {
+ return;
+ }
+
+ if ($property instanceof Property\Binary) {
+
+ $newProperty = $this->convertBinaryToUri($output, $newProperty, $parameters);
+
+ } elseif ($property instanceof Property\VCard\DateAndOrTime && isset($parameters['X-APPLE-OMIT-YEAR'])) {
+
+ // If a property such as BDAY contained 'X-APPLE-OMIT-YEAR',
+ // then we're stripping the year from the vcard 4 value.
+ $parts = DateTimeParser::parseVCardDateTime($property->getValue());
+ if ($parts['year']===$property['X-APPLE-OMIT-YEAR']->getValue()) {
+ $newValue = '--' . $parts['month'] . '-' . $parts['date'];
+ $newProperty->setValue($newValue);
+ }
+
+ // Regardless if the year matched or not, we do need to strip
+ // X-APPLE-OMIT-YEAR.
+ unset($parameters['X-APPLE-OMIT-YEAR']);
+
+ }
+ switch($property->name) {
+ case 'X-ABSHOWAS' :
+ if (strtoupper($property->getValue()) === 'COMPANY') {
+ $newProperty = $output->createProperty('KIND','ORG');
+ }
+ break;
+ case 'X-ADDRESSBOOKSERVER-KIND' :
+ if (strtoupper($property->getValue()) === 'GROUP') {
+ $newProperty = $output->createProperty('KIND','GROUP');
+ }
+ break;
+ case 'X-ANNIVERSARY' :
+ $newProperty->name = 'ANNIVERSARY';
+ // If we already have an anniversary property with the same
+ // value, ignore.
+ foreach ($output->select('ANNIVERSARY') as $anniversary) {
+ if ($anniversary->getValue() === $newProperty->getValue()) {
+ return;
+ }
+ }
+ break;
+ case 'X-ABDATE' :
+ // Find out what the label was, if it exists.
+ if (!$property->group) {
+ break;
+ }
+ $label = $input->{$property->group . '.X-ABLABEL'};
+
+ // We only support converting anniversaries.
+ if (!$label || $label->getValue()!=='_$!!$_') {
+ break;
+ }
+
+ // If we already have an anniversary property with the same
+ // value, ignore.
+ foreach ($output->select('ANNIVERSARY') as $anniversary) {
+ if ($anniversary->getValue() === $newProperty->getValue()) {
+ return;
+ }
+ }
+ $newProperty->name = 'ANNIVERSARY';
+ break;
+ // Apple's per-property label system.
+ case 'X-ABLABEL' :
+ if($newProperty->getValue() === '_$!!$_') {
+ // We can safely remove these, as they are converted to
+ // ANNIVERSARY properties.
+ return;
+ }
+ break;
+
+ }
+
+ }
+
+ // set property group
+ $newProperty->group = $property->group;
+
+ if ($targetVersion===Document::VCARD40) {
+ $this->convertParameters40($newProperty, $parameters);
+ } else {
+ $this->convertParameters30($newProperty, $parameters);
+ }
+
+ // Lastly, we need to see if there's a need for a VALUE parameter.
+ //
+ // We can do that by instantating a empty property with that name, and
+ // seeing if the default valueType is identical to the current one.
+ $tempProperty = $output->createProperty($newProperty->name);
+ if ($tempProperty->getValueType() !== $newProperty->getValueType()) {
+ $newProperty['VALUE'] = $newProperty->getValueType();
+ }
+
+ $output->add($newProperty);
+
+
+ }
+
+ /**
+ * Converts a BINARY property to a URI property.
+ *
+ * vCard 4.0 no longer supports BINARY properties.
+ *
+ * @param Component\VCard $output
+ * @param Property\Uri $property The input property.
+ * @param $parameters List of parameters that will eventually be added to
+ * the new property.
+ * @return Property\Uri
+ */
+ protected function convertBinaryToUri(Component\VCard $output, Property\Binary $newProperty, array &$parameters) {
+
+ $value = $newProperty->getValue();
+ $newProperty = $output->createProperty(
+ $newProperty->name,
+ null, // no value
+ array(), // no parameters yet
+ 'URI' // Forcing the BINARY type
+ );
+
+ $mimeType = 'application/octet-stream';
+
+ // See if we can find a better mimetype.
+ if (isset($parameters['TYPE'])) {
+
+ $newTypes = array();
+ foreach($parameters['TYPE']->getParts() as $typePart) {
+ if (in_array(
+ strtoupper($typePart),
+ array('JPEG','PNG','GIF')
+ )) {
+ $mimeType = 'image/' . strtolower($typePart);
+ } else {
+ $newTypes[] = $typePart;
+ }
+ }
+
+ // If there were any parameters we're not converting to a
+ // mime-type, we need to keep them.
+ if ($newTypes) {
+ $parameters['TYPE']->setParts($newTypes);
+ } else {
+ unset($parameters['TYPE']);
+ }
+
+ }
+
+ $newProperty->setValue('data:' . $mimeType . ';base64,' . base64_encode($value));
+ return $newProperty;
+
+ }
+
+ /**
+ * Converts a URI property to a BINARY property.
+ *
+ * In vCard 4.0 attachments are encoded as data: uri. Even though these may
+ * be valid in vCard 3.0 as well, we should convert those to BINARY if
+ * possible, to improve compatibility.
+ *
+ * @param Component\VCard $output
+ * @param Property\Uri $property The input property.
+ * @return Property\Binary|null
+ */
+ protected function convertUriToBinary(Component\VCard $output, Property\Uri $newProperty) {
+
+ $value = $newProperty->getValue();
+
+ // Only converting data: uris
+ if (substr($value, 0, 5)!=='data:') {
+ return $newProperty;
+ }
+
+ $newProperty = $output->createProperty(
+ $newProperty->name,
+ null, // no value
+ array(), // no parameters yet
+ 'BINARY'
+ );
+
+ $mimeType = substr($value, 5, strpos($value, ',')-5);
+ if (strpos($mimeType, ';')) {
+ $mimeType = substr($mimeType,0,strpos($mimeType, ';'));
+ $newProperty->setValue(base64_decode(substr($value, strpos($value,',')+1)));
+ } else {
+ $newProperty->setValue(substr($value, strpos($value,',')+1));
+ }
+ unset($value);
+
+ $newProperty['ENCODING'] = 'b';
+ switch($mimeType) {
+
+ case 'image/jpeg' :
+ $newProperty['TYPE'] = 'JPEG';
+ break;
+ case 'image/png' :
+ $newProperty['TYPE'] = 'PNG';
+ break;
+ case 'image/gif' :
+ $newProperty['TYPE'] = 'GIF';
+ break;
+
+ }
+
+
+ return $newProperty;
+
+ }
+
+ /**
+ * Adds parameters to a new property for vCard 4.0
+ *
+ * @param Property $newProperty
+ * @param array $parameters
+ * @return void
+ */
+ protected function convertParameters40(Property $newProperty, array $parameters) {
+
+ // Adding all parameters.
+ foreach($parameters as $param) {
+
+ // vCard 2.1 allowed parameters with no name
+ if ($param->noName) $param->noName = false;
+
+ switch($param->name) {
+
+ // We need to see if there's any TYPE=PREF, because in vCard 4
+ // that's now PREF=1.
+ case 'TYPE' :
+ foreach($param->getParts() as $paramPart) {
+
+ if (strtoupper($paramPart)==='PREF') {
+ $newProperty->add('PREF','1');
+ } else {
+ $newProperty->add($param->name, $paramPart);
+ }
+
+ }
+ break;
+ // These no longer exist in vCard 4
+ case 'ENCODING' :
+ case 'CHARSET' :
+ break;
+
+ default :
+ $newProperty->add($param->name, $param->getParts());
+ break;
+
+ }
+
+ }
+
+ }
+
+ /**
+ * Adds parameters to a new property for vCard 3.0
+ *
+ * @param Property $newProperty
+ * @param array $parameters
+ * @return void
+ */
+ protected function convertParameters30(Property $newProperty, array $parameters) {
+
+ // Adding all parameters.
+ foreach($parameters as $param) {
+
+ // vCard 2.1 allowed parameters with no name
+ if ($param->noName) $param->noName = false;
+
+ switch($param->name) {
+
+ case 'ENCODING' :
+ // This value only existed in vCard 2.1, and should be
+ // removed for anything else.
+ if (strtoupper($param->getValue())!=='QUOTED-PRINTABLE') {
+ $newProperty->add($param->name, $param->getParts());
+ }
+ break;
+
+ /*
+ * Converting PREF=1 to TYPE=PREF.
+ *
+ * Any other PREF numbers we'll drop.
+ */
+ case 'PREF' :
+ if ($param->getValue()=='1') {
+ $newProperty->add('TYPE','PREF');
+ }
+ break;
+
+ default :
+ $newProperty->add($param->name, $param->getParts());
+ break;
+
+ }
+
+ }
+
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Version.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Version.php
new file mode 100644
index 000000000..e89158720
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/Version.php
@@ -0,0 +1,19 @@
+ 'UTC',
+ 'Casablanca, Monrovia' => 'Africa/Casablanca',
+ 'Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London' => 'Europe/Lisbon',
+ 'Greenwich Mean Time; Dublin, Edinburgh, London' => 'Europe/London',
+ 'Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna' => 'Europe/Berlin',
+ 'Belgrade, Pozsony, Budapest, Ljubljana, Prague' => 'Europe/Prague',
+ 'Brussels, Copenhagen, Madrid, Paris' => 'Europe/Paris',
+ 'Paris, Madrid, Brussels, Copenhagen' => 'Europe/Paris',
+ 'Prague, Central Europe' => 'Europe/Prague',
+ 'Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb' => 'Europe/Sarajevo',
+ 'West Central Africa' => 'Africa/Luanda', // This was a best guess
+ 'Athens, Istanbul, Minsk' => 'Europe/Athens',
+ 'Bucharest' => 'Europe/Bucharest',
+ 'Cairo' => 'Africa/Cairo',
+ 'Harare, Pretoria' => 'Africa/Harare',
+ 'Helsinki, Riga, Tallinn' => 'Europe/Helsinki',
+ 'Israel, Jerusalem Standard Time' => 'Asia/Jerusalem',
+ 'Baghdad' => 'Asia/Baghdad',
+ 'Arab, Kuwait, Riyadh' => 'Asia/Kuwait',
+ 'Moscow, St. Petersburg, Volgograd' => 'Europe/Moscow',
+ 'East Africa, Nairobi' => 'Africa/Nairobi',
+ 'Tehran' => 'Asia/Tehran',
+ 'Abu Dhabi, Muscat' => 'Asia/Muscat', // Best guess
+ 'Baku, Tbilisi, Yerevan' => 'Asia/Baku',
+ 'Kabul' => 'Asia/Kabul',
+ 'Ekaterinburg' => 'Asia/Yekaterinburg',
+ 'Islamabad, Karachi, Tashkent' => 'Asia/Karachi',
+ 'Kolkata, Chennai, Mumbai, New Delhi, India Standard Time' => 'Asia/Calcutta',
+ 'Kathmandu, Nepal' => 'Asia/Kathmandu',
+ 'Almaty, Novosibirsk, North Central Asia' => 'Asia/Almaty',
+ 'Astana, Dhaka' => 'Asia/Dhaka',
+ 'Sri Jayawardenepura, Sri Lanka' => 'Asia/Colombo',
+ 'Rangoon' => 'Asia/Rangoon',
+ 'Bangkok, Hanoi, Jakarta' => 'Asia/Bangkok',
+ 'Krasnoyarsk' => 'Asia/Krasnoyarsk',
+ 'Beijing, Chongqing, Hong Kong SAR, Urumqi' => 'Asia/Shanghai',
+ 'Irkutsk, Ulaan Bataar' => 'Asia/Irkutsk',
+ 'Kuala Lumpur, Singapore' => 'Asia/Singapore',
+ 'Perth, Western Australia' => 'Australia/Perth',
+ 'Taipei' => 'Asia/Taipei',
+ 'Osaka, Sapporo, Tokyo' => 'Asia/Tokyo',
+ 'Seoul, Korea Standard time' => 'Asia/Seoul',
+ 'Yakutsk' => 'Asia/Yakutsk',
+ 'Adelaide, Central Australia' => 'Australia/Adelaide',
+ 'Darwin' => 'Australia/Darwin',
+ 'Brisbane, East Australia' => 'Australia/Brisbane',
+ 'Canberra, Melbourne, Sydney, Hobart (year 2000 only)' => 'Australia/Sydney',
+ 'Guam, Port Moresby' => 'Pacific/Guam',
+ 'Hobart, Tasmania' => 'Australia/Hobart',
+ 'Vladivostok' => 'Asia/Vladivostok',
+ 'Magadan, Solomon Is., New Caledonia' => 'Asia/Magadan',
+ 'Auckland, Wellington' => 'Pacific/Auckland',
+ 'Fiji Islands, Kamchatka, Marshall Is.' => 'Pacific/Fiji',
+ 'Nuku\'alofa, Tonga' => 'Pacific/Tongatapu',
+ 'Azores' => 'Atlantic/Azores',
+ 'Cape Verde Is.' => 'Atlantic/Cape_Verde',
+ 'Mid-Atlantic' => 'America/Noronha',
+ 'Brasilia' => 'America/Sao_Paulo', // Best guess
+ 'Buenos Aires' => 'America/Argentina/Buenos_Aires',
+ 'Greenland' => 'America/Godthab',
+ 'Newfoundland' => 'America/St_Johns',
+ 'Atlantic Time (Canada)' => 'America/Halifax',
+ 'Caracas, La Paz' => 'America/Caracas',
+ 'Santiago' => 'America/Santiago',
+ 'Bogota, Lima, Quito' => 'America/Bogota',
+ 'Eastern Time (US & Canada)' => 'America/New_York',
+ 'Indiana (East)' => 'America/Indiana/Indianapolis',
+ 'Central America' => 'America/Guatemala',
+ 'Central Time (US & Canada)' => 'America/Chicago',
+ 'Mexico City, Tegucigalpa' => 'America/Mexico_City',
+ 'Saskatchewan' => 'America/Edmonton',
+ 'Arizona' => 'America/Phoenix',
+ 'Mountain Time (US & Canada)' => 'America/Denver', // Best guess
+ 'Pacific Time (US & Canada); Tijuana' => 'America/Los_Angeles', // Best guess
+ 'Alaska' => 'America/Anchorage',
+ 'Hawaii' => 'Pacific/Honolulu',
+ 'Midway Island, Samoa' => 'Pacific/Midway',
+ 'Eniwetok, Kwajalein, Dateline Time' => 'Pacific/Kwajalein',
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/lotuszones.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
new file mode 100644
index 000000000..19b79f908
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/lotuszones.php
@@ -0,0 +1,101 @@
+ 'Etc/GMT-12',
+ 'Samoa' => 'Pacific/Apia',
+ 'Hawaiian' => 'Pacific/Honolulu',
+ 'Alaskan' => 'America/Anchorage',
+ 'Pacific' => 'America/Los_Angeles',
+ 'Pacific Standard Time' => 'America/Los_Angeles',
+ 'Mexico Standard Time 2' => 'America/Chihuahua',
+ 'Mountain' => 'America/Denver',
+ // 'Mountain Standard Time' => 'America/Chihuahua', // conflict with windows timezones.
+ 'US Mountain' => 'America/Phoenix',
+ 'Canada Central' => 'America/Edmonton',
+ 'Central America' => 'America/Guatemala',
+ 'Central' => 'America/Chicago',
+ // 'Central Standard Time' => 'America/Mexico_City', // conflict with windows timezones.
+ 'Mexico' => 'America/Mexico_City',
+ 'Eastern' => 'America/New_York',
+ 'SA Pacific' => 'America/Bogota',
+ 'US Eastern' => 'America/Indiana/Indianapolis',
+ 'Venezuela' => 'America/Caracas',
+ 'Atlantic' => 'America/Halifax',
+ 'Central Brazilian' => 'America/Manaus',
+ 'Pacific SA' => 'America/Santiago',
+ 'SA Western' => 'America/La_Paz',
+ 'Newfoundland' => 'America/St_Johns',
+ 'Argentina' => 'America/Argentina/Buenos_Aires',
+ 'E. South America' => 'America/Belem',
+ 'Greenland' => 'America/Godthab',
+ 'Montevideo' => 'America/Montevideo',
+ 'SA Eastern' => 'America/Belem',
+ // 'Mid-Atlantic' => 'Etc/GMT-2', // conflict with windows timezones.
+ 'Azores' => 'Atlantic/Azores',
+ 'Cape Verde' => 'Atlantic/Cape_Verde',
+ 'Greenwich' => 'Atlantic/Reykjavik', // No I'm serious.. Greenwich is not GMT.
+ 'Morocco' => 'Africa/Casablanca',
+ 'Central Europe' => 'Europe/Prague',
+ 'Central European' => 'Europe/Sarajevo',
+ 'Romance' => 'Europe/Paris',
+ 'W. Central Africa' => 'Africa/Lagos', // Best guess
+ 'W. Europe' => 'Europe/Amsterdam',
+ 'E. Europe' => 'Europe/Minsk',
+ 'Egypt' => 'Africa/Cairo',
+ 'FLE' => 'Europe/Helsinki',
+ 'GTB' => 'Europe/Athens',
+ 'Israel' => 'Asia/Jerusalem',
+ 'Jordan' => 'Asia/Amman',
+ 'Middle East' => 'Asia/Beirut',
+ 'Namibia' => 'Africa/Windhoek',
+ 'South Africa' => 'Africa/Harare',
+ 'Arab' => 'Asia/Kuwait',
+ 'Arabic' => 'Asia/Baghdad',
+ 'E. Africa' => 'Africa/Nairobi',
+ 'Georgian' => 'Asia/Tbilisi',
+ 'Russian' => 'Europe/Moscow',
+ 'Iran' => 'Asia/Tehran',
+ 'Arabian' => 'Asia/Muscat',
+ 'Armenian' => 'Asia/Yerevan',
+ 'Azerbijan' => 'Asia/Baku',
+ 'Caucasus' => 'Asia/Yerevan',
+ 'Mauritius' => 'Indian/Mauritius',
+ 'Afghanistan' => 'Asia/Kabul',
+ 'Ekaterinburg' => 'Asia/Yekaterinburg',
+ 'Pakistan' => 'Asia/Karachi',
+ 'West Asia' => 'Asia/Tashkent',
+ 'India' => 'Asia/Calcutta',
+ 'Sri Lanka' => 'Asia/Colombo',
+ 'Nepal' => 'Asia/Kathmandu',
+ 'Central Asia' => 'Asia/Dhaka',
+ 'N. Central Asia' => 'Asia/Almaty',
+ 'Myanmar' => 'Asia/Rangoon',
+ 'North Asia' => 'Asia/Krasnoyarsk',
+ 'SE Asia' => 'Asia/Bangkok',
+ 'China' => 'Asia/Shanghai',
+ 'North Asia East' => 'Asia/Irkutsk',
+ 'Singapore' => 'Asia/Singapore',
+ 'Taipei' => 'Asia/Taipei',
+ 'W. Australia' => 'Australia/Perth',
+ 'Korea' => 'Asia/Seoul',
+ 'Tokyo' => 'Asia/Tokyo',
+ 'Yakutsk' => 'Asia/Yakutsk',
+ 'AUS Central' => 'Australia/Darwin',
+ 'Cen. Australia' => 'Australia/Adelaide',
+ 'AUS Eastern' => 'Australia/Sydney',
+ 'E. Australia' => 'Australia/Brisbane',
+ 'Tasmania' => 'Australia/Hobart',
+ 'Vladivostok' => 'Asia/Vladivostok',
+ 'West Pacific' => 'Pacific/Guam',
+ 'Central Pacific' => 'Asia/Magadan',
+ 'Fiji' => 'Pacific/Fiji',
+ 'New Zealand' => 'Pacific/Auckland',
+ 'Tonga' => 'Pacific/Tongatapu',
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/php-bc.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/php-bc.php
new file mode 100644
index 000000000..e9506cfb3
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/php-bc.php
@@ -0,0 +1,153 @@
+ 'America/Chicago',
+ 'Cuba' => 'America/Havana',
+ 'Egypt' => 'Africa/Cairo',
+ 'Eire' => 'Europe/Dublin',
+ 'EST5EDT' => 'America/New_York',
+ 'Factory' => 'UTC',
+ 'GB-Eire' => 'Europe/London',
+ 'GMT0' => 'UTC',
+ 'Greenwich' => 'UTC',
+ 'Hongkong' => 'Asia/Hong_Kong',
+ 'Iceland' => 'Atlantic/Reykjavik',
+ 'Iran' => 'Asia/Tehran',
+ 'Israel' => 'Asia/Jerusalem',
+ 'Jamaica' => 'America/Jamaica',
+ 'Japan' => 'Asia/Tokyo',
+ 'Kwajalein' => 'Pacific/Kwajalein',
+ 'Libya' => 'Africa/Tripoli',
+ 'MST7MDT' => 'America/Denver',
+ 'Navajo' => 'America/Denver',
+ 'NZ-CHAT' => 'Pacific/Chatham',
+ 'Poland' => 'Europe/Warsaw',
+ 'Portugal' => 'Europe/Lisbon',
+ 'PST8PDT' => 'America/Los_Angeles',
+ 'Singapore' => 'Asia/Singapore',
+ 'Turkey' => 'Europe/Istanbul',
+ 'Universal' => 'UTC',
+ 'W-SU' => 'Europe/Moscow',
+ 'Zulu' => 'UTC',
+);
diff --git a/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/windowszones.php b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/windowszones.php
new file mode 100644
index 000000000..2d6dde68e
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/lib/vendor/sabre/vobject/lib/timezonedata/windowszones.php
@@ -0,0 +1,118 @@
+ 'Australia/Darwin',
+ 'AUS Eastern Standard Time' => 'Australia/Sydney',
+ 'Afghanistan Standard Time' => 'Asia/Kabul',
+ 'Alaskan Standard Time' => 'America/Anchorage',
+ 'Arab Standard Time' => 'Asia/Riyadh',
+ 'Arabian Standard Time' => 'Asia/Dubai',
+ 'Arabic Standard Time' => 'Asia/Baghdad',
+ 'Argentina Standard Time' => 'America/Buenos_Aires',
+ 'Atlantic Standard Time' => 'America/Halifax',
+ 'Azerbaijan Standard Time' => 'Asia/Baku',
+ 'Azores Standard Time' => 'Atlantic/Azores',
+ 'Bahia Standard Time' => 'America/Bahia',
+ 'Bangladesh Standard Time' => 'Asia/Dhaka',
+ 'Belarus Standard Time' => 'Europe/Minsk',
+ 'Canada Central Standard Time' => 'America/Regina',
+ 'Cape Verde Standard Time' => 'Atlantic/Cape_Verde',
+ 'Caucasus Standard Time' => 'Asia/Yerevan',
+ 'Cen. Australia Standard Time' => 'Australia/Adelaide',
+ 'Central America Standard Time' => 'America/Guatemala',
+ 'Central Asia Standard Time' => 'Asia/Almaty',
+ 'Central Brazilian Standard Time' => 'America/Cuiaba',
+ 'Central Europe Standard Time' => 'Europe/Budapest',
+ 'Central European Standard Time' => 'Europe/Warsaw',
+ 'Central Pacific Standard Time' => 'Pacific/Guadalcanal',
+ 'Central Standard Time' => 'America/Chicago',
+ 'Central Standard Time (Mexico)' => 'America/Mexico_City',
+ 'China Standard Time' => 'Asia/Shanghai',
+ 'Dateline Standard Time' => 'Etc/GMT+12',
+ 'E. Africa Standard Time' => 'Africa/Nairobi',
+ 'E. Australia Standard Time' => 'Australia/Brisbane',
+ 'E. South America Standard Time' => 'America/Sao_Paulo',
+ 'Eastern Standard Time' => 'America/New_York',
+ 'Egypt Standard Time' => 'Africa/Cairo',
+ 'Ekaterinburg Standard Time' => 'Asia/Yekaterinburg',
+ 'FLE Standard Time' => 'Europe/Kiev',
+ 'Fiji Standard Time' => 'Pacific/Fiji',
+ 'GMT Standard Time' => 'Europe/London',
+ 'GTB Standard Time' => 'Europe/Bucharest',
+ 'Georgian Standard Time' => 'Asia/Tbilisi',
+ 'Greenland Standard Time' => 'America/Godthab',
+ 'Greenwich Standard Time' => 'Atlantic/Reykjavik',
+ 'Hawaiian Standard Time' => 'Pacific/Honolulu',
+ 'India Standard Time' => 'Asia/Calcutta',
+ 'Iran Standard Time' => 'Asia/Tehran',
+ 'Israel Standard Time' => 'Asia/Jerusalem',
+ 'Jordan Standard Time' => 'Asia/Amman',
+ 'Kaliningrad Standard Time' => 'Europe/Kaliningrad',
+ 'Korea Standard Time' => 'Asia/Seoul',
+ 'Libya Standard Time' => 'Africa/Tripoli',
+ 'Line Islands Standard Time' => 'Pacific/Kiritimati',
+ 'Magadan Standard Time' => 'Asia/Magadan',
+ 'Mauritius Standard Time' => 'Indian/Mauritius',
+ 'Middle East Standard Time' => 'Asia/Beirut',
+ 'Montevideo Standard Time' => 'America/Montevideo',
+ 'Morocco Standard Time' => 'Africa/Casablanca',
+ 'Mountain Standard Time' => 'America/Denver',
+ 'Mountain Standard Time (Mexico)' => 'America/Chihuahua',
+ 'Myanmar Standard Time' => 'Asia/Rangoon',
+ 'N. Central Asia Standard Time' => 'Asia/Novosibirsk',
+ 'Namibia Standard Time' => 'Africa/Windhoek',
+ 'Nepal Standard Time' => 'Asia/Katmandu',
+ 'New Zealand Standard Time' => 'Pacific/Auckland',
+ 'Newfoundland Standard Time' => 'America/St_Johns',
+ 'North Asia East Standard Time' => 'Asia/Irkutsk',
+ 'North Asia Standard Time' => 'Asia/Krasnoyarsk',
+ 'Pacific SA Standard Time' => 'America/Santiago',
+ 'Pacific Standard Time' => 'America/Los_Angeles',
+ 'Pacific Standard Time (Mexico)' => 'America/Santa_Isabel',
+ 'Pakistan Standard Time' => 'Asia/Karachi',
+ 'Paraguay Standard Time' => 'America/Asuncion',
+ 'Romance Standard Time' => 'Europe/Paris',
+ 'Russia Time Zone 10' => 'Asia/Srednekolymsk',
+ 'Russia Time Zone 11' => 'Asia/Kamchatka',
+ 'Russia Time Zone 3' => 'Europe/Samara',
+ 'Russian Standard Time' => 'Europe/Moscow',
+ 'SA Eastern Standard Time' => 'America/Cayenne',
+ 'SA Pacific Standard Time' => 'America/Bogota',
+ 'SA Western Standard Time' => 'America/La_Paz',
+ 'SE Asia Standard Time' => 'Asia/Bangkok',
+ 'Samoa Standard Time' => 'Pacific/Apia',
+ 'Singapore Standard Time' => 'Asia/Singapore',
+ 'South Africa Standard Time' => 'Africa/Johannesburg',
+ 'Sri Lanka Standard Time' => 'Asia/Colombo',
+ 'Syria Standard Time' => 'Asia/Damascus',
+ 'Taipei Standard Time' => 'Asia/Taipei',
+ 'Tasmania Standard Time' => 'Australia/Hobart',
+ 'Tokyo Standard Time' => 'Asia/Tokyo',
+ 'Tonga Standard Time' => 'Pacific/Tongatapu',
+ 'Turkey Standard Time' => 'Europe/Istanbul',
+ 'US Eastern Standard Time' => 'America/Indianapolis',
+ 'US Mountain Standard Time' => 'America/Phoenix',
+ 'UTC' => 'Etc/GMT',
+ 'UTC+12' => 'Etc/GMT-12',
+ 'UTC-02' => 'Etc/GMT+2',
+ 'UTC-11' => 'Etc/GMT+11',
+ 'Ulaanbaatar Standard Time' => 'Asia/Ulaanbaatar',
+ 'Venezuela Standard Time' => 'America/Caracas',
+ 'Vladivostok Standard Time' => 'Asia/Vladivostok',
+ 'W. Australia Standard Time' => 'Australia/Perth',
+ 'W. Central Africa Standard Time' => 'Africa/Lagos',
+ 'W. Europe Standard Time' => 'Europe/Berlin',
+ 'West Asia Standard Time' => 'Asia/Tashkent',
+ 'West Pacific Standard Time' => 'Pacific/Port_Moresby',
+ 'Yakutsk Standard Time' => 'Asia/Yakutsk',
+);
diff --git a/public/wp-content/plugins/publishpress/libraries/Legacy/Util.php b/public/wp-content/plugins/publishpress/libraries/Legacy/Util.php
deleted file mode 100644
index 71ff80056..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Legacy/Util.php
+++ /dev/null
@@ -1,187 +0,0 @@
-.
- */
-
-namespace PublishPress\Legacy;
-
-class Util
-{
- /**
- * Checks for the current post type
- *
- * @return string|null $post_type The post type we've found, or null if no post type
- */
- public static function get_current_post_type()
- {
- global $post, $typenow, $pagenow, $current_screen;
-
- // get_post() needs a variable
- $post_id = isset($_REQUEST['post']) ? (int)$_REQUEST['post'] : false;
-
- if ($post && $post->post_type) {
- $post_type = $post->post_type;
- } elseif ($typenow) {
- $post_type = $typenow;
- } elseif ($current_screen && ! empty($current_screen->post_type)) {
- $post_type = $current_screen->post_type;
- } elseif (isset($_REQUEST['post_type'])) {
- $post_type = sanitize_key($_REQUEST['post_type']);
- } elseif ('post.php' == $pagenow
- && $post_id
- && ! empty(get_post($post_id)->post_type)) {
- $post_type = get_post($post_id)->post_type;
- } elseif ('edit.php' == $pagenow && empty($_REQUEST['post_type'])) {
- $post_type = 'post';
- } else {
- $post_type = null;
- }
-
- return $post_type;
- }
-
- /**
- * Collect all of the active post types for a given module
- *
- * @param object $module Module's data
- *
- * @return array $post_types All of the post types that are 'on'
- */
- public static function get_post_types_for_module($module)
- {
- $post_types = [];
-
- if (isset($module->options->post_types) && is_array($module->options->post_types)) {
- foreach ($module->options->post_types as $post_type => $value) {
- if ('on' == $value) {
- $post_types[] = $post_type;
- }
- }
- }
-
- return $post_types;
- }
-
- /**
- * Sanitizes the module name, making sure we always have only
- * valid chars, replacing - with _.
- *
- * @param string $name
- *
- * @return string
- */
- public static function sanitize_module_name($name)
- {
- return str_replace('-', '_', $name);
- }
-
- /**
- * Adds an array of capabilities to a role.
- *
- * @param string $role A standard WP user role like 'administrator' or 'author'
- * @param array $caps One or more user caps to add
- *
- * @since 1.9.8
- *
- */
- public static function add_caps_to_role($role, $caps)
- {
- // In some contexts, we don't want to add caps to roles
- if (apply_filters('pp_kill_add_caps_to_role', false, $role, $caps)) {
- return;
- }
-
- global $wp_roles;
-
- if ($wp_roles->is_role($role)) {
- $role = get_role($role);
-
- foreach ($caps as $cap) {
- $role->add_cap($cap);
- }
- }
- }
-
- /**
- * @return bool
- */
- public static function isGutenbergEnabled()
- {
- $isEnabled = defined('GUTENBERG_VERSION');
-
- // Is WordPress 5?
- if ( ! $isEnabled) {
- $wpVersion = get_bloginfo('version');
-
- $isEnabled = version_compare($wpVersion, '5.0', '>=');
- }
-
- return $isEnabled;
- }
-
- public static function hasAnyValidLicenseKeySet()
- {
- $addons = apply_filters('allex_addons', [], 'publishpress');
-
- if (empty($addons)) {
- return false;
- }
-
- foreach ($addons as $addon) {
- if ( ! empty($addon['license_key']) && $addon['license_status'] === 'valid') {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * @return mixed|string
- */
- public static function getRequestMethod()
- {
- if (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD'])) {
- return $_SERVER['REQUEST_METHOD'];
- }
-
- if (function_exists('getenv')) {
- $method = strtoupper(getenv('REQUEST_METHOD'));
-
- if ( ! empty($method)) {
- return $method;
- }
- }
-
- if (isset($_POST) && ! empty($_POST)) {
- return 'POST';
- }
-
- return 'GET';
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Pimple_Container.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Pimple_Container.php
deleted file mode 100644
index 2155375bd..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Pimple_Container.php
+++ /dev/null
@@ -1,152 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications;
-
-use Allex\Core;
-use PublishPress\AsyncNotifications\WPCron;
-use PublishPress\AsyncNotifications\QueueInterface;
-
-class Pimple_Container extends \Pimple\Container
-{
- /**
- * Instance of the Pimple container
- */
- protected static $instance;
-
- public static function get_instance()
- {
- if (empty(static::$instance)) {
- $instance = new self;
-
- // Define the services
-
- $instance['EDD_API_URL'] = function ($c) {
- return 'https://publishpress.com';
- };
-
- $instance['PLUGIN_AUTHOR'] = function ($c) {
- return 'PublishPress';
- };
-
- $instance['twig_function_checked'] = function ($c) {
- return new \Twig_SimpleFunction('checked', function ($checked, $current = true, $echo = true) {
- return checked($checked, $current, $echo);
- });
- };
-
- $instance['twig_function_selected'] = function ($c) {
- return new \Twig_SimpleFunction('selected', function ($selected, $current = true, $echo = true) {
- return selected($selected, $current, $echo);
- });
- };
-
- $instance['twig_function_editor'] = function ($c) {
- return new \Twig_SimpleFunction('editor', function ($content, $editor_id, $attrs = []) {
- wp_editor($content, $editor_id, $attrs);
-
- return '';
- });
- };
-
- $instance['twig_loader_filesystem'] = function ($c) {
- return new \Twig_Loader_Filesystem(PUBLISHPRESS_NOTIF_TWIG_PATH);
- };
-
- $instance['twig'] = function ($c) {
- $twig = new \Twig_Environment(
- $c['twig_loader_filesystem'],
- // array('debug' => true)
- []
- );
-
- $twig->addFunction($c['twig_function_checked']);
- $twig->addFunction($c['twig_function_selected']);
- $twig->addFunction($c['twig_function_editor']);
-
- // $twig->addExtension(new \Twig_Extension_Debug());
-
- return $twig;
- };
-
- $instance['publishpress'] = function ($c) {
- global $publishpress;
-
- return $publishpress;
- };
-
- $instance['workflow_controller'] = function ($c) {
- return new Workflow\Controller;
- };
-
- $instance['shortcodes'] = function ($c) {
- return new Shortcodes;
- };
-
- /**
- * @param $c
- *
- * @return QueueInterface
- */
- $instance['notification_queue'] = function ($c) {
- $queue = apply_filters('publishpress_notification_queue', false, $c);
-
- if (empty($queue)) {
- $queue = new WPCron();
- }
-
- return $queue;
- };
-
- $instance['framework'] = function ($c) {
- // The 4th param is there just for backward compatibility with older versions of the Allex framework
- // packed in UpStream.
- return new Core($c['PLUGIN_BASENAME'], $c['EDD_API_URL'], $c['PLUGIN_AUTHOR'], '');
- };
-
- $instance['reviews'] = function ($c) {
- return new Reviews();
- };
-
- $instance['PLUGIN_BASENAME'] = function ($c) {
- return PUBLISHPRESS_BASENAME;
- };
-
- /**
- * @param $c
- *
- * @return bool
- */
- $instance['DEBUGGING'] = function ($c) {
- if ( ! isset($c['publishpress']->modules->debug)) {
- return false;
- }
-
- if ( ! isset($c['publishpress']->modules->debug->options)) {
- return false;
- }
-
- return $c['publishpress']->modules->debug->options->enabled === 'on';
- };
-
- /**
- * @param $c
- *
- * @return \PP_Debug
- */
- $instance['debug'] = function ($c) {
- return $c['publishpress']->debug;
- };
-
- static::$instance = $instance;
- }
-
- return static::$instance;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Plugin.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Plugin.php
deleted file mode 100644
index a4b64c653..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Plugin.php
+++ /dev/null
@@ -1,248 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications;
-
-defined('ABSPATH') or die('No direct script access allowed.');
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-use PublishPress\Notifications\Traits\PublishPress_Module;
-
-class Plugin
-{
- use Dependency_Injector, PublishPress_Module;
-
- protected $framework;
-
- public function __construct()
- {
- $this->framework = $this->get_service('framework');
-
- $this->init_framework();
- }
-
- /**
- * The method which runs the plugin
- */
- public function init()
- {
- add_action('load-edit.php', [$this, 'add_load_edit_hooks']);
-
- add_action('admin_init', [$this->get_service('reviews'), 'init']);
-
- add_filter('post_updated_messages', [$this, 'filter_post_updated_messages']);
- add_filter('bulk_post_updated_messages', [$this, 'filter_bulk_post_updated_messages'], 10, 2);
-
- do_action('allex_enable_module_upgrade', 'https://publishpress.com/pricing/');
- }
-
- /**
- * Initialize the Allex framework.
- */
- public function init_framework()
- {
- $this->framework->init();
- }
-
- public function add_load_edit_hooks()
- {
- $post_type = 'psppnotif_workflow';
- $screen = get_current_screen();
-
- if ( ! isset($screen->id)) {
- return;
- }
-
- if ("edit-$post_type" !== $screen->id) {
- return;
- }
-
- add_filter("manage_{$post_type}_posts_columns", [$this, 'filter_manage_post_columns']);
-
- add_action("manage_{$post_type}_posts_custom_column", [$this, 'action_manage_post_custom_column'], 10, 2);
- }
-
- public function filter_manage_post_columns($post_columns)
- {
- // Remove the Date column.
- unset($post_columns['date']);
-
- $post_columns['events'] = __('When to notify?', 'publishpress');
- $post_columns['filter'] = __('Filter the content?', 'publishpress');
- $post_columns['receivers'] = __('Who to notify?', 'publishpress');
-
- return $post_columns;
- }
-
- public function action_manage_post_custom_column($column_name, $post_id)
- {
- $columns = [
- 'events',
- 'filter',
- 'receivers',
- ];
- // Ignore other columns
- if ( ! in_array($column_name, $columns)) {
- return;
- }
-
- $method_name = 'print_column_' . $column_name;
- $this->$method_name($post_id);
- }
-
- /**
- * Customize the post messages for the notification workflows when the
- * content is saved.
- *
- * @param string $messages
- *
- * @return array
- */
- public function filter_post_updated_messages($messages)
- {
- global $current_screen;
-
- if (PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW !== $current_screen->post_type) {
- return $messages;
- }
-
- $post = get_post();
-
- /* translators: Publish box date format, see https://secure.php.net/date */
- $scheduled_date = date_i18n(__('M j, Y @ H:i'), strtotime($post->post_date));
-
- $messages['post'][1] = __('Notification workflow updated.', 'pulishpress');
- $messages['post'][4] = __('Notification workflow updated.', 'pulishpress');
- $messages['post'][6] = __('Notification workflow published.', 'pulishpress');
- $messages['post'][7] = __('Notification workflow saved.', 'pulishpress');
- $messages['post'][8] = __('Notification workflow submitted.', 'pulishpress');
- $messages['post'][9] = sprintf(__('Notification workflow scheduled for: %s.'),
- '' . $scheduled_date . ' ');
- $messages['post'][10] = __('Notification workflow draft updated.', 'pulishpress');
-
- return $messages;
- }
-
- /**
- * Customize the post messages for the notification workflows when the
- * content is bulk edited.
- *
- * @param string $bulk_messages
- * @param int $bulk_contents
- *
- * @return array
- */
- public function filter_bulk_post_updated_messages($bulk_messages, $bulk_counts)
- {
- global $current_screen;
-
- if (PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW !== $current_screen->post_type) {
- return $bulk_messages;
- }
-
- $bulk_messages['post']['updated'] = _n('%s notification workflow updated.',
- '%s notification workflows updated.', $bulk_counts['updated']);
- $bulk_messages['post']['locked'] = (1 == $bulk_counts['locked']) ? __('1 notification workflow not updated, somebody is editing it.') :
- _n('%s notification workflow not updated, somebody is editing it.',
- '%s notification workflows not updated, somebody is editing them.', $bulk_counts['locked']);
- $bulk_messages['post']['deleted'] = _n('%s notification workflow permanently deleted.',
- '%s notification workflows permanently deleted.', $bulk_counts['deleted']);
- $bulk_messages['post']['trashed'] = _n('%s notification workflow moved to the Trash.',
- '%s notification workflows moved to the Trash.', $bulk_counts['trashed']);
- $bulk_messages['post']['untrashed'] = _n('%s notification workflow restored from the Trash.',
- '%s notification workflows restored from the Trash.', $bulk_counts['untrashed']);
-
- return $bulk_messages;
- }
-
- /**
- * Print the column for the events
- *
- * @param int $post_id
- */
- protected function print_column_events($post_id)
- {
- /**
- * Get the event metakeys
- *
- * @param array $metakeys
- */
- $metakeys = apply_filters('psppno_events_metakeys', []);
- $events = [];
-
- foreach ($metakeys as $metakey => $label) {
- $selected = get_post_meta($post_id, $metakey, true);
-
- if ($selected) {
- $events[] = $label;
- }
- }
-
- if (empty($events)) {
- echo '' . __('Please select at least one event',
- 'publishpress') . ' ';
- } else {
- echo implode(', ', $events);
- }
- }
-
- /**
- * Print the column for the filters
- *
- * @param int $post_id
- */
- protected function print_column_filter($post_id)
- {
- /**
- * Get the event metakeys
- *
- * @param array $metakeys
- */
- $metakeys = apply_filters('psppno_filter_metakeys', []);
- $filters = [];
-
- foreach ($metakeys as $metakey => $label) {
- $selected = get_post_meta($post_id, $metakey, true);
-
- if ($selected) {
- $filters[] = $label;
- }
- }
-
- if (empty($filters)) {
- echo '' . __('Not filtered', 'publishpress') . ' ';
- } else {
- echo implode(', ', $filters);
- }
- }
-
- /**
- * Print the column for the receivers
- *
- * @param int $post_id
- */
- protected function print_column_receivers($post_id)
- {
- /**
- * Get the values to display in the column
- *
- * @param array $values
- * @param int $post_id
- */
- $values = apply_filters('psppno_receivers_column_value', [], $post_id);
-
- if (empty($values)) {
- echo '-';
- } else {
- echo implode(', ', $values);
- }
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Reviews.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Reviews.php
deleted file mode 100644
index f91c494f6..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Reviews.php
+++ /dev/null
@@ -1,100 +0,0 @@
-time_to_show_notice()) {
- global $submenu;
-
- $redirectURL = '';
-
- if (isset($submenu['pp-modules-settings'])) {
- $redirectURL = $submenu['pp-modules-settings'][0][2];
- }
-
- if (empty($redirectURL)) {
- if (isset($submenu['pp-manage-roles'])) {
- $redirectURL = $submenu['pp-manage-roles'][0][2];
- } else {
- $redirectURL = 'admin.php?page=pp-modules-settings';
- }
- }
-
- $params = [
- 'redirect_url' => $redirectURL,
- 'review_link' => 'http://wordpress.org/support/plugin/publishpress/reviews/#new-post',
- 'notice_text' => __(
- 'Hey, I noticed you have been using %sPublishPress%s for a few weeks - that\'s awesome! May I ask you to give it a %s5-star%s rating on WordPress? Just to help us spread the word and boost our motivation.',
- 'publishpress'
- ),
- ];
-
- // Enable the Reviews module from the Allex framework.
- do_action('allex_enable_module_reviews', $params);
- }
- }
-
- /**
- * @return bool
- */
- protected function time_to_show_notice()
- {
- if (get_option('publishpress_review_status') === 'done') {
- return false;
- }
-
- $date = $this->get_state_last_time();
- $date = strtotime($date . ' ' . self::REPEAT_INTERVAL);
- $today = strtotime(date('Y-m-d'));
-
- return $date <= $today;
- }
-
- /**
- * @return false|mixed|string
- */
- protected function get_state_last_time()
- {
- $option = get_option(self::OPTION_LAST_CHECK, null);
-
- if (is_null($option)) {
- update_option(self::OPTION_LAST_CHECK, date('Y-m-d'));
- $option = date('Y-m-d');
- }
-
- return $option;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Shortcodes.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Shortcodes.php
deleted file mode 100644
index 851fd3d13..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Shortcodes.php
+++ /dev/null
@@ -1,593 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-use PublishPress\Notifications\Traits\PublishPress_Module;
-
-class Shortcodes
-{
- use Dependency_Injector;
- use PublishPress_Module;
-
- /**
- * The post of the workflow.
- *
- * @var WP_Post
- */
- protected $workflow_post;
-
- /**
- * An array with arguments set by the action
- *
- * @var array
- */
- protected $action_args;
-
- /**
- * @var mixed
- */
- protected $cache_receiver;
-
- /**
- * Shortcodes constructor.
- */
- public function __construct()
- {
- add_action('publishpress_workflow_do_shortcode_in_content', [$this, 'setReceiverForShortcode'], 10, 2);
- }
-
- /**
- * Adds the shortcodes to replace text
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- */
- public function register($workflow_post, $action_args)
- {
- $this->set_properties($workflow_post, $action_args);
-
- add_shortcode('psppno_actor', [$this, 'handle_psppno_actor']);
- add_shortcode('psppno_post', [$this, 'handle_psppno_post']);
- add_shortcode('psppno_workflow', [$this, 'handle_psppno_workflow']);
- add_shortcode('psppno_edcomment', [$this, 'handle_psppno_edcomment']);
- add_shortcode('psppno_receiver', [$this, 'handle_psppno_receiver']);
- }
-
- /**
- * Set the instance properties
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- */
- protected function set_properties($workflow_post, $action_args)
- {
- $this->workflow_post = $workflow_post;
- $this->action_args = $action_args;
- }
-
- /**
- * Returns the user who triggered the workflow for notification.
- * You can specify which user's property should be printed:
- *
- * [psppno_actor display_name]
- *
- * @param array $attrs
- *
- * @return string
- */
- public function handle_psppno_actor($attrs)
- {
- $user = $this->get_actor();
-
- return $this->get_user_data($user, $attrs);
- }
-
- /**
- * Returns data from the receiver, if available.
- * Available attributes:
- * - name (display_name - default)
- * - email
- * - first_name
- * - last_name
- * - login
- * - nickname
- *
- * [psppno_receiver name]
- *
- * @param array $attrs
- *
- * @return string
- */
- public function handle_psppno_receiver($attrs)
- {
- $receiver = $this->cache_receiver;
-
- // Decide what field to display.
- if (empty($attrs)) {
- $field = 'name';
- } else {
- $whitelist = [
- 'name',
- 'email',
- 'first_name',
- 'last_name',
- 'login',
- 'nickname',
- ];
-
- if (in_array($attrs[0], $whitelist)) {
- $field = $attrs[0];
- } else {
- $field = 'name';
- }
- }
-
- if (is_numeric($receiver)) {
- // Do we have an user?
- $user = get_user_by('id', $receiver);
- $result = '';
-
- switch ($field) {
- case 'name':
- $result = $user->display_name;
- break;
-
- case 'email':
- $result = $user->user_email;
- break;
-
- case 'first_name':
- $result = $user->first_name;
- break;
-
- case 'last_name':
- $result = $user->last_name;
- break;
-
- case 'login':
- $result = $user->user_login;
- break;
-
- case 'nickname':
- $result = $user->nickname;
- break;
-
- default:
- $result = $user->user_email;
- break;
- }
-
- if (empty($result)) {
- $result = $user->display_name;
- }
- } else {
- $result = $receiver;
-
- // Do we have an email address?
- if (strpos($receiver, '@') > 0) {
- // Do we have a name?
- $separatorPos = strpos($receiver, '/');
- if ($separatorPos > 0) {
-
- if (in_array('name', $attrs)) {
- $result = substr($receiver, 0, $separatorPos);
- } else {
- $result = substr($receiver, $separatorPos + 1, strlen($receiver));
- }
- }
- }
- }
-
- return $result;
- }
-
- /**
- * Returns the current user, the actor of the action
- *
- * @return WP_User
- */
- protected function get_actor()
- {
- return wp_get_current_user();
- }
-
- /**
- * Returns the user's info. You can specify which user's property should be
- * printed passing that on the $attrs.
- *
- * If more than one attribute is given, we returns all the data
- * separated by comma (default) or specified separator, in the order it was
- * received.
- *
- * If no attribute is provided, we use display_name as default.
- *
- * Accepted attributes:
- * - id
- * - login
- * - url
- * - display_name
- * - email
- * - separator
- *
- * @param WP_User $user
- * @param array $attrs
- *
- * @return string
- */
- protected function get_user_data($user, $attrs)
- {
- if ( ! is_array($attrs)) {
- if ( ! empty($attrs)) {
- $attrs[] = $attrs;
- } else {
- $attrs = [];
- }
- }
-
- // No attributes? Set the default one.
- if (empty($attrs)) {
- $attrs[] = 'display_name';
- }
-
- // Set the separator
- if ( ! isset($attrs['separator'])) {
- $attrs['separator'] = ', ';
- }
-
- // Get the user's info
- $info = [];
-
- foreach ($attrs as $index => $item) {
- switch ($item) {
- case 'id':
- $info[] = $user->ID;
- break;
-
- case 'login':
- $info[] = $user->user_login;
- break;
-
- case 'url':
- $info[] = $user->user_url;
- break;
-
- case 'display_name':
- $info[] = $user->display_name;
- break;
-
- case 'email':
- $info[] = $user->user_email;
- break;
-
- default:
- break;
- }
- }
-
- return implode($attrs['separator'], $info);
- }
-
- /**
- * Returns the info from the post related to the notification.
- * You can specify which post's property should be printed:
- *
- * [psppno_post title]
- *
- * If no attribute is provided, we use title as default.
- *
- * Accepted attributes:
- * - id
- * - title
- * - url
- *
- * @param array $attrs
- *
- * @return string
- */
- public function handle_psppno_post($attrs)
- {
- $post = $this->get_post();
-
- return $this->get_post_data($post, $attrs);
- }
-
- /**
- * Returns the post related to the notification.
- *
- * @return WP_Post
- */
- protected function get_post()
- {
- return $this->action_args['post'];
- }
-
- /**
- * Returns the post's info. You can specify which post's property should be
- * printed passing that on the $attrs.
- *
- * If more than one attribute is given, we returns all the data
- * separated by comma (default) or specified separator, in the order it was
- * received.
- *
- * If no attribute is provided, we use title as default.
- *
- * Accepted attributes:
- * - id
- * - title
- * - permalink
- * - date
- * - time
- * - old_status
- * - new_status
- * - separator
- * - edit_link
- *
- * @param WP_Post $post
- * @param array $attrs
- *
- * @throws \Exception
- *
- * @return string
- */
- protected function get_post_data($post, $attrs)
- {
- $publishpress = $this->get_service('publishpress');
-
- // No attributes? Set the default one.
- if (empty($attrs)) {
- $attrs = ['title'];
- }
-
- // Set the separator
- if ( ! isset($attrs['separator'])) {
- $attrs['separator'] = ', ';
- }
-
- // Get the post's info
- $info = [];
-
- foreach ($attrs as $index => $item) {
- switch ($item) {
- case 'id':
- $info[] = $post->ID;
- break;
-
- case 'title':
- $info[] = $post->post_title;
- break;
-
- case 'permalink':
- $info[] = get_permalink($post->ID);
- break;
-
- case 'date':
- $info[] = get_the_date('', $post);
- break;
-
- case 'time':
- $info[] = get_the_time('', $post);
- break;
-
- case 'old_status':
- case 'new_status':
- $status = $publishpress->custom_status->get_custom_status_by(
- 'slug',
- $this->action_args[$item]
- );
-
- if (empty($status) || 'WP_Error' === get_class($status)) {
- break;
- }
-
- $info[] = $status->name;
- break;
-
- case 'edit_link':
- $admin_path = 'post.php?post=' . $post->ID . '&action=edit';
- $info[] = htmlspecialchars_decode(admin_url($admin_path));
- break;
-
- case 'author_display_name':
- case 'author_email':
- case 'author_login':
- $authordata = get_userdata($post->post_author);
-
- $field_map = [
- 'author_display_name' => 'display_name',
- 'author_email' => 'user_email',
- 'author_login' => 'user_login',
- ];
-
- $user_field = $field_map[$item];
- $data = $authordata->{$user_field};
-
- $info[] = apply_filters('pp_get_author_data', $data, $item, $post);
- break;
-
- default:
- if ($custom = apply_filters('publishpress_notif_shortcode_post_data', false, $item, $post, $attrs)) {
- $info[] = $custom;
- }
-
- break;
- }
- }
-
- return implode($attrs['separator'], $info);
- }
-
- /**
- * Returns the info from the post related to the workflow.
- * You can specify which workflow's property should be printed:
- *
- * [psppno_workflow title]
- *
- * If no attribute is provided, we use title as default.
- *
- * Accepted attributes:
- * - id
- * - title
- *
- * @param array $attrs
- *
- * @return string
- */
- public function handle_psppno_workflow($attrs)
- {
- if (is_string( $attrs )) {
- $attrs = [ $attrs ];
- }
-
- $post = $this->workflow_post;
-
- // No attributes? Set the default one.
- if (empty($attrs)) {
- $attrs[] = 'title';
- }
-
- // Set the separator
- if ( ! isset($attrs['separator'])) {
- $attrs['separator'] = ', ';
- }
-
- // Get the post's info
- $info = [];
-
- foreach ($attrs as $index => $item) {
- switch ($item) {
- case 'id':
- $info[] = $post->ID;
- break;
-
- case 'title':
- $info[] = $post->post_title;
- break;
-
- default:
- break;
- }
- }
-
- return implode($attrs['separator'], $info);
- }
-
- /**
- * Returns the info from the comment related to the workflow.
- * You can specify which comment's property should be printed:
- *
- * [psppno_comment content]
- *
- * If no attribute is provided, we use content as default.
- *
- * Accepted attributes:
- * - id
- * - content
- * - author
- * - author_email
- * - author_url
- * - author_ip
- * - date
- *
- * @param array $attrs
- *
- * @return string
- */
- public function handle_psppno_edcomment($attrs)
- {
- if ( ! isset($this->action_args['comment'])) {
- return;
- }
-
- $comment = $this->action_args['comment'];
-
- // No attributes? Set the default one.
- if (empty($attrs)) {
- $attrs[] = 'content';
- }
-
- // Set the separator
- if ( ! isset($attrs['separator'])) {
- $attrs['separator'] = ', ';
- }
-
- // Get the post's info
- $info = [];
-
- foreach ($attrs as $index => $item) {
- switch ($item) {
- case 'id':
- $info[] = $comment->comment_ID;
- break;
-
- case 'content':
- $info[] = $comment->comment_content;
- break;
-
- case 'author':
- $info[] = $comment->comment_author;
- break;
-
- case 'author_email':
- $info[] = $comment->comment_author_email;
- break;
-
- case 'author_url':
- $info[] = $comment->comment_author_url;
- break;
-
- case 'author_ip':
- $info[] = $comment->comment_author_ip;
- break;
-
- case 'date':
- $info[] = $comment->comment_date;
- break;
-
- default:
- break;
- }
- }
-
- return implode($attrs['separator'], $info);
- }
-
- /**
- * @param string $content
- * @param mixed $receiver
- */
- public function setReceiverForShortcode($content, $receiver)
- {
- $this->cache_receiver = $receiver;
- }
-
- /**
- * Removes the shortcodes
- */
- public function unregister()
- {
- remove_shortcode('psppno_actor');
- remove_shortcode('psppno_post');
- remove_shortcode('psppno_workflow');
- remove_shortcode('psppno_edcomment');
- remove_shortcode('psppno_receiver');
-
- $this->cleanup();
- }
-
- /**
- * Cleanup the data
- */
- protected function cleanup()
- {
- $this->workflow_post = null;
- $this->action_args = null;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Table/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Table/Base.php
deleted file mode 100644
index 8553bcd0f..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Table/Base.php
+++ /dev/null
@@ -1,1426 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Table;
-
-/**
- * Base class for displaying a list of items in an ajaxified HTML table.
- * Based on the class WP_List_Table from WordPress 4.8.
- * We are duplicating the class because the original class is private
- * and can change in future releases of WP.
- */
-class Base
-{
- /**
- * The current list of items.
- *
- * @since 3.1.0
- * @access public
- * @var array
- */
- public $items;
-
- /**
- * Various information about the current table.
- *
- * @since 3.1.0
- * @access protected
- * @var array
- */
- protected $_args;
-
- /**
- * Various information needed for displaying the pagination.
- *
- * @since 3.1.0
- * @access protected
- * @var array
- */
- protected $_pagination_args = [];
-
- /**
- * The current screen.
- *
- * @since 3.1.0
- * @access protected
- * @var object
- */
- protected $screen;
-
- /**
- * The view switcher modes.
- *
- * @since 4.1.0
- * @access protected
- * @var array
- */
- protected $modes = [];
-
- /**
- * Stores the value returned by ->get_column_info().
- *
- * @since 4.1.0
- * @access protected
- * @var array
- */
- protected $_column_headers;
-
- /**
- * {@internal Missing Summary}
- *
- * @access protected
- * @var array
- */
- protected $compat_fields = ['_args', '_pagination_args', 'screen', '_actions', '_pagination'];
-
- /**
- * {@internal Missing Summary}
- *
- * @access protected
- * @var array
- */
- protected $compat_methods = [
- 'set_pagination_args',
- 'get_views',
- 'get_bulk_actions',
- 'bulk_actions',
- 'row_actions',
- 'view_switcher',
- 'comments_bubble',
- 'get_items_per_page',
- 'pagination',
- 'get_sortable_columns',
- 'get_column_info',
- 'get_table_classes',
- 'display_tablenav',
- 'extra_tablenav',
- 'single_row_columns',
- ];
-
- /**
- * Cached bulk actions.
- *
- * @since 3.1.0
- * @access private
- * @var array
- */
- private $_actions;
-
- /**
- * Cached pagination output.
- *
- * @since 3.1.0
- * @access private
- * @var string
- */
- private $_pagination;
-
- /**
- * Constructor.
- *
- * The child class should call this constructor from its own constructor to override
- * the default $args.
- *
- * @param array|string $args {
- * Array or string of arguments.
- *
- * @type string $plural Plural value used for labels and the objects being listed.
- * This affects things such as CSS class-names and nonces used
- * in the list table, e.g. 'posts'. Default empty.
- * @type string $singular Singular label for an object being listed, e.g. 'post'.
- * Default empty
- * @type bool $ajax Whether the list table supports Ajax. This includes loading
- * and sorting data, for example. If true, the class will call
- * the _js_vars() method in the footer to provide variables
- * to any scripts handling Ajax events. Default false.
- * @type string $screen String containing the hook name used to determine the current
- * screen. If left null, the current screen will be automatically set.
- * Default null.
- * }
- * @since 3.1.0
- * @access public
- *
- */
- public function __construct($args = [])
- {
- $args = wp_parse_args($args, [
- 'plural' => '',
- 'singular' => '',
- 'ajax' => false,
- 'screen' => null,
- ]);
-
- $this->screen = convert_to_screen($args['screen']);
-
- add_filter("manage_{$this->screen->id}_columns", [$this, 'get_columns'], 0);
-
- if ( ! $args['plural']) {
- $args['plural'] = $this->screen->base;
- }
-
- $args['plural'] = sanitize_key($args['plural']);
- $args['singular'] = sanitize_key($args['singular']);
-
- $this->_args = $args;
-
- if ($args['ajax']) {
- // wp_enqueue_script( 'list-table' );
- add_action('admin_footer', [$this, '_js_vars']);
- }
-
- if (empty($this->modes)) {
- $this->modes = [
- 'list' => __('List View'),
- 'excerpt' => __('Excerpt View'),
- ];
- }
- }
-
- /**
- * Make private properties readable for backward compatibility.
- *
- * @param string $name Property to get.
- *
- * @return mixed Property.
- * @since 4.0.0
- * @access public
- *
- */
- public function __get($name)
- {
- if (in_array($name, $this->compat_fields)) {
- return $this->$name;
- }
- }
-
- /**
- * Make private properties settable for backward compatibility.
- *
- * @param string $name Property to check if set.
- * @param mixed $value Property value.
- *
- * @return mixed Newly-set property.
- * @since 4.0.0
- * @access public
- *
- */
- public function __set($name, $value)
- {
- if (in_array($name, $this->compat_fields)) {
- return $this->$name = $value;
- }
- }
-
- /**
- * Make private properties checkable for backward compatibility.
- *
- * @param string $name Property to check if set.
- *
- * @return bool Whether the property is set.
- * @since 4.0.0
- * @access public
- *
- */
- public function __isset($name)
- {
- if (in_array($name, $this->compat_fields)) {
- return isset($this->$name);
- }
- }
-
- /**
- * Make private properties un-settable for backward compatibility.
- *
- * @param string $name Property to unset.
- *
- * @since 4.0.0
- * @access public
- *
- */
- public function __unset($name)
- {
- if (in_array($name, $this->compat_fields)) {
- unset($this->$name);
- }
- }
-
- /**
- * Make private/protected methods readable for backward compatibility.
- *
- * @param callable $name Method to call.
- * @param array $arguments Arguments to pass when calling.
- *
- * @return mixed|bool Return value of the callback, false otherwise.
- * @since 4.0.0
- * @access public
- *
- */
- public function __call($name, $arguments)
- {
- if (in_array($name, $this->compat_methods)) {
- return call_user_func_array([$this, $name], $arguments);
- }
-
- return false;
- }
-
- /**
- * Checks the current user's permissions
- *
- * @since 3.1.0
- * @access public
- * @abstract
- */
- public function ajax_user_can()
- {
- die('function Base::ajax_user_can() must be over-ridden in a sub-class.');
- }
-
- /**
- * Access the pagination args.
- *
- * @param string $key Pagination argument to retrieve. Common values include 'total_items',
- * 'total_pages', 'per_page', or 'infinite_scroll'.
- *
- * @return int Number of items that correspond to the given pagination argument.
- * @since 3.1.0
- * @access public
- *
- */
- public function get_pagination_arg($key)
- {
- if ('page' === $key) {
- return $this->get_pagenum();
- }
-
- if (isset($this->_pagination_args[$key])) {
- return $this->_pagination_args[$key];
- }
- }
-
- /**
- * Get the current page number
- *
- * @return int
- * @since 3.1.0
- * @access public
- *
- */
- public function get_pagenum()
- {
- $pagenum = isset($_REQUEST['paged']) ? absint($_REQUEST['paged']) : 0;
-
- if (isset($this->_pagination_args['total_pages']) && $pagenum > $this->_pagination_args['total_pages']) {
- $pagenum = $this->_pagination_args['total_pages'];
- }
-
- return max(1, $pagenum);
- }
-
- /**
- * Displays the search box.
- *
- * @param string $text The 'submit' button label.
- * @param string $input_id ID attribute value for the search input field.
- *
- * @since 3.1.0
- * @access public
- *
- */
- public function search_box($text, $input_id)
- {
- if (empty($_REQUEST['s']) && ! $this->has_items()) {
- return;
- }
-
- $input_id = $input_id . '-search-input';
-
- if ( ! empty($_REQUEST['orderby'])) {
- echo ' ';
- }
- if ( ! empty($_REQUEST['order'])) {
- echo ' ';
- }
- if ( ! empty($_REQUEST['post_mime_type'])) {
- echo ' ';
- }
- if ( ! empty($_REQUEST['detached'])) {
- echo ' ';
- } ?>
-
- :
-
- 'search-submit']); ?>
-
- items);
- }
-
- /**
- * Display the list of views available on this table.
- *
- * @since 3.1.0
- * @access public
- */
- public function views()
- {
- $views = $this->get_views();
- /**
- * Filters the list of available list table views.
- *
- * The dynamic portion of the hook name, `$this->screen->id`, refers
- * to the ID of the current screen, usually a string.
- *
- * @param array $views An array of available list table views.
- *
- * @since 3.5.0
- *
- */
- $views = apply_filters("views_{$this->screen->id}", $views);
-
- if (empty($views)) {
- return;
- }
-
- $this->screen->render_screen_reader_content('heading_views');
-
- echo "\n";
- foreach ($views as $class => $view) {
- $views[$class] = "\t$view";
- }
- echo implode(" | \n", $views) . "\n";
- echo " ";
- }
-
- /**
- * Get an associative array ( id => link ) with the list
- * of views available on this table.
- *
- * @return array
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_views()
- {
- return [];
- }
-
- /**
- * Get the current action selected from the bulk actions dropdown.
- *
- * @return string|false The action name or False if no action was selected
- * @since 3.1.0
- * @access public
- *
- */
- public function current_action()
- {
- if (isset($_REQUEST['filter_action']) && ! empty($_REQUEST['filter_action'])) {
- return false;
- }
-
- if (isset($_REQUEST['action']) && -1 != $_REQUEST['action']) {
- return $_REQUEST['action'];
- }
-
- if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2']) {
- return $_REQUEST['action2'];
- }
-
- return false;
- }
-
- /**
- * Public wrapper for Base::get_default_primary_column_name().
- *
- * @return string Name of the default primary column.
- * @since 4.4.0
- * @access public
- *
- */
- public function get_primary_column()
- {
- return $this->get_primary_column_name();
- }
-
- /**
- * Gets the name of the primary column.
- *
- * @return string The name of the primary column.
- * @since 4.3.0
- * @access protected
- *
- */
- protected function get_primary_column_name()
- {
- $columns = get_column_headers($this->screen);
- $default = $this->get_default_primary_column_name();
-
- // If the primary column doesn't exist fall back to the
- // first non-checkbox column.
- if ( ! isset($columns[$default])) {
- $default = self::get_default_primary_column_name();
- }
-
- /**
- * Filters the name of the primary column for the current list table.
- *
- * @param string $default Column name default for the specific list table, e.g. 'name'.
- * @param string $context Screen ID for specific list table, e.g. 'plugins'.
- *
- * @since 4.3.0
- *
- */
- $column = apply_filters('list_table_primary_column', $default, $this->screen->id);
-
- if (empty($column) || ! isset($columns[$column])) {
- $column = $default;
- }
-
- return $column;
- }
-
- /**
- * Gets the name of the default primary column.
- *
- * @return string Name of the default primary column, in this case, an empty string.
- * @since 4.3.0
- * @access protected
- *
- */
- protected function get_default_primary_column_name()
- {
- $columns = $this->get_columns();
- $column = '';
-
- if (empty($columns)) {
- return $column;
- }
-
- // We need a primary defined so responsive views show something,
- // so let's fall back to the first non-checkbox column.
- foreach ($columns as $col => $column_name) {
- if ('cb' === $col) {
- continue;
- }
-
- $column = $col;
- break;
- }
-
- return $column;
- }
-
- /**
- * Get a list of columns. The format is:
- * 'internal-name' => 'Title'
- *
- * @return array
- * @since 3.1.0
- * @access public
- * @abstract
- *
- */
- public function get_columns()
- {
- die('function Base::get_columns() must be over-ridden in a sub-class.');
- }
-
- /**
- * Display the table
- *
- * @since 3.1.0
- * @access public
- */
- public function display()
- {
- $singular = esc_attr($this->_args['singular']);
-
- $this->display_tablenav('top');
-
- $this->screen->render_screen_reader_content('heading_list'); ?>
-
-
-
- print_column_headers(); ?>
-
-
-
- >
- display_rows_or_placeholder(); ?>
-
-
-
-
- print_column_headers(false); ?>
-
-
-
-
- display_tablenav('bottom');
- }
-
- /**
- * Generate the table navigation above or below the table
- *
- * @param string $which
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function display_tablenav($which)
- {
- if ('top' === $which) {
- wp_nonce_field('bulk-' . $this->_args['plural']);
- } ?>
-
-
- has_items()): ?>
-
- bulk_actions($which); ?>
-
- extra_tablenav($which);
- $this->pagination($which); ?>
-
-
-
- _actions)) {
- $this->_actions = $this->get_bulk_actions();
- /**
- * Filters the list table Bulk Actions drop-down.
- *
- * The dynamic portion of the hook name, `$this->screen->id`, refers
- * to the ID of the current screen, usually a string.
- *
- * This filter can currently only be used to remove bulk actions.
- *
- * @param array $actions An array of the available bulk actions.
- *
- * @since 3.5.0
- *
- */
- $this->_actions = apply_filters("bulk_actions-{$this->screen->id}", $this->_actions);
- $two = '';
- } else {
- $two = '2';
- }
-
- if (empty($this->_actions)) {
- return;
- }
-
- echo '' . __('Select bulk action') . ' ';
- echo '\n";
- echo '' . __('Bulk Actions') . " \n";
-
- foreach ($this->_actions as $name => $title) {
- $class = 'edit' === $name ? ' class="hide-if-no-js"' : '';
-
- echo "\t" . '' . esc_html($title) . " \n";
- }
-
- echo " \n";
-
- submit_button(__('Apply'), 'action', '', false, ['id' => "doaction$two"]);
- echo "\n";
- }
-
- /**
- * Get an associative array ( option_name => option_title ) with the list
- * of bulk actions available on this table.
- *
- * @return array
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_bulk_actions()
- {
- return [];
- }
-
- /**
- * Extra controls to be displayed between bulk actions and pagination
- *
- * @param string $which
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function extra_tablenav($which)
- {
- }
-
- /**
- * Display the pagination.
- *
- * @param string $which
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function pagination($which)
- {
- if (empty($this->_pagination_args)) {
- return;
- }
-
- $total_items = $this->_pagination_args['total_items'];
- $total_pages = $this->_pagination_args['total_pages'];
- $infinite_scroll = false;
- if (isset($this->_pagination_args['infinite_scroll'])) {
- $infinite_scroll = $this->_pagination_args['infinite_scroll'];
- }
-
- if ('top' === $which && $total_pages > 1) {
- $this->screen->render_screen_reader_content('heading_pagination');
- }
-
- $output = '' . sprintf(_n('%s item', '%s items', $total_items),
- number_format_i18n($total_items)) . ' ';
-
- $current = $this->get_pagenum();
- $removable_query_args = wp_removable_query_args();
-
- $protocol = is_ssl() ? 'https' : 'http';
- $current_url = set_url_scheme($protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
-
- $current_url = remove_query_arg($removable_query_args, $current_url);
-
- $page_links = [];
-
- $total_pages_before = '';
- $total_pages_after = ' ';
-
- $disable_first = $disable_last = $disable_prev = $disable_next = false;
-
- if ($current == 1) {
- $disable_first = true;
- $disable_prev = true;
- }
- if ($current == 2) {
- $disable_first = true;
- }
- if ($current == $total_pages) {
- $disable_last = true;
- $disable_next = true;
- }
- if ($current == $total_pages - 1) {
- $disable_last = true;
- }
-
- if ($disable_first) {
- $page_links[] = '« ';
- } else {
- $page_links[] = sprintf(
- "%s %s ",
- esc_url(remove_query_arg('paged', $current_url)),
- __('First page'),
- '«'
- );
- }
-
- if ($disable_prev) {
- $page_links[] = '‹ ';
- } else {
- $page_links[] = sprintf(
- "%s %s ",
- esc_url(add_query_arg('paged', max(1, $current - 1), $current_url)),
- __('Previous page'),
- '‹'
- );
- }
-
- if ('bottom' === $which) {
- $html_current_page = $current;
- $total_pages_before = '' . __('Current Page') . ' ';
- } else {
- $html_current_page = sprintf(
- "%s",
- '' . __('Current Page') . ' ',
- esc_attr($current),
- strlen($total_pages)
- );
- }
- $html_total_pages = sprintf("%s ", number_format_i18n($total_pages));
- $page_links[] = $total_pages_before . sprintf(_x('%1$s of %2$s', 'paging'), $html_current_page,
- $html_total_pages) . $total_pages_after;
-
- if ($disable_next) {
- $page_links[] = '› ';
- } else {
- $page_links[] = sprintf(
- "%s %s ",
- esc_url(add_query_arg('paged', min($total_pages, $current + 1), $current_url)),
- __('Next page'),
- '›'
- );
- }
-
- if ($disable_last) {
- $page_links[] = '» ';
- } else {
- $page_links[] = sprintf(
- "%s %s ",
- esc_url(add_query_arg('paged', $total_pages, $current_url)),
- __('Last page'),
- '»'
- );
- }
-
- $pagination_links_class = 'pagination-links';
- if ( ! empty($infinite_scroll)) {
- $pagination_links_class = ' hide-if-js';
- }
- $output .= "\n';
-
- if ($total_pages) {
- $page_class = $total_pages < 2 ? ' one-page' : '';
- } else {
- $page_class = ' no-pages';
- }
- $this->_pagination = "$output
";
-
- echo $this->_pagination;
- }
-
- /**
- * Get a list of CSS classes for the Base table tag.
- *
- * @return array List of CSS classes for the table tag.
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_table_classes()
- {
- return ['widefat', 'fixed', 'striped', $this->_args['plural']];
- }
-
- /**
- * Print column headers, accounting for hidden and sortable columns.
- *
- * @param bool $with_id Whether to set the id attribute or not
- *
- * @since 3.1.0
- * @access public
- *
- * @staticvar int $cb_counter
- *
- */
- public function print_column_headers($with_id = true)
- {
- list($columns, $hidden, $sortable, $primary) = $this->get_column_info();
-
- $protocol = is_ssl() ? 'https' : 'http';
- $current_url = set_url_scheme($protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
- $current_url = remove_query_arg('paged', $current_url);
-
- if (isset($_GET['orderby'])) {
- $current_orderby = $_GET['orderby'];
- } else {
- $current_orderby = '';
- }
-
- if (isset($_GET['order']) && 'desc' === $_GET['order']) {
- $current_order = 'desc';
- } else {
- $current_order = 'asc';
- }
-
- if ( ! empty($columns['cb'])) {
- static $cb_counter = 1;
- $columns['cb'] = '' . __('Select All') . ' '
- . ' ';
- $cb_counter++;
- }
-
- foreach ($columns as $column_key => $column_display_name) {
- $class = ['manage-column', "column-$column_key"];
-
- if (in_array($column_key, $hidden)) {
- $class[] = 'hidden';
- }
-
- if ('cb' === $column_key) {
- $class[] = 'check-column';
- } elseif (in_array($column_key, ['posts', 'comments', 'links'])) {
- $class[] = 'num';
- }
-
- if ($column_key === $primary) {
- $class[] = 'column-primary';
- }
-
- if (isset($sortable[$column_key])) {
- list($orderby, $desc_first) = $sortable[$column_key];
-
- if ($current_orderby === $orderby) {
- $order = 'asc' === $current_order ? 'desc' : 'asc';
- $class[] = 'sorted';
- $class[] = $current_order;
- } else {
- $order = $desc_first ? 'desc' : 'asc';
- $class[] = 'sortable';
- $class[] = $desc_first ? 'asc' : 'desc';
- }
-
- $column_display_name = '' . $column_display_name . ' ';
- }
-
- $tag = ('cb' === $column_key) ? 'td' : 'th';
- $scope = ('th' === $tag) ? 'scope="col"' : '';
- $id = $with_id ? "id='$column_key'" : '';
-
- if ( ! empty($class)) {
- $class = "class='" . join(' ', $class) . "'";
- }
-
- echo "<$tag $scope $id $class>$column_display_name$tag>";
- }
- }
-
- /**
- * Get a list of all, hidden and sortable columns, with filter applied
- *
- * @return array
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_column_info()
- {
- // $_column_headers is already set / cached
- if (isset($this->_column_headers) && is_array($this->_column_headers)) {
- // Back-compat for list tables that have been manually setting $_column_headers for horse reasons.
- // In 4.3, we added a fourth argument for primary column.
- $column_headers = [[], [], [], $this->get_primary_column_name()];
- foreach ($this->_column_headers as $key => $value) {
- $column_headers[$key] = $value;
- }
-
- return $column_headers;
- }
-
- $columns = get_column_headers($this->screen);
- $hidden = get_hidden_columns($this->screen);
-
- $sortable_columns = $this->get_sortable_columns();
- /**
- * Filters the list table sortable columns for a specific screen.
- *
- * The dynamic portion of the hook name, `$this->screen->id`, refers
- * to the ID of the current screen, usually a string.
- *
- * @param array $sortable_columns An array of sortable columns.
- *
- * @since 3.5.0
- *
- */
- $_sortable = apply_filters("manage_{$this->screen->id}_sortable_columns", $sortable_columns);
-
- $sortable = [];
- foreach ($_sortable as $id => $data) {
- if (empty($data)) {
- continue;
- }
-
- $data = (array)$data;
- if ( ! isset($data[1])) {
- $data[1] = false;
- }
-
- $sortable[$id] = $data;
- }
-
- $primary = $this->get_primary_column_name();
- $this->_column_headers = [$columns, $hidden, $sortable, $primary];
-
- return $this->_column_headers;
- }
-
- /**
- * Get a list of sortable columns. The format is:
- * 'internal-name' => 'orderby'
- * or
- * 'internal-name' => array( 'orderby', true )
- *
- * The second format will make the initial sorting order be descending
- *
- * @return array
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_sortable_columns()
- {
- return [];
- }
-
- /**
- * Generate the tbody element for the list table.
- *
- * @since 3.1.0
- * @access public
- */
- public function display_rows_or_placeholder()
- {
- if ($this->has_items()) {
- $this->display_rows();
- } else {
- echo '';
- $this->no_items();
- echo ' ';
- }
- }
-
- /**
- * Generate the table rows
- *
- * @since 3.1.0
- * @access public
- */
- public function display_rows()
- {
- foreach ($this->items as $item) {
- $this->single_row($item);
- }
- }
-
- /**
- * Generates content for a single row of the table
- *
- * @param object $item The current item
- *
- * @since 3.1.0
- * @access public
- *
- */
- public function single_row($item)
- {
- echo '';
- $this->single_row_columns($item);
- echo ' ';
- }
-
- /**
- * Generates the columns for a single row of the table
- *
- * @param object $item The current item
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function single_row_columns($item)
- {
- list($columns, $hidden, $sortable, $primary) = $this->get_column_info();
-
- foreach ($columns as $column_name => $column_display_name) {
- $classes = "$column_name column-$column_name";
- if ($primary === $column_name) {
- $classes .= ' has-row-actions column-primary';
- }
-
- if (in_array($column_name, $hidden)) {
- $classes .= ' hidden';
- }
-
- // Comments column uses HTML in the display name with screen reader text.
- // Instead of using esc_attr(), we strip tags to get closer to a user-friendly string.
- $data = 'data-colname="' . wp_strip_all_tags($column_display_name) . '"';
-
- $attributes = "class='$classes' $data";
-
- if ('cb' === $column_name) {
- echo ' ';
- echo $this->column_cb($item);
- echo ' ';
- } elseif (method_exists($this, '_column_' . $column_name)) {
- echo call_user_func(
- [$this, '_column_' . $column_name],
- $item,
- $classes,
- $data,
- $primary
- );
- } elseif (method_exists($this, 'column_' . $column_name)) {
- echo "";
- echo call_user_func([$this, 'column_' . $column_name], $item);
- echo $this->handle_row_actions($item, $column_name, $primary);
- echo " ";
- } else {
- echo "";
- echo $this->column_default($item, $column_name);
- echo $this->handle_row_actions($item, $column_name, $primary);
- echo " ";
- }
- }
- }
-
- /**
- *
- * @param object $item
- */
- protected function column_cb($item)
- {
- }
-
- /**
- * Generates and display row actions links for the list table.
- *
- * @param object $item The item being acted upon.
- * @param string $column_name Current column name.
- * @param string $primary Primary column name.
- *
- * @return string The row actions HTML, or an empty string if the current column is the primary column.
- * @since 4.3.0
- * @access protected
- *
- */
- protected function handle_row_actions($item, $column_name, $primary)
- {
- return $column_name === $primary ? '' . __('Show more details') . ' ' : '';
- }
-
- /**
- *
- * @param object $item
- * @param string $column_name
- */
- protected function column_default($item, $column_name)
- {
- }
-
- /**
- * Return number of visible columns
- *
- * @return int
- * @since 3.1.0
- * @access public
- *
- */
- public function get_column_count()
- {
- list($columns, $hidden) = $this->get_column_info();
- $hidden = array_intersect(array_keys($columns), array_filter($hidden));
-
- return count($columns) - count($hidden);
- }
-
- /**
- * Message to be displayed when there are no items
- *
- * @since 3.1.0
- * @access public
- */
- public function no_items()
- {
- _e('No items found.');
- }
-
- /**
- * Handle an incoming ajax request (called from admin-ajax.php)
- *
- * @since 3.1.0
- * @access public
- */
- public function ajax_response()
- {
- $this->prepare_items();
-
- ob_start();
- if ( ! empty($_REQUEST['no_placeholder'])) {
- $this->display_rows();
- } else {
- $this->display_rows_or_placeholder();
- }
-
- $rows = ob_get_clean();
-
- $response = ['rows' => $rows];
-
- if (isset($this->_pagination_args['total_items'])) {
- $response['total_items_i18n'] = sprintf(
- _n('%s item', '%s items', $this->_pagination_args['total_items']),
- number_format_i18n($this->_pagination_args['total_items'])
- );
- }
- if (isset($this->_pagination_args['total_pages'])) {
- $response['total_pages'] = $this->_pagination_args['total_pages'];
- $response['total_pages_i18n'] = number_format_i18n($this->_pagination_args['total_pages']);
- }
-
- die(wp_json_encode($response));
- }
-
- /**
- * Prepares the list of items for displaying.
- *
- * @uses Base::set_pagination_args()
- *
- * @since 3.1.0
- * @access public
- * @abstract
- */
- public function prepare_items()
- {
- die('function Base::prepare_items() must be over-ridden in a sub-class.');
- }
-
- /**
- * Send required variables to JavaScript land
- *
- * @access public
- */
- public function _js_vars()
- {
- $args = [
- 'class' => get_class($this),
- 'screen' => [
- 'id' => $this->screen->id,
- 'base' => $this->screen->base,
- ],
- ];
-
- printf("\n", wp_json_encode($args));
- }
-
- /**
- * An internal method that sets all the necessary pagination arguments
- *
- * @param array|string $args Array or string of arguments with information about the pagination.
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function set_pagination_args($args)
- {
- $args = wp_parse_args($args, [
- 'total_items' => 0,
- 'total_pages' => 0,
- 'per_page' => 0,
- ]);
-
- if ( ! $args['total_pages'] && $args['per_page'] > 0) {
- $args['total_pages'] = ceil($args['total_items'] / $args['per_page']);
- }
-
- // Redirect if page number is invalid and headers are not already sent.
- if ( ! headers_sent() && ! wp_doing_ajax() && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages']) {
- wp_redirect(add_query_arg('paged', $args['total_pages']));
- exit;
- }
-
- $this->_pagination_args = $args;
- }
-
- /**
- * Generate row actions div
- *
- * @param array $actions The list of actions
- * @param bool $always_visible Whether the actions should be always visible
- *
- * @return string
- * @since 3.1.0
- * @access protected
- *
- */
- protected function row_actions($actions, $always_visible = false)
- {
- $action_count = count($actions);
- $i = 0;
-
- if ( ! $action_count) {
- return '';
- }
-
- $out = '';
- foreach ($actions as $action => $link) {
- ++$i;
- ($i == $action_count) ? $sep = '' : $sep = ' | ';
- $out .= "$link$sep ";
- }
- $out .= '
';
-
- $out .= '' . __('Show more details') . ' ';
-
- return $out;
- }
-
- /**
- * Display a view switcher
- *
- * @param string $current_mode
- *
- * @since 3.1.0
- * @access protected
- *
- */
- protected function view_switcher($current_mode)
- {
- ?>
-
-
- modes as $mode => $title) {
- $classes = ['view-' . $mode];
- if ($current_mode === $mode) {
- $classes[] = 'current';
- }
- printf(
- "
%s \n",
- esc_url(add_query_arg('mode', $mode)),
- esc_attr(implode(' ', $classes)),
- $title
- );
- } ?>
-
- —%s ',
- __('No comments')
- );
- // Approved comments have different display depending on some conditions.
- } elseif ($approved_comments) {
- printf(
- '%s ',
- esc_url(add_query_arg(['p' => $post_id, 'comment_status' => 'approved'],
- admin_url('edit-comments.php'))),
- $approved_comments_number,
- $pending_comments ? $approved_phrase : $approved_only_phrase
- );
- } else {
- printf(
- '',
- $approved_comments_number,
- $pending_comments ? __('No approved comments') : __('No comments')
- );
- }
-
- if ($pending_comments) {
- printf(
- '%s ',
- esc_url(add_query_arg(['p' => $post_id, 'comment_status' => 'moderated'],
- admin_url('edit-comments.php'))),
- $pending_comments_number,
- $pending_phrase
- );
- } else {
- printf(
- '%s ',
- $pending_comments_number,
- $approved_comments ? __('No pending comments') : __('No comments')
- );
- }
- }
-
- /**
- * Get number of items to display on a single page
- *
- * @param string $option
- * @param int $default
- *
- * @return int
- * @since 3.1.0
- * @access protected
- *
- */
- protected function get_items_per_page($option, $default = 20)
- {
- $per_page = (int)get_user_option($option);
- if (empty($per_page) || $per_page < 1) {
- $per_page = $default;
- }
-
- /**
- * Filters the number of items to be displayed on each page of the list table.
- *
- * The dynamic hook name, $option, refers to the `per_page` option depending
- * on the type of list table in use. Possible values include: 'edit_comments_per_page',
- * 'sites_network_per_page', 'site_themes_network_per_page', 'themes_network_per_page',
- * 'users_network_per_page', 'edit_post_per_page', 'edit_page_per_page',
- * 'edit_{$post_type}_per_page', etc.
- *
- * @param int $per_page Number of items to be displayed. Default 20.
- *
- * @since 2.9.0
- *
- */
- return (int)apply_filters("{$option}", $per_page);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Traits/PublishPress_Module.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Traits/PublishPress_Module.php
deleted file mode 100644
index dd802c86d..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Traits/PublishPress_Module.php
+++ /dev/null
@@ -1,94 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Traits;
-
-trait PublishPress_Module
-{
- /**
- * Returns a list of custom statuses found in the Custom Status module.
- * If the module is disabled, we display only the native statuses.
- *
- * @return array
- */
- public function get_post_statuses()
- {
- if ($this->is_module_enabled('custom_status')) {
- $publishpress = $this->get_service('publishpress');
- $statuses = $publishpress->custom_status->get_custom_statuses();
-
- return $statuses;
- } else {
- return $this->get_core_post_statuses();
- }
- }
-
- /**
- * Returns true if the module is loaded and enabled.
- *
- * @return bool
- */
- public function is_module_enabled($slug)
- {
- $publishpress = $this->get_service('publishpress');
-
- if (isset($publishpress->$slug)) {
- return 'on' === $publishpress->$slug->module->options->enabled;
- }
-
- // Try getting the setting from the db
- $options = get_option("publishpress_{$slug}_options");
- if (isset($options->enabled)) {
- return 'on' === $options->enabled;
- }
-
- return false;
- }
-
- /**
- * Get core's 'draft' and 'pending' post statuses, but include our special attributes
- *
- * @return array
- */
- protected function get_core_post_statuses()
- {
- return [
- (object)[
- 'name' => __('Draft'),
- 'description' => '',
- 'slug' => 'draft',
- 'position' => 1,
- ],
- (object)[
- 'name' => __('Pending Review'),
- 'description' => '',
- 'slug' => 'pending',
- 'position' => 2,
- ],
- (object)[
- 'name' => __('Published'),
- 'description' => '',
- 'slug' => 'publish',
- 'position' => 3,
- ],
- ];
- }
-
- /**
- * Returns a list of post types the notifications support.
- *
- * @return array
- */
- public function get_post_types()
- {
- $publishpress = $this->get_service('publishpress');
-
- return $publishpress->improved_notifications->get_all_post_types();
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Controller.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Controller.php
deleted file mode 100644
index 10ad9cfbe..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Controller.php
+++ /dev/null
@@ -1,203 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow;
-
-class Controller
-{
- /**
- * Store the signatures of sent notifications, usually to avoid duplicated notifications
- * to the same channel.
- *
- * @var array
- */
- protected $sent_notification_signatures = [];
-
- /**
- * List of receivers by channel
- *
- * @var array
- */
- protected $receivers_by_channel = [];
-
- /**
- * The constructor
- */
- public function __construct()
- {
- add_action('publishpress_notif_run_workflows', [$this, 'run_workflows'], 10);
- }
-
- /**
- * Look for enabled workflows, filtering and running according to each settings.
- *
- * $args = [
- * 'action',
- * 'post',
- * 'new_status',
- * 'old_status',
- * ]
- *
- * @param array $args
- */
- public function run_workflows($args)
- {
- $workflows = $this->get_filtered_workflows($args);
-
- foreach ($workflows as $workflow) {
- $workflow->run($args);
- }
- }
-
- /**
- * Returns a list of published workflows which passed all filters.
- *
- * $args = [
- * 'post',
- * 'new_status',
- * 'old_status',
- * ]
- *
- * @param array $args
- *
- * @return array
- */
- public function get_filtered_workflows($args)
- {
- $workflows = [];
-
- // Build the query
- $query_args = [
- 'nopaging' => true,
- 'post_type' => PUBLISHPRESS_NOTIF_POST_TYPE_WORKFLOW,
- 'post_status' => 'publish',
- 'no_found_rows' => true,
- 'cache_results' => true,
- 'meta_query' => [],
- ];
-
- /**
- * Filters the arguments sent to the query to get workflows and
- * each step's filters.
- *
- * @param array $query_args
- * @param array $args
- */
- $query_args = apply_filters('publishpress_notif_run_workflow_meta_query', $query_args, $args);
-
- $query = new \WP_Query($query_args);
-
- if ( ! empty($query->posts)) {
- foreach ($query->posts as $post) {
- $workflows[] = new Workflow($post);
- }
- }
-
- return $workflows;
- }
-
- /**
- * Loads instantiating the classes for the workflow steps.
- */
- public function load_workflow_steps()
- {
- // When
- $classes_event = [
- '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Editorial_Comment',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Event\\Post_Save',
- ];
- /**
- * Filters the list of classes to define workflow "when" steps.
- *
- * @param array $classes The list of classes to be loaded
- */
- $classes_event = apply_filters('publishpress_notif_workflow_steps_event', $classes_event);
-
- // Which Content
- $classes_event_content = [
- '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Post_Type',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Category',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Event_Content\\Taxonomy',
- ];
- /**
- * Filters the list of classes to define workflow "when - which content" steps.
- *
- * @param array $classes The list of classes to be loaded
- */
- $classes_event_content = apply_filters('publishpress_notif_workflow_steps_event_content',
- $classes_event_content);
-
- // Who
- $classes_receiver = [
- '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Site_Admin',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Author',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\User',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Role',
- '\\PublishPress\\Notifications\\Workflow\\Step\\Receiver\\Follower',
- ];
- /**
- * Filters the list of classes to define workflow "who" steps.
- *
- * @param array $classes The list of classes to be loaded
- */
- $classes_receiver = apply_filters('publishpress_notif_workflow_steps_receiver', $classes_receiver);
-
- // Where
- $classes_channel = [
- '\\PublishPress\\Notifications\\Workflow\\Step\\Channel\\Email',
- ];
- /**
- * Filters the list of classes to define workflow "where" steps.
- *
- * @param array $classes The list of classes to be loaded
- */
- $classes_channel = apply_filters('publishpress_notif_workflow_steps_channel', $classes_channel);
-
- // What
- $classes_content = [
- '\\PublishPress\\Notifications\\Workflow\\Step\\Content\\Main',
- ];
- /**
- * Filters the list of classes to define workflow "what" steps.
- *
- * @param array $classes The list of classes to be loaded
- */
- $classes_content = apply_filters('publishpress_notif_workflow_steps_content', $classes_content);
-
- $classes = array_merge($classes_event, $classes_event_content, $classes_receiver, $classes_channel,
- $classes_content);
-
- // Instantiate each class
- foreach ($classes as $class) {
- if (class_exists($class)) {
- new $class;
- }
- }
- }
-
- /**
- * @param $signature
- */
- public function register_notification_signature($signature)
- {
- $this->sent_notification_signatures[$signature] = true;
- }
-
- /**
- * @param $signature
- *
- * @return bool
- */
- public function is_notification_signature_registered($signature)
- {
- $found = array_key_exists($signature, $this->sent_notification_signatures);
-
- return $found;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Base.php
deleted file mode 100644
index 53cc754ea..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Base.php
+++ /dev/null
@@ -1,137 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-use PublishPress\Notifications\Traits\Metadata;
-
-class Base
-{
- use Dependency_Injector, Metadata;
-
- /**
- * The name of the step. Should be URL safe.
- *
- * @var string
- */
- protected $name = 'generic';
-
- /**
- * The label for the field in the workflow.
- *
- * @var string
- */
- protected $label = 'Base';
-
- /**
- * The prefix used on field attributes
- *
- * @var string
- */
- protected $attr_prefix = 'base';
-
- /**
- * An array with the loaded metadata
- *
- * @var array
- */
- protected $cache_metadata;
-
- /**
- * Cache for the list of filters
- *
- * @param array
- */
- protected $cache_filters = [];
-
- /**
- * The constructor
- */
- public function __construct()
- {
- // Add the filter to render the metabox section
- add_filter("publishpress_notif_render_metabox_section_{$this->attr_prefix}", [$this, 'render_metabox_section']);
-
- // Add the action to save the metabox data
- add_action('publishpress_notif_save_workflow_metadata', [$this, 'save_metabox_data'], 10, 2);
- }
-
- /**
- * Action to display the metabox
- *
- * @param string $html
- *
- * @return string
- *
- * @throws \Exception
- */
- public function render_metabox_section($html)
- {
- if (empty($this->twig_template)) {
- throw new \Exception('Undefined twig template for the workflow metabox: ' . $this->name);
- }
-
- $template_context = [
- 'name' => esc_attr("publishpress_notif[{$this->attr_prefix}_{$this->name}]"),
- 'id' => esc_attr("publishpress_notif_{$this->attr_prefix}_{$this->name}"),
- 'value' => esc_attr($this->name),
- 'label' => esc_html($this->label),
- ];
-
- /**
- * Filters the template context for the twig template which will be
- * rendered in the metabox.
- *
- * @param array $template_context
- */
- $template_context = apply_filters(
- "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
- $template_context
- );
-
- $html .= $this->get_service('twig')->render($this->twig_template, $template_context);
-
- return $html;
- }
-
- /**
- * Method called when a notification workflow is saved.
- *
- * @param int $id
- * @param WP_Post $workflow
- */
- public function save_metabox_data($id, $workflow)
- {
- return;
- }
-
- /**
- * Method to return a list of fields to display in the filter area
- *
- * @param array
- *
- * @return array
- */
- protected function get_filters($filters = [])
- {
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- /**
- * Filters the list of filters for the event Comment in the workflow.
- *
- * @param array $filters
- */
- $this->cache_filters = apply_filters("publishpress_notif_workflow_event_{$this->name}_filters", $filters);
-
- return $this->cache_filters;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Base.php
deleted file mode 100644
index a292e7ddf..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Base.php
+++ /dev/null
@@ -1,200 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Channel;
-
-use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
-use WP_User;
-
-class Base extends Base_Step
-{
- const META_KEY_EMAIL = '_psppno_chnbase';
-
- /**
- * @var string
- */
- protected $icon;
-
- /**
- * The constructor
- *
- * @throws \Exception
- */
- public function __construct()
- {
- if (empty($this->attr_prefix)) {
- $this->attr_prefix = 'channel';
- }
-
- if (empty($this->twig_template)) {
- $this->twig_template = 'workflow_channel_field.twig';
- }
-
- if (empty($this->name)) {
- throw new \Exception("Channel name not defined");
- }
-
- if (empty($this->label)) {
- throw new \Exception("Channel label not defined");
- }
-
- parent::__construct();
-
- // Add filter to display the channel in the user's profile
- add_filter('psppno_filter_channels_user_profile', [$this, 'filter_channel']);
- add_filter('psppno_filter_channels', [$this, 'filter_channel']);
-
- // Hook to the notification action
- add_action('publishpress_notif_send_notification_' . $this->name, [$this, 'action_send_notification'], 10, 5);
-
- // Check if we can hook to the psppno_save_user_profile action
- add_action('psppno_save_user_profile', [$this, 'action_save_user_profile']);
-
- add_filter('publishpress_notification_channel', [$this, 'channelLabel']);
- }
-
- /**
- * Filters the list of notification channels to display in the
- * user profile.
- *
- * [
- * 'name': string
- * 'label': string
- * 'options': [
- * 'name'
- * 'html'
- * ]
- * ]
- *
- * @param array $channels
- *
- * @return array
- *
- * @deprecated
- */
- public function filter_channel_user_profile($channels)
- {
- return $this->filter_channel($channels);
- }
-
- /**
- * Filters the list of notification channels to display in the
- * user profile.
- *
- * [
- * 'name': string
- * 'label': string
- * 'options': [
- * 'name'
- * 'html'
- * ]
- * ]
- *
- * @param array $channels
- *
- * @return array
- */
- public function filter_channel($channels)
- {
- $channels[] = (object)[
- 'name' => $this->name,
- 'label' => $this->label,
- 'options' => $this->get_user_profile_option_fields(),
- 'icon' => $this->icon,
- ];
-
- return $channels;
- }
-
- /**
- * Returns a list of option fields to display in the user profile.
- *
- * 'options': [
- * [
- * 'name'
- * 'html'
- * ]
- * ]
- *
- * @return array
- */
- protected function get_user_profile_option_fields()
- {
- return [];
- }
-
- /**
- * Renders the field in the metabox. On this case, we do not print
- * anything for now.
- *
- * @param string $html
- *
- * @return string
- */
- public function render_metabox_section($html)
- {
- return $html;
- }
-
- /**
- * Action hooked when the user profile is saved
- *
- * @param int $user_id
- */
- public function action_save_user_profile($user_id)
- {
- return;
- }
-
- /**
- * @param $workflow_post
- * @param $action_args
- * @param $receivers
- * @param $content
- * @param $channel
- */
- public function action_send_notification($workflow_post, $action_args, $receivers, $content, $channel)
- {
- return;
- }
-
- public function channelLabel($channel)
- {
- if ($channel === $this->name) {
- $channel = $this->label;
- }
-
- return $channel;
- }
-
- /**
- * Returns the user's data, by the user id.
- *
- * @param int $user_id
- *
- * @return WP_User
- */
- protected function get_user_data($user_id)
- {
- return get_userdata($user_id);
- }
-
- /**
- * @param $content
- * @param $channel
- *
- * @return string
- */
- protected function get_notification_signature($content, $channel)
- {
- $signature = md5(serialize($content) . '|' . $channel);
-
- return $signature;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Channel_Interface.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Channel_Interface.php
deleted file mode 100644
index 8edf6b6fc..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Channel_Interface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Channel;
-
-use WP_Post;
-
-interface Channel_Interface
-{
- /**
- * Check if this channel is selected and triggers the notification.
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param array $receivers
- * @param array $content
- * @param string $channel
- */
- public function action_send_notification($workflow_post, $action_args, $receivers, $content, $channel);
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Email.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Email.php
deleted file mode 100644
index 341f8a506..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Channel/Email.php
+++ /dev/null
@@ -1,219 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Channel;
-
-use WP_Post;
-
-class Email extends Base implements Channel_Interface
-{
- const META_KEY_EMAIL = '_psppno_chnemail';
-
- private $emailFailures = [];
-
- /**
- * The constructor
- *
- * @throws \Exception
- */
- public function __construct()
- {
- $this->name = 'email';
- $this->label = __('Email', 'publishpress');
- $this->icon = PUBLISHPRESS_URL . 'modules/improved-notifications/assets/img/icon-email.png';
-
- add_filter('publishpress_notif_error_log', [$this, 'filterErrorLog'], 10, 5);
- add_action('wp_mail_failed', [$this, 'emailFailed']);
-
- parent::__construct();
- }
-
- /**
- * Check if this channel is selected and triggers the notification.
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param array $receivers
- * @param array $content
- * @param string $channel
- *
- * @throws \Exception
- */
- public function action_send_notification($workflow_post, $action_args, $receivers, $content, $channel)
- {
- $this->get_service('debug')->write($receivers, 'Email::action_send_notification $receivers');
-
- if (empty($receivers)) {
- return;
- }
-
- // Make sure we unserialize the content when it comes from async notifications.
- if (is_string($content)) {
- $content = maybe_unserialize($content);
- }
-
- $signature = $this->get_notification_signature($content, $channel . ':' . serialize($receivers));
- $controller = $this->get_service('workflow_controller');
-
- // Check if the notification was already sent
- if ($controller->is_notification_signature_registered($signature)) {
- return;
- }
-
- // Send the emails
- $emails = $this->get_receivers_emails($receivers);
- $action = 'transition_post_status' === $action_args['action'] ? 'status-change' : 'comment';
-
- $this->get_service('debug')->write($emails, 'Email::action_send_notification $emails');
-
- $subject = html_entity_decode($content['subject']);
-
- $body = apply_filters('the_content', $content['body']);
- $body = str_replace(']]>', ']]>', $body);
-
- // Call the legacy notification module
- foreach ($emails as $email) {
- // Split the name and email, if set.
- $separatorPos = strpos($email, '/');
- if ($separatorPos > 0) {
- $email = substr($email, $separatorPos + 1, strlen($email));
- }
-
- $this->get_service('debug')->write($email, 'Email::action_send_notification $email');
-
- $deliveryResult = $this->get_service('publishpress')->notifications->send_email(
- $action,
- $action_args,
- $subject,
- $body,
- '',
- $email
- );
-
- /**
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param string $channel
- * @param string $subject
- * @param string $body
- * @param array $deliveryResult
- */
- do_action('publishpress_notif_notification_sending', $workflow_post, $action_args, $channel, $subject, $body,
- $deliveryResult);
- }
-
- $controller->register_notification_signature($signature);
- }
-
- /**
- * Returns a list of the receivers' emails
- *
- * @param array $receivers
- *
- * @return array
- */
- protected function get_receivers_emails($receivers)
- {
- $emails = [];
-
- if ( ! empty($receivers)) {
- if ( ! is_array($receivers)) {
- $receivers = [$receivers];
- }
-
- foreach ($receivers as $receiver) {
- // Check if we have the user ID or an email address
- if (is_numeric($receiver)) {
- $data = $this->get_user_data($receiver);
- $emails[] = $data->user_email;
- continue;
- }
-
- // Is it a valid email address?
- $emails[] = sanitize_email($receiver);
- }
- }
-
- // Remove duplicated
- $emails = array_unique($emails);
-
- return $emails;
- }
-
- /**
- * Filter the receivers organizing it by channel. Each channel get the list of receivers
- * and return
- *
- * @param array $receivers
- * @param WP_Post $workflow_post
- * @param array $action_args
- *
- * @return array
- */
- public function filter_receivers($receivers, $workflow_post, $action_args)
- {
- return $receivers;
- }
-
- /**
- * @param $receiver
- * @param $subject
- * @param $body
- *
- * @return string
- */
- private function getEmailErrorHash($receiver, $subject, $body)
- {
- return md5(sprintf('%s:%s:%s', $receiver, $subject, $body));
- }
-
- /**
- * @param \WP_Error $error
- */
- public function emailFailed($error)
- {
- if (isset($error->error_data['wp_mail_failed'])) {
- $emailData = $error->error_data['wp_mail_failed'];
- $recipients = $emailData['to'];
-
- foreach ($recipients as $email) {
- if (is_object($email) && method_exists($email, 'getEmail')) {
- $email = $email->getEmail();
- } elseif (is_object($email) && isset($email->email)) {
- $email = $email->email;
- } elseif (is_array($email) && isset($email['email'])) {
- $email = $email['email'];
- }
-
- $hash = $this->getEmailErrorHash($email, $emailData['subject'], $emailData['message']);
-
- $this->emailFailures[$hash] = $error->get_error_message();
- }
- }
- }
-
- /**
- * @param $result
- * @param $receiver
- * @param $subject
- * @param $body
- *
- * @return string
- */
- public function filterErrorLog($error, $result, $receiver, $subject, $body)
- {
- $hash = $this->getEmailErrorHash($receiver, $subject, $body);
-
- if (isset($this->emailFailures[$hash])) {
- $error = $this->emailFailures[$hash];
- }
-
- return $error;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Base.php
deleted file mode 100644
index f6c5d1731..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Base.php
+++ /dev/null
@@ -1,135 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event;
-
-use PublishPress\Notifications\Traits\Metadata;
-use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
-
-class Base extends Base_Step
-{
- use Metadata;
-
- const META_KEY_SELECTED = '_psppno_evtundefined';
-
- const META_VALUE_SELECTED = 'undefined';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- if ('base' === $this->attr_prefix) {
- $this->attr_prefix = 'event';
- }
-
- $this->twig_template = 'workflow_event_field.twig';
-
- parent::__construct();
-
- // Add the event filters to the metabox template
- add_filter(
- "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
- [$this, 'filter_workflow_metabox_context']
- );
-
- // Add the fitler to the run workflow query args
- add_filter('publishpress_notif_run_workflow_meta_query', [$this, 'filter_run_workflow_query_args'], 10, 2);
- }
-
- /**
- * Filters the context sent to the twig template in the metabox
- *
- * @param array $template_context
- */
- public function filter_workflow_metabox_context($template_context)
- {
- $template_context['name'] = esc_attr("publishpress_notif[{$this->attr_prefix}][]");
- $template_context['id'] = esc_attr("publishpress_notif_{$this->attr_prefix}_{$this->name}");
- $template_context['event_filters'] = $this->get_filters();
-
- $meta = (int)$this->get_metadata(static::META_KEY_SELECTED, true);
-
- $template_context['meta'] = [
- 'selected' => (bool)$meta,
- ];
-
- return $template_context;
- }
-
- /**
- * Method called when a notification workflow is saved.
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- if ( ! isset($_POST['publishpress_notif'])
- || ! isset($_POST['publishpress_notif'][$this->attr_prefix])) {
- // Assume it is disabled
- update_post_meta($id, static::META_KEY_SELECTED, false);
- }
-
- $params = $_POST['publishpress_notif'];
-
-
- if (isset($params[$this->attr_prefix])) {
- // Is selected in the events?
- $selected = in_array(static::META_VALUE_SELECTED, $params[$this->attr_prefix]);
- update_post_meta($id, static::META_KEY_SELECTED, $selected);
- }
-
- // Process the filters
- $filters = $this->get_filters();
- if ( ! empty($filters)) {
- foreach ($filters as $filter) {
- $filter->save_metabox_data($id, $post);
- }
- }
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function filter_run_workflow_query_args($query_args, $action_args)
- {
- return $query_args;
- }
-
- /**
- * Add the metakey to the array to be processed
- *
- * @param array $metakeys
- *
- * @return array
- */
- public function filter_events_metakeys($metakeys)
- {
- $metakeys[static::META_KEY_SELECTED] = $this->label;
-
- return $metakeys;
- }
-
- /**
- * @param $action_args
- *
- * @return bool
- */
- protected function should_ignore_event_on_query($action_args)
- {
- return (isset($action_args['ignore_event']) && $action_args['ignore_event'] == true);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php
deleted file mode 100644
index 46b5893ad..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Editorial_Comment.php
+++ /dev/null
@@ -1,79 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event;
-
-use PublishPress\Notifications\Workflow\Filter;
-
-class Editorial_Comment extends Base
-{
- const META_KEY_SELECTED = '_psppno_evtedcomment';
-
- const META_VALUE_SELECTED = 'editorial_comment';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'editorial_comment';
- $this->label = __('When an editorial comment is added', 'publishpress');
-
- parent::__construct();
-
- // Add filter to return the metakey representing if it is selected or not
- add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
- add_filter('publishpress_notif_workflow_actions', [$this, 'filter_workflow_actions']);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function filter_run_workflow_query_args($query_args, $action_args)
- {
- if ($this->should_ignore_event_on_query($action_args)) {
- return $query_args;
- }
-
- if ('editorial_comment' === $action_args['action']) {
- $query_args['meta_query'][] = [
- 'key' => static::META_KEY_SELECTED,
- 'value' => 1,
- 'type' => 'BOOL',
- 'compare' => '=',
- ];
-
- // Check the filters
- $filters = $this->get_filters();
-
- foreach ($filters as $filter) {
- $query_args = $filter->get_run_workflow_query_args($query_args, $action_args);
- }
- }
-
- return $query_args;
- }
-
- public function filter_workflow_actions($actions)
- {
- if ( ! is_array($actions) || empty($actions)) {
- $actions = [];
- }
-
- $actions[] = 'editorial_comment';
-
- return $actions;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Base.php
deleted file mode 100644
index 7fb071de1..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Base.php
+++ /dev/null
@@ -1,75 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event\Filter;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-use PublishPress\Notifications\Traits\Metadata;
-use PublishPress\Notifications\Traits\PublishPress_Module;
-
-class Base implements Filter_Interface
-{
- use Dependency_Injector, PublishPress_Module, Metadata;
-
- /**
- * The name of the filter and field
- */
- protected $step_name;
-
- /**
- * The constructor.
- *
- * @param string $step_name
- */
- public function __construct($step_name)
- {
- $this->step_name = $step_name;
-
- // Add the action to save the metabox data
- add_action('publishpress_notif_save_workflow_metadata', [$this, 'save_metabox_data'], 11, 2);
- }
-
- /**
- * Function to render and returnt the HTML markup for the
- * Field in the form.
- *
- * @return string
- *
- * @throws \Exception
- */
- public function render()
- {
- throw new \Exception('The method ' . __CLASS__ . '::render have to be defined in the child class');
- }
-
- /**
- * Function to save the metadata from the metabox
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- return;
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function get_run_workflow_query_args($query_args, $action_args)
- {
- return $query_args;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php
deleted file mode 100644
index f9a5c2d7d..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Filter/Post_Status.php
+++ /dev/null
@@ -1,161 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event\Filter;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-
-class Post_Status extends Base implements Filter_Interface
-{
- use Dependency_Injector;
-
- const META_KEY_POST_STATUS_FROM = '_psppno_poststatfrom';
-
- const META_KEY_POST_STATUS_TO = '_psppno_poststatto';
-
- /**
- * Function to render and returnt the HTML markup for the
- * Field in the form.
- *
- * @return string
- */
- public function render()
- {
- echo $this->get_service('twig')->render(
- 'workflow_filter_post_status.twig',
- [
- 'name' => "publishpress_notif[{$this->step_name}_filters][post_status]",
- 'id' => "publishpress_notif_{$this->step_name}_filters_post_status",
- 'options_from' => $this->get_options('from'),
- 'options_to' => $this->get_options('to'),
- 'labels' => [
- 'status_transition' => esc_html__('When the status is changed', 'publishpress'),
- 'from' => esc_html__('Previous status', 'publishpress'),
- 'to' => esc_html__('New status', 'publishpress'),
- 'any' => esc_html__('- any status -', 'publishpress'),
- ],
- ]
- );
- }
-
- /**
- * Returns a list of post types in the options format
- *
- * @return array
- */
- protected function get_options($group)
- {
- $statuses = $this->get_post_statuses();
- $metadata = (array)$this->get_metadata('');
- $options = [];
-
- if ('from' === $group) {
- // Add a status to represent new posts
- $options = [
- [
- 'value' => 'new',
- 'label' => __('New', 'publishpress'),
- 'selected' => in_array('new', $metadata[$group]),
- ],
- [
- 'value' => 'auto-draft',
- 'label' => __('Auto-draft', 'publishpress'),
- 'selected' => in_array('auto-draft', $metadata[$group]),
- ]
- ];
- }
-
- foreach ($statuses as $status) {
- $options[] = [
- 'value' => esc_attr($status->slug),
- 'label' => esc_html($status->name),
- 'selected' => in_array($status->slug, $metadata[$group]),
- ];
- }
-
- return $options;
- }
-
- /**
- * Returns the metadata of the current post.
- *
- * @param string $meta_key
- * @param bool $single
- *
- * @return mixed
- */
- public function get_metadata($meta_key, $single = false)
- {
- return [
- 'from' => parent::get_metadata(static::META_KEY_POST_STATUS_FROM),
- 'to' => parent::get_metadata(static::META_KEY_POST_STATUS_TO),
- ];
- }
-
- /**
- * Function to save the metadata from the metabox
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- // From
- if ( ! isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['from'])) {
- $from = [];
- } else {
- $from = $_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['from'];
- }
-
- $this->update_metadata_array($id, static::META_KEY_POST_STATUS_FROM, $from);
-
- // To
- if ( ! isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['to'])) {
- $to = [];
- } else {
- $to = $_POST['publishpress_notif']["{$this->step_name}_filters"]['post_status']['to'];
- }
- $this->update_metadata_array($id, static::META_KEY_POST_STATUS_TO, $to);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function get_run_workflow_query_args($query_args, $action_args)
- {
-
- // From
- $query_args['meta_query'][] = [
- [
- 'key' => static::META_KEY_POST_STATUS_FROM,
- 'value' => $action_args['old_status'],
- 'type' => 'CHAR',
- 'compare' => '=',
- ],
- ];
-
- // To
- $query_args['meta_query'][] = [
- [
- 'key' => static::META_KEY_POST_STATUS_TO,
- 'value' => $action_args['new_status'],
- 'type' => 'CHAR',
- 'compare' => '=',
- ],
- ];
-
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Post_Save.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Post_Save.php
deleted file mode 100644
index 6f6604554..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event/Post_Save.php
+++ /dev/null
@@ -1,99 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event;
-
-use PublishPress\Notifications\Workflow\Step\Event\Filter;
-
-class Post_Save extends Base
-{
- const META_KEY_SELECTED = '_psppno_evtpostsave';
-
- const META_VALUE_SELECTED = 'post_save';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'post_save';
- $this->label = __('When the content is moved to a new status', 'publishpress');
-
- parent::__construct();
-
- // Add filter to return the metakey representing if it is selected or not
- add_filter('psppno_events_metakeys', [$this, 'filter_events_metakeys']);
- add_filter('publishpress_notif_workflow_actions', [$this, 'filter_workflow_actions']);
- }
-
- /**
- * Method to return a list of fields to display in the filter area
- *
- * @param array
- *
- * @return array
- */
- protected function get_filters($filters = [])
- {
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- $step_name = $this->attr_prefix . '_' . $this->name;
-
- $filters[] = new Filter\Post_Status($step_name);
-
- return parent::get_filters($filters);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function filter_run_workflow_query_args($query_args, $action_args)
- {
- if ($this->should_ignore_event_on_query($action_args)) {
- return $query_args;
- }
-
- if ('transition_post_status' === $action_args['action']) {
- $query_args['meta_query'][] = [
- 'key' => static::META_KEY_SELECTED,
- 'value' => 1,
- 'type' => 'BOOL',
- 'compare' => '=',
- ];
-
- // Check the filters
- $filters = $this->get_filters();
-
- foreach ($filters as $filter) {
- $query_args = $filter->get_run_workflow_query_args($query_args, $action_args);
- }
- }
-
- return $query_args;
- }
-
- public function filter_workflow_actions($actions)
- {
- if ( ! is_array($actions) || empty($actions)) {
- $actions = [];
- }
-
- $actions[] = 'transition_post_status';
-
- return $actions;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Base.php
deleted file mode 100644
index ac9f2d3e9..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Base.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content;
-
-use PublishPress\Notifications\Workflow\Step\Event\Base as Base_Step;
-
-class Base extends Base_Step
-{
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->attr_prefix = 'event_content';
-
- parent::__construct();
-
- // Add filter to return the metakey representing if it is selected or not
- add_filter('psppno_filter_metakeys', [$this, 'filter_events_metakeys']);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Category.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Category.php
deleted file mode 100644
index 081dd759e..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Category.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content;
-
-class Category extends Base
-{
- const META_KEY_SELECTED = '_psppno_evtcontcategory';
-
- const META_VALUE_SELECTED = 'category';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'category';
- $this->label = __('Category', 'publishpress');
-
- parent::__construct();
- }
-
- /**
- * Method to return a list of fields to display in the filter area
- *
- * @param array
- *
- * @return array
- */
- protected function get_filters($filters = [])
- {
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- $step_name = $this->attr_prefix . '_' . $this->name;
-
- $filters[] = new Filter\Category($step_name);
-
- return parent::get_filters($filters);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function filter_run_workflow_query_args($query_args, $action_args)
- {
-
- // Check the filters
- $filters = $this->get_filters();
-
- foreach ($filters as $filter) {
- $query_args = $filter->get_run_workflow_query_args($query_args, $action_args);
- }
-
- return $query_args;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Base.php
deleted file mode 100644
index 9eaed3611..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Base.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
-
-use PublishPress\Notifications\Workflow\Step\Event\Filter\Base as Event_Filter_Base;
-
-class Base extends Event_Filter_Base
-{
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php
deleted file mode 100644
index 5aa82555e..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Category.php
+++ /dev/null
@@ -1,147 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
-
-use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
-use PublishPress\Notifications\Workflow\Step\Event_Content\Category as Step_Category;
-
-class Category extends Base implements Filter_Interface
-{
- const META_KEY_CATEGORY = '_psppno_whencategory';
-
- /**
- * Function to render and returnt the HTML markup for the
- * Field in the form.
- *
- * @return string
- */
- public function render()
- {
- echo $this->get_service('twig')->render(
- 'workflow_filter_multiple_select.twig',
- [
- 'name' => "publishpress_notif[{$this->step_name}_filters][category]",
- 'id' => "publishpress_notif_{$this->step_name}_filters_category",
- 'options' => $this->get_options(),
- 'labels' => [
- 'label' => esc_html__('Categories', 'publishpress'),
- ],
- ]
- );
- }
-
- /**
- * Returns a list of post types in the options format
- *
- * @return array
- */
- protected function get_options()
- {
- $categories = get_categories([
- 'orderby' => 'name',
- 'order' => 'ASC',
- 'hide_empty' => false,
- 'hierarchical' => true,
- ]);
-
- $metadata = (array)$this->get_metadata(static::META_KEY_CATEGORY);
-
- $options = [];
- foreach ($categories as $category) {
- $options[] = [
- 'value' => esc_attr($category->slug),
- 'label' => esc_html($category->name),
- 'selected' => in_array($category->slug, $metadata),
- ];
- }
-
- return $options;
- }
-
- /**
- * Function to save the metadata from the metabox
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- if ( ! isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['category'])) {
- $values = [];
- } else {
- $values = $_POST['publishpress_notif']["{$this->step_name}_filters"]['category'];
- }
-
- $this->update_metadata_array($id, static::META_KEY_CATEGORY, $values);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function get_run_workflow_query_args($query_args, $action_args)
- {
- // If post is not set, we ignore.
- if ( ! isset($action_args['post']) || ! is_object($action_args['post'])) {
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-
- $categories = wp_get_post_terms($action_args['post']->ID, 'category');
- $category_ids = [];
-
- if ( ! empty($categories)) {
- foreach ($categories as $category) {
- $category_ids[] = $category->slug;
- }
- }
- $category_ids = implode(',', $category_ids);
-
- $query_args['meta_query'][] = [
- 'relation' => 'OR',
- // The filter is disabled
- [
- 'key' => Step_Category::META_KEY_SELECTED,
- 'value' => '0',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Category::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Category::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'IS NULL',
- ],
- // The filter wasn't set yet
- [
- 'key' => Step_Category::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'NOT EXISTS',
- ],
- // The filter validates the value
- [
- 'key' => static::META_KEY_CATEGORY,
- 'value' => $category_ids,
- 'compare' => 'IN',
- ],
- ];
-
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php
deleted file mode 100644
index 059cfd317..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Post_Type.php
+++ /dev/null
@@ -1,133 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
-
-use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
-use PublishPress\Notifications\Workflow\Step\Event_Content\Post_Type as Step_Post_Type;
-
-class Post_Type extends Base implements Filter_Interface
-{
- const META_KEY_POST_TYPE = '_psppno_posttype';
-
- /**
- * Function to render and returnt the HTML markup for the
- * Field in the form.
- *
- * @return string
- */
- public function render()
- {
- echo $this->get_service('twig')->render(
- 'workflow_filter_multiple_select.twig',
- [
- 'name' => "publishpress_notif[{$this->step_name}_filters][post_type]",
- 'id' => "publishpress_notif_{$this->step_name}_filters_post_type",
- 'options' => $this->get_options(),
- 'labels' => [
- 'label' => esc_html__('Post Types', 'publishpress'),
- ],
- ]
- );
- }
-
- /**
- * Returns a list of post types in the options format
- *
- * @return array
- */
- protected function get_options()
- {
- $post_types = $this->get_post_types();
- $options = [];
- $metadata = (array)$this->get_metadata(static::META_KEY_POST_TYPE);
-
- foreach ($post_types as $slug => $label) {
- $options[] = [
- 'value' => $slug,
- 'label' => $label,
- 'selected' => in_array($slug, $metadata),
- ];
- }
-
- return $options;
- }
-
- /**
- * Function to save the metadata from the metabox
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- if ( ! isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['post_type'])) {
- $values = [];
- } else {
- $values = $_POST['publishpress_notif']["{$this->step_name}_filters"]['post_type'];
- }
-
- $this->update_metadata_array($id, static::META_KEY_POST_TYPE, $values);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function get_run_workflow_query_args($query_args, $action_args)
- {
- // If post is not set, we ignore.
- if ( ! isset($action_args['post']) || ! is_object($action_args['post'])) {
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-
- // Add the filters
- $query_args['meta_query'][] = [
- 'relation' => 'OR',
- // The filter is disabled
- [
- 'key' => Step_Post_Type::META_KEY_SELECTED,
- 'value' => '0',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Post_Type::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Post_Type::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'IS NULL',
- ],
- // The filter wasn't set yet
- [
- 'key' => Step_Post_Type::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'NOT EXISTS',
- ],
- // The filter validates the value
- [
- 'key' => static::META_KEY_POST_TYPE,
- 'value' => $action_args['post']->post_type,
- 'type' => 'CHAR',
- 'compare' => '=',
- ],
- ];
-
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php
deleted file mode 100644
index caa381cbb..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Filter/Term.php
+++ /dev/null
@@ -1,171 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content\Filter;
-
-use PublishPress\Notifications\Workflow\Step\Event\Filter\Filter_Interface;
-use PublishPress\Notifications\Workflow\Step\Event_Content\Taxonomy as Step_Taxonomy;
-
-class Term extends Base implements Filter_Interface
-{
- const META_KEY_TERM = '_psppno_whenterm';
-
- /**
- * Function to render and returnt the HTML markup for the
- * Field in the form.
- *
- * @return string
- */
- public function render()
- {
- echo $this->get_service('twig')->render(
- 'workflow_filter_multiple_select.twig',
- [
- 'name' => "publishpress_notif[{$this->step_name}_filters][term]",
- 'id' => "publishpress_notif_{$this->step_name}_filters_term",
- 'options' => $this->get_options(),
- 'labels' => [
- 'label' => esc_html__('Terms', 'publishpress'),
- ],
- ]
- );
- }
-
- /**
- * @param $a
- * @param $b
- */
- protected function sort_options($a, $b)
- {
- if ($a['label'] == $b['label']) {
- return 0;
- }
-
- return ($a['label'] < $b['label']) ? -1 : 1;
- }
-
- /**
- * Returns a list of post types in the options format
- *
- * @return array
- */
- protected function get_options()
- {
- $get_terms_to_exclude = [];
-
- if (class_exists('\PP_Notifications')) {
- $blacklisted_taxonomies = \PP_Notifications::getOption('blacklisted_taxonomies');
- if ( ! empty( $blacklisted_taxonomies ) ) {
- $get_terms_to_exclude = array_filter(explode(',', $blacklisted_taxonomies));
- }
- }
-
- $terms = get_terms([
- 'hide_empty' => false,
- 'taxonomy' => array_keys(array_diff(get_taxonomies(), $get_terms_to_exclude)),
- ]);
-
- $metadata = (array) $this->get_metadata(static::META_KEY_TERM);
-
- $options = [];
- foreach ($terms as $term) {
- $options[] = [
- 'value' => $term->term_id,
- 'label' => $term->taxonomy . '/' . $term->name,
- 'selected' => in_array($term->term_id, $metadata),
- ];
- }
-
- usort($options, [$this, 'sort_options']);
-
- return $options;
- }
-
- /**
- * Function to save the metadata from the metabox
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- if ( ! isset($_POST['publishpress_notif']["{$this->step_name}_filters"]['term'])) {
- $values = [];
- } else {
- $values = $_POST['publishpress_notif']["{$this->step_name}_filters"]['term'];
- }
-
- $this->update_metadata_array($id, static::META_KEY_TERM, $values);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function get_run_workflow_query_args($query_args, $action_args)
- {
- // If post is not set, we ignore.
- if ( ! isset($action_args['post']) || ! is_object($action_args['post'])) {
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-
- $taxonomies = array_values(get_taxonomies());
-
- $terms = wp_get_post_terms($action_args['post']->ID, $taxonomies);
- $term_ids = [];
-
- if ( ! empty($terms)) {
- foreach ($terms as $term) {
- $term_ids[] = $term->term_id;
- }
- }
- $term_ids = implode(',', $term_ids);
-
- $query_args['meta_query'][] = [
- 'relation' => 'OR',
- // The filter is disabled
- [
- 'key' => Step_Taxonomy::META_KEY_SELECTED,
- 'value' => '0',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Taxonomy::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => '=',
- ],
- // The filter is disabled
- [
- 'key' => Step_Taxonomy::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'IS NULL',
- ],
- // The filter wasn't set yet
- [
- 'key' => Step_Taxonomy::META_KEY_SELECTED,
- 'value' => '',
- 'compare' => 'NOT EXISTS',
- ],
- // The filter validates the value
- [
- 'key' => static::META_KEY_TERM,
- 'value' => $term_ids,
- 'compare' => 'IN',
- ],
- ];
-
- return parent::get_run_workflow_query_args($query_args, $action_args);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php
deleted file mode 100644
index 9e96e2bf8..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Event_Content/Post_Type.php
+++ /dev/null
@@ -1,69 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Event_Content;
-
-class Post_Type extends Base
-{
- const META_KEY_SELECTED = '_psppno_evtcontposttype';
-
- const META_VALUE_SELECTED = 'post_type';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'post_type';
- $this->label = __('Post type', 'publishpress');
-
- parent::__construct();
- }
-
- /**
- * Method to return a list of fields to display in the filter area
- *
- * @param array
- *
- * @return array
- */
- protected function get_filters($filters = [])
- {
- if ( ! empty($this->cache_filters)) {
- return $this->cache_filters;
- }
-
- $step_name = $this->attr_prefix . '_' . $this->name;
-
- $filters[] = new Filter\Post_Type($step_name);
-
- return parent::get_filters($filters);
- }
-
- /**
- * Filters and returns the arguments for the query which locates
- * workflows that should be executed.
- *
- * @param array $query_args
- * @param array $action_args
- *
- * @return array
- */
- public function filter_run_workflow_query_args($query_args, $action_args)
- {
- // Check the filters
- $filters = $this->get_filters();
-
- foreach ($filters as $filter) {
- $query_args = $filter->get_run_workflow_query_args($query_args, $action_args);
- }
-
- return $query_args;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Author.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Author.php
deleted file mode 100644
index 34f6c6de9..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Author.php
+++ /dev/null
@@ -1,77 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Receiver;
-
-class Author extends Simple_Checkbox implements Receiver_Interface
-{
- const META_KEY = '_psppno_toauthor';
-
- const META_VALUE = 'author';
-
- protected $option = 'receiver_author';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'author';
- $this->label = __('Authors of the content', 'publishpress');
- $this->option_name = 'receiver_author';
-
- parent::__construct();
- }
-
- /**
- * Filters the list of receivers for the workflow. Returns the list of IDs.
- *
- * @param array $receivers
- * @param WP_Post $workflow
- * @param array $args
- *
- * @return array
- */
- public function filter_workflow_receivers($receivers, $workflow, $args)
- {
- // If checked, add the authors to the list of receivers
- if ($this->is_selected($workflow->ID)) {
- $receivers[] = (int)$args['post']->post_author;
-
- /**
- * Filters the list of receivers, but triggers only when the authors are selected.
- *
- * @param array $receivers
- * @param WP_Post $workflow
- * @param array $args
- */
- $receivers = apply_filters('publishpress_notif_workflow_receiver_post_authors', $receivers, $workflow,
- $args);
- }
-
- return $receivers;
- }
-
- /**
- * Add the respective value to the column in the workflow list
- *
- * @param array $values
- * @param int $post_id
- *
- * @return array
- */
- public function filter_receivers_column_value($values, $post_id)
- {
- if ($this->is_selected($post_id)) {
- $values[] = __('Authors', 'publishpress');
- }
-
- return $values;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Base.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Base.php
deleted file mode 100644
index abaf405ba..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Base.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Receiver;
-
-use PublishPress\Notifications\Workflow\Step\Base as Base_Step;
-
-class Base extends Base_Step
-{
- const META_KEY_SELECTED = '_psppno_toundefined';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->attr_prefix = 'receiver';
-
- parent::__construct();
-
- // Add the event filters to the metabox template
- add_filter(
- "publishpress_notif_workflow_metabox_context_{$this->attr_prefix}_{$this->name}",
- [$this, 'filter_workflow_metabox_context']
- );
-
- // Add the filter for the list of receivers in the workflow
- add_filter("publishpress_notif_run_workflow_receivers", [$this, 'filter_workflow_receivers'], 10, 3);
-
- // Add filter to return the value for the column in the workflow list
- add_filter('psppno_receivers_column_value', [$this, 'filter_receivers_column_value'], 10, 2);
- }
-
- /**
- * Add the respective value to the column in the workflow list
- *
- * @param array $values
- * @param int $post_id
- *
- * @return array
- */
- public function filter_receivers_column_value($values, $post_id)
- {
- return $values;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Follower.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Follower.php
deleted file mode 100644
index e18b054ee..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Follower.php
+++ /dev/null
@@ -1,193 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Receiver;
-
-use PublishPress\Legacy\Util;
-use PublishPress\Notifications\Traits\Dependency_Injector;
-
-class Follower extends Simple_Checkbox implements Receiver_Interface
-{
- use Dependency_Injector;
-
- const META_KEY = '_psppno_tofollower';
-
- const META_VALUE = 'follower';
-
- protected $option = 'receiver_follower';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->name = 'follower';
- $this->label = __('Users who selected "Notify me" for the content', 'publishpress');
- $this->option_name = 'receiver_follower';
-
- parent::__construct();
- }
-
- /**
- * Filters the list of receivers for the workflow. Returns the list of IDs.
- *
- * @param array $receivers
- * @param WP_Post $workflow
- * @param array $args
- *
- * @return array
- */
- public function filter_workflow_receivers($receivers, $workflow, $args)
- {
- global $publishpress;
-
- // If checked, add the authors to the list of receivers
- if ($this->is_selected($workflow->ID)) {
- $post_id = $args['post']->ID;
-
- if (empty($post_id)) {
- return $receivers;
- }
-
- $followers = [];
-
- // Check if we are saving the post and use that data instead of the stored taxonomies/metadata.
- $method = Util::getRequestMethod();
-
- $roles = [];
- $users = [];
- $emails = [];
-
- if ('POST' === $method && (isset($_POST['action']) && 'editpost' === $_POST['action'])) {
- $toNotify = isset($_POST['to_notify']) ? (array)$_POST['to_notify'] : false;
-
- if ( ! empty($toNotify)) {
- foreach ($toNotify as $item) {
- if (is_numeric($item)) {
- $users[] = $item;
- } else {
- if (strpos($item, '@') > 0) {
- $emails[] = $item;
- } else {
- $roles[] = $item;
- }
- }
- }
- }
- $this->get_service('debug')->write($toNotify, 'Follower::filter_workflow_receivers $toNotify:' . __LINE__);
- } else {
- // Get following users and roles
- $roles = $publishpress->notifications->get_roles_to_notify($post_id, 'slugs');
- $users = $publishpress->notifications->get_users_to_notify($post_id, 'id');
- $emails = $publishpress->notifications->get_emails_to_notify($post_id);
- }
-
- $this->get_service('debug')->write($emails, 'Follower::filter_workflow_receivers $emails:' . __LINE__);
-
- // Extract users from roles
- if ( ! empty($roles)) {
- foreach ($roles as $role) {
- $roleUsers = get_users(
- [
- 'role' => $role,
- ]
- );
-
- if ( ! empty($roleUsers)) {
- foreach ($roleUsers as $user) {
- if (is_user_member_of_blog($user->ID)) {
- $followers[] = $user->ID;
- }
- }
- }
- }
- }
-
- // Merge roles' users and users
- $followers = array_merge($followers, $users);
- $notifyCurrentUser = apply_filters('publishpress_notify_current_user', false);
-
- // Process the recipients for this email to be sent
- if ( ! empty($followers)) {
- foreach ($followers as $key => $user) {
- // Make sure we have only user objects in the list
- if (is_numeric($user)) {
- $user = get_user_by('ID', $user);
- }
-
- // Don't send the email to the current user unless we've explicitly indicated they should receive it
- if (false === $notifyCurrentUser && wp_get_current_user()->user_email == $user->user_email) {
- unset($followers[$key]);
- }
- }
- }
-
- // Merge the emails.
- if ( ! empty($emails)) {
- foreach ($emails as $email) {
- // Do we have a name?
- $separatorPost = strpos($email, '/');
- if ($separatorPost > 0) {
- $emailAddr = substr($email, strpos($email, '/') + 1, strlen($email));
- } else {
- $emailAddr = $email;
- }
-
- // Don't send the email to the current user unless we've explicitly indicated they should receive it
- if (false === $notifyCurrentUser && wp_get_current_user()->user_email == $emailAddr) {
- continue;
- }
-
- $followers[] = 'email:' . $email;
- }
- }
-
- /**
- * Filters the list of followers.
- *
- * @param array $followers
- * @param WP_Post $workflow
- * @param array $args
- */
- $followers = apply_filters('publishpress_notif_workflow_receiver_post_followers', $followers, $workflow,
- $args);
- $this->get_service('debug')->write($followers, 'Follower::filter_workflow_receivers $followers:' . __LINE__);
-
- // Add the user ids for the receivers list
- if ( ! empty($followers)) {
- foreach ($followers as $user) {
- if (is_object($user)) {
- $receivers[] = $user->ID;
- } else {
- $receivers[] = $user;
- }
- }
- }
- }
-
- return $receivers;
- }
-
- /**
- * Add the respective value to the column in the workflow list
- *
- * @param array $values
- * @param int $post_id
- *
- * @return array
- */
- public function filter_receivers_column_value($values, $post_id)
- {
- if ($this->is_selected($post_id)) {
- $values[] = __('"Notify me"', 'publishpress');
- }
-
- return $values;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php
deleted file mode 100644
index f84f04e71..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Step/Receiver/Simple_Checkbox.php
+++ /dev/null
@@ -1,104 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow\Step\Receiver;
-
-class Simple_Checkbox extends Base implements Receiver_Interface
-{
- const META_KEY = '_psppno_to_______';
-
- const META_VALUE = 'define';
-
- protected $option_name = 'define-option';
-
- /**
- * The constructor
- */
- public function __construct()
- {
- $this->twig_template = 'workflow_receiver_checkbox_field.twig';
-
- parent::__construct();
- }
-
- /**
- * Filters the context sent to the twig template in the metabox
- *
- * @param array $template_context
- */
- public function filter_workflow_metabox_context($template_context)
- {
- // Metadata
- $meta = $this->get_metadata(static::META_KEY, true);
-
- $template_context['meta'] = [
- 'selected' => (bool)$meta,
- ];
-
- return $template_context;
- }
-
- /**
- * Filters the list of receivers for the workflow. Returns the list of IDs.
- *
- * @param array $receivers
- * @param WP_Post $workflow
- * @param array $args
- *
- * @return array
- */
- public function filter_workflow_receivers($receivers, $workflow, $args)
- {
- return $receivers;
- }
-
- /**
- * Method called when a notification workflow is saved.
- *
- * @param int $id
- * @param WP_Post $post
- */
- public function save_metabox_data($id, $post)
- {
- if ( ! isset($_POST['publishpress_notif'])
- || ! isset($_POST['publishpress_notif'][$this->option_name])) {
- // Assume it is disabled
- $this->set_selection($id, false);
- }
-
- $params = $_POST['publishpress_notif'];
-
- // Is selected in the events?
- $selected = isset($params[$this->option_name]) ? $params[$this->option_name] : false;
- $this->set_selection($id, $selected === static::META_VALUE);
- }
-
- /**
- * Update the meta data to set the selection for the give workflow
- *
- * @param int $post_id
- * @param bool $selected
- */
- protected function set_selection($post_id, $selected)
- {
- update_post_meta($post_id, static::META_KEY, $selected);
- }
-
- /**
- * Returns true if the receiver is selected in the respective workflow.
- *
- * @param int $post_id
- *
- * @return bool
- */
- protected function is_selected($post_id)
- {
- return (bool)get_post_meta($post_id, static::META_KEY, true);
- }
-}
diff --git a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Workflow.php b/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Workflow.php
deleted file mode 100644
index 7065565d0..000000000
--- a/public/wp-content/plugins/publishpress/libraries/Notifications/Workflow/Workflow.php
+++ /dev/null
@@ -1,326 +0,0 @@
-
- * @copyright Copyright (c) 2018 PublishPress. All rights reserved.
- * @license GPLv2 or later
- * @since 1.0.0
- */
-
-namespace PublishPress\Notifications\Workflow;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-use WP_Post;
-
-class Workflow
-{
- use Dependency_Injector;
-
- const NOTIFICATION_SCHEDULE_META_KEY = '_psppre_notification_scheduled';
-
- /**
- * The post of this workflow.
- *
- * @var WP_Post
- */
- public $workflow_post;
-
- /**
- * An array with arguments set by the action
- *
- * @var array
- */
- protected $action_args;
-
- /**
- * The constructor
- *
- * @param WP_Post $workflow_post
- */
- public function __construct($workflow_post)
- {
- $this->workflow_post = $workflow_post;
- }
-
- /**
- * Runs this workflow without applying any filter. We assume it was
- * already filtered in the query.
- *
- * @param array $args
- *
- * @throws \Exception
- */
- public function run($args)
- {
- $this->action_args = $args;
-
- // Who will receive the notification?
- $receivers = $this->get_receivers();
-
- // If we don't have receivers, abort the workflow.
- if (empty($receivers)) {
- return;
- }
-
- // Prepare the shortcodes.
- $shortcodes = $this->get_service('shortcodes');
- $shortcodes->register($this->workflow_post, $this->action_args);
-
- /*
- * What will the notification says?
- */
- $content_template = $this->get_content();
-
- /**
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param array $receivers
- * @param array $contentTemplate
- */
- do_action('publishpress_notif_before_run_workflow', $this->workflow_post, $this->action_args, $receivers, $content_template);
-
- // Run the action to each receiver.
- foreach ($receivers as $channel => $channel_receivers) {
- foreach ($channel_receivers as $receiver) {
- /**
- * Prepare the content replacing shortcodes.
- */
- $content = $this->do_shortcodes_in_content($content_template, $receiver, $channel);
-
- /**
- * Filters the action to be executed. By default it will trigger the notification.
- * But it can be changed to do another action. This allows to change the flow and
- * catch the params to cache or queue for async notifications.
- *
- * @param string $action
- * @param Workflow $workflow
- * @param string $channel
- */
- $action = apply_filters('publishpress_notif_workflow_do_action',
- 'publishpress_notif_send_notification_' . $channel, $this, $channel);
-
- /**
- * Triggers the notification. This can be caught by notification channels.
- * But can be intercepted by other plugins (cache, async, etc) to change the
- * workflow.
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param array $receiver
- * @param array $content
- * @param string $channel
- */
- do_action($action, $this->workflow_post, $this->action_args, $receiver, $content, $channel);
- }
- }
-
- // Remove the shortcodes.
- $shortcodes->unregister();
-
- do_action('publishpress_notif_after_run_workflow');
- }
-
- /**
- * Returns a list of receivers ids for this workflow
- *
- * @return array
- */
- protected function get_receivers()
- {
- $filtered_receivers = [];
-
- /**
- * Filters the list of receivers for the notification workflow.
- *
- * @param WP_Post $workflow
- * @param array $args
- */
- $receivers = apply_filters('publishpress_notif_run_workflow_receivers', [], $this->workflow_post,
- $this->action_args);
-
- if ( ! empty($receivers)) {
- // Remove duplicate receivers
- $receivers = array_unique($receivers, SORT_STRING);
-
- // Classify receivers per channel, ignoring who has muted the channel.
- foreach ($receivers as $index => $receiver) {
- // Is an user (identified by the id)?
- if (is_numeric($receiver) || is_object($receiver)) {
- // Try to extract the ID from the object
- if (is_object($receiver)) {
- if (isset($receiver->ID) && ! empty($receiver->ID)) {
- $receiver = $receiver->ID;
- } else {
- if (isset($receiver->id) && ! empty($receiver->id)) {
- $receiver = $receiver->id;
- } else {
- // If the object doesn't have an ID, we ignore it.
- continue;
- }
- }
- }
-
- $channel = get_user_meta($receiver, 'psppno_workflow_channel_' . $this->workflow_post->ID, true);
-
- // If channel is empty, we set a default channel.
- if (empty($channel)) {
- $channel = apply_filters('psppno_default_channel', 'email', $this->workflow_post->ID);
- }
-
- // If the channel is "mute", we ignore this receiver.
- if ('mute' === $channel) {
- continue;
- }
-
- // Make sure the array for the channel is initialized.
- if ( ! isset($filtered_receivers[$channel])) {
- $filtered_receivers[$channel] = [];
- }
-
- // Add to the channel's list.
- $filtered_receivers[$channel][] = $receiver;
- } elseif (is_string($receiver)) {
- // Check if it is an explicit email address.
- if (preg_match('/^email:/', $receiver)) {
- if ( ! isset($filtered_receivers['email'])) {
- $filtered_receivers['email'] = [];
- }
-
- // Add to the email channel, without the "email:" prefix.
- $filtered_receivers['email'][] = str_replace('email:', '', $receiver);
- }
- }
- }
- }
-
- return $filtered_receivers;
- }
-
- /**
- * Returns the content for the notification, as an associative array with
- * the following keys:
- * - subject
- * - body
- *
- * @return string
- *
- * @throws \Exception
- */
- protected function get_content()
- {
- $content = ['subject' => '', 'body' => ''];
- /**
- * Filters the content for the notification workflow.
- *
- * @param WP_Post $workflow
- * @param array $args
- */
- $content = apply_filters('publishpress_notif_run_workflow_content', $content, $this->workflow_post,
- $this->action_args);
-
- if ( ! array_key_exists('subject', $content)) {
- $content['subject'] = '';
- }
-
- if ( ! array_key_exists('body', $content)) {
- $content['body'] = '';
- }
-
- return $content;
- }
-
- /**
- * @param string $content
- * @param mixed $receiver
- * @param string $channel
- *
- * @return string
- */
- protected function do_shortcodes_in_content($content, $receiver, $channel)
- {
- /**
- * Action triggered before do shortcodes in the content.
- *
- * @param string $content
- * @param mixed $receiver
- * @param string $channel
- */
- do_action('publishpress_workflow_do_shortcode_in_content', $content, $receiver, $channel);
-
- // Replace placeholders in the subject and body
- $content['subject'] = do_shortcode($content['subject']);
- $content['body'] = do_shortcode($content['body']);
-
- return $content;
- }
-
- /**
- * Get posts related to this workflow, applying the filters, in a reverse way, not founding a workflow related
- * to the post. Used by add-ons like Reminders.
- *
- * @return array
- */
- public function get_related_posts($args = [])
- {
- $workflow_meta_key = (!empty($args['meta_key_selected'])) ? $args['meta_key_selected'] : '_psppno_evtbeforepublishing';
-
- // We need to set a distinct "notification sent" flag for each workflow and notification criteria
- if ('_psppno_evtbeforepublishing' == $workflow_meta_key) {
- $post_status = (!empty($args['post_status'])) ? $args['post_status'] : 'future';
-
- $notification_suffix = "_{$post_status}_{$this->workflow_post->ID}";
-
- } elseif (!empty($args['post_status'])) {
- $notification_suffix = "-{$workflow_meta_key}_" . $args['post_status'] . "_{$this->workflow_post->ID}";
- } else {
- // Other notification criteria may not specify a post status
- $notification_suffix ="-{$workflow_meta_key}_{$this->workflow_post->ID}";
- }
-
- $posts = [];
-
- // Build the query
- $query_args = [
- 'nopaging' => true,
- 'post_status' => $post_status,
- 'no_found_rows' => true,
- 'cache_results' => true,
- 'meta_query' => [
- [
- 'key' => static::NOTIFICATION_SCHEDULE_META_KEY . $notification_suffix,
- 'compare' => 'NOT EXISTS',
- ],
- ],
- ];
-
- // Check if the workflow filters by post type
- $workflowPostTypes = get_post_meta(
- $this->workflow_post->ID,
- Step\Event_Content\Filter\Post_Type::META_KEY_POST_TYPE
- );
-
- if ( ! empty($workflowPostTypes)) {
- $query_args['post_type'] = $workflowPostTypes;
- }
-
- // Check if the workflow filters by category
- $workflowCategories = get_post_meta(
- $this->workflow_post->ID,
- Step\Event_Content\Filter\Category::META_KEY_CATEGORY
- );
-
- if ( ! empty($workflowCategories)) {
- $query_args['category__in'] = $workflowCategories;
- }
-
- $query = new \WP_Query($query_args);
-
- if ( ! empty($query->posts)) {
- foreach ($query->posts as $post) {
- $posts[] = $post;
- }
- }
-
- return $posts;
- }
-}
diff --git a/public/wp-content/plugins/publishpress/license.txt b/public/wp-content/plugins/publishpress/license.txt
index 755fc3e49..bdc8890e7 100644
--- a/public/wp-content/plugins/publishpress/license.txt
+++ b/public/wp-content/plugins/publishpress/license.txt
@@ -1,377 +1,377 @@
-PublishPress - Editorial workflow for WordPress
-
-Copyright 2017 by the contributors
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-This program incorporates work covered by the following copyright and
-permission notices:
-
- Edit Flow is Copyright 2009-2016 Mohammad Jangda, Daniel Bachhuber, et al.
- http://editflow.org/
- Edit Flow was produced by Daniel Bachhuber, Mo Jangda, and Scott Bressler,
- with special help from Andrew Spittle and Andrew Witherspoon
-
- Edit Flow is released under the GPL
-
-and
-
- PublishPress - Editorial workflow for WordPress
-
- PublishPress is Copyright (c) 2018 PublishPress
-
- PublishPress is released under the GPL
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+PublishPress - Editorial workflow for WordPress
+
+Copyright 2022 by the contributors
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+This program incorporates work covered by the following copyright and
+permission notices:
+
+ Edit Flow is Copyright 2009-2016 Mohammad Jangda, Daniel Bachhuber, et al.
+ http://editflow.org/
+ Edit Flow was produced by Daniel Bachhuber, Mo Jangda, and Scott Bressler,
+ with special help from Andrew Spittle and Andrew Witherspoon
+
+ Edit Flow is released under the GPL
+
+and
+
+ PublishPress - Editorial workflow for WordPress
+
+ PublishPress is Copyright (c) 2022 PublishPress
+
+ PublishPress is released under the GPL
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/public/wp-content/plugins/publishpress/modules/addons/addons.php b/public/wp-content/plugins/publishpress/modules/addons/addons.php
deleted file mode 100644
index 618ea0b2a..000000000
--- a/public/wp-content/plugins/publishpress/modules/addons/addons.php
+++ /dev/null
@@ -1,363 +0,0 @@
-.
- */
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-
-if ( ! class_exists('PP_Addons')) {
- /**
- * class PP_Addons
- */
- class PP_Addons extends PP_Module
- {
- use Dependency_Injector;
-
- /**
- * The name of the module
- */
- const NAME = 'addons';
-
- /**
- * The settings slug
- */
- const SETTINGS_SLUG = 'pp-addons';
-
- /**
- * @var string
- */
- const MENU_SLUG = 'pp-addons';
-
- /**
- * Flag for debug
- *
- * @var boolean
- */
- protected $debug = false;
-
- /**
- * The constructor method
- */
- public function __construct()
- {
- $this->module_url = $this->get_module_url(__FILE__);
-
- // Register the module with PublishPress
- $args = [
- 'title' => __('Add-ons for PublishPress', 'publishpress'),
- 'short_description' => '',
- 'extended_description' => false,
- 'module_url' => $this->module_url,
- 'icon_class' => 'dashicons dashicons-admin-settings',
- 'slug' => static::NAME,
- 'default_options' => [
- 'enabled' => 'on',
- ],
- 'configure_page_cb' => 'print_configure_view',
- 'autoload' => true,
- 'options_page' => false,
- ];
-
- $this->module = PublishPress()->register_module(static::NAME, $args);
- }
-
- /**
- * Initialize the rest of the stuff in the class if the module is active
- */
- public function init()
- {
- // Menu
- add_filter('publishpress_admin_menu_slug', [$this, 'filter_admin_menu_slug'], 1000);
- add_action('publishpress_admin_menu_page', [$this, 'action_admin_menu_page'], 1000);
- add_action('publishpress_admin_submenu', [$this, 'action_admin_submenu'], 1000);
-
- add_filter('allex_addons', [$this, 'filter_allex_addons'], 10, 2);
- add_action('allex_addon_update_license', [$this, 'action_allex_addon_update_license'], 10, 4);
- add_filter('allex_addons_get_license_key', [$this, 'filter_allex_addons_get_license_key'], 10, 2);
- add_filter('allex_addons_get_license_status', [$this, 'filter_allex_addons_get_license_status'], 10, 2);
- add_filter('allex_upgrade_link', [$this, 'filter_allex_upgrade_link'], 10, 2);
-
- $this->init_allex_addons();
- }
-
- /**
- * @throws Exception
- */
- protected function init_allex_addons()
- {
- $this->get_service('framework')->get_service('module_addons')->init();
- }
-
- /**
- * Filters the menu slug.
- *
- * @param $menu_slug
- *
- * @return string
- */
- public function filter_admin_menu_slug($menu_slug)
- {
- if (empty($menu_slug) && $this->module_enabled('addons')) {
- $menu_slug = self::MENU_SLUG;
- }
-
- return $menu_slug;
- }
-
- /**
- * Creates the admin menu if there is no menu set.
- */
- public function action_admin_menu_page()
- {
- $publishpress = $this->get_service('publishpress');
-
- if ($publishpress->get_menu_slug() !== self::MENU_SLUG) {
- return;
- }
-
- $publishpress->add_menu_page(
- esc_html__('Add-ons', 'publishpress'),
- apply_filters('pp_view_addons_cap', 'manage_options'),
- self::MENU_SLUG,
- [$this, 'render_admin_page']
- );
- }
-
- /**
- * Add necessary things to the admin menu
- */
- public function action_admin_submenu()
- {
- $publishpress = $this->get_service('publishpress');
-
- // Main Menu
- add_submenu_page(
- $publishpress->get_menu_slug(),
- esc_html__('Add-ons', 'publishpress'),
- esc_html__('Add-ons', 'publishpress'),
- apply_filters('pp_view_addons_cap', 'manage_options'),
- self::MENU_SLUG,
- [$this, 'render_admin_page']
- );
- }
-
- /**
- * @param $plugin_name
- * @param $addon_slug
- * @param $license_key
- * @param $license_status
- */
- public function action_allex_addon_update_license($plugin_name, $addon_slug, $license_key, $license_status)
- {
- /**
- * Duplicate the license key for backward compatibility with add-ons.
- */
-
- $option_name = $this->get_option_name_from_slug($addon_slug);
-
- // Get current option
- $options = get_option($option_name);
-
- if (empty($options)) {
- $options = new stdClass();
- }
-
- $options->license_key = $license_key;
- $options->license_status = $license_status;
-
- update_option($option_name, $options);
- }
-
- /**
- * @return array
- */
- protected function get_addons_list()
- {
- $addons = [
- 'publishpress-content-checklist' => [
- 'slug' => 'publishpress-content-checklist',
- 'title' => __('Content Checklist', 'publishpress'),
- 'description' => __(
- 'Allows PublishPress teams to define tasks that must be complete before content is published.',
- 'publishpress'
- ),
- 'icon_class' => 'fa fa-check-circle',
- 'edd_id' => 6465,
- ],
- 'publishpress-slack' => [
- 'slug' => 'publishpress-slack',
- 'title' => __('Slack support', 'publishpress'),
- 'description' => __(
- 'PublishPress with Slack, so you can get comment and status change notifications directly on Slack.',
- 'publishpress'
- ),
- 'icon_class' => 'fab fa-slack',
- 'edd_id' => 6728,
- ],
- 'publishpress-permissions' => [
- 'slug' => 'publishpress-permissions',
- 'title' => __('Permissions', 'publishpress'),
- 'description' => __(
- 'Allows you to control which users can complete certain tasks, such as publishing content.',
- 'publishpress'
- ),
- 'icon_class' => 'fa fa-lock',
- 'edd_id' => 6920,
- ],
- 'publishpress-woocommerce-checklist' => [
- 'slug' => 'publishpress-woocommerce-checklist',
- 'title' => __('WooCommerce Checklist', 'publishpress'),
- 'description' => __(
- 'This add-on allows WooCommerce teams to define tasks that must be complete before products are published.',
- 'publishpress'
- ),
- 'icon_class' => 'fa fa-shopping-cart',
- 'edd_id' => 7000,
- ],
- 'publishpress-reminders' => [
- 'slug' => 'publishpress-reminders',
- 'title' => __('Reminders', 'publishpress'),
- 'description' => __(
- 'Automatically send notifications before or after content is published. Reminders are very useful for making sure your team meets its deadlines.',
- 'publishpress'
- ),
- 'icon_class' => 'fa fa-bell',
- 'edd_id' => 12556,
- ],
- ];
-
- return $addons;
- }
-
- /**
- * @param $addons
- * @param $plugin_name
- *
- * @return array
- */
- public function filter_allex_addons($addons, $plugin_name)
- {
- if ('publishpress' === $plugin_name) {
- $addons = $this->get_addons_list();
- }
-
- return $addons;
- }
-
- /**
- * @param $slug
- *
- * @return string
- */
- protected function get_option_name_from_slug($slug)
- {
- $options_map = [
- 'publishpress-content-checklist' => 'publishpress_checklist_options',
- 'publishpress-woocommerce-checklist' => 'publishpress_woocommerce_checklist_options',
- 'publishpress-slack' => 'publishpress_slack_options',
- 'publishpress-permissions' => 'publishpress_permissions_options',
- 'publishpress-reminders' => 'publishpress_reminders_options',
- ];
-
- if (array_key_exists($slug, $options_map)) {
- return $options_map[$slug];
- }
-
- return false;
- }
-
- /**
- * @param $license_key
- * @param $addon_slug
- *
- * @return string
- */
- public function filter_allex_addons_get_license_key($license_key, $addon_slug)
- {
- $option_name = $this->get_option_name_from_slug($addon_slug);
-
- // Get the option
- $options = get_option($option_name);
-
- if ( ! empty($options) && is_object($options) && isset($options->license_key)) {
- $license_key = $options->license_key;
- }
-
- return $license_key;
- }
-
- /**
- * @param $license_status
- * @param $addon_slug
- *
- * @return string
- */
- public function filter_allex_addons_get_license_status($license_status, $addon_slug)
- {
- $option_name = $this->get_option_name_from_slug($addon_slug);
-
- // Get the option
- $options = get_option($option_name);
-
- if ( ! empty($options) && is_object($options) && isset($options->license_status)) {
- $license_status = $options->license_status;
- }
-
- return $license_status;
- }
-
- /**
- * @param string $ad_link
- * @param string $plugin_name
- *
- * @return array
- */
- public function filter_allex_upgrade_link($ad_link, $plugin_name)
- {
- if ($plugin_name === 'publishpress') {
- $ad_link = 'https://publishpress.com/welcome-coupon/';
- }
-
- return $ad_link;
- }
-
- /**
- * Renders the admin page
- */
- public function render_admin_page()
- {
- global $publishpress;
-
- $publishpress->settings->print_default_header($publishpress->modules->addons, '');
-
- do_action('allex_echo_addons_page', 'https://publishpress.com/pricing/', 'publishpress');
-
- $publishpress->settings->print_default_footer($publishpress->modules->addons);
- }
- }
-}
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-content-checklist.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-content-checklist.jpg
deleted file mode 100644
index e2433ab9c..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-content-checklist.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multi-site.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multi-site.jpg
deleted file mode 100644
index e9aefe0ea..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multi-site.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multiple-authors.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multiple-authors.jpg
deleted file mode 100644
index 76e91c4a1..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-multiple-authors.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-permissions.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-permissions.jpg
deleted file mode 100644
index 689fa462d..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-permissions.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-slack.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-slack.jpg
deleted file mode 100644
index 0d533a317..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-slack.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-woocommerce-checklist.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-woocommerce-checklist.jpg
deleted file mode 100644
index 5f7fa6be4..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-woocommerce-checklist.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-zapier.jpg b/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-zapier.jpg
deleted file mode 100644
index a842d1faa..000000000
Binary files a/public/wp-content/plugins/publishpress/modules/addons/lib/img/publishpress-zapier.jpg and /dev/null differ
diff --git a/public/wp-content/plugins/publishpress/modules/async-notifications/async-notifications.php b/public/wp-content/plugins/publishpress/modules/async-notifications/async-notifications.php
index 7987bab83..3e8492f40 100644
--- a/public/wp-content/plugins/publishpress/modules/async-notifications/async-notifications.php
+++ b/public/wp-content/plugins/publishpress/modules/async-notifications/async-notifications.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
@@ -28,11 +28,13 @@
* along with PublishPress. If not, see .
*/
+use PublishPress\AsyncNotifications\WPCronAdapter;
use PublishPress\Legacy\Auto_loader;
use PublishPress\Notifications\Traits\Dependency_Injector;
use PublishPress\Notifications\Traits\PublishPress_Module;
+use PublishPress\Notifications\Workflow\Workflow;
-if ( ! class_exists('PP_Async_Notifications')) {
+if (! class_exists('PP_Async_Notifications')) {
/**
* class PP_Async_Notifications. Depends on the Improved Notifications module.
*/
@@ -42,8 +44,6 @@ class PP_Async_Notifications extends PP_Module
const SETTINGS_SLUG = 'pp-async-notifications-settings';
- const DEFAULT_DUPLICATED_NOTIFICATION_TIMEOUT = 600;
-
public $module_name = 'async-notifications';
public $module_url;
@@ -62,22 +62,22 @@ public function __construct()
{
global $publishpress;
- $this->twigPath = dirname(dirname(dirname(__FILE__))) . '/twig';
+ $this->viewsPath = dirname(dirname(dirname(__FILE__))) . '/views';
$this->module_url = $this->get_module_url(__FILE__);
// Register the module with PublishPress
$args = [
- 'title' => __('Async Notifications', 'publishpress'),
- 'short_description' => false,
+ 'title' => __('Async Notifications', 'publishpress'),
+ 'short_description' => false,
'extended_description' => false,
- 'module_url' => $this->module_url,
- 'icon_class' => 'dashicons dashicons-feedback',
- 'slug' => 'async-notifications',
- 'default_options' => [
+ 'module_url' => $this->module_url,
+ 'icon_class' => 'dashicons dashicons-feedback',
+ 'slug' => 'async-notifications',
+ 'default_options' => [
'enabled' => 'on',
],
- 'options_page' => false,
+ 'options_page' => false,
];
// Apply a filter to the default options
@@ -85,7 +85,7 @@ public function __construct()
'publishpress_async_notif_default_options',
$args['default_options']
);
- $this->module = $publishpress->register_module(
+ $this->module = $publishpress->register_module(
PublishPress\Legacy\Util::sanitize_module_name($this->module_name),
$args
);
@@ -102,14 +102,14 @@ public function __construct()
*/
public function init()
{
- add_action('publishpress_notify_using_cron', [$this, 'action_notify_using_cron'], 10, 5);
- add_action('publishpress_cron_notify', [$this, 'action_cron_notify'], 10, 8);
- add_filter('publishpress_notif_workflow_do_action', [$this, 'filter_workflow_do_action'], 10, 3);
+ add_action('publishpress_notifications_running_for_post', [$this, 'schedule_notifications'], 7);
+ add_action(WPCronAdapter::SEND_NOTIFICATION_HOOK, [$this, 'send_notification'], 10, 8);
add_filter('debug_information', [$this, 'filterDebugInformation']);
+ add_filter('publishpress_notifications_stop_sync_notifications', '__return_true');
}
/**
- * Load default editorial metadata the first time the module is loaded
+ * Load default editorial fields the first time the module is loaded
*
* @since 0.7
*/
@@ -127,145 +127,25 @@ public function upgrade($previous_version)
}
/**
- * @param string $action
- * @param PublishPress\Notifications\Workflow\ $workflow
- * @param string $channel
- *
- * @return string
- */
- public function filter_workflow_do_action($action, $workflow, $channel)
- {
- // Change the action to send the notification to the cron, instead of sending it to the receiver.
- $action = 'publishpress_notify_using_cron';
-
- return $action;
- }
-
- /**
- * Enqueue the notification
- *
- * @param $workflow_post
- * @param $action_args
- * @param $receiver
- * @param $content
- * @param $channel
- *
- * @throws Exception;
- */
- public function action_notify_using_cron($workflow_post, $action_args, $receiver, $content, $channel)
- {
- $queue = $this->get_service('notification_queue');
-
- $queue->enqueueNotification($workflow_post, $action_args, $receiver, $content, $channel);
- }
-
- /**
- * Check if the notification was just sent, to avoid duplicated notifications when
- * multiple requests try to run the same job.
- *
- * @param $args
- *
- * @return bool
+ * @param array $params
*/
- protected function is_duplicated_notification($args)
+ public function send_notification($params)
{
- $uid = $this->calculateNotificationUID($args);
-
- $transientName = 'ppnotif_' . $uid;
-
- // Check if we already have the transient.
- if (get_transient($transientName)) {
- // Yes, duplicated notification.
- return true;
+ if (!is_array($params)) {
+ return;
}
+
+ // Work the notification
+ $workflow = Workflow::load_by_id((int)$params['workflow_id']);
+ $workflow->event_args = $params['event_args'];
- /**
- * Filters the value of the timeout to ignore duplicated notifications.
- *
- * @param int $timeout
- * @param string $uid
- *
- * @return int
- */
- $timeout = (int)apply_filters(
- 'pp_duplicated_notification_timeout',
- self::DEFAULT_DUPLICATED_NOTIFICATION_TIMEOUT,
- $uid
- );
-
- // Set the flag and return as non-duplicated.
- set_transient($transientName, 1, $timeout);
-
- return false;
- }
-
- /**
- * @param array $args
- *
- * @return string
- */
- private function calculateNotificationUID($args)
- {
- return md5(maybe_serialize($args));
- }
-
- /**
- * @param $workflowPostId
- * @param $action
- * @param $postId
- * @param $content
- * @param $oldStatus
- * @param $newStatus
- * @param $channel
- * @param $receiver
- */
- public function action_cron_notify(
- $workflowPostId,
- $action,
- $postId,
- $content,
- $oldStatus,
- $newStatus,
- $channel,
- $receiver
- ) {
- // Check if this is a duplicated notification and skip it.
- // I hope this is a temporary fix. When scheduled, some notifications seems to be triggered multiple times
- // by the same cron task.
- if ($this->is_duplicated_notification(func_get_args())) {
+ if (!apply_filters('publishpress_notifications_should_send_notification', true, $workflow)) {
return;
}
- // Work the notification
- $workflowPost = get_post($workflowPostId);
- $actionArgs = [
- 'action' => $action,
- 'post' => get_post($postId),
- 'new_status' => $newStatus,
- 'old_status' => $oldStatus,
- ];
- $receivers = [$receiver];
-
- // Decode the content
- $content = maybe_unserialize(base64_decode($content));
+ do_action('publishpress_notifications_send_notifications_action', $workflow, true);
- /**
- * Triggers the notification. This can be caught by notification channels.
- *
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param array $receivers
- * @param array $content
- * @param array $channel
- */
- do_action(
- 'publishpress_notif_send_notification_' . $channel,
- $workflowPost,
- $actionArgs,
- $receivers,
- $content,
- $channel
- );
+ do_action('publishpress_notifications_async_notification_sent', $params);
}
/**
@@ -280,40 +160,29 @@ public function filterDebugInformation($debugInfo)
$cronTasks = _get_cron_array();
$expectedHooks = [
- 'publishpress_cron_notify',
+ WPCronAdapter::SEND_NOTIFICATION_HOOK,
+ 'publishpress_notifications_send_notification',
];
- if ( ! empty($cronTasks)) {
+ if (! empty($cronTasks)) {
foreach ($cronTasks as $time => $cron) {
foreach ($cron as $hook => $dings) {
- if ( ! in_array($hook, $expectedHooks)) {
+ if (! in_array($hook, $expectedHooks)) {
continue;
}
foreach ($dings as $sig => $data) {
$formattedDate = date('Y-m-d H:i:s', $time);
- $event = $data['args'][1];
- $postId = $data['args'][2];
- $channel = $data['args'][6];
-
- if ($channel === 'email') {
-
- $details = $data['args'][7];
-
- if (is_numeric($details)) {
- $user = get_userdata($details);
-
- $details .= ' - ' . $user->user_email;
- }
-
- $channel .= ' (' . $details . ')';
- }
-
$scheduledNotifications["$hook-$sig-$time"] = [
'label' => $formattedDate,
- 'value' => sprintf(__('Event: %s, Post ID: %s, Channel: %s', 'publishpress'), $event,
- $postId, $channel),
+ 'value' => sprintf(
+ __('Event: %s, Workflow ID: %s, Post ID: %s, User ID: %s', 'publishpress'),
+ $data['args']['event'],
+ $data['args']['workflowId'],
+ $data['args']['postId'],
+ $data['args']['userId']
+ ),
];
}
}
@@ -321,13 +190,24 @@ public function filterDebugInformation($debugInfo)
}
$debugInfo['publishpress-scheduled-notifications'] = [
- 'label' => 'PublishPress Scheduled Notifications in the Cron',
+ 'label' => 'PublishPress Scheduled Notifications in the Cron',
'description' => '',
- 'show_count' => true,
- 'fields' => $scheduledNotifications,
+ 'show_count' => true,
+ 'fields' => $scheduledNotifications,
];
return $debugInfo;
}
+
+ public function schedule_notifications($workflow)
+ {
+ if (!apply_filters('publishpress_notifications_schedule_notification', true, $workflow)) {
+ return;
+ }
+
+ $scheduler = $this->get_service('notification_scheduler');
+
+ $scheduler->scheduleNotification($workflow->workflow_post->ID, $workflow->event_args);
+ }
}
}
diff --git a/public/wp-content/plugins/publishpress/modules/async-notifications/library/QueueInterface.php b/public/wp-content/plugins/publishpress/modules/async-notifications/library/QueueInterface.php
deleted file mode 100644
index fb20a4806..000000000
--- a/public/wp-content/plugins/publishpress/modules/async-notifications/library/QueueInterface.php
+++ /dev/null
@@ -1,45 +0,0 @@
-.
- */
-
-namespace PublishPress\AsyncNotifications;
-
-/**
- * Interface QueueInterface
- *
- * @package PublishPress\NotificationsLog
- */
-interface QueueInterface
-{
- /**
- * Enqueue the notification for async processing.
- *
- * @param $workflowPost
- * @param $actionArgs
- * @param $receivers
- * @param $content
- * @param $channel
- *
- * @throws \Exception
- */
- public function enqueueNotification($workflowPost, $actionArgs, $receivers, $content, $channel);
-}
diff --git a/public/wp-content/plugins/publishpress/modules/async-notifications/library/SchedulerInterface.php b/public/wp-content/plugins/publishpress/modules/async-notifications/library/SchedulerInterface.php
new file mode 100644
index 000000000..d29190810
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/async-notifications/library/SchedulerInterface.php
@@ -0,0 +1,44 @@
+.
+ */
+
+namespace PublishPress\AsyncNotifications;
+
+use Exception;
+
+/**
+ * Interface QueueInterface
+ *
+ * @package PublishPress\NotificationsLog
+ */
+interface SchedulerInterface
+{
+ /**
+ * Enqueue the notification for async processing.
+ *
+ * @param $workflowPostId
+ * @param $eventArgs
+ *
+ * @throws Exception
+ */
+ public function scheduleNotification($workflowPostId, $eventArgs);
+}
diff --git a/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCron.php b/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCron.php
deleted file mode 100644
index 7f289c802..000000000
--- a/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCron.php
+++ /dev/null
@@ -1,133 +0,0 @@
-.
- */
-
-namespace PublishPress\AsyncNotifications;
-
-use PublishPress\Notifications\Traits\Dependency_Injector;
-
-/**
- * Class DBAdapter
- *
- * @package PublishPress\AsyncNotifications
- */
-class WPCron implements QueueInterface
-{
- use Dependency_Injector;
-
- /**
- * Enqueue the notification for async processing.
- *
- * @param $workflowPost
- * @param $actionArgs
- * @param $receivers
- * @param $content
- * @param $channel
- *
- * @throws \Exception
- */
- public function enqueueNotification($workflowPost, $actionArgs, $receivers, $content, $channel)
- {
- if ( ! is_array($receivers)) {
- $receivers = [$receivers];
- }
-
- if ( ! empty($receivers)) {
- $baseData = [
- // workflow_post_id
- $workflowPost->ID,
- // action
- $actionArgs['action'],
- // post_id
- $actionArgs['post']->ID,
- // content
- base64_encode(maybe_serialize($content)),
- // old_status
- isset($actionArgs['old_status']) ? $actionArgs['old_status'] : null,
- // new_status
- isset($actionArgs['new_status']) ? $actionArgs['new_status'] : null,
- // channel
- $channel,
- ];
-
- $timestamp = apply_filters('publishpress_notif_async_timestamp', time(), $workflowPost->ID,
- $actionArgs['post']->ID);
-
- if (false === $timestamp) {
- // Abort.
- error_log('PublishPress aborted a notification. Invalid timestamp for workflow ' . $workflowPost->ID);
-
- return;
- }
-
- // Create one notification for each receiver in the queue
- foreach ($receivers as $receiver) {
- // Base data
- $data = $baseData;
-
- // Receiver
- $data[] = $receiver;
-
- $deliveryResult = [
- $receiver => $this->scheduleEvent($data, $timestamp),
- ];
-
- $subject = isset($content['subject']) ? $content['subject'] : '';
- $body = isset($content['body']) ? $content['body'] : '';
-
- /**
- * @param WP_Post $workflow_post
- * @param array $action_args
- * @param string $channel
- * @param string $subject
- * @param string $body
- * @param array $deliveryResult
- */
- $actionArgs['async'] = 1;
- do_action('publishpress_notif_notification_sending', $workflowPost, $actionArgs, $channel, $subject, $body,
- $deliveryResult);
- }
-
- do_action('publishpress_enqueue_notification', $workflowPost->ID, $actionArgs['action'],
- $actionArgs['post']->ID, $actionArgs);
- }
- }
-
- /**
- * Schedule the notification event.
- *
- * @param $data
- * @param $timestamp
- *
- * @return bool
- * @throws \Exception
- *
- */
- protected function scheduleEvent($data, $timestamp)
- {
- return wp_schedule_single_event(
- $timestamp,
- 'publishpress_cron_notify',
- $data
- );
- }
-}
diff --git a/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCronAdapter.php b/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCronAdapter.php
new file mode 100644
index 000000000..1abb68588
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/async-notifications/library/WPCronAdapter.php
@@ -0,0 +1,130 @@
+.
+ */
+
+namespace PublishPress\AsyncNotifications;
+
+use Exception;
+use PublishPress\Notifications\Helper;
+use PublishPress\Notifications\Traits\Dependency_Injector;
+use PublishPress\Notifications\Workflow\Step\Action\Notification;
+
+/**
+ * Class DBAdapter
+ *
+ * @package PublishPress\AsyncNotifications
+ */
+class WPCronAdapter implements SchedulerInterface
+{
+ use Dependency_Injector;
+
+ const SEND_NOTIFICATION_HOOK = 'publishpress_notifications_send_notification';
+
+ /**
+ * Schedule the notification for async processing.
+ *
+ * @param $workflowPostId
+ * @param $eventArgs
+ *
+ * @throws Exception
+ */
+ public function scheduleNotification($workflowPostId, $eventArgs)
+ {
+ $data = [
+ 'workflow_id' => $workflowPostId,
+ 'event_args' => $eventArgs,
+ ];
+
+ $delay = apply_filters(
+ 'publishpress_notifications_schedule_delay_in_seconds',
+ Notification::DEFAULT_DELAY_FOR_SENDING_NOTIFICATION_IN_SECONDS
+ );
+ $roundFactor = apply_filters(
+ 'publishpress_notifications_schedule_round_factor_in_seconds',
+ Notification::DEFAULT_ROUND_FACTOR_FOR_NOTIFICATION_IN_SECONDS
+ );
+
+ // We use a round factor for stopping multiple notifications with the same content
+ $time = time() + $delay;
+ $time -= $time % $roundFactor;
+
+ if (Helper::isDuplicatedNotificationSchedule($time, $data)) {
+ return;
+ }
+
+ /**
+ * @param array $data
+ */
+ $data = apply_filters('publishpress_notifications_scheduled_data', $data);
+
+ $timestamp = apply_filters(
+ 'publishpress_notifications_scheduled_time_for_notification',
+ $time,
+ $workflowPostId,
+ $eventArgs['params']['post_id']
+ );
+
+ if (false === $timestamp) {
+ if (defined('WP_DEBUG') && WP_DEBUG === true) {
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions
+ error_log('PublishPress aborted a notification. Invalid timestamp for the workflow ' . $workflowPostId);
+ // phpcs:enable
+ }
+
+ return;
+ }
+
+ $cronId = $this->getCronId($data);
+ do_action('publishpress_notifications_scheduled_cron_task', $data, $cronId);
+
+ $data['result'] = $this->scheduleEventInTheCron($data, $timestamp);
+
+ /**
+ * @param array $data
+ */
+ do_action('publishpress_notifications_scheduled_notification', $data);
+ }
+
+ private function getCronId($args)
+ {
+ return md5(maybe_serialize([$args]));
+ }
+
+ /**
+ * Schedule the notification event.
+ *
+ * @param $args
+ * @param $timestamp
+ *
+ * @return bool
+ * @throws Exception
+ *
+ */
+ private function scheduleEventInTheCron($args, $timestamp)
+ {
+ return wp_schedule_single_event(
+ $timestamp,
+ self::SEND_NOTIFICATION_HOOK,
+ [$args]
+ );
+ }
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/calendar.php b/public/wp-content/plugins/publishpress/modules/calendar/calendar.php
index f259c690f..f80419a45 100644
--- a/public/wp-content/plugins/publishpress/modules/calendar/calendar.php
+++ b/public/wp-content/plugins/publishpress/modules/calendar/calendar.php
@@ -3,7 +3,7 @@
* @package PublishPress
* @author PublishPress
*
- * Copyright (c) 2018 PublishPress
+ * Copyright (c) 2022 PublishPress
*
* ------------------------------------------------------------------------------
* Based on Edit Flow
@@ -28,15 +28,17 @@
* along with PublishPress. If not, see .
*/
+use PublishPress\Legacy\Util;
use PublishPress\Notifications\Traits\Dependency_Injector;
-if ( ! class_exists('PP_Calendar')) {
+if (! class_exists('PP_Calendar')) {
/**
* class PP_Calendar
* Threaded commenting in the admin for discussion between writers and editors
*
* @author batmoo
*/
+ #[\AllowDynamicProperties]
class PP_Calendar extends PP_Module
{
use Dependency_Injector;
@@ -70,7 +72,7 @@ class PP_Calendar extends PP_Module
/**
* Time 12h-format without leading zeroes.
*/
- const TIME_FORMAT_12H_WO_LEADING_ZEROES = 'ga';
+ const TIME_FORMAT_12H_NO_LEADING_ZEROES = 'ga';
/**
* Time 12h-format with leading zeroes.
@@ -82,12 +84,16 @@ class PP_Calendar extends PP_Module
*/
const TIME_FORMAT_24H = 'H';
+ const VIEW_CAPABILITY = 'pp_view_calendar';
+
/**
* [$module description]
*
* @var [type]
*/
public $module;
+
+ public $module_url;
/**
* [$start_date description]
@@ -99,30 +105,30 @@ class PP_Calendar extends PP_Module
/**
* [$current_week description]
*
- * @var integer
+ * @var int
*/
public $current_week = 1;
/**
* Default number of weeks to show per screen
*
- * @var integer
+ * @var int
*/
public $total_weeks = 6;
/**
* Counter of hidden posts per date square
*
- * @var integer
+ * @var int
*/
public $hidden = 0;
/**
* Total number of posts to be shown per square before 'more' link
*
- * @var integer
+ * @var int
*/
- public $max_visible_posts_per_date = 4;
+ public $default_max_visible_posts_per_date = 4;
/**
* [$post_date_cache description]
@@ -145,6 +151,59 @@ class PP_Calendar extends PP_Module
*/
private $default_date_time_format = 'ha';
+ /**
+ * @var array
+ */
+ private $postTypeObjectCache = [];
+
+ /**
+ * @var \PublishPress\Utility\Date
+ */
+ private $dateUtil;
+
+ /**
+ * @var array
+ */
+ public $filters;
+
+ /**
+ * @var array
+ */
+ public $form_filters = [];
+
+ /**
+ * @var array
+ */
+ public $form_filter_list = [];
+
+ /**
+ * [$user_filters description]
+ *
+ * @var [type]
+ */
+ public $user_filters;
+
+ /**
+ * Custom methods
+ *
+ * @var array
+ */
+ private $terms_options = [];
+
+ /**
+ * [$content_calendar_datas description]
+ *
+ * @var [type]
+ */
+ public $content_calendar_datas;
+
+ /**
+ * Content calendar methods
+ *
+ * @var [type]
+ */
+ private $content_calendar_methods;
+
/**
* Construct the PP_Calendar class
*/
@@ -154,44 +213,75 @@ public function __construct()
// Register the module with PublishPress
$args = [
- 'title' => __('Calendar', 'publishpress'),
- 'short_description' => false,
- 'extended_description' => false,
- 'module_url' => $this->module_url,
- 'icon_class' => 'dashicons dashicons-calendar-alt',
- 'slug' => 'calendar',
- 'post_type_support' => 'pp_calendar',
- 'default_options' => [
- 'enabled' => 'on',
- 'post_types' => $this->pre_select_all_post_types(),
- 'ics_subscription' => 'on',
- 'ics_secret_key' => wp_generate_password(),
- 'show_posts_publish_time' => 'on',
+ 'title' => __('Content Calendar', 'publishpress'),
+ 'short_description' => false,
+ 'extended_description' => false,
+ 'module_url' => $this->module_url,
+ 'icon_class' => 'dashicons dashicons-calendar-alt',
+ 'slug' => 'calendar',
+ 'post_type_support' => 'pp_calendar',
+ 'default_options' => [
+ 'enabled' => 'on',
+ 'post_types' => [
+ 'post' => 'on',
+ 'page' => 'off',
+ ],
+ 'ics_subscription' => 'on',
+ 'ics_subscription_public_visibility' => 'off',
+ 'ics_secret_key' => wp_generate_password(),
+ 'show_posts_publish_time' => ['publish' => 'on', 'future' => 'on'],
+ 'default_publish_time' => '',
+ 'show_calendar_posts_full_title' => 'off',
+ 'calendar_today_in_first_row' => 'on',
+ // Leave default as non array to confirm if user save settings or not
+ 'content_calendar_filters' => '',
+ 'content_calendar_custom_filters' => '',
],
- 'messages' => [
- 'post-date-updated' => __('Post date updated.', 'publishpress'),
- 'update-error' => __('There was an error updating the post. Please try again.',
- 'publishpress'),
- 'published-post-ajax' => __("Updating the post date dynamically doesn't work for published content. Please edit the post .",
- 'publishpress'),
- 'key-regenerated' => __('iCal secret key regenerated. Please inform all users they will need to resubscribe.',
- 'publishpress'),
+ 'messages' => [
+ 'post-date-updated' => __('Post date updated.', 'publishpress'),
+ 'status-updated' => __('Post status updated.', 'publishpress'),
+ 'update-error' => __(
+ 'There was an error updating the post. Please try again.',
+ 'publishpress'
+ ),
+ 'published-post-ajax' => __(
+ "Updating the post date dynamically doesn't work for published content. Please edit the post .",
+ 'publishpress'
+ ),
+ 'key-regenerated' => __(
+ 'iCal secret key regenerated. Please inform all users they will need to resubscribe.',
+ 'publishpress'
+ ),
],
- 'configure_page_cb' => 'print_configure_view',
- 'settings_help_tab' => [
- 'id' => 'pp-calendar-overview',
- 'title' => __('Overview', 'publishpress'),
- 'content' => __('The calendar is a convenient week-by-week or month-by-month view into your content. Quickly see which stories are on track to being published on time, and which will need extra effort.
',
- 'publishpress'),
+ 'configure_page_cb' => 'print_configure_view',
+ 'settings_help_tab' => [
+ 'id' => 'pp-calendar-overview',
+ 'title' => __('Overview', 'publishpress'),
+ 'content' => __(
+ 'The calendar is a convenient week-by-week or month-by-month view into your content. Quickly see which stories are on track to being published on time, and which will need extra effort.
',
+ 'publishpress'
+ ),
],
- 'settings_help_sidebar' => __('For more information:
Calendar Documentation
PublishPress on Github
',
- 'publishpress'),
- 'show_configure_btn' => false,
- 'options_page' => true,
- 'page_link' => admin_url('admin.php?page=pp-calendar'),
+ 'settings_help_sidebar' => __(
+ 'For more information:
Calendar Documentation
PublishPress on Github
',
+ 'publishpress'
+ ),
+ 'show_configure_btn' => false,
+ 'options_page' => true,
+ 'page_link' => admin_url('admin.php?page=pp-calendar'),
];
+ $this->dateUtil = new \PublishPress\Utility\Date();
+
$this->module = PublishPress()->register_module('calendar', $args);
+
+ // Load utilities files.
+ $this->load_utilities_files();
+
+ $this->content_calendar_methods = new PP_Calendar_Methods([
+ 'module' => $this->module,
+ 'module_url' => $this->module_url
+ ]);
}
/**
@@ -201,57 +291,62 @@ public function __construct()
*/
public function init()
{
+
add_action('template_include', [$this, 'handle_public_calendar_feed']);
+ if (is_admin()) {
+ $this->setDefaultCapabilities();
+ }
+
// Can view the calendar?
- if ( ! $this->check_capability()) {
+ if (! $this->currentUserCanViewCalendar()) {
return false;
}
- // Menu
- add_filter('publishpress_admin_menu_slug', [$this, 'filter_admin_menu_slug']);
- add_action('publishpress_admin_menu_page', [$this, 'action_admin_menu_page']);
- add_action('publishpress_admin_submenu', [$this, 'action_admin_submenu']);
+ if (is_admin()) {
+ // Menu
+ add_filter('publishpress_admin_menu_slug', [$this, 'filter_admin_menu_slug']);
+ add_action('publishpress_admin_menu_page', [$this, 'action_admin_menu_page']);
+ add_action('publishpress_admin_submenu', [$this, 'action_admin_submenu']);
- // .ics calendar subscriptions
- add_action('wp_ajax_pp_calendar_ics_subscription', [$this, 'handle_ics_subscription']);
- add_action('wp_ajax_nopriv_pp_calendar_ics_subscription', [$this, 'handle_ics_subscription']);
+ // .ics calendar subscriptions
+ add_action('wp_ajax_pp_calendar_ics_subscription', [$this, 'handle_ics_subscription']);
+ add_action('wp_ajax_nopriv_pp_calendar_ics_subscription', [$this, 'handle_ics_subscription']);
- // Define the create-post capability
- $this->create_post_cap = apply_filters('pp_calendar_create_post_cap', 'edit_posts');
+ // Define the create-post capability
+ $this->create_post_cap = apply_filters('pp_calendar_create_post_cap', 'edit_posts');
- require_once PUBLISHPRESS_BASE_PATH . '/common/php/' . 'screen-options.php';
+ require_once PUBLISHPRESS_BASE_PATH . '/common/php/' . 'screen-options.php';
- add_action('admin_init', [$this, 'register_settings']);
- add_action('admin_print_styles', [$this, 'add_admin_styles']);
- add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_scripts']);
+ add_action('admin_init', [$this->content_calendar_methods, 'register_settings']);
+ add_action('admin_print_styles', [$this->content_calendar_methods, 'add_admin_styles']);
+ add_action('admin_enqueue_scripts', [$this, 'enqueue_admin_scripts']);
- // Ajax manipulation for the calendar
- add_action('wp_ajax_pp_calendar_drag_and_drop', [$this, 'handle_ajax_drag_and_drop']);
+ add_action('wp_ajax_publishpress_calendar_search_authors', ['PP_Calendar_Utilities', 'searchAuthors']);
+ add_action('wp_ajax_publishpress_calendar_search_terms', ['PP_Calendar_Utilities', 'searchTerms']);
+ add_action('wp_ajax_publishpress_calendar_get_data', [$this, 'fetchCalendarDataJson']);
+ add_action('wp_ajax_publishpress_calendar_move_item', [$this->content_calendar_methods, 'moveCalendarItemToNewDate']);
+ add_action('wp_ajax_publishpress_calendar_get_post_data', [$this, 'getPostData']);
+ add_action('wp_ajax_publishpress_calendar_get_post_type_fields', [$this, 'getPostTypeFields']);
+ add_action('wp_ajax_publishpress_calendar_create_item', [$this->content_calendar_methods, 'createItem']);
- // Ajax insert post placeholder for a specific date
- add_action('wp_ajax_pp_insert_post', [$this, 'handle_ajax_insert_post']);
+ // Action to regenerate the calendar feed secret
+ add_action('admin_init', [$this->content_calendar_methods, 'handle_regenerate_calendar_feed_secret']);
- // Update metadata
- add_action('wp_ajax_pp_calendar_update_metadata', [$this, 'handle_ajax_update_metadata']);
+ add_filter('post_date_column_status', [$this->content_calendar_methods, 'filter_post_date_column_status'], 12, 4);
+
+ add_filter('pp_calendar_after_form_submission_sanitize_title', [$this, 'sanitize_text_input'], 10, 1);
+ add_filter('pp_calendar_after_form_submission_sanitize_content', [$this, 'sanitize_text_input'], 10, 1);
+ add_filter('pp_calendar_after_form_submission_sanitize_author', [$this, 'sanitize_author_input'], 10, 1);
+ add_filter('pp_calendar_after_form_submission_validate_author', [$this, 'validateAuthorForPost'], 10, 1);
+ add_filter('admin_body_class', ['PP_Calendar_Utilities', 'add_admin_body_class']);
+ }
// Clear li cache for a post when post cache is cleared
add_action('clean_post_cache', [$this, 'action_clean_li_html_cache']);
- // Action to regenerate the calendar feed secret
- add_action('admin_init', [$this, 'handle_regenerate_calendar_feed_secret']);
-
- add_filter('post_date_column_status', [$this, 'filter_post_date_column_status'], 12, 4);
-
- if ($this->showPostsPublishTime()) {
- // Cache WordPress default date/time formats.
- $this->default_date_time_format = get_option('date_format') . ' ' . get_option('time_format');
- }
-
- add_filter('pp_calendar_after_form_submission_sanitize_title', [$this, 'sanitize_text_input'], 10, 1);
- add_filter('pp_calendar_after_form_submission_sanitize_content', [$this, 'sanitize_text_input'], 10, 1);
- add_filter('pp_calendar_after_form_submission_sanitize_author', [$this, 'sanitize_author_input'], 10, 1);
- add_filter('pp_calendar_after_form_submission_validate_author', [$this, 'validate_author_input'], 10, 1);
+ // Cache WordPress default date/time formats.
+ $this->default_date_time_format = get_option('date_format') . ' ' . get_option('time_format');
}
/**
@@ -267,78 +362,26 @@ public function handle_public_calendar_feed($original_template)
}
// Confirm all of the arguments are present
- if ( ! isset($_GET['user'], $_GET['user_key'], $_GET['pp_action'])) {
+ if (! isset($_GET['user'], $_GET['user_key'], $_GET['pp_action'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
return $original_template;
}
// Confirm the action
- if ('pp_calendar_ics_feed' !== $_GET['pp_action']) {
+ if ('pp_calendar_ics_feed' !== $_GET['pp_action']) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
return $original_template;
}
- add_filter('pp_calendar_total_weeks', [$this, 'filter_calendar_total_weeks_public_feed'], 10, 3);
- add_filter('pp_calendar_ics_subscription_start_date', [$this, 'filter_calendar_start_date_public_feed'],
- 10);
+ add_filter('pp_calendar_total_weeks', [$this->content_calendar_methods, 'filter_calendar_total_weeks_public_feed'], 10, 3);
+ add_filter(
+ 'pp_calendar_ics_subscription_start_date',
+ [$this->content_calendar_methods, 'filter_calendar_start_date_public_feed'],
+ 10
+ );
$this->handle_ics_subscription();
- remove_filter('pp_calendar_total_weeks', [$this, 'filter_calendar_total_weeks_public_feed']);
- remove_filter('pp_calendar_ics_subscription_start_date', [$this, 'filter_calendar_start_date_public_feed']);
- }
-
- /**
- * @param $weeks
- * @param $startDate
- * @param $context
- *
- * @return float|int
- */
- public function filter_calendar_total_weeks_public_feed($weeks, $startDate, $context)
- {
- if ( ! isset($_GET['end'])) {
- $end = 'm2';
- } else {
- $end = preg_replace('/[^wm0-9]/', '', $_GET['end']);
- }
-
- if (preg_match('/m[0-9]*/', $end)) {
- $weeks = (int)str_replace('m', '', $end) * 4;
- } else {
- $weeks = (int)str_replace('w', '', $end);
- }
-
- // Calculate the diff in weeks from start date until now
- $today = date('Y-m-d');
-
- $first = DateTime::createFromFormat('Y-m-d', $startDate);
- $second = DateTime::createFromFormat('Y-m-d', $today);
-
- $diff = floor($first->diff($second)->days / 7);
-
- $weeks += $diff;
-
- return $weeks;
- }
-
- /**
- * @param $startDate
- *
- * @return false|string
- */
- public function filter_calendar_start_date_public_feed($startDate)
- {
- if ( ! isset($_GET['start'])) {
- // Current week
- $start = 0;
- } else {
- $start = (int)$_GET['start'];
- }
-
- if ($start > 0) {
- $startDate = date('Y-m-d', strtotime('-' . $start . ' months', strtotime($startDate)));
- }
-
- return $startDate;
+ remove_filter('pp_calendar_total_weeks', [$this->content_calendar_methods, 'filter_calendar_total_weeks_public_feed']);
+ remove_filter('pp_calendar_ics_subscription_start_date', [$this->content_calendar_methods, 'filter_calendar_start_date_public_feed']);
}
/**
@@ -369,8 +412,8 @@ public function action_admin_menu_page()
}
$publishpress->add_menu_page(
- esc_html__('Calendar', 'publishpress'),
- 'pp_view_calendar',
+ esc_html__('Content Calendar', 'publishpress'),
+ $this->getViewCapability(),
self::MENU_SLUG,
[$this, 'render_admin_page']
);
@@ -386,11 +429,12 @@ public function action_admin_submenu()
// Main Menu
add_submenu_page(
$publishpress->get_menu_slug(),
- esc_html__('Calendar', 'publishpress'),
- esc_html__('Calendar', 'publishpress'),
- apply_filters('pp_view_calendar_cap', 'pp_view_calendar'),
+ esc_html__('Content Calendar', 'publishpress'),
+ esc_html__('Content Calendar', 'publishpress'),
+ $this->getViewCapability(),
self::MENU_SLUG,
- [$this, 'render_admin_page']
+ [$this, 'render_admin_page'],
+ 5
);
}
@@ -401,6 +445,16 @@ public function action_admin_submenu()
*/
public function install()
{
+
+ $viewCapability = $this->getViewCapability();
+ $eligible_roles = ['administrator', 'editor', 'author'];
+
+ foreach ($eligible_roles as $eligible_role) {
+ $role = get_role($eligible_role);
+ if (is_object($role) && !$role->has_cap($viewCapability)) {
+ $role->add_cap($viewCapability);
+ }
+ }
}
/**
@@ -428,34 +482,15 @@ public function upgrade($previous_version)
}
}
- /**
- * Add any necessary CSS to the WordPress admin
- *
- * @uses wp_enqueue_style()
- */
- public function add_admin_styles()
- {
- global $pagenow;
-
- // Only load calendar styles on the calendar page
- if ('admin.php' === $pagenow && isset($_GET['page']) && $_GET['page'] === 'pp-calendar') {
- wp_enqueue_style('publishpress-calendar-css', $this->module_url . 'lib/calendar.css', false,
- PUBLISHPRESS_VERSION);
- }
- }
-
/**
* Check whether the user should have the ability to view the calendar.
* Returns true if the user can view.
*
* @return bool
*/
- protected function check_capability()
+ private function currentUserCanViewCalendar()
{
- $view_calendar_cap = 'pp_view_calendar';
- $view_calendar_cap = apply_filters('pp_view_calendar_cap', $view_calendar_cap);
-
- return current_user_can($view_calendar_cap);
+ return current_user_can($this->getViewCapability());
}
/**
@@ -466,114 +501,31 @@ protected function check_capability()
*/
public function enqueue_admin_scripts()
{
- if ($this->is_whitelisted_functional_view()) {
- $this->enqueue_datepicker_resources();
-
- $js_libraries = [
- 'jquery',
- 'jquery-ui-core',
- 'jquery-ui-sortable',
- 'jquery-ui-draggable',
- 'jquery-ui-droppable',
- 'clipboard-js',
- ];
- foreach ($js_libraries as $js_library) {
- wp_enqueue_script($js_library);
- }
- wp_enqueue_script('clipboard-js', $this->module_url . 'lib/clipboard.min.js', ['jquery'],
- PUBLISHPRESS_VERSION, true);
- wp_enqueue_script('publishpress-calendar-js', $this->module_url . 'lib/calendar.js', $js_libraries,
- PUBLISHPRESS_VERSION, true);
-
- $pp_cal_js_params = [
- 'can_add_posts' => current_user_can($this->create_post_cap) ? 'true' : 'false',
- ];
- wp_localize_script('publishpress-calendar-js', 'pp_calendar_params', $pp_cal_js_params);
- }
- }
-
- /**
- * Handle an AJAX request from the calendar to update a post's timestamp.
- * Notes:
- * - For Post Time, if the post is unpublished, the change sets the publication timestamp
- * - If the post was published or scheduled for the future, the change will change the timestamp. 'publish' posts
- * will become scheduled if moved past today and 'future' posts will be published if moved before today
- * - Need to respect user permissions. Editors can move all, authors can move their own, and contributors can't move at all
- *
- * @since 0.7
- */
- public function handle_ajax_drag_and_drop()
- {
- global $wpdb;
-
- // Nonce check!
- if ( ! wp_verify_nonce($_POST['nonce'], 'pp-calendar-modify')) {
- $this->print_ajax_response('error', $this->module->messages['nonce-failed']);
- }
-
- // Check that we got a proper post
- $post_id = (int)$_POST['post_id'];
- $post = get_post($post_id);
- if ( ! $post) {
- $this->print_ajax_response('error', $this->module->messages['missing-post']);
- }
-
- // Check that the user can modify the post
- if ( ! $this->current_user_can_modify_post($post)) {
- $this->print_ajax_response('error', $this->module->messages['invalid-permissions']);
- }
-
- // Check that the new date passed is a valid one
- $next_date_full = strtotime($_POST['next_date']);
- if ( ! $next_date_full) {
- $this->print_ajax_response('error',
- __('Something is wrong with the format for the new date.', 'publishpress'));
- }
-
- // Persist the old timestamp because we can't manipulate the exact time on the calendar
- // Bump the last modified timestamps too
- $existing_time = date('H:i:s', strtotime($post->post_date));
- $existing_time_gmt = date('H:i:s', strtotime($post->post_date_gmt));
- $new_values = [
- 'post_date' => date('Y-m-d', $next_date_full) . ' ' . $existing_time,
- 'post_modified' => current_time('mysql'),
- 'post_modified_gmt' => current_time('mysql', 1),
- ];
+ global $pagenow;
- // By default, adding a post to the calendar will set the timestamp.
- // If the user don't desires that to be the behavior, they can set the result of this filter to 'false'
- // With how WordPress works internally, setting 'post_date_gmt' will set the timestamp
- if (apply_filters('pp_calendar_allow_ajax_to_set_timestamp', true)) {
- $new_values['post_date_gmt'] = date('Y-m-d', $next_date_full) . ' ' . $existing_time_gmt;
- }
+ // Only load calendar scripts on the calendar page
+ if ('admin.php' === $pagenow && isset($_GET['page']) && $_GET['page'] === 'pp-calendar') {
+
+ // update content calendar form action early
+ $this->update_content_calendar_form_action(false);
- // Check that it's already published, and adjust the status.
- // If is in the past or today, set as published. If future, as scheduled.
- $new_values['post_status'] = $post->post_status;
- if (in_array($post->post_status, $this->published_statuses) || $post->post_status === 'future') {
- if ($next_date_full <= time()) {
- $new_values['post_status'] = 'publish';
- } else {
- $new_values['post_status'] = 'future';
- }
- }
+ $this->enqueue_datepicker_resources();
- // We have to do SQL unfortunately because of core bugginess
- // Note to those reading this: bug Nacin to allow us to finish the custom status API
- // See http://core.trac.wordpress.org/ticket/18362
- $response = $wpdb->update($wpdb->posts, $new_values, [
- 'ID' => $post->ID,
- ]);
- clean_post_cache($post->ID);
- if ( ! $response) {
- $this->print_ajax_response('error', $this->module->messages['update-error']);
+ $method_args = [];
+ $method_args['content_calendar_datas'] = $this->get_content_calendar_datas();
+ $method_args['userFilters'] = $this->get_filters();
+ $method_args['postStatuses'] = $this->getPostStatusOptions();
+ $method_args['selectedPostTypes'] = $this->get_selected_post_types();
+ $method_args['timeFormat'] = $this->getCalendarTimeFormat();
+ $method_args['proActive'] = Util::isPlannersProActive();
+ $method_args['operator_labels'] = $this->meta_query_operator_label();
+ $method_args['post_statuses'] = $this->get_post_statuses();
+ $method_args['terms_options'] = $this->terms_options;
+ $method_args['form_filters'] = $this->form_filters;
+ $method_args['form_filter_list'] = $this->form_filter_list;
+ $method_args['all_filters'] = $this->filters;
+ $this->content_calendar_methods->enqueue_admin_scripts($method_args);
}
-
- $data = [
- 'post_status' => $new_values['post_status'],
- ];
- $this->print_ajax_response('success', $this->module->messages['post-date-updated'], $data);
- exit;
}
/**
@@ -583,264 +535,281 @@ public function handle_ajax_drag_and_drop()
*/
public function handle_ics_subscription()
{
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
+
// Only do .ics subscriptions when the option is active
if ('on' != $this->module->options->ics_subscription) {
die();
- } // End if().
+ }
- // Confirm all of the arguments are present
- if ( ! isset($_GET['user'], $_GET['user_key'])) {
+ // Confirm all the arguments are present
+ if (! isset($_GET['user'], $_GET['user_key'])) {
die();
- } // End if().
+ }
// Confirm this is a valid request
- $user = sanitize_user($_GET['user']);
- $user_key = sanitize_user($_GET['user_key']);
+ $user = sanitize_user($_GET['user']);
+ $user_key = sanitize_user($_GET['user_key']);
$ics_secret_key = $this->module->options->ics_secret_key;
- if ( ! $ics_secret_key || md5($user . $ics_secret_key) !== $user_key) {
- die($this->module->messages['nonce-failed']);
+ if (! $ics_secret_key || md5($user . $ics_secret_key) !== $user_key) {
+ die(esc_html($this->module->messages['nonce-failed']));
}
// Set up the post data to be printed
- $post_query_args = [];
- $calendar_filters = $this->calendar_filters();
+ $post_query_args = [];
+ $calendar_filters = PP_Calendar_Utilities::calendar_filters();
foreach ($calendar_filters as $filter) {
- if (isset($_GET[$filter]) && false !== ($value = $this->sanitize_filter($filter, $_GET[$filter]))) {
+ if (isset($_GET[$filter]) && false !== ($value = $this->sanitize_filter(
+ $filter,
+ sanitize_text_field(
+ $_GET[$filter]
+ )
+ ))) {
$post_query_args[$filter] = $value;
}
}
// Set the start date for the posts_where filter
- $this->start_date = apply_filters('pp_calendar_ics_subscription_start_date',
- $this->get_beginning_of_week(date('Y-m-d', current_time('timestamp'))));
+ $this->start_date = sanitize_text_field(
+ apply_filters(
+ 'pp_calendar_ics_subscription_start_date',
+ PP_Calendar_Utilities::get_beginning_of_week(date('Y-m-d', current_time('timestamp'))) // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
+ )
+ );
+
+ $this->total_weeks = sanitize_text_field(
+ apply_filters(
+ 'pp_calendar_total_weeks',
+ $this->total_weeks,
+ $this->start_date,
+ 'ics_subscription'
+ )
+ );
- $this->total_weeks = apply_filters('pp_calendar_total_weeks', $this->total_weeks, $this->start_date,
- 'ics_subscription');
+ $vCalendar = new Sabre\VObject\Component\VCalendar(
+ [
+ 'PRODID' => '-//PublishPress//PublishPress ' . PUBLISHPRESS_VERSION . '//EN',
+ ]
+ );
+
+ $timezoneString = $this->dateUtil->getTimezoneString();
+
+ PP_Calendar_Utilities::generateVtimezone(
+ $vCalendar,
+ $timezoneString,
+ strtotime($this->start_date),
+ (int)(strtotime($this->start_date) + ($this->total_weeks * 7 * 24 * 60 * 60))
+ );
+ $timeZone = new DateTimeZone($timezoneString);
- $formatted_posts = [];
for ($current_week = 1; $current_week <= $this->total_weeks; $current_week++) {
// We need to set the object variable for our posts_where filter
$this->current_week = $current_week;
- $week_posts = $this->get_calendar_posts_for_week($post_query_args, 'ics_subscription');
+ $week_posts = $this->get_calendar_posts_for_week($post_query_args, 'ics_subscription');
foreach ($week_posts as $date => $day_posts) {
foreach ($day_posts as $num => $post) {
- $start_date = date('Ymd', strtotime($post->post_date)) . 'T' . date('His',
- strtotime($post->post_date));
- $end_date = date('Ymd', strtotime($post->post_date) + (5 * 60)) . 'T' . date('His',
- strtotime($post->post_date) + (5 * 60));
- $last_modified = date('Ymd', strtotime($post->post_modified_gmt)) . 'T' . date('His',
- strtotime($post->post_modified_gmt)) . 'Z';
+ if (empty($post->post_date_gmt) || $post->post_date_gmt == '0000-00-00 00:00:00') {
+ $calendar_date = get_gmt_from_date($post->post_date);
+ } else {
+ $calendar_date = $post->post_date_gmt;
+ }
+
+ $start_date = new DateTime($calendar_date);
+ $start_date->setTimezone($timeZone);
+
+ $end_date = new DateTime(date('Y-m-d H:i:s', strtotime($calendar_date) + (5 * 60))); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
+ $end_date->setTimezone($timeZone);
+
+ if (empty($post->post_modified_gmt) || $post->post_modified_gmt == '0000-00-00 00:00:00') {
+ $calendar_modified_date = get_gmt_from_date($post->post_modified);
+ } else {
+ $calendar_modified_date = $post->post_modified_gmt;
+ }
+
+ $last_modified = new DateTime($calendar_modified_date);
+ $last_modified->setTimezone($timeZone);
// Remove the convert chars and wptexturize filters from the title
remove_filter('the_title', 'convert_chars');
remove_filter('the_title', 'wptexturize');
- $formatted_post = [
- 'BEGIN' => 'VEVENT',
- 'UID' => $post->guid,
- 'SUMMARY' => $this->do_ics_escaping(apply_filters('the_title',
- $post->post_title)) . ' - ' . $this->get_post_status_friendly_name(get_post_status($post->ID)),
- 'DTSTART' => $start_date,
- 'DTEND' => $end_date,
- 'LAST-MODIFIED' => $last_modified,
- 'URL' => get_post_permalink($post->ID),
- ];
-
// Description should include everything visible in the calendar popup
- $information_fields = $this->get_post_information_fields($post);
- $formatted_post['DESCRIPTION'] = '';
- if ( ! empty($information_fields)) {
+ $information_fields = $this->get_post_information_fields($post);
+ $eventDescription = '';
+ if (! empty($information_fields)) {
foreach ($information_fields as $key => $values) {
- $formatted_post['DESCRIPTION'] .= $values['label'] . ': ' . $values['value'] . '\n';
+ $eventDescription .= $values['label'] . ': ' . $values['value'] . "\n";
}
- $formatted_post['DESCRIPTION'] = rtrim($formatted_post['DESCRIPTION']);
+ $eventDescription = rtrim($eventDescription);
}
- $formatted_post['END'] = 'VEVENT';
-
- // @todo auto format any field longer than 75 bytes
- $formatted_posts[] = $formatted_post;
+ $vCalendar->add(
+ 'VEVENT',
+ [
+ 'UID' => $post->guid,
+ 'SUMMARY' => PP_Calendar_Utilities::do_ics_escaping(apply_filters('the_title', $post->post_title))
+ . ' - ' . $this->get_post_status_friendly_name(get_post_status($post->ID)),
+ 'DTSTART' => $start_date,
+ 'DTEND' => $end_date,
+ 'LAST-MODIFIED' => $last_modified,
+ 'URL' => get_post_permalink($post->ID),
+ 'DESCRIPTION' => $eventDescription,
+ ]
+ );
}
- }// End foreach().
- }// End for().
-
- // Other template data
- $header = [
- 'BEGIN' => 'VCALENDAR',
- 'VERSION' => '2.0',
- 'PRODID' => '-//PublishPress//PublishPress ' . PUBLISHPRESS_VERSION . '//EN',
- ];
-
- $footer = [
- 'END' => 'VCALENDAR',
- ];
+ }
+ }
// Render the .ics template and set the content type
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=calendar.ics');
-
- foreach ([$header, $formatted_posts, $footer] as $section) {
- foreach ($section as $key => $value) {
- if (is_string($value)) {
- echo $this->do_ics_line_folding($key . ':' . $value);
- } else {
- foreach ($value as $k => $v) {
- echo $this->do_ics_line_folding($k . ':' . $v);
- }
- }
- }
- }
+ echo $vCalendar->serialize();
die();
+ // phpcs:enable
}
/**
- * Perform line folding according to RFC 5545.
- *
- * @param string $line The line without trailing CRLF
+ * Get the user's filters for calendar, either with $_GET or from saved
*
- * @return string The line after line-folding with all necessary CRLF.
+ * @return array $filters All of the set or saved calendar filters
+ * @uses get_user_meta()
*/
- public function do_ics_line_folding($line)
- {
- $len = mb_strlen($line);
- if ($len <= 75) {
- return $line . "\r\n";
- }
-
- $chunks = [];
- $start = 0;
- while (true) {
- $chunk = mb_substr($line, $start, 75);
- $chunkLen = mb_strlen($chunk);
- $start += $chunkLen;
- if ($start < $len) {
- $chunks[] = $chunk . "\r\n ";
- } else {
- $chunks[] = $chunk . "\r\n";
-
- return implode('', $chunks);
- }
- }
- }
-
- /**
- * Perform the encoding necessary for ICS feed text.
- *
- * @param string $text The string that needs to be escaped
- *
- * @return string The string after escaping for ICS.
- * @since 0.8
- * */
-
- public function do_ics_escaping($text)
+ public function get_filters()
{
- $text = str_replace(',', '\,', $text);
- $text = str_replace(';', '\:', $text);
- $text = str_replace('\\', '\\\\', $text);
-
- return $text;
+ return $this->update_user_filters();
}
/**
- * Handle a request to regenerate the calendar feed secret
+ * Update the current user's filters for calendar display with the filters in $_GET($request_filter). The filters
+ * in $_GET($request_filter) take precedence over the current users filters if they exist.
+ * @param array $request_filter
*
- * @since 0.8
+ * @return array $filters updated filter
*/
- public function handle_regenerate_calendar_feed_secret()
+ public function update_user_filters($request_filter = [])
{
- if ( ! isset($_GET['action']) || 'pp_calendar_regenerate_calendar_feed_secret' != $_GET['action']) {
- return;
- }
+ global $pp_calendar_user_filters;
- if ( ! current_user_can('manage_options')) {
- wp_die($this->module->messages['invalid-permissions']);
+ if (is_array($pp_calendar_user_filters)) {
+ return $pp_calendar_user_filters;
}
- if ( ! isset($_GET['_wpnonce']) || ! wp_verify_nonce($_GET['_wpnonce'], 'pp-regenerate-ics-key')) {
- wp_die($this->module->messages['nonce-failed']);
- }
-
- PublishPress()->update_module_option($this->module->name, 'ics_secret_key', wp_generate_password());
-
- $args = [
- 'page' => PP_Modules_Settings::SETTINGS_SLUG,
- 'module' => $this->module->settings_slug,
+ $user_filters = [
+ 'weeks' => '',
+ 'start_date' => '',
+ 'me_mode' => '',
+ 'hide_revision' => '',
+ 's' => '',
+ 'post_status' => '',
+ 'revision_status' => '',
];
- wp_safe_redirect(
- add_query_arg(
- 'message',
- 'key-regenerated',
- add_query_arg($args, admin_url('admin.php'))
- )
- );
-
- exit;
- }
+ if (!empty($_POST['co_form_action']) && !empty($_POST['_nonce']) && $_POST['co_form_action'] == 'reset_filter' && wp_verify_nonce(sanitize_key($_POST['_nonce']), 'content_calendar_filter_rest_nonce')) {
+ $user_filters['weeks'] = self::DEFAULT_NUM_WEEKS;
+ $user_filters['start_date'] = date('Y-m-d', current_time('timestamp'));
+ return $user_filters;
+ }
+
+ $current_user = wp_get_current_user();
+
+ if (empty($request_filter)) {
+ $request_filter = $_GET;
+ }
+
+ // Get content calendar data
+ $this->content_calendar_datas = $this->get_content_calendar_datas();
+
+ $filters = $this->content_calendar_datas['content_calendar_filters'];
+
+ /**
+ * @param array $filters
+ *
+ * @return array
+ */
+ $this->filters = apply_filters('publishpress_content_calendar_filters', $filters, 'update_user_filters');
+
+ $this->filters = array_merge([
+ 'weeks' => __('Weeks', 'publishpress'),
+ 'start_date' => __('Start Date', 'publishpress'),
+ 'me_mode' => __('Me Mode', 'publishpress'),
+ 'hide_revision' => __('Show Revision', 'publishpress'),
+ 's' => __('Search', 'publishpress'),
+ ], $this->filters);
+
+ $editorial_metadata = $this->terms_options;
+
+ foreach ($this->filters as $filter_key => $filter_label) {
+ if (array_key_exists($filter_key, $editorial_metadata)) {
+ //add metadata to filter
+ $meta_term = $editorial_metadata[$filter_key];
+ $meta_term_type = $meta_term['type'];
+ if ($meta_term_type === 'checkbox') {
+ if (! isset($request_filter[$filter_key])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $check_value = null;
+ } else {
+ $check_value = absint($this->filter_get_param($filter_key, $request_filter));
+ }
+ $user_filters[$filter_key] = $check_value;
+ } elseif ($meta_term_type === 'date') {
+ $user_filters[$filter_key] = $this->filter_get_param_text($filter_key, $request_filter);
+ $user_filters[$filter_key . '_start'] = $this->filter_get_param_text($filter_key . '_start', $request_filter);
+ $user_filters[$filter_key . '_end'] = $this->filter_get_param_text($filter_key . '_end', $request_filter);
+ $user_filters[$filter_key . '_start_hidden'] = $this->filter_get_param_text($filter_key . '_start_hidden', $request_filter);
+ $user_filters[$filter_key . '_end_hidden'] = $this->filter_get_param_text($filter_key . '_end_hidden', $request_filter);
+ } elseif ($meta_term_type === 'user') {
+ if (empty($user_filters['me_mode'])) {
+ $user_filters[$filter_key] = $this->filter_get_param_text($filter_key, $request_filter);
+ }
+ } else {
+ $user_filters[$filter_key] = $this->filter_get_param_text($filter_key, $request_filter);
+ }
+ } else {
+ // other filters
+ $user_filters[$filter_key] = $this->filter_get_param_text($filter_key, $request_filter);
+ if (in_array($filter_key, $this->content_calendar_datas['meta_keys']) || in_array($filter_key, ['ppch_co_yoast_seo__yoast_wpseo_linkdex', 'ppch_co_yoast_seo__yoast_wpseo_content_score'])) {
+ $user_filters[$filter_key . '_operator'] = $this->filter_get_param_text($filter_key . '_operator', $request_filter);
+ }
+ }
+ }
- /**
- * Get the user's filters for calendar, either with $_GET or from saved
- *
- * @return array $filters All of the set or saved calendar filters
- * @uses get_user_meta()
- */
- public function get_filters()
- {
- $current_user = wp_get_current_user();
- $filters = [];
- $old_filters = $this->get_user_meta($current_user->ID, self::USERMETA_KEY_PREFIX . 'filters', true);
-
- $default_filters = [
- 'weeks' => self::DEFAULT_NUM_WEEKS,
- 'post_status' => '',
- 'cpt' => '',
- 'cat' => '',
- 'tag' => '',
- 'author' => '',
- 'start_date' => date('Y-m-d', current_time('timestamp')),
- ];
- $old_filters = array_merge($default_filters, (array)$old_filters);
+ $current_user_filters = [];
+ $current_user_filters = $this->get_user_meta($current_user->ID, self::USERMETA_KEY_PREFIX . 'filters', true);
- // Sanitize and validate any newly added filters
- foreach ($old_filters as $key => $old_value) {
- if (isset($_GET[$key]) && false !== ($new_value = $this->sanitize_filter($key, $_GET[$key]))) {
- $filters[$key] = $new_value;
- } else {
- $filters[$key] = $old_value;
+ // If any of the $_GET vars are missing, then use the current user filter
+ foreach ($user_filters as $key => $value) {
+ if (is_null($value) && $value !== '0' && ! empty($current_user_filters[$key]) && ! is_null($current_user_filters[$key])) {
+ $user_filters[$key] = $current_user_filters[$key];
+ } elseif (is_null($value) && $value !== '0' ) {
+ $user_filters[$key] = '';
}
}
+ // Fix week, if no specific week was set
+ if (empty($user_filters['weeks'])) {
+ $user_filters['weeks'] = self::DEFAULT_NUM_WEEKS;
+ }
+
// Fix start_date, if no specific date was set
- if ( ! isset($_GET['start_date'])) {
- $filters['start_date'] = $default_filters['start_date'];
+ if (empty($user_filters['start_date'])) {
+ $user_filters['start_date'] = date('Y-m-d', current_time('timestamp'));
}
// Set the start date as the beginning of the week, according to blog settings
- $filters['start_date'] = $this->get_beginning_of_week($filters['start_date']);
+ $user_filters['start_date'] = PP_Calendar_Utilities::get_beginning_of_week($user_filters['start_date']);
- $filters = apply_filters('pp_calendar_filter_values', $filters, $old_filters);
-
- $this->update_user_meta($current_user->ID, self::USERMETA_KEY_PREFIX . 'filters', $filters);
+ if (!empty($user_filters['me_mode'])) {
+ $user_filters['author'] = $current_user->ID;
+ }
- return $filters;
- }
+ $user_filters = apply_filters('pp_content_calendar_filter_values', $user_filters, $current_user_filters);
- /**
- * Set all post types as selected, to be used as the default option.
- *
- * @return array
- */
- protected function pre_select_all_post_types()
- {
- $list = get_post_types(null, 'objects');
+ $this->update_user_meta($current_user->ID, self::USERMETA_KEY_PREFIX . 'filters', $user_filters);
- foreach ($list as $type => $value) {
- $list[$type] = 'on';
- }
+ $pp_calendar_user_filters = $user_filters;
- return $list;
+ return $user_filters;
}
/**
@@ -852,11 +821,11 @@ protected function get_selected_post_types()
{
$return = [];
- if ( ! isset($this->module->options->post_types)) {
+ if (! isset($this->module->options->post_types)) {
$this->module->options->post_types = [];
}
- if ( ! empty($this->module->options->post_types)) {
+ if (! empty($this->module->options->post_types)) {
foreach ($this->module->options->post_types as $type => $value) {
if ('on' === $value) {
$return[] = $type;
@@ -867,148 +836,257 @@ protected function get_selected_post_types()
return $return;
}
+ public function content_calendar_filters()
+ {
+ $select_filter_names = [];
+
+ $editorial_metadata = $this->terms_options;
+
+ foreach ($this->filters as $filter_key => $filter_label) {
+ if (array_key_exists($filter_key, $editorial_metadata) && $editorial_metadata[$filter_key]['type'] === 'date') {
+ $select_filter_names[$filter_key . '_start'] = $filter_key . '_start';
+ $select_filter_names[$filter_key . '_end'] = $filter_key . '_end';
+ $select_filter_names[$filter_key . '_start_hidden'] = $filter_key . '_start_hidden';
+ $select_filter_names[$filter_key . '_end_hidden'] = $filter_key . '_end_hidden';
+ }
+ $select_filter_names[$filter_key] = $filter_key;
+ }
+
+ return apply_filters('PP_Content_Calendar_filter_names', $select_filter_names);
+ }
+
/**
- * Renders the admin page
+ * Load utilities files
+ *
+ * @return void
*/
- public function render_admin_page()
- {
- global $publishpress;
+ private function load_utilities_files() {
+ require_once dirname(__FILE__) . "/library/calendar-utilities.php";
+ require_once dirname(__FILE__) . "/library/calendar-methods.php";
+ }
- $this->dropdown_taxonomies = [];
+ /**
+ * Return calendar filters
+ * @return string
+ */
+ public function get_calendar_filters() {
- $supported_post_types = $this->get_post_types_for_module($this->module);
+ $args = [];
+ $args['user_filters'] = $this->user_filters;
+ $args['calendar_filters'] = $this->content_calendar_filters();
+ $args['terms_options'] = $this->terms_options;
+ $args['content_calendar_datas'] = $this->content_calendar_datas;
+ $args['post_statuses'] = $this->get_post_statuses();
+ $args['post_types'] = $this->get_selected_post_types();
+ $args['form_filter_list'] = $this->form_filter_list;
+ $args['form_filters'] = $this->form_filters;
+ $args['all_filters'] = $this->filters;
+ $args['operator_labels'] = $this->meta_query_operator_label();
- $show_posts_publish_time = $this->showPostsPublishTime();
+ $calendar_filters = PP_Calendar_Utilities::get_calendar_filters($args);
- $dotw = [
- 'Sat',
- 'Sun',
- ];
- $dotw = apply_filters('pp_calendar_weekend_days', $dotw);
+ return $calendar_filters;
+ }
- // Get filters either from $_GET or from user settings
- $filters = $this->get_filters();
+ /**
+ * Update content calendar form action
+ *
+ * @return void
+ */
+ public function update_content_calendar_form_action($show_notice = true) {
+ global $publishpress;
+
+ if (!empty($_POST['co_form_action']) && !empty($_POST['_nonce']) && $_POST['co_form_action'] == 'filter_form' && wp_verify_nonce(sanitize_key($_POST['_nonce']), 'content_calendar_filter_form_nonce')) {
+ // Content calendar filter form
+ $content_calendar_filters = !empty($_POST['content_calendar_filters']) ? array_map('sanitize_text_field', $_POST['content_calendar_filters']) : [];
+ $content_calendar_filters_order = !empty($_POST['content_calendar_filters_order']) ? array_map('sanitize_text_field', $_POST['content_calendar_filters_order']) : [];
+ $content_calendar_custom_filters = !empty($_POST['content_calendar_custom_filters']) ? map_deep($_POST['content_calendar_custom_filters'], 'sanitize_text_field') : [];
+
+ // make sure enabled filters are saved in organized order
+ $content_calendar_filters = array_intersect($content_calendar_filters_order, $content_calendar_filters);
+
+ $publishpress->update_module_option($this->module->name, 'content_calendar_filters', $content_calendar_filters);
+ $publishpress->update_module_option($this->module->name, 'content_calendar_custom_filters', $content_calendar_custom_filters);
+ if ($show_notice) {
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ echo pp_planner_admin_notice(esc_html__('Filter updated successfully.', 'publishpress'));
+ }
+ } elseif (!empty($_POST['co_form_action']) && !empty($_POST['_nonce']) && $_POST['co_form_action'] == 'reset_filter' && wp_verify_nonce(sanitize_key($_POST['_nonce']), 'content_calendar_filter_rest_nonce')) {
+ // Content calendar filter reset
+ $this->update_user_meta(get_current_user_id(), self::USERMETA_KEY_PREFIX . 'filters', []);
+ if ($show_notice) {
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ echo pp_planner_admin_notice(esc_html__('Filter reset successfully.', 'publishpress'));
+ }
+ }
+ }
- // Total number of weeks to display on the calendar. Run it through a filter in case we want to override the
- // user's standard
- $this->total_weeks = empty($filters['weeks']) ? self::DEFAULT_NUM_WEEKS : $filters['weeks'];
-
- // For generating the WP Query objects later on
- $post_query_args = [
- 'post_status' => $filters['post_status'],
- 'post_type' => $filters['cpt'],
- 'cat' => $filters['cat'],
- 'tag' => $filters['tag'],
- 'author' => $filters['author'],
+ /**
+ * Get content calendar data that's required on the
+ * content calendar page
+ *
+ * @return array
+ */
+ public function get_content_calendar_datas() {
+ global $wpdb;
+
+ if (is_array($this->content_calendar_datas)) {
+ return $this->content_calendar_datas;
+ }
+
+ $datas = [];
+
+ // add all meta keys
+ $datas['meta_keys'] = [];
+
+ // add editorial fields
+ if (class_exists('PP_Editorial_Metadata')) {
+ $additional_terms = get_terms(
+ [
+ 'taxonomy' => PP_Editorial_Metadata::metadata_taxonomy,
+ 'orderby' => 'name',
+ 'order' => 'asc',
+ 'hide_empty' => 0,
+ 'parent' => 0,
+ 'fields' => 'all',
+ ]
+ );
+
+ $metadatas = [];
+ foreach ($additional_terms as $term) {
+ if (! is_object($term) || $term->taxonomy !== PP_Editorial_Metadata::metadata_taxonomy) {
+ continue;
+ }
+ $metadatas[$term->slug] = $term->name;
+
+ $term_options = $this->get_unencoded_description($term->description);
+ $term_options['name'] = $term->name;
+ $term_options['slug'] = $term->slug;
+ $this->terms_options[$term->slug] = $term_options;
+ }
+
+ $datas['editorial_metadata'] = $metadatas;
+ }
+
+ // add taxononomies
+ $taxonomies = $this->get_post_types_taxonomies($this->get_selected_post_types());
+ $all_taxonomies = [];
+ foreach ($taxonomies as $taxonomy) {
+ if (in_array($taxonomy->name, ['post_status', 'post_status_core_wp_pp', 'post_visibility_pp', 'pp_revision_status'])) {
+ continue;
+ }
+ $all_taxonomies[$taxonomy->name] = $taxonomy->label;// . ' (' . $taxonomy->name . ')';
+ }
+ $datas['taxonomies'] = $all_taxonomies;
+
+ // Add content calendar filters content
+ $content_calendar_filters = $this->module->options->content_calendar_filters;
+ $content_calendar_custom_filters = $this->module->options->content_calendar_custom_filters;
+
+ $datas['content_calendar_filters'] = is_array($content_calendar_filters) ? $content_calendar_filters : [
+ 'post_status' => esc_html__('Status', 'publishpress'),
+ 'author' => esc_html__('Author', 'publishpress'),
+ 'cpt' => esc_html__('Post Type', 'publishpress')
];
- $this->start_date = $filters['start_date'];
-
- // We use this later to label posts if they need labeling
- if (count($supported_post_types) > 1) {
- $all_post_types = get_post_types(null, 'objects');
- }
- $dates = [];
- $heading_date = $filters['start_date'];
- for ($i = 0; $i < 7; $i++) {
- $dates[$i] = $heading_date;
- $heading_date = date('Y-m-d', strtotime('+1 day', strtotime($heading_date)));
- }
- // we sort by post statuses....... eventually
- $post_statuses = $this->get_post_statuses();
+ $datas['content_calendar_custom_filters'] = is_array($content_calendar_custom_filters) ? $content_calendar_custom_filters : [];
+
+ /**
+ * @param array $datas
+ *
+ * @return $datas
+ */
+ $datas = apply_filters('publishpress_content_calendar_datas', $datas, compact('content_calendar_filters', 'content_calendar_custom_filters'));
+
+ $this->content_calendar_datas = $datas;
+
+ return $datas;
+ }
+
+
+ /**
+ * Get content calendar form filters
+ *
+ * @return array
+ */
+ public function get_content_calendar_form_filters() {
+
+ if (!empty($this->form_filters)) {
+ return $this->form_filters;
+ }
+
+ $content_calendar_datas = $this->content_calendar_datas;
+
+ $args = [];
+ $args['content_calendar_datas'] = $content_calendar_datas;
+
+ $filters = PP_Calendar_Utilities::get_content_calendar_form_filters($args);
+
+ $this->form_filters = $filters;
+
+ return $filters;
+ }
- // Get the custom description for this page
- $description = sprintf('%s %s ', __('Calendar', 'publishpress'),
- $this->calendar_time_range());
+ /**
+ * Renders the admin page
+ */
+ public function render_admin_page()
+ {
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
+ global $publishpress;
+
+ // update content calendar form action
+ $this->update_content_calendar_form_action();
+
+ // Get content calendar data
+ $this->content_calendar_datas = $this->get_content_calendar_datas();
+
+ $filters = $this->content_calendar_datas['content_calendar_filters'];
+ /**
+ * @param array $filters
+ *
+ * @return array
+ */
+ $this->filters = apply_filters('publishpress_content_calendar_filters', $filters, 'render_admin_page');
+
+ $this->form_filters = $this->get_content_calendar_form_filters();
+ $this->form_filter_list = array_merge(...array_values(array_column($this->form_filters, 'filters')));
- $authors = pp_get_users_with_author_permissions();
+ // Get filters either from $_GET or from user settings
+ $this->user_filters = $this->get_filters();
+
+ // Total number of weeks to display on the calendar. Run it through a filter in case we want to override the
+ // user's standard
+ $this->total_weeks = empty($this->user_filters['weeks']) ? self::DEFAULT_NUM_WEEKS : $this->user_filters['weeks'];
+
+ $this->start_date = empty($this->user_filters['start_date']) ? date('Y-m-d', current_time('timestamp')) : $this->user_filters['start_date'];
+
+ // Get the custom description for this page
+ $description = '';
// Should we display the subscribe button?
if ('on' == $this->module->options->ics_subscription && $this->module->options->ics_secret_key) {
// Prepare the download link
$args = [
- 'action' => 'pp_calendar_ics_subscription',
- 'user' => wp_get_current_user()->user_login,
+ 'action' => 'pp_calendar_ics_subscription',
+ 'user' => wp_get_current_user()->user_login,
'user_key' => md5(wp_get_current_user()->user_login . $this->module->options->ics_secret_key),
+ '_wpnonce' => wp_create_nonce('publishpress_calendar_ics_sub'),
];
- // $download_link = add_query_arg($args, admin_url('admin-ajax.php'));
// Prepare the subscribe link for the feed
unset($args['action']);
$args['post_status'] = 'unpublish';
- $args['pp_action'] = 'pp_calendar_ics_feed';
- $subscription_link = add_query_arg($args, site_url());
+ $args['pp_action'] = 'pp_calendar_ics_feed';
+ $subscription_link = add_query_arg($args, site_url());
$description .= '';
add_thickbox();
ob_start(); ?>
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
';
@@ -1021,588 +1099,92 @@ class="button-primary">
if (isset($_GET['trashed']) || isset($_GET['untrashed'])) {
echo '
';
if (isset($_GET['trashed']) && (int)$_GET['trashed']) {
- printf(_n('Post moved to the trash.', '%d posts moved to the trash.', (int)$_GET['trashed']),
- number_format_i18n($_GET['trashed']));
- $ids = isset($_GET['ids']) ? $_GET['ids'] : 0;
- $pid = explode(',', $ids);
+ printf(
+ _n(
+ 'Post moved to the trash.',
+ '%d posts moved to the trash.',
+ (int)$_GET['trashed']
+ ),
+ number_format_i18n((int)$_GET['trashed'])
+ );
+ $ids = isset($_GET['ids']) ? sanitize_text_field($_GET['ids']) : 0;
+ $pid = explode(',', $ids);
$post_type = get_post_type($pid[0]);
- echo ' ' . __('Undo',
- 'publishpress') . ' ';
+ echo ' ' . esc_html__(
+ 'Undo',
+ 'publishpress'
+ ) . ' ';
unset($_GET['trashed']);
}
+
+
if (isset($_GET['untrashed']) && (int)$_GET['untrashed']) {
- printf(_n('Post restored from the Trash.', '%d posts restored from the Trash.',
- (int)$_GET['untrashed']), number_format_i18n($_GET['untrashed']));
+ printf(
+ _n(
+ 'Post restored from the Trash.',
+ '%d posts restored from the Trash.',
+ (int)$_GET['untrashed']
+ ),
+ number_format_i18n((int)$_GET['untrashed'])
+ );
unset($_GET['undeleted']);
}
echo '
';
} ?>
-
-
- print_top_navigation($filters, $dates); ?>
-
- total_weeks == 1) {
- $table_classes[] = 'one-week-showing';
- } elseif ($this->total_weeks == 2) {
- $table_classes[] = 'two-weeks-showing';
- } elseif ($this->total_weeks == 3) {
- $table_classes[] = 'three-weeks-showing';
- }
-
- $table_classes = apply_filters('pp_calendar_table_classes', $table_classes); ?>
-
-
-
- get_time_period_header($dates); ?>
-
-
-
-
- get_default_post_status();
-
- $current_month = date_i18n('F', strtotime($filters['start_date']));
- for ($current_week = 1; $current_week <= $this->total_weeks; $current_week++) :
- // We need to set the object variable for our posts_where filter
- $this->current_week = $current_week;
- $week_posts = $this->get_calendar_posts_for_week($post_query_args);
- $date_format = 'Y-m-d';
- $week_single_date = $this->get_beginning_of_week($filters['start_date'], $date_format,
- $current_week);
- $week_dates = [];
- $split_month = false;
- for ($i = 0; $i < 7; $i++) {
- $week_dates[$i] = $week_single_date;
- $single_date_month = date_i18n('F', strtotime($week_single_date));
- if ($single_date_month != $current_month) {
- $split_month = $single_date_month;
- $current_month = $single_date_month;
- }
- $week_single_date = date('Y-m-d', strtotime('+1 day', strtotime($week_single_date)));
- } ?>
-
-
- $week_single_date) {
- if (date_i18n('F', strtotime($week_single_date)) != $split_month && date_i18n('F',
- strtotime('+1 day', strtotime($week_single_date))) == $split_month) {
- $previous_month = date_i18n('F', strtotime($week_single_date));
- echo '' . esc_html($previous_month) . ' ';
- } elseif (date_i18n('F',
- strtotime($week_single_date)) == $split_month && date_i18n('F',
- strtotime('-1 day', strtotime($week_single_date))) != $split_month) {
- echo '' . esc_html($split_month) . ' ';
- } else {
- echo ' ';
- }
- } ?>
-
-
-
-
- $week_single_date) : ?>
- slug] = [];
- }
- // These statuses aren't handled by custom statuses or post statuses
- $week_posts_by_status['private'] = [];
- $week_posts_by_status['publish'] = [];
- $week_posts_by_status['future'] = [];
- foreach ($week_posts[$week_single_date] as $num => $post) {
- $week_posts_by_status[$post->post_status][$num] = $post;
- }
- unset($week_posts[$week_single_date]);
- foreach ($week_posts_by_status as $status) {
- foreach ($status as $num => $post) {
- $week_posts[$week_single_date][] = $post;
- }
- }
- }
-
- $td_classes = [
- 'day-unit',
- ];
- $day_name = date('D', strtotime($week_single_date));
-
- if (in_array($day_name, $dotw)) {
- $td_classes[] = 'weekend-day';
- }
-
- if ($week_single_date == date('Y-m-d', current_time('timestamp'))) {
- $td_classes[] = 'today';
- }
-
- // Last day of the week
- if ($day_num == 6) {
- $td_classes[] = 'last-day';
- }
-
- $td_classes = apply_filters('pp_calendar_table_td_classes', $td_classes,
- $week_single_date); ?>
-
-
-
-
-
-
-
-
- hidden = 0;
- if ( ! empty($week_posts[$week_single_date])) {
- $week_posts[$week_single_date] = apply_filters('pp_calendar_posts_for_week',
- $week_posts[$week_single_date]);
-
- foreach ($week_posts[$week_single_date] as $num => $post) {
- echo $this->generate_post_li_html($post, $week_single_date,
- $num, $show_posts_publish_time);
- }
- } ?>
-
- hidden) : ?>
-
hidden); ?>
-
-
- create_post_cap)) :
- $date_formatted = date('D, M jS, Y', strtotime($week_single_date)); ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- settings->print_default_footer($publishpress->modules->calendar);
- }
-
- /**
- * Generates the HTML for a single post item in the calendar
- *
- * @param obj $post The WordPress post in question
- * @param str $post_date The date of the post
- * @param int $num The index of the post
- *
- * @return str HTML for a single post item
- */
- public function generate_post_li_html($post, $post_date, $num = 0, $show_posts_publish_time = false)
- {
- $can_modify = ($this->current_user_can_modify_post($post)) ? 'can_modify' : 'read_only';
- $cache_key = $post->ID . $can_modify;
- $cache_val = wp_cache_get($cache_key, self::$post_li_html_cache_key);
- // Because $num is pertinent to the display of the post LI, need to make sure that's what's in cache
- if (is_array($cache_val) && $cache_val['num'] == $num) {
- $this->hidden = $cache_val['hidden'];
-
- return $cache_val['post_li_html'];
- }
-
- ob_start();
-
- $post_id = $post->ID;
- $edit_post_link = get_edit_post_link($post_id);
-
- if ($show_posts_publish_time) {
- $show_posts_publish_time = in_array($post->post_status,
- self::getStatusesEligibleToDisplayPublishTime());
- }
-
- if ($show_posts_publish_time) {
- $post_publish_datetime = get_the_date('c', $post);
- $post_publish_date_timestamp = get_post_time('U', false, $post);
- $posts_publish_time_format = ! isset($this->module->options->posts_publish_time_format) || is_null($this->module->options->posts_publish_time_format)
- ? self::TIME_FORMAT_12H_WO_LEADING_ZEROES
- : $this->module->options->posts_publish_time_format;
- }
-
- $post_classes = [
- 'day-item',
- 'custom-status-' . $post->post_status,
- ];
-
- $post_type_options = $this->get_post_status_options($post->post_status);
-
- // Only allow the user to drag the post if they have permissions to
- // or if it's in an approved post status
- // This is checked on the ajax request too.
- if ($this->current_user_can_modify_post($post)) {
- $post_classes[] = 'sortable';
- }
+
+ get_calendar_filters(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
+
- if (in_array($post->post_status, $this->published_statuses)) {
- $post_classes[] = 'is-published';
- }
-
- // Hide posts over a certain number to prevent clutter, unless user is only viewing 1 or 2 weeks
- $max_visible_posts = apply_filters('pp_calendar_max_visible_posts_per_date',
- $this->max_visible_posts_per_date);
-
- if ($num >= $max_visible_posts && $this->total_weeks > 2) {
- $post_classes[] = 'hidden';
- $this->hidden++;
- }
- $post_classes = apply_filters('pp_calendar_table_td_li_classes', $post_classes, $post_date, $post->ID); ?>
-
-
-
-
-
-
-
-
- ID)); ?>
-
-
-
-
-
-
-
-
-
+
+
-
- get_inner_information($this->get_post_information_fields($post), $post); ?>
-
- $num,
- 'post_li_html' => $post_li_html,
- 'hidden' => $this->hidden,
- ];
- wp_cache_set($cache_key, $post_li_cache, self::$post_li_html_cache_key);
-
- return $post_li_html;
- } // generate_post_li_html()
-
- /**
- * Returns the CSS class name and color for the given custom status.
- * It reutrns an array with the following keys:
- * - icon
- * - color
- *
- * @param string $post_status
- *
- * @return array
- */
- protected function get_post_status_options($post_status)
- {
- global $publishpress;
-
- // Check if we have a custom icon for this post_status
- $term = $publishpress->custom_status->get_custom_status_by('slug', $post_status);
-
- // Icon
- $icon = null;
- if ( ! empty($term->icon)) {
- $icon = $term->icon;
- } else {
- // Add an icon for the items
- $default_icons = [
- 'publish' => 'dashicons-yes',
- 'future' => 'dashicons-calendar-alt',
- 'private' => 'dashicons-lock',
- 'draft' => 'dashicons-edit',
- 'pending' => 'dashicons-edit',
- 'auto-draft' => 'dashicons-edit',
- ];
-
- $icon = isset($default_icons[$post_status]) ? $default_icons[$post_status] : 'dashicons-edit';
- }
-
- // Color
- $color = PP_Custom_Status::DEFAULT_COLOR;
- if ( ! empty($term->color)) {
- $color = $term->color;
- }
-
- return [
- 'color' => $color,
- 'icon' => $icon,
- ];
- }
-
- /**
- * get_inner_information description
- * Functionality for generating the inner html elements on the calendar
- * has been separated out so various ajax functions can reload certain
- * parts of an inner html element.
- *
- * @param array $pp_calendar_item_information_fields
- * @param WP_Post $post
- * @param array $published_statuses
- *
- * @since 0.8
- */
- public function get_inner_information($pp_calendar_item_information_fields, $post)
- {
- ?>
-
- post_type);
- $item_actions = [];
- if ($this->current_user_can_modify_post($post)) {
- // Edit this post
- $item_actions['edit'] = '
' . __('Edit',
- 'publishpress') . ' ';
- // Trash this post
- $item_actions['trash'] = '
' . __('Trash', 'publishpress') . ' ';
- // Preview/view this post
- if ( ! in_array($post->post_status, $this->published_statuses)) {
- $item_actions['view'] = '
' . __('Preview', 'publishpress') . ' ';
- } elseif ('trash' != $post->post_status) {
- $item_actions['view'] = '
' . __('View',
- 'publishpress') . ' ';
- }
- // Save metadata
- $item_actions['save hidden'] = '
' . __('Save', 'publishpress') . ' ';
- }
-
- // Allow other plugins to add actions
- $item_actions = apply_filters('pp_calendar_item_actions', $item_actions, $post->ID);
+
- if (count($item_actions)) {
- echo '
';
- $html = '';
- foreach ($item_actions as $class => $item_action) {
- $html .= '' . $item_action . ' | ';
- }
- echo rtrim($html, '| ');
- echo '
';
- } ?>
-
+
';
- break;
- case 'paragraph':
- return '
' . $value . ' ';
- break;
- case 'date':
- return '
';
- break;
- case 'checkbox':
- $output = '
';
-
- if ($value == 'No') {
- $output .= 'No Yes ';
- } else {
- $output .= 'Yes No ';
- }
-
- $output .= ' ';
+ wp_localize_script(
+ 'publishpress-calendar-js',
+ 'PPContentCalendar',
+ [
+ 'nonce' => wp_create_nonce('publishpress-calendar-get-data'),
+ 'moduleUrl' => $this->module_url,
+ 'publishpressUrl' => PUBLISHPRESS_URL,
+ ]
+ );
- return $output;
- break;
- case 'user':
- return wp_dropdown_users([
- 'echo' => false,
- ]);
- break;
- case 'taxonomy':
- return '
';
- break;
- case 'taxonomy hierarchical':
- return wp_dropdown_categories([
- 'echo' => 0,
- 'hide_empty' => 0,
- ]);
- break;
- }// End switch().
+ $publishpress->settings->print_default_footer($publishpress->modules->calendar);
+ // phpcs:enable
}
/**
@@ -1618,10 +1200,16 @@ public function get_post_information_fields($post)
{
$information_fields = [];
// Post author
+ $authorsNames = apply_filters(
+ 'publishpress_post_authors_names',
+ [get_the_author_meta('display_name', $post->post_author)],
+ $post->ID
+ );
+
$information_fields['author'] = [
- 'label' => __('Author', 'publishpress'),
- 'value' => get_the_author_meta('display_name', $post->post_author),
- 'type' => 'author',
+ 'label' => _n('Author', 'Authors', count($authorsNames), 'publishpress'),
+ 'value' => implode(', ', $authorsNames),
+ 'type' => 'author',
];
// If the calendar supports more than one post type, show the post type label
@@ -1646,18 +1234,18 @@ public function get_post_information_fields($post)
}
}
// Taxonomies and their values
- $args = [
+ $args = [
'post_type' => $post->post_type,
];
$taxonomies = get_object_taxonomies($args, 'object');
foreach ((array)$taxonomies as $taxonomy) {
// Sometimes taxonomies skip by, so let's make sure it has a label too
- if ( ! $taxonomy->public || ! $taxonomy->label) {
+ if (! $taxonomy->public || ! $taxonomy->label) {
continue;
}
$terms = get_the_terms($post->ID, $taxonomy->name);
- if ( ! $terms || is_wp_error($terms)) {
+ if (! $terms || is_wp_error($terms)) {
continue;
}
@@ -1671,7 +1259,7 @@ public function get_post_information_fields($post)
} else {
$value = '';
}
- // Used when editing editorial metadata and post meta
+ // Used when editing editorial fields and post meta
if (is_taxonomy_hierarchical($taxonomy->name)) {
$type = 'taxonomy hierarchical';
} else {
@@ -1681,7 +1269,7 @@ public function get_post_information_fields($post)
$information_fields[$key] = [
'label' => $taxonomy->label,
'value' => $value,
- 'type' => $type,
+ 'type' => $type,
];
if ($post->post_type == 'page') {
@@ -1693,13 +1281,17 @@ public function get_post_information_fields($post)
if (current_user_can($ed_cap, $post->ID)) {
$information_fields[$key]['editable'] = true;
}
- }// End foreach().
+ }
$information_fields = apply_filters('pp_calendar_item_information_fields', $information_fields, $post->ID);
+
foreach ($information_fields as $field => $values) {
// Allow filters to hide empty fields or to hide any given individual field. Hide empty fields by default.
- if ((apply_filters('pp_calendar_hide_empty_item_information_fields', true,
- $post->ID) && empty($values['value']))
+ if ((apply_filters(
+ 'pp_calendar_hide_empty_item_information_fields',
+ true,
+ $post->ID
+ ) && empty($values['value']))
|| apply_filters("pp_calendar_hide_{$field}_item_information_field", false, $post->ID)) {
unset($information_fields[$field]);
}
@@ -1708,133 +1300,48 @@ public function get_post_information_fields($post)
return $information_fields;
}
- /**
- * Generates the filtering and navigation options for the top of the calendar
- *
- * @param array $filters Any set filters
- * @param array $dates All of the days of the week. Used for generating navigation links
- */
- public function print_top_navigation($filters, $dates)
- {
- ?>
-
- ';
- $html .= esc_html(date_i18n('l', strtotime($date)));
- $html .= '';
- }
-
- return $html;
- }
-
/**
* Query to get all of the calendar posts for a given day
*
- * @param array $args Any filter arguments we want to pass
+ * @param array $args Any filter arguments we want to pass
* @param string $request_context Where the query is coming from, to distinguish dashboard and subscriptions
*
* @return array $posts All of the posts as an array sorted by date
*/
public function get_calendar_posts_for_week($args = [], $context = 'dashboard')
{
- global $wpdb;
-
$supported_post_types = $this->get_post_types_for_module($this->module);
- $defaults = [
- 'post_status' => null,
- 'cat' => null,
- 'tag' => null,
- 'author' => null,
- 'post_type' => $supported_post_types,
+ $defaults = [
+ 'post_status' => null,
+ 'cat' => null,
+ 'tag' => null,
+ 'author' => null,
+ 'post_type' => $supported_post_types,
'posts_per_page' => -1,
- 'order' => 'ASC',
+ 'order' => 'ASC',
];
$args = array_merge($defaults, $args);
// Unpublished as a status is just an array of everything but 'publish'
- if ($args['post_status'] == 'unpublish') {
+ if ($args['post_status'] == 'unpublish' || $context == 'ics_subscription') {
$args['post_status'] = '';
- $post_statuses = $this->get_post_statuses();
+ $post_statuses = $this->get_post_statuses();
foreach ($post_statuses as $post_status) {
$args['post_status'] .= $post_status->slug . ', ';
}
$args['post_status'] = rtrim($args['post_status'], ', ');
// Optional filter to include scheduled content as unpublished
- if (apply_filters('pp_show_scheduled_as_unpublished', false)) {
+ if (apply_filters('pp_show_scheduled_as_unpublished', true)) {
$args['post_status'] .= ', future';
}
+ if ($context == 'ics_subscription') {
+ $args['post_status'] .= ', publish';
+ }
+
+ if (isset($this->module->options->ics_subscription_public_visibility) && 'on' === $this->module->options->ics_subscription_public_visibility) {
+ $args['suppress_filters'] = true;
+ }
}
// The WP functions for printing the category and author assign a value of 0 to the default
// options, but passing this to the query is bad (trashed and auto-draft posts appear!), so
@@ -1858,7 +1365,7 @@ public function get_calendar_posts_for_week($args = [], $context = 'dashboard')
}
// Filter for an end user to implement any of their own query args
- $args = apply_filters('pp_calendar_posts_query_args', $args, $context);
+ $args = apply_filters('pp_calendar_posts_query_args', $args, $context, $this->filters, $this->user_filters);
add_filter('posts_where', [$this, 'posts_where_week_range']);
$post_results = new WP_Query($args);
@@ -1868,7 +1375,7 @@ public function get_calendar_posts_for_week($args = [], $context = 'dashboard')
while ($post_results->have_posts()) {
$post_results->the_post();
global $post;
- $key_date = date('Y-m-d', strtotime($post->post_date));
+ $key_date = date('Y-m-d', strtotime($post->post_date));
$posts[$key_date][] = $post;
}
@@ -1886,329 +1393,26 @@ public function posts_where_week_range($where = '')
{
global $wpdb;
- $beginning_date = $this->get_beginning_of_week($this->start_date, 'Y-m-d', $this->current_week);
- $ending_date = $this->get_ending_of_week($this->start_date, 'Y-m-d', $this->current_week);
+ $beginning_date = PP_Calendar_Utilities::get_beginning_of_week($this->start_date, 'Y-m-d', $this->current_week);
+ $ending_date = PP_Calendar_Utilities::get_ending_of_week($this->start_date, 'Y-m-d', $this->current_week);
// Adjust the ending date to account for the entire day of the last day of the week
$ending_date = date('Y-m-d', strtotime('+1 day', strtotime($ending_date)));
- $where = $where . $wpdb->prepare(" AND ($wpdb->posts.post_date >= %s AND $wpdb->posts.post_date < %s)",
- $beginning_date, $ending_date);
+ $where = $where . $wpdb->prepare(
+ " AND ($wpdb->posts.post_date >= %s AND $wpdb->posts.post_date < %s)",
+ $beginning_date,
+ $ending_date
+ );
return $where;
}
- /**
- * Gets the link for the next time period
- *
- * @param string $direction 'previous' or 'next', direction to go in time
- * @param array $filters Any filters that need to be applied
- * @param int $weeks_offset Number of weeks we're offsetting the range
- *
- * @return string $url The URL for the next page
- */
- public function get_pagination_link($direction = 'next', $filters = [], $weeks_offset = null)
- {
- $supported_post_types = $this->get_post_types_for_module($this->module);
-
- if ( ! isset($weeks_offset)) {
- $weeks_offset = $this->total_weeks;
- } elseif ($weeks_offset == 0) {
- $filters['start_date'] = $this->get_beginning_of_week(date('Y-m-d', current_time('timestamp')));
- }
-
- if ($direction === 'previous') {
- $weeks_offset = '-' . $weeks_offset;
- }
-
- $filters['start_date'] = date('Y-m-d',
- strtotime($weeks_offset . ' weeks', strtotime($filters['start_date'])));
- $url = add_query_arg($filters, menu_page_url('pp-calendar', false));
-
- if (count($supported_post_types) > 1) {
- $url = add_query_arg('cpt', $filters['cpt'], $url);
- }
-
- return $url;
- }
-
- /**
- * Given a day in string format, returns the day at the beginning of that week, which can be the given date.
- * The end of the week is determined by the blog option, 'start_of_week'.
- *
- * @see http://www.php.net/manual/en/datetime.formats.date.php for valid date formats
- *
- * @param string $date String representing a date
- * @param string $format Date format in which the end of the week should be returned
- * @param int $week Number of weeks we're offsetting the range
- *
- * @return string $formatted_start_of_week End of the week
- */
- public function get_beginning_of_week($date, $format = 'Y-m-d', $week = 1)
- {
- $date = strtotime($date);
- $start_of_week = get_option('start_of_week');
- $day_of_week = date('w', $date);
- $date += (($start_of_week - $day_of_week - 7) % 7) * 60 * 60 * 24 * $week;
- $additional = 3600 * 24 * 7 * ($week - 1);
- $formatted_start_of_week = date($format, $date + $additional);
-
- return $formatted_start_of_week;
- }
-
- /**
- * Given a day in string format, returns the day at the end of that week, which can be the given date.
- * The end of the week is determined by the blog option, 'start_of_week'.
- *
- * @see http://www.php.net/manual/en/datetime.formats.date.php for valid date formats
- *
- * @param string $date String representing a date
- * @param string $format Date format in which the end of the week should be returned
- * @param int $week Number of weeks we're offsetting the range
- *
- * @return string $formatted_end_of_week End of the week
- */
- public function get_ending_of_week($date, $format = 'Y-m-d', $week = 1)
- {
- $date = strtotime($date);
- $end_of_week = get_option('start_of_week') - 1;
- $day_of_week = date('w', $date);
- $date += (($end_of_week - $day_of_week + 7) % 7) * 60 * 60 * 24;
- $additional = 3600 * 24 * 7 * ($week - 1);
- $formatted_end_of_week = date($format, $date + $additional);
-
- return $formatted_end_of_week;
- }
-
- /**
- * Human-readable time range for the calendar
- * Shows something like "for October 30th through November 26th" for a four-week period
- *
- * @since 0.7
- */
- public function calendar_time_range()
- {
- $first_datetime = strtotime($this->start_date);
- $first_date = date_i18n(get_option('date_format'), $first_datetime);
- $total_days = ($this->total_weeks * 7) - 1;
- $last_datetime = strtotime('+' . $total_days . ' days', date('U', strtotime($this->start_date)));
- $last_date = date_i18n(get_option('date_format'), $last_datetime);
-
- return sprintf(__('for %1$s through %2$s', 'publishpress'), $first_date, $last_date);
- }
-
- /**
- * Check whether the current user should have the ability to modify the post
- *
- * @param object $post The post object we're checking
- *
- * @return bool $can Whether or not the current user can modify the post
- * @since 0.7
- *
- */
- public function current_user_can_modify_post($post)
- {
- if ( ! $post) {
- return false;
- }
-
- $post_type_object = get_post_type_object($post->post_type);
-
- // Editors and admins are fine
- if (current_user_can($post_type_object->cap->edit_others_posts, $post->ID)) {
- return true;
- }
- // Authors and contributors can move their own stuff if it's not published
- if (current_user_can($post_type_object->cap->edit_post,
- $post->ID) && wp_get_current_user()->ID == $post->post_author && ! in_array($post->post_status,
- $this->published_statuses)) {
- return true;
- }
- // Those who can publish posts can move any of their own stuff
- if (current_user_can($post_type_object->cap->publish_posts,
- $post->ID) && wp_get_current_user()->ID == $post->post_author) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Register settings for notifications so we can partially use the Settings API
- * We use the Settings API for form generation, but not saving because we have our
- * own way of handling the data.
- *
- * @since 0.7
- */
- public function register_settings()
- {
- add_settings_section($this->module->options_group_name . '_general', false, '__return_false',
- $this->module->options_group_name);
- add_settings_field('post_types', __('Post types to show', 'publishpress'),
- [$this, 'settings_post_types_option'], $this->module->options_group_name,
- $this->module->options_group_name . '_general');
- add_settings_field('ics_subscription', __('Subscription in iCal or Google Calendar', 'publishpress'),
- [$this, 'settings_ics_subscription_option'], $this->module->options_group_name,
- $this->module->options_group_name . '_general');
- add_settings_field(
- 'show_posts_publish_time',
- __('Display Posts publish time', 'publishpress'),
- [$this, 'settings_show_posts_publish_time_option'],
- $this->module->options_group_name,
- $this->module->options_group_name . '_general'
- );
- add_settings_field(
- 'posts_publish_time_format',
- __('Posts publish time format', 'publishpress'),
- [$this, 'settings_posts_publish_time_format_option'],
- $this->module->options_group_name,
- $this->module->options_group_name . '_general'
- );
- }
-
- /**
- * Choose the post types that should be displayed on the calendar
- *
- * @since 0.7
- */
- public function settings_post_types_option()
- {
- global $publishpress;
- $publishpress->settings->helper_option_custom_post_type($this->module);
-
- // Check if we need to display the message about selecting at lest one post type
- if (get_transient(static::TRANSIENT_SHOW_ONE_POST_TYPE_WARNING)) {
- echo '
' . __('At least one post type must be selected',
- 'publishpress') . '
';
-
- delete_transient(static::TRANSIENT_SHOW_ONE_POST_TYPE_WARNING);
- }
- }
-
- /**
- * Give a bit of helper text to indicate the user can change
- * number of weeks in the screen options
- *
- * @since 0.7
- */
- public function settings_number_weeks_option()
- {
- echo '
' . __('The number of weeks shown on the calendar can be changed on a user-by-user basis using the calendar\'s screen options.',
- 'publishpress') . ' ';
- }
-
- /**
- * Enable calendar subscriptions via .ics in iCal or Google Calendar
- *
- * @since 0.8
- */
- public function settings_ics_subscription_option()
- {
- $options = [
- 'off' => __('Disabled', 'publishpress'),
- 'on' => __('Enabled', 'publishpress'),
- ];
- echo '
';
- foreach ($options as $value => $label) {
- echo 'module->options->ics_subscription, $value);
- echo '>' . esc_html($label) . ' ';
- }
- echo ' ';
-
- $regenerate_url = add_query_arg('action', 'pp_calendar_regenerate_calendar_feed_secret',
- admin_url('admin.php?page=pp-calendar'));
- $regenerate_url = wp_nonce_url($regenerate_url, 'pp-regenerate-ics-key');
- echo '
' . __('Regenerate calendar feed secret',
- 'publishpress') . ' ';
-
- // If our secret key doesn't exist, create a new one
- if (empty($this->module->options->ics_secret_key)) {
- PublishPress()->update_module_option($this->module->name, 'ics_secret_key', wp_generate_password());
- }
- }
-
- /**
- * Option that define either Posts publish times are displayed or not.
- *
- * @since 1.20.0
- */
- public function settings_show_posts_publish_time_option()
+ private function getCalendarTimeFormat()
{
- $VALUE_ON = 'on';
- $VALUE_OFF = 'off';
-
- $options = [
- $VALUE_ON => __('Show publish times', 'publishpress'),
- $VALUE_OFF => __('Hide them', 'publishpress'),
- ];
-
- $show_posts_publish_time = $this->getShowPostsPublishTimeOptionValue();
- $field_name = esc_attr($this->module->options_group_name) . '[show_posts_publish_time]';
-
- echo '
';
- }
-
- /**
- * Define the time format for Posts publish date.
- *
- * @since 1.20.0
- */
- public function settings_posts_publish_time_format_option()
- {
- $timeFormats = [
- self::TIME_FORMAT_12H_WO_LEADING_ZEROES => '1-12 am/pm',
- self::TIME_FORMAT_12H_WITH_LEADING_ZEROES => '01-12 am/pm',
- self::TIME_FORMAT_24H => '00-24',
- ];
-
- $posts_publish_time_format = ! isset($this->module->options->posts_publish_time_format) || is_null($this->module->options->posts_publish_time_format)
- ? self::TIME_FORMAT_12H_WO_LEADING_ZEROES
+ return ! isset($this->module->options->posts_publish_time_format) || is_null(
+ $this->module->options->posts_publish_time_format
+ )
+ ? self::TIME_FORMAT_12H_NO_LEADING_ZEROES
: $this->module->options->posts_publish_time_format;
-
- echo '
';
-
- foreach ($timeFormats as $timeFormat => $timeMockValue) {
- printf('
-
-
-
- %s
-
- %2$s
-
',
- esc_attr($this->module->options_group_name) . '[posts_publish_time_format]',
- $timeFormat,
- $posts_publish_time_format === $timeFormat ? 'checked' : '',
- $timeMockValue
- );
- }
-
- echo '
';
}
/**
@@ -2237,8 +1441,10 @@ public function settings_validate($new_options)
// Add flag to display a warning to the user
set_transient(static::TRANSIENT_SHOW_ONE_POST_TYPE_WARNING, 1, 300);
} else {
- $options['post_types'] = $this->clean_post_type_options($new_options['post_types'],
- $this->module->post_type_support);
+ $options['post_types'] = $this->clean_post_type_options(
+ $new_options['post_types'],
+ $this->module->post_type_support
+ );
}
} else {
// Check post by default
@@ -2254,13 +1460,55 @@ public function settings_validate($new_options)
$options['ics_subscription'] = 'on';
}
- $options['show_posts_publish_time'] = isset($new_options['show_posts_publish_time']) && $new_options['show_posts_publish_time'] === 'on'
- ? 'on'
- : 'off';
+ if (isset($new_options['show_posts_publish_time'])) {
+ if ($new_options['show_posts_publish_time'] == 'on') {
+ $options['show_posts_publish_time'] = [
+ 'publish' => 'on',
+ 'future' => 'on',
+ ];
+ } else {
+ $options['show_posts_publish_time'] = $new_options['show_posts_publish_time'];
+ }
+ } else {
+ $options['show_posts_publish_time'] = [];
+ }
$options['posts_publish_time_format'] = isset($new_options['posts_publish_time_format'])
? $new_options['posts_publish_time_format']
- : self::TIME_FORMAT_12H_WO_LEADING_ZEROES;
+ : self::TIME_FORMAT_12H_NO_LEADING_ZEROES;
+
+ if (isset($new_options['show_calendar_posts_full_title'])) {
+ $options['show_calendar_posts_full_title'] = 'on';
+ } else {
+ $options['show_calendar_posts_full_title'] = 'off';
+ }
+
+ if (isset($new_options['calendar_today_in_first_row'])) {
+ $options['calendar_today_in_first_row'] = 'on';
+ } else {
+ $options['calendar_today_in_first_row'] = 'off';
+ }
+
+ if (isset($new_options['ics_subscription_public_visibility'])) {
+ $options['ics_subscription_public_visibility'] = 'on';
+ } else {
+ $options['ics_subscription_public_visibility'] = 'off';
+ }
+
+ // Default publish time
+ if (isset($new_options['default_publish_time'])) {
+ $options['default_publish_time'] = sanitize_text_field($new_options['default_publish_time']);
+ }
+
+ // Sort by
+ $options['sort_by'] = isset($new_options['sort_by'])
+ ? sanitize_text_field($new_options['sort_by'])
+ : 'time';
+
+ // Max visible posts per date
+ $options['max_visible_posts_per_date'] = isset($new_options['max_visible_posts_per_date'])
+ ? (int)$new_options['max_visible_posts_per_date']
+ : $this->default_max_visible_posts_per_date;
return $options;
}
@@ -2272,308 +1520,187 @@ public function print_configure_view()
{
global $publishpress; ?>
- module->options_group_name); ?>
- module->options_group_name); ?>
+ action="module->settings_slug, false)); ?>" method="post">
+ module->options_group_name); ?>
+ module->options_group_name); ?>
module->name) . '" />'; ?>
-
- module->name) . '" />'; ?>
-
+ echo ' '; ?>
+
+ module->name
+ ) . '" />'; ?>
+
print_ajax_response('error', $this->module->messages['nonce-failed']);
+ if (! isset($this->postTypeObjectCache[$postType])) {
+ $this->postTypeObjectCache[$postType] = get_post_type_object($postType);
}
- // Check that the user has the right capabilities to add posts to the calendar (defaults to 'edit_posts')
- if ( ! current_user_can($this->create_post_cap)) {
- $this->print_ajax_response('error', $this->module->messages['invalid-permissions']);
- }
-
- if (empty($_POST['pp_insert_date'])) {
- $this->print_ajax_response('error', __('No date supplied.', 'publishpress'));
- }
-
- // Post type has to be visible on the calendar to create a placeholder
- $post_type = sanitize_text_field($_POST['pp_insert_type']);
- if (empty($post_type)) {
- $post_type = 'post';
- }
-
- if ( ! in_array($post_type, $this->get_post_types_for_module($this->module))) {
- $this->print_ajax_response('error',
- __('Please change Quick Create to use a post type viewable on the calendar.', 'publishpress'));
- }
-
- // Sanitize post values
- $post_title = apply_filters('pp_calendar_after_form_submission_sanitize_title',
- $_POST['pp_insert_title']);
- $post_content = apply_filters('pp_calendar_after_form_submission_sanitize_content',
- $_POST['pp_insert_content']);
- $post_author = apply_filters('pp_calendar_after_form_submission_sanitize_author',
- $_POST['pp_insert_author']);
-
- if ( ! $post_title) {
- $post_title = __('Untitled', 'publishpress');
- }
- if ( ! $post_content) {
- $post_content = '';
- }
-
- try {
- $post_author = apply_filters('pp_calendar_after_form_submission_validate_author', $post_author);
- } catch (\Exception $e) {
- $this->print_ajax_response('error', $e->getMessage());
- }
-
- if (empty($post_author)) {
- $authorsPermissions = self::getAuthorPermissions();
- $user = wp_get_current_user();
- if (count(array_intersect($authorsPermissions, $user->roles)) === 0) {
- $this->print_ajax_response(
- 'error',
- __('You do not have necessary permissions to complete this action.', 'publishpress')
- );
- }
-
- $post_author = $user->ID;
- }
-
- $post_date = sanitize_text_field($_POST['pp_insert_date']);
- $post_date_timestamp = strtotime($post_date);
-
- $post_publish_time = sanitize_text_field(trim($_POST['pp_insert_publish_time']));
- if ( ! empty($post_publish_time)) {
- $post_publish_date_time = sprintf(
- '%s %s',
- $post_date,
- ((function_exists('mb_strlen') ? mb_strlen($post_publish_time) : strlen($post_publish_time)) === 5)
- ? "{$post_publish_time}:" . date('s', $post_date_timestamp)
- : date('H:i:s', $post_date_timestamp)
- );
- } else {
- $post_publish_time = '';
- }
-
- $post_publish_date_time_instance = new DateTime("{$post_date}{$post_publish_time}");
- if ($post_publish_date_time_instance === false) {
- $this->print_ajax_response('error', __('Invalid Publish Date supplied.', 'publishpress'));
- }
- unset($post_publish_date_time_instance);
+ return $this->postTypeObjectCache[$postType];
+ }
- $post_status = sanitize_text_field($_POST['pp_insert_status']);
- if ( ! $this->isPostStatusValid($post_status)) {
- $this->print_ajax_response('error', __('Invalid Status supplied.', 'publishpress'));
+ private function addTaxQueryToArgs($taxonomy, $termSlug, $args)
+ {
+ if (! isset($args['tax_query'])) {
+ $args['tax_query'] = [];
}
- // Set new post parameters
- $post_placeholder = [
- 'post_author' => $post_author,
- 'post_title' => $post_title,
- 'post_content' => $post_content,
- 'post_type' => $post_type,
- 'post_status' => $post_status,
- 'post_date' => $post_publish_date_time,
- 'post_modified' => current_time('mysql'),
- 'post_modified_gmt' => current_time('mysql', 1),
+ $args['tax_query'][] = [
+ 'taxonomy' => $taxonomy,
+ 'field' => 'slug',
+ 'terms' => $termSlug
];
- // By default, adding a post to the calendar will set the timestamp.
- // If the user don't desires that to be the behavior, they can set the result of this filter to 'false'
- // With how WordPress works internally, setting 'post_date_gmt' will set the timestamp
- if (apply_filters('pp_calendar_allow_ajax_to_set_timestamp', true)) {
- $post_placeholder['post_date_gmt'] = date('Y-m-d H:i:s', $post_date_timestamp);
- }
-
- // Create the post
- add_filter('wp_insert_post_data', [$this, 'alter_post_modification_time'], 99, 2);
- $post_id = wp_insert_post($post_placeholder);
- remove_filter('wp_insert_post_data', [$this, 'alter_post_modification_time'], 99, 2);
-
-
- if ($post_id) { // success!
-
- $post = get_post($post_id);
+ return $args;
+ }
- $show_posts_publish_time = $this->showPostsPublishTime();
+ public function fetchCalendarDataJson()
+ {
+ if (! wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'publishpress-calendar-get-data')) {
+ wp_send_json([], 403);
+ }
+
+ $beginningDate = PP_Calendar_Utilities::get_beginning_of_week(sanitize_text_field($_GET['start_date']));
+ $endingDate = PP_Calendar_Utilities::get_ending_of_week($beginningDate, 'Y-m-d', (int)$_GET['number_of_weeks']);
+
+ //get and update filters
+ $args = $this->get_filters();
+
+ $method_args = [];
+ $method_args['content_calendar_datas'] = $this->get_content_calendar_datas();
+ $method_args['userFilters'] = $args;
+ $method_args['postStatuses'] = $this->getPostStatusOptions();
+ $method_args['selectedPostTypes'] = $this->get_selected_post_types();
+ $method_args['timeFormat'] = $this->getCalendarTimeFormat();
+ $method_args['proActive'] = Util::isPlannersProActive();
+ $method_args['operator_labels'] = $this->meta_query_operator_label();
+ $method_args['post_statuses'] = $this->get_post_statuses();
+ $method_args['terms_options'] = $this->terms_options;
+ $method_args['form_filters'] = $this->form_filters;
+ $method_args['form_filter_list'] = $this->form_filter_list;
+ $method_args['all_filters'] = $this->filters;
+
+ wp_send_json(
+ $this->content_calendar_methods->getCalendarData($beginningDate, $endingDate, $args, $method_args),
+ 200
+ );
+ }
- // Generate the HTML for the post item so it can be injected
- $post_li_html = $this->generate_post_li_html($post, $post_date, 0, $show_posts_publish_time);
+ private function getPostTypeName($postType)
+ {
+ $postTypeObj = get_post_type_object($postType);
- // announce success and send back the html to inject
- $this->print_ajax_response('success', $post_li_html);
- } else {
- $this->print_ajax_response('error', __('Post could not be created', 'publishpress'));
- }
+ return $postTypeObj->label;
}
- private function isPostStatusValid($subject)
+ private function getPostStatusName($postStatusSlug)
{
- foreach ($this->get_post_statuses() as $post_status) {
- $is_status_valid = $subject === $post_status->slug;
- if ($is_status_valid) {
- return true;
+ $postStatuses = $this->get_post_statuses();
+
+ foreach ($postStatuses as $postStatus) {
+ if ($postStatus->slug === $postStatusSlug) {
+ return $postStatus->label;
}
}
- return false;
+ return null;
}
- /**
- * Allow to alter modified date when creating posts. WordPress by default
- * doesn't allow that. We need it to fix an issue where the post_modified
- * field is saved with the post_date value. That is a ptoblem when you save
- * a post with post_date to the future. For scheduled posts.
- *
- * @param array $data
- * @param array $postarr
- *
- * @return array
- */
- public function alter_post_modification_time($data, $postarr)
+ private function getPostTerms($postId, $taxonomy)
{
- if ( ! empty($postarr['post_modified']) && ! empty($postarr['post_modified_gmt'])) {
- $data['post_modified'] = $postarr['post_modified'];
- $data['post_modified_gmt'] = $postarr['post_modified_gmt'];
+ $terms = wp_get_post_terms($postId, $taxonomy);
+
+ $termsNames = [];
+ foreach ($terms as $term) {
+ $termsNames[] = $term->name;
}
- return $data;
+ return $termsNames;
}
- /**
- * Returns the singular label for the posts that are
- * quick-created on the calendar
- *
- * @param mix $post_type_slug
- *
- * @return str Singular label for a post-type
- */
- public function get_quick_create_post_type_name($post_type_slug)
+ private function getPostCategoriesNames($postId)
{
- if (is_array($post_type_slug)) {
- $post_type_slug = $post_type_slug[0];
- }
-
- $post_type_obj = get_post_type_object($post_type_slug);
-
- return $post_type_obj->labels->singular_name ? $post_type_obj->labels->singular_name : $post_type_slug;
+ return $this->getPostTerms($postId, 'category');
}
- /**
- * ajax_pp_calendar_update_metadata
- * Update the metadata from the calendar.
- *
- * @return string representing the overlay
- *
- * @since 0.8
- */
- public function handle_ajax_update_metadata()
+ private function getPostTagsNames($postId)
{
- global $wpdb;
+ return $this->getPostTerms($postId, 'post_tag');
+ }
- if ( ! wp_verify_nonce($_POST['nonce'], 'pp-calendar-modify')) {
- $this->print_ajax_response('error', $this->module->messages['nonce-failed']);
+ public function getPostData()
+ {
+ if (! wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'publishpress-calendar-get-data')) {
+ wp_send_json([], 403);
}
- // Check that we got a proper post
- $post_id = (int)$_POST['post_id'];
- $post = get_post($post_id);
+ $id = (int)$_GET['id'];
- if ( ! $post) {
- $this->print_ajax_response('error', $this->module->messages['missing-post']);
+ if (empty($id)) {
+ wp_send_json(null, 404);
}
- if ($post->post_type == 'page') {
- $edit_check = 'edit_page';
- } else {
- $edit_check = 'edit_post';
- }
+ $post = get_post($id);
- if ( ! current_user_can($edit_check, $post->ID)) {
- $this->print_ajax_response('error', $this->module->messages['invalid-permissions']);
+ if (empty($post) || is_wp_error($post)) {
+ wp_send_json(null, 404);
}
- // Check that the user can modify the post
- if ( ! $this->current_user_can_modify_post($post)) {
- $this->print_ajax_response('error', $this->module->messages['invalid-permissions']);
- }
+ $args = [];
+ $args['id'] = $id;
+ $args['post'] = $post;
+ $args['type'] = $this->getPostTypeName($post->post_type);
+ $args['date'] = get_the_date(get_option('date_format', 'Y-m-d H:i:s'), $post);
+ $args['status'] = $this->getPostStatusName($post->post_status);
+ $args['categories'] = $this->getPostCategoriesNames($id);
+ $args['tags'] = $this->getPostTagsNames($id);
- $default_types = [
- 'author',
- 'taxonomy',
- ];
+ $data = PP_Calendar_Utilities::getPostData($args);
- $metadata_types = [];
-
- if ( ! $this->module_enabled('editorial_metadata')) {
- $this->print_ajax_response('error', $this->module->messages['update-error']);
- }
-
- $metadata_types = array_keys(PublishPress()->editorial_metadata->get_supported_metadata_types());
-
- // Update an editorial metadata field
- if (isset($_POST['metadata_type']) && in_array($_POST['metadata_type'], $metadata_types)) {
- $post_meta_key = sanitize_text_field('_pp_editorial_meta_' . $_POST['metadata_type'] . '_' . $_POST['metadata_term']);
+ wp_send_json($data, 202);
+ }
- // Javascript date parsing is terrible, so use strtotime in php
- if ($_POST['metadata_type'] == 'date') {
- $metadata_value = strtotime(sanitize_text_field($_POST['metadata_value']));
- } else {
- $metadata_value = sanitize_text_field($_POST['metadata_value']);
- }
+ public function getPostTypeFields()
+ {
+ global $publishpress;
- update_post_meta($post->ID, $post_meta_key, $metadata_value);
- $response = 'success';
- } else {
- switch ($_POST['metadata_type']) {
- case 'taxonomy':
- case 'taxonomy hierarchical':
- $response = wp_set_post_terms($post->ID, $_POST['metadata_value'], $_POST['metadata_term']);
- break;
- default:
- $response = new WP_Error('invalid-type', __('Invalid metadata type', 'publishpress'));
- break;
- }
+ if (! wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'publishpress-calendar-get-data')) {
+ wp_send_json([], 403);
}
- // Assuming we've got to this point, just regurgitate the value
- if ( ! is_wp_error($response)) {
- $this->print_ajax_response('success', $_POST['metadata_value']);
- } else {
- $this->print_ajax_response('error', __('Metadata could not be updated.', 'publishpress'));
+ $postType = isset($_GET['postType']) ? sanitize_text_field($_GET['postType']) : 'post';
+ $postTypeObject = get_post_type_object($postType);
+ if (empty($postTypeObject) || is_wp_error($postTypeObject)) {
+ wp_send_json([], 404);
}
- }
- public function calendar_filters()
- {
- $select_filter_names = [];
+ $data = $this->content_calendar_methods->getPostTypeFields($this->getUserAuthorizedPostStatusOptions($postType));
- $select_filter_names['post_status'] = 'post_status';
- $select_filter_names['cat'] = 'cat';
- $select_filter_names['tag'] = 'tag';
- $select_filter_names['author'] = 'author';
- $select_filter_names['type'] = 'cpt';
- $select_filter_names['weeks'] = 'weeks';
+ wp_send_json($data, 202);
+ }
- return apply_filters('pp_calendar_filter_names', $select_filter_names);
+ private function formatDateFromString($date, $originalFormat = 'Y-m-d')
+ {
+ $datetime = date_create_immutable_from_format($originalFormat, $date);
+ return $datetime->format(get_option('date_format', 'Y-m-d H:i:s'));
}
/**
* Sanitize a $_GET or similar filter being used on the calendar
*
- * @param string $key Filter being sanitized
+ * @param string $key Filter being sanitized
* @param string $dirty_value Value to be sanitized
*
* @return string $sanitized_value Safe to use value
@@ -2585,7 +1712,7 @@ public function sanitize_filter($key, $dirty_value)
switch ($key) {
case 'post_status':
// Whitelist-based validation for this parameter
- $valid_statuses = wp_list_pluck($this->get_post_statuses(), 'slug');
+ $valid_statuses = wp_list_pluck($this->get_post_statuses(), 'slug');
$valid_statuses[] = 'future';
$valid_statuses[] = 'unpublish';
$valid_statuses[] = 'publish';
@@ -2597,7 +1724,7 @@ public function sanitize_filter($key, $dirty_value)
}
break;
case 'cpt':
- $cpt = sanitize_key($dirty_value);
+ $cpt = sanitize_key($dirty_value);
$supported_post_types = $this->get_post_types_for_module($this->module);
if ($cpt && in_array($cpt, $supported_post_types)) {
return $cpt;
@@ -2619,101 +1746,9 @@ public function sanitize_filter($key, $dirty_value)
return empty($weeks) ? self::DEFAULT_NUM_WEEKS : $weeks;
break;
default:
- return false;
- break;
- }// End switch().
- }
-
- public function calendar_filter_options($select_id, $select_name, $filters)
- {
- switch ($select_id) {
- case 'post_status':
- $post_statuses = $this->get_post_statuses();
- ?>
-
-
- slug) . "' " . selected($post_status->slug,
- $filters['post_status']) . '>' . esc_html($post_status->name) . '';
- }
- ?>
-
- __('All categories', 'publishpress'),
- 'hide_empty' => 0,
- 'hierarchical' => 1,
- 'show_count' => 0,
- 'orderby' => 'name',
- 'selected' => $filters['cat'],
- ];
- wp_dropdown_categories($category_dropdown_args);
- }
- break;
- case 'tag':
- if (taxonomy_exists('post_tag')) {
- $tag_dropdown_args = [
- 'show_option_all' => __('All tags', 'publishpress'),
- 'hide_empty' => 0,
- 'hierarchical' => 0,
- 'show_count' => 0,
- 'orderby' => 'name',
- 'selected' => $filters['tag'],
- 'taxonomy' => 'post_tag',
- 'name' => 'tag',
- ];
- wp_dropdown_categories($tag_dropdown_args);
- }
- break;
- case 'author':
- $users_dropdown_args = [
- 'show_option_all' => __('All users', 'publishpress'),
- 'name' => 'author',
- 'selected' => $filters['author'],
- 'who' => 'authors',
- ];
- $users_dropdown_args = apply_filters('pp_calendar_users_dropdown_args', $users_dropdown_args);
- wp_dropdown_users($users_dropdown_args);
- break;
- case 'type':
- $supported_post_types = $this->get_post_types_for_module($this->module);
- if (count($supported_post_types) > 1) {
- ?>
-
-
- $post_type_name) {
- $all_post_types = get_post_types(null, 'objects');
- echo '' . esc_html($all_post_types[$post_type_name]->labels->name) . ' ';
- } ?>
-
- ';
- for ($i = 1; $i <= 12; $i++) {
- $output .= '
' . sprintf(_n('%s week', '%s weeks', $i, 'publishpress'),
- esc_attr($i)) . ' ';
- }
- $output .= '';
- echo $output;
- break;
- default:
- do_action('pp_calendar_filter_display', $select_id, $select_name, $filters);
+ return sanitize_text_field($dirty_value);
break;
- }// End switch().
+ }
}
/**
@@ -2725,81 +1760,6 @@ public function action_clean_li_html_cache($post_id)
wp_cache_delete($post_id . 'read_only', self::$post_li_html_cache_key);
}
- /**
- * Filters the status text of the post. Fixing the text for future and past dates.
- *
- * @param string $status The status text.
- * @param WP_Post $post Post object.
- * @param string $column_name The column name.
- * @param string $mode The list display mode ('excerpt' or 'list').
- */
- public function filter_post_date_column_status($status, $post, $column_name, $mode)
- {
- if ('date' === $column_name) {
- if ('0000-00-00 00:00:00' === $post->post_date) {
- $time_diff = 0;
- } else {
- $time = get_post_time('G', true, $post);
-
- $time_diff = time() - $time;
- }
-
- if ('future' === $post->post_status) {
- if ($time_diff > 0) {
- return '
' . __('Missed schedule') . ' ';
- } else {
- return __('Scheduled');
- }
- }
-
- if ('publish' === $post->post_status) {
- return __('Published');
- }
-
- return __('Publish on');
- }
-
- return $status;
- }
-
- /**
- * @return string
- * @since 1.20.1
- *
- * @access private
- *
- */
- private function getShowPostsPublishTimeOptionValue()
- {
- $valid_options = ['on', 'off'];
-
- $publish_time = (function_exists('mb_strtolower'))
- ? mb_strtolower($this->module->options->show_posts_publish_time)
- : strtolower($this->module->options->show_posts_publish_time);
-
- if (
- ! isset($this->module->options->show_posts_publish_time)
- || empty($this->module->options->show_posts_publish_time)
- || ! in_array($publish_time, $valid_options)
- ) {
- return 'on';
- }
-
- return $publish_time;
- }
-
- /**
- * @return bool
- * @since @todo
- *
- * @access private
- *
- */
- private function showPostsPublishTime()
- {
- return $this->getShowPostsPublishTimeOptionValue() === 'on';
- }
-
/**
* Sanitizes a given string input.
*
@@ -2815,79 +1775,67 @@ public static function sanitize_text_input($input_value = '')
/**
* Sanitizes a given author id.
*
- * @param string $author_id
+ * @param array $authorsIds
*
- * @return int
+ * @return array
*/
- public static function sanitize_author_input($author_id = '')
+ public static function sanitize_author_input($authorsIds = [])
{
- return (int)sanitize_text_field($author_id);
+ return array_map('intval', $authorsIds);
}
/**
- * @param string $post_author_id
+ * @param array $postAuthorIds
*
- * @return int|null
+ * @return array
*
* @throws Exception
*/
- public static function validate_author_input($post_author_id = '')
+ public static function validateAuthorForPost($postAuthorIds = [])
{
- if (empty($post_author_id)) {
+ if (empty($postAuthorIds)) {
return null;
}
- $authorsPermissions = self::getAuthorPermissions();
- $user = get_user_by('id', $post_author_id);
- if (count(array_intersect($authorsPermissions, $user->roles)) === 0) {
- throw new \Exception(__("The selected user doesn't have enough permissions to be set as the post author.",
- 'publishpress'));
+ foreach ($postAuthorIds as $authorId) {
+ $user = get_user_by('id', $authorId);
+
+ $isValid = is_object($user) && ! is_wp_error($user) && $user->has_cap('edit_posts');
+
+ if (! apply_filters('publishpress_author_can_edit_posts', $isValid, $authorId)) {
+ throw new Exception(
+ esc_html__(
+ "The selected user doesn't have enough permissions to be set as the post author.",
+ 'publishpress'
+ )
+ );
+ }
}
- return (int)$user->ID;
+ return $postAuthorIds;
}
- /**
- * Retrieve a set of permissions that an Author user might have.
- *
- * @access private
- * @static
- * @return array
- * @since 1.20.0
- *
- */
- private static function getAuthorPermissions()
+ public function setDefaultCapabilities()
{
- return [
- 'administrator',
- 'author',
- 'editor',
- 'contributor',
- ];
- }
+ $role = get_role('administrator');
- /**
- * @return array
- * @since 1.20.1
- *
- * @access private
- * @static
- *
- */
- private static function getStatusesEligibleToDisplayPublishTime()
- {
- $statuses = [
- 'publish',
- ];
+ $viewCapability = $this->getViewCapability();
- if (
- class_exists('PP_Custom_Status')
- && PP_Custom_Status::isModuleEnabled()
- ) {
- $statuses[] = PP_Custom_Status::STATUS_SCHEDULED;
+ if (! $role->has_cap($viewCapability)) {
+ $role->add_cap($viewCapability);
}
+ }
+
+ private function getViewCapability()
+ {
+ $viewCapability = apply_filters_deprecated(
+ 'pp_view_calendar_cap',
+ [self::VIEW_CAPABILITY],
+ '3.6.4',
+ 'publishpress_calendar_cap_view_calendar'
+ );
- return $statuses;
+ return apply_filters('publishpress_calendar_cap_view_calendar', $viewCapability);
}
}
-}
+}
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/AsyncCalendar.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/AsyncCalendar.jsx
new file mode 100644
index 000000000..9080ff513
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/AsyncCalendar.jsx
@@ -0,0 +1,637 @@
+import NavigationBar from "./NavigationBar";
+import WeekDays from "./WeekDays";
+import MessageBar from "./MessageBar";
+import DayCell from "./DayCell";
+import {calculateWeeksInMilliseconds, getBeginDateOfWeekByDate, getDateAsStringInWpFormat, getDateInstanceFromString, addCalendarPosts, openPostModal, adjustTextareaHeight, updateModalPost, initToolTips} from "./Functions";
+import FilterBar from "./FilterBar";
+import ItemFormPopup from "./ItemFormPopup";
+
+const $ = jQuery;
+
+export default function AsyncCalendar(props) {
+ const theme = (props.theme || 'light');
+
+ let weeksValue = (props.requestFilter.weeks) ? props.requestFilter.weeks : props.numberOfWeeksToDisplay;
+
+ let calendarFiltersValue = (props.requestFilter) ? props.requestFilter : {};
+
+ const [firstDateToDisplay, setFirstDateToDisplay] = React.useState(props.firstDateToDisplay);
+ const [numberOfWeeksToDisplay, setNumberOfWeeksToDisplay] = React.useState(weeksValue);
+ const [itemsByDate, setItemsByDate] = React.useState(props.items);
+ const [isLoading, setIsLoading] = React.useState(false);
+ const [isDragging, setIsDragging] = React.useState(false);
+ const [message, setMessage] = React.useState();
+ const [filterWeeks, setFilterWeeks] = React.useState(weeksValue);
+ const [searchText, setSearchText] = React.useState('');
+ const [openedItemId, setOpenedItemId] = React.useState();
+ const [openedItemData, setOpenedItemData] = React.useState([]);
+ const [openedItemRefreshCount, setOpenedItemRefreshCount] = React.useState(0);
+ const [refreshCount, setRefreshCount] = React.useState(0);
+ const [hoveredDate, setHoveredDate] = React.useState();
+ const [formDate, setFormDate] = React.useState();
+ const [calendarFilter, setCalendarFilter] = React.useState(calendarFiltersValue);
+
+ const DRAG_AND_DROP_HOVERING_CLASS = 'publishpress-calendar-day-hover';
+
+ const getUrl = (action, query) => {
+ if (!query) {
+ query = '';
+ }
+
+ return props.ajaxUrl + '?action=' + action + '&nonce=' + props.nonce + query;
+ }
+
+ const onFilterSelectChange = (event) => {
+ let selectElement = event.target;
+ let selectName = selectElement.name;
+ let selectValue = selectElement.value;
+ let elementModal = selectElement.closest('.content-calendar-modal');
+ let previousElement = elementModal.previousElementSibling;
+ if (!selectValue || selectValue == '') {
+ previousElement.classList.remove('active-filter');
+ previousElement.innerHTML = previousElement.getAttribute('data-label');
+ } else {
+ let selectedOptionText = selectElement.selectedOptions[0].text;
+ previousElement.classList.add('active-filter');
+ previousElement.innerHTML = previousElement.getAttribute('data-label') + ': ' + selectedOptionText;
+ elementModal.style.display = 'none';
+ }
+ onFilterEventCallback(selectName, selectValue);
+ }
+
+ const onModalNavClick = (event) => {
+ event.preventDefault();
+ let openedItemId = event.currentTarget.getAttribute('data-post_id');
+
+ openPostModal(openedItemId);
+ };
+
+ const onMeModeClick = (event) => {
+ let new_value = '';
+ if (event.target.classList.contains('active-filter')) {
+ new_value = 0;
+ event.target.classList.remove('active-filter');
+ } else {
+ new_value = 1;
+ event.target.classList.add('active-filter');
+ }
+
+ onFilterEventCallback('me_mode', new_value);
+
+ document.querySelector('#filter_author').value = '';
+ document.querySelector('#pp-content-filters #content_calendar_me_mode').value = new_value;
+ };
+
+ const onShowRevisionClick = (event) => {
+ event.preventDefault();
+ let new_value = '';
+
+ if (event.target.classList.contains('active-filter')) {
+ new_value = 1;
+ event.target.classList.remove('active-filter');
+ } else {
+ new_value = 0;
+ event.target.classList.add('active-filter');
+ }
+
+ onFilterEventCallback('hide_revision', new_value);
+
+ document.querySelector('#pp-content-filters #pp_hide_revision_input').value = new_value;
+ };
+
+ const onSearchClick = (event) => {
+ let selectElement = event.target;
+ let elementParent = selectElement.closest('.search-bar');
+ let value = elementParent.querySelector('#co-searchbox-search-input').value;
+ setSearchText(value);
+ }
+
+ const onFilterApplyClick = (event) => {
+ event.preventDefault();
+
+ let elementModal = event.target.closest('.content-calendar-modal');
+ let previousElement = elementModal.previousElementSibling;
+ let inputs = elementModal.querySelectorAll('input:not([type="submit"]), select, textarea');
+ let all_inputs = [];
+ let selected_values = '';
+ inputs.forEach(input => {
+ let inputName = input.name;
+ let inputValue = input.value;
+
+ if (input.type === 'checkbox') {
+ inputValue = input.checked ? '1' : '';
+ selected_values += inputValue;
+ } else if (input.type === 'select-one') {
+ selected_values += ' : ' + input.selectedOptions[0].text;
+ } else if (input.type !== 'hidden' && inputValue && inputValue !== '') {
+ selected_values += ' : ' + inputValue;
+ }
+ all_inputs.push(inputName);
+
+ onFilterEventCallback(inputName, inputValue);
+ });
+
+ if (!selected_values || selected_values == '') {
+ previousElement.classList.remove('active-filter');
+ previousElement.innerHTML = previousElement.getAttribute('data-label');
+ } else {
+ previousElement.classList.add('active-filter');
+ previousElement.innerHTML = previousElement.getAttribute('data-label') + selected_values;
+ }
+
+ elementModal.style.display = 'none';
+ };
+
+
+ const addEventListeners = () => {
+ document.addEventListener('keydown', onDocumentKeyDown);
+ $(document).on('publishpress_calendar:close_popup', onCloseItemPopup);
+ $(document).on('change', '#pp-content-filters select:not(.non-trigger-select)', onFilterSelectChange);
+ $(document).on('click', '.metadata-item-filter .filter-apply input[type=submit]', onFilterApplyClick);
+ $(document).on('click', '.pp-content-calendar-manage .search-bar input[type=submit]', onSearchClick);
+ $(document).on('click', '.pp-content-calendar-manage .me-mode-action', onMeModeClick);
+ $(document).on('click', '.pp-content-calendar-manage .pp-show-revision-btn', onShowRevisionClick);
+ $(document).on('click', '.pp-popup-modal-header .modal-nav-prev, .pp-popup-modal-header .modal-nav-next', onModalNavClick);
+ $(document).on('input', '.pp-content-calendar-general-modal-container .modal-post-title .title-area', adjustTextareaHeight);
+ $(document).on('click', '.pp-content-calendar-general-modal-container .modal-content-right .save-post-changes:not(.disabled)', function(e) {
+ updateModalPost(e, jQuery(this), handleRefreshOnClick);
+ });
+ }
+
+ const removeEventListeners = () => {
+ document.removeEventListener('keydown', onDocumentKeyDown);
+ $('.publishpress-calendar tbody > tr > td').off('mouseenter');
+ }
+
+ const didMount = () => {
+ addEventListeners();
+
+ if (props.userCanAddPosts) {
+ initClickToCreateFeature();
+ }
+
+ return didUnmount;
+ }
+
+ const didUnmount = () => {
+ removeEventListeners();
+ }
+
+ const fetchCalendarData = () => {
+ setIsLoading(true);
+ setMessage(props.strings.loading);
+
+ let dataUrl = getUrl(props.actionGetData, '');
+
+ if (calendarFilter && Object.keys(calendarFilter).length > 0) {
+ if (calendarFilter.hasOwnProperty('start_date')) {
+ delete calendarFilter.start_date;
+ }
+ if (calendarFilter.hasOwnProperty('number_of_weeks')) {
+ delete calendarFilter.number_of_weeks;
+ }
+ let calendarFilterParams = new URLSearchParams(calendarFilter);
+ dataUrl += '&' + calendarFilterParams.toString();
+ }
+
+ dataUrl += '&start_date=' + getDateAsStringInWpFormat(getBeginDateOfWeekByDate(firstDateToDisplay, props.weekStartsOnSunday)) + '&number_of_weeks=' + numberOfWeeksToDisplay;
+
+ if (searchText) {
+ dataUrl += '&s=' + searchText;
+ } else {
+ dataUrl += '&s=';
+ }
+
+ fetch(dataUrl)
+ .then(response => response.json())
+ .then((fetchedData) => {
+ publishpressCalendarParams.PostData = addCalendarPosts(publishpressCalendarParams.PostData, fetchedData);
+ setItemsByDate(fetchedData);
+ setIsLoading(false);
+ setMessage(null);
+
+ resetCSSClasses();
+ initToolTips();
+ });
+ };
+
+ const resetCSSClasses = () => {
+ $('.' + DRAG_AND_DROP_HOVERING_CLASS).removeClass(DRAG_AND_DROP_HOVERING_CLASS);
+ $('.publishpress-calendar-loading').removeClass('publishpress-calendar-loading');
+ };
+
+ const fetchCalendarItemData = () => {
+ if (!openedItemId) {
+ return;
+ }
+
+ if (publishpressCalendarParams.proActive) {
+ openPostModal(openedItemId);
+ } else {
+ setIsLoading(true);
+ setMessage(props.strings.loadingItem);
+
+ const dataUrl = props.ajaxUrl + '?action=' + 'publishpress_calendar_get_post_data' + '&nonce=' + props.nonce + '&id=' + openedItemId;
+ fetch(dataUrl)
+ .then(response => response.json())
+ .then((data) => {
+ setIsLoading(false);
+ setMessage(null);
+
+ setOpenedItemData(data);
+ });
+ }
+ }
+
+ const addOffsetInWeeksToFirstDateToDisplay = (offsetInWeeks) => {
+ setFirstDateToDisplay(new Date(firstDateToDisplay.getTime() + calculateWeeksInMilliseconds(offsetInWeeks)));
+ };
+
+ const handleRefreshOnClick = (e) => {
+ e.preventDefault();
+
+ setRefreshCount(prevCount => prevCount + 1);
+ };
+
+ const handleBackPageOnClick = (e) => {
+ e.preventDefault();
+
+ addOffsetInWeeksToFirstDateToDisplay(numberOfWeeksToDisplay * -1);
+ };
+
+ const handleBackOnClick = (e) => {
+ e.preventDefault();
+
+ addOffsetInWeeksToFirstDateToDisplay(-1);
+ };
+
+ const handleForwardOnClick = (e) => {
+ e.preventDefault();
+
+ addOffsetInWeeksToFirstDateToDisplay(1);
+ }
+
+ const handleForwardPageOnClick = (e) => {
+ e.preventDefault();
+
+ addOffsetInWeeksToFirstDateToDisplay(numberOfWeeksToDisplay);
+ };
+
+ const handleTodayOnClick = (e) => {
+ e.preventDefault();
+
+ setFirstDateToDisplay(getBeginDateOfWeekByDate(props.todayDate, props.weekStartsOnSunday));
+ };
+
+ const moveCalendarItemToANewDate = (itemDate, itemIndex, newYear, newMonth, newDay) => {
+ if (!itemsByDate[itemDate]) {
+ return;
+ }
+ let item = itemsByDate[itemDate][itemIndex];
+
+ setIsLoading(true);
+ setMessage(props.strings.movingTheItem);
+
+ const dataUrl = getUrl(props.actionMoveItem);
+
+ const formData = new FormData();
+ formData.append('id', item.id);
+ formData.append('year', newYear);
+ formData.append('month', newMonth);
+ formData.append('day', newDay);
+
+ fetch(dataUrl, {method: 'POST', body: formData})
+ .then(response => response.json())
+ .then(() => {
+ setRefreshCount(refreshCount + 1);
+ });
+ }
+
+ const handleOnDropItemCallback = (event, ui) => {
+ const $dayCell = $(event.target);
+ const $item = $(ui.draggable[0]);
+ const dateTime = getDateAsStringInWpFormat(getDateInstanceFromString($item.data('datetime')));
+
+ $(event.target).addClass('publishpress-calendar-loading');
+
+ moveCalendarItemToANewDate(
+ dateTime,
+ $item.data('index'),
+ $dayCell.data('year'),
+ $dayCell.data('month'),
+ $dayCell.data('day')
+ );
+ };
+
+ const handleOnHoverCellCallback = (event, ui) => {
+ resetCSSClasses();
+
+ $(event.target).addClass(DRAG_AND_DROP_HOVERING_CLASS);
+ };
+
+ const itemPopupIsOpenedById = (id) => {
+ return id === openedItemId;
+ }
+
+ const initDraggableAndDroppableBehaviors = () => {
+ $('.publishpress-calendar-day-items li').draggable({
+ zIndex: 99999,
+ helper: 'clone',
+ containment: '.publishpress-calendar table',
+ start: (event, ui) => {
+ // Do not drag the item if the popup is opened.
+ if (itemPopupIsOpenedById($(event.target).data('id'))) {
+ return false;
+ }
+
+ if (!$(event.target).hasClass('publishpress-calendar-item-movable')) {
+ return false;
+ }
+
+ $(event.target).addClass('ui-draggable-target');
+
+ resetOpenedItemInPopup();
+
+ setIsDragging(true);
+ },
+ stop: (event, ui) => {
+ $('.ui-draggable-target').removeClass('ui-draggable-target');
+
+ setIsDragging(false);
+ }
+ });
+
+ $('.publishpress-calendar tbody > tr > td').droppable({
+ drop: handleOnDropItemCallback,
+ over: handleOnHoverCellCallback
+ });
+ };
+
+ const getCellFromChild = (child) => {
+ let $child = $(child);
+
+ if ($child.is('td.publishpress-calendar-business-day, td.publishpress-calendar-weekend-day')) {
+ return $child;
+ }
+
+ if ($child.is('.publishpress-calendar-cell-header, .publishpress-calendar-date, .publishpress-calendar-cell-click-to-add, .publishpress-calendar-month-name')) {
+ return $child.parents('td');
+ }
+
+ return null;
+ }
+
+ const getCellDate = (cell) => {
+ let date = getDateInstanceFromString(cell.data('year') + '-' + cell.data('month') + '-' + cell.data('day'));
+
+ // Compensate the timezone for returning the correct date
+ if (date.getHours() > 0) {
+ date.setTime(date.getTime() + (60 * 1000 * date.getTimezoneOffset()));
+ }
+
+ return date;
+ }
+
+ const isHoveringCellWhileDragging = (cell) => {
+ return $(cell).hasClass(DRAG_AND_DROP_HOVERING_CLASS);
+ }
+
+ const initClickToCreateFeature = () => {
+ // We have to use this variable because when the click is done on the "click to add" label, we can't get its parent.
+ // Probably because it was already removed from the DOM.
+ let lastHoveredDate;
+ $('.publishpress-calendar tbody > tr > td')
+ .on('mouseover', (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+
+ const cell = getCellFromChild(e.target);
+
+ if (cell) {
+ if (isHoveringCellWhileDragging(cell)) {
+ return;
+ }
+
+ setHoveredDate(getCellDate(cell));
+ lastHoveredDate = getCellDate(cell);
+ }
+ })
+ .on('mouseout', (e) => {
+ e.stopPropagation();
+ e.preventDefault();
+
+ if (getCellFromChild(e.relatedTarget)) {
+ return;
+ }
+
+ setHoveredDate(null);
+ lastHoveredDate = null;
+ })
+ .on('click', (e) => {
+ const cell = getCellFromChild(e.target);
+
+ if (cell) {
+ setOpenedItemId(null);
+ setFormDate(lastHoveredDate);
+ }
+ });
+ }
+
+ const onFilterEventCallback = (filterName, value) => {
+ setCalendarFilter(prevCalendarFilter => ({
+ ...prevCalendarFilter,
+ [filterName]: value
+ }));
+
+ if ('weeks' === filterName) {
+ value = parseInt(value);
+ if (value === 0 || isNaN(value)) {
+ value = props.numberOfWeeksToDisplay;
+ }
+
+ setFilterWeeks(value);
+ setNumberOfWeeksToDisplay(value);
+
+ }
+ }
+
+ const resetOpenedItemInPopup = () => {
+ setOpenedItemId(null);
+ setOpenedItemData(null);
+ setFormDate(null);
+ }
+
+ const onClickItem = (id) => {
+ setOpenedItemData(null);
+ setHoveredDate(null);
+ setFormDate(null);
+ setOpenedItemId(id);
+
+ if (publishpressCalendarParams.proActive) {
+ openPostModal(id);
+ }
+ }
+
+ const onPopupItemActionClick = (action, id, result) => {
+ setOpenedItemRefreshCount(openedItemRefreshCount + 1);
+ }
+
+ const onDocumentKeyDown = (e) => {
+ if (e.key === 'Escape') {
+ resetOpenedItemInPopup();
+ }
+ }
+
+ const getOpenedItemData = () => {
+ return openedItemData;
+ }
+
+ const onCloseForm = () => {
+ setRefreshCount(refreshCount + 1);
+
+ setFormDate(null);
+ }
+
+ const onCloseItemPopup = () => {
+ setOpenedItemId(null);
+ }
+
+ const calendarTableBodyRowsWithCells = () => {
+ const numberOfDaysToDisplay = numberOfWeeksToDisplay * 7;
+ const firstDate = getBeginDateOfWeekByDate(firstDateToDisplay, props.weekStartsOnSunday);
+
+ let tableRows = [];
+ let rowCells = [];
+ let dayIndexInTheRow = 0;
+ let dayDate;
+ let dateString;
+ let lastMonthDisplayed = firstDate.getMonth();
+
+ for (let dataIndex = 0; dataIndex < numberOfDaysToDisplay; dataIndex++) {
+ if (dayIndexInTheRow === 0) {
+ rowCells = [];
+ }
+
+ dayDate = new Date(firstDate);
+ dayDate.setDate(dayDate.getDate() + dataIndex);
+ dateString = getDateAsStringInWpFormat(dayDate);
+
+ rowCells.push(
+
+ );
+
+ dayIndexInTheRow++;
+
+ if (dayIndexInTheRow === 7) {
+ dayIndexInTheRow = 0;
+ tableRows.push(
+ {rowCells}
+ );
+ }
+
+ lastMonthDisplayed = dayDate.getMonth();
+ }
+
+ return tableRows;
+ };
+
+ React.useEffect(didMount, []);
+ React.useEffect(initDraggableAndDroppableBehaviors);
+
+ if (props.userCanAddPosts) {
+ React.useEffect(
+ initClickToCreateFeature,
+ [
+ firstDateToDisplay,
+ numberOfWeeksToDisplay,
+ filterWeeks,
+ searchText,
+ calendarFilter,
+ refreshCount
+ ]
+ );
+ }
+
+ React.useEffect(
+ fetchCalendarData,
+ [
+ firstDateToDisplay,
+ numberOfWeeksToDisplay,
+ filterWeeks,
+ searchText,
+ calendarFilter,
+ refreshCount
+ ]
+ );
+ React.useEffect(
+ fetchCalendarItemData,
+ [
+ openedItemId,
+ openedItemRefreshCount
+ ]
+ )
+
+ let componentClassName = [
+ 'publishpress-calendar',
+ 'publishpress-calendar-theme-' + theme,
+ ];
+
+ if (props.userCanAddPosts) {
+ componentClassName.push('user-can-add-posts');
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {calendarTableBodyRowsWithCells()}
+
+
+
+ {formDate &&
+
+ }
+
+
+
+ )
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Button.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Button.jsx
new file mode 100644
index 000000000..0aa120efd
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Button.jsx
@@ -0,0 +1,13 @@
+export default function Button(props) {
+ let icon;
+
+ if (props.icon) {
+ icon = ;
+ }
+
+ const className = 'publishpress-calendar-button ' + (props.className || '');
+
+ return (
+ {icon}{props.label}
+ )
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/DayCell.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/DayCell.jsx
new file mode 100644
index 000000000..9233fa943
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/DayCell.jsx
@@ -0,0 +1,121 @@
+import {getMonthNameByMonthIndex} from "./Functions";
+import Item from "./Item";
+
+export default function DayCell(props) {
+ const [uncollapseItems, setUncollapseItems] = React.useState(false);
+
+ let itemIndex = 0;
+
+ const getDayItemClassName = (dayDate, todayDate) => {
+ const businessDays = [1, 2, 3, 4, 5];
+
+ let dayItemClassName = businessDays.indexOf(dayDate.getDay()) >= 0 ? 'business-day' : 'weekend-day'
+
+ if (todayDate.getFullYear() === dayDate.getFullYear()
+ && todayDate.getMonth() === dayDate.getMonth()
+ && todayDate.getDate() === dayDate.getDate()
+ ) {
+ dayItemClassName += ' publishpress-calendar-today';
+ }
+
+ if (props.isLoading) {
+ dayItemClassName += ' publishpress-calendar-loading';
+ }
+
+ if (uncollapseItems) {
+ dayItemClassName += ' publishpress-calendar-uncollapse';
+ }
+
+ if (dayDate.getDate() === 1) {
+ dayItemClassName += ' publishpress-calendar-first-day-of-month';
+ }
+
+ if (props.isHovering) {
+ dayItemClassName += ' publishpress-calendar-hovering';
+ }
+
+ return 'publishpress-calendar-' + dayItemClassName;
+ };
+
+ const toggleUncollapseItems = () => {
+ setUncollapseItems(!uncollapseItems);
+ };
+
+ const uncollapseButton = () => {
+ if (props.maxVisibleItems === -1) {
+ return (<>>);
+ }
+
+ if (props.items.length > props.maxVisibleItems) {
+ const numberOfExtraItems = props.items.length - props.maxVisibleItems;
+ const hideItems = props.strings.hideItems;
+ const showMore = props.strings.showMore;
+
+ const label = uncollapseItems ? hideItems.replace('%s', numberOfExtraItems) : showMore.replace('%s', numberOfExtraItems);
+ const className = uncollapseItems ? 'publishpress-calendar-hide-items' : 'publishpress-calendar-show-more';
+ const iconClass = uncollapseItems ? 'hidden' : 'visibility';
+
+ return (
+ {label}
+ );
+ }
+
+ return (<>>);
+ }
+
+ const visibleItems = uncollapseItems || props.maxVisibleItems === -1 ? props.items : props.items.slice(0, props.maxVisibleItems);
+
+ return (
+
+
+
+ {props.shouldDisplayMonthName &&
+ {getMonthNameByMonthIndex(props.date.getMonth())}
+ }
+ {props.date.getDate()}
+ {props.isHovering &&
+ {props.strings.clickToAdd}
+ }
+
+
+
+ {visibleItems.map(item => {
+ const isPopupOpened = item.id === props.openedItemId;
+
+ return (
+
+ )
+ })}
+
+
+ {uncollapseButton()}
+
+
+ )
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/FilterBar.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/FilterBar.jsx
new file mode 100644
index 000000000..a67b846ba
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/FilterBar.jsx
@@ -0,0 +1,135 @@
+import Select from "./Select";
+import TaxonomyField from "./fields/TaxonomyField";
+
+const _n = wp.i18n._n;
+
+export default function FilterBar(props) {
+ const handleFilterChange = (filterName, value) => {
+ const filterValue = value ? value[0].id : null;
+
+ props.onChange(filterName, filterValue);
+ }
+
+ const handleStatusChange = (e, element, value) => {
+ handleFilterChange('status', value);
+ }
+
+ const handleCategoriesChange = (e, element, value) => {
+ handleFilterChange('category', value);
+ }
+
+ const handleTagsChange = (e, element, value) => {
+ handleFilterChange('tag', value);
+ }
+
+ const handleAuthorsChange = (e, element, value) => {
+ handleFilterChange('author', value);
+ }
+
+ const handlePostTypeChange = (e, element, value) => {
+ handleFilterChange('postType', value);
+ }
+
+ const handleWeeksChange = (e, element, value) => {
+ handleFilterChange('weeks', value);
+ }
+
+ const getWeeksFilterLabel = (numberOfWeeks) => {
+ return _n(props.strings.xWeek, props.strings.xWeeks, numberOfWeeks, 'publishpress')
+ .replace('%d', numberOfWeeks);
+ }
+
+ const weeksFilterPlaceholder = getWeeksFilterLabel(props.numberOfWeeksToDisplay);
+
+ let weeksOptions = [];
+ for (let i = 1; i <= 12; i++) {
+ weeksOptions.push({
+ value: i,
+ text: getWeeksFilterLabel(i)
+ });
+ }
+
+ let statusValue = (props.requestFilter.post_status) ? props.requestFilter.post_status : '';
+ let typesValue = (props.requestFilter.post_type) ? props.requestFilter.post_type : '';
+ let weeksValue = (props.requestFilter.weeks) ? props.requestFilter.weeks : '';
+
+ let categoryOptions = [];
+ let categoryValue = '';
+ if (props.requestFilter.category && props.requestFilter.category.value) {
+ categoryOptions = [props.requestFilter.category];
+ categoryValue = props.requestFilter.category.value;
+ }
+
+ let postTagOptions = [];
+ let postTagValue = '';
+ if (props.requestFilter.post_tag && props.requestFilter.post_tag.value) {
+ postTagOptions = [props.requestFilter.post_tag];
+ postTagValue = props.requestFilter.post_tag.value;
+ }
+
+ let authorOptions = [];
+ let authorValue = '';
+ if (props.requestFilter.post_author && props.requestFilter.post_author.value) {
+ authorOptions = [props.requestFilter.post_author];
+ authorValue = props.requestFilter.post_author.value;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Functions.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Functions.jsx
new file mode 100644
index 000000000..f65a622d4
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Functions.jsx
@@ -0,0 +1,601 @@
+/**
+ * Base on :
+ * https://stackoverflow.com/questions/16590500/javascript-calculate-date-from-week-number
+ */
+export function getBeginDateOfWeekByWeekNumber(weekNumber, year, weekStartsOnSunday = true) {
+ let simpleDate = new Date(year, 0, 1 + (weekNumber - 1) * 7);
+ let dayOfWeek = simpleDate.getDay();
+ let weekStartISO = simpleDate;
+
+
+ if (dayOfWeek <= 4) {
+ weekStartISO.setDate(simpleDate.getDate() - simpleDate.getDay() + 1);
+ } else {
+ weekStartISO.setDate(simpleDate.getDate() + 8 - simpleDate.getDay());
+ }
+
+ if (weekStartsOnSunday) {
+ weekStartISO.setDate(weekStartISO.getDate() - 1);
+ }
+
+ return weekStartISO;
+}
+
+/* For a given date, get the ISO week number
+ *
+ * Based on information at:
+ *
+ * http://www.merlyn.demon.co.uk/weekcalc.htm#WNR
+ *
+ * Algorithm is to find nearest thursday, it's year
+ * is the year of the week number. Then get weeks
+ * between that date and the first day of that year.
+ *
+ * Note that dates in one year can be weeks of previous
+ * or next year, overlap is up to 3 days.
+ *
+ * e.g. 2014/12/29 is Monday in week 1 of 2015
+ * 2012/1/1 is Sunday in week 52 of 2011
+ */
+export function getWeekNumberByDate(theDate, weekStartsOnSunday = true) {
+
+ let theDateCopy = new Date(theDate.getFullYear(), theDate.getMonth(), theDate.getDate());
+
+ let dayOfWeek = theDateCopy.getDay();
+ let yearStart = new Date(theDateCopy.getFullYear(), 0, 1);
+
+ let startOffset = weekStartsOnSunday ? yearStart.getDay() : (yearStart.getDay() || 7) - 1;
+
+ let daysSinceYearStart = (theDateCopy - yearStart) / 86400000;
+ let weekNo = Math.floor((daysSinceYearStart + startOffset) / 7) + 1;
+
+ return [theDateCopy.getFullYear(), weekNo];
+}
+
+export function getBeginDateOfWeekByDate(theDate, weekStartsOnSunday = true) {
+ let weekNumber = getWeekNumberByDate(theDate, weekStartsOnSunday);
+
+ return getBeginDateOfWeekByWeekNumber(weekNumber[1], weekNumber[0], weekStartsOnSunday);
+}
+
+export function getHourStringOnFormat(timestamp, timeFormat = 'ga') {
+ let hours = timestamp.getHours();
+
+ if (timeFormat === 'ga' || timeFormat === 'ha') {
+ if (hours === 0) {
+ hours = '12am';
+ } else if (hours < 12) {
+ if (timeFormat === 'ha') {
+ hours = hours.toString().padStart(2, '0');
+ }
+ hours += 'am';
+ } else {
+ if (hours > 12) {
+ hours -= 12;
+ }
+
+ if (timeFormat === 'ha') {
+ hours = hours.toString().padStart(2, '0');
+ }
+
+ hours += 'pm';
+ }
+ } else {
+ hours = hours.toString().padStart(2, '0');
+ }
+
+ return hours;
+}
+
+export function getDateAsStringInWpFormat(theDate) {
+ return theDate.getFullYear() + '-'
+ + (theDate.getMonth() + 1).toString().padStart(2, '0') + '-'
+ + theDate.getDate().toString().padStart(2, '0');
+}
+
+export function calculateWeeksInMilliseconds(weeks) {
+ return weeks * 7 * 24 * 60 * 60 * 1000;
+}
+
+export function getMonthNameByMonthIndex(month) {
+ const strings = publishpressCalendarParams.strings;
+
+ const monthNames = [
+ strings.monthJan,
+ strings.monthFeb,
+ strings.monthMar,
+ strings.monthApr,
+ strings.monthMay,
+ strings.monthJun,
+ strings.monthJul,
+ strings.monthAug,
+ strings.monthSep,
+ strings.monthOct,
+ strings.monthNov,
+ strings.monthDec
+ ];
+
+ return monthNames[month];
+}
+
+export function getDateWithNoTimezoneOffset(dateString) {
+ let date = new Date(dateString);
+ const browserTimezoneOffset = date.getTimezoneOffset() * 60000;
+
+ return new Date(date.getTime() + browserTimezoneOffset);
+}
+
+export function getPostLinksElement(linkData, handleOnClick) {
+ var className = linkData.className ? linkData.className : '';
+ if (linkData.url) {
+ return ({linkData.label} );
+ } else if (linkData.action) {
+ return ( handleOnClick(e, linkData)}>{linkData.label} );
+ }
+}
+
+export async function callAjaxAction(action, args, ajaxUrl) {
+ let dataUrl = ajaxUrl + '?action=' + action;
+
+ for (const argumentName in args) {
+ if (!args.hasOwnProperty(argumentName)) {
+ continue;
+ }
+
+ dataUrl += '&' + argumentName + '=' + args[argumentName];
+ }
+
+ const response = await fetch(dataUrl);
+ return await response.json();
+}
+
+export async function callAjaxPostAction(action, args, ajaxUrl, body) {
+ let dataUrl = ajaxUrl + '?action=' + action;
+
+ for (const argumentName in args) {
+ if (!args.hasOwnProperty(argumentName)) {
+ continue;
+ }
+
+ dataUrl += '&' + argumentName + '=' + args[argumentName];
+ }
+
+ const response = await fetch(dataUrl, {
+ method: 'post',
+ body: body
+ });
+ return await response.json();
+}
+
+export function getTodayMidnight() {
+ let today = new Date();
+ today.setHours(0, 0, 0, 0);
+
+ return today;
+}
+
+export function getDateInstanceFromString(dateString) {
+ // The "-" char is replaced to make it compatible to Safari browser. Issue #1001.
+ return new Date(String(dateString).replace(/-/g, "/"));
+}
+
+export function addCalendarPosts(posts, calendarPosts) {
+
+ for (const date in calendarPosts) {
+ if (calendarPosts.hasOwnProperty(date)) {
+ calendarPosts[date].forEach(post => {
+ if (post.calendar_post_data && Object.keys(post.calendar_post_data).length > 0) {
+ const existingIndex = posts.findIndex(mergedPost => mergedPost.post_id === post.calendar_post_data.post_id);
+ const mergedPost = {
+ ...post.calendar_post_data,
+ taxonomies: {
+ ...post.calendar_taxonomies_data
+ }
+ };
+ if (existingIndex > -1) {
+ // Update the existing post
+ posts[existingIndex] = mergedPost;
+ } else {
+ // Add the new post
+ posts.push(mergedPost);
+ }
+ }
+ });
+ }
+ }
+
+ return posts;
+}
+
+export function updateModalPost(e, button, handleRefreshOnClick) {
+ e.preventDefault();
+ var modal_form = button.closest('.modal-content-right');
+
+ button.addClass('disabled');
+
+ var post_id = button.attr('data-post_id');
+ var post_title = modal_form.find('.title-area').val();
+ var post_date = modal_form.find('.content_board_post_date_hidden').val();
+ var post_author = modal_form.find('.pp-modal-form-author').val();
+ var post_status = modal_form.find('.pp-modal-form-post-status').val();
+ var post_taxonomies = {};
+ modal_form.find('.pp-modal-form-post-taxonomy').each(function () {
+ var tax_html = jQuery(this);
+ post_taxonomies[tax_html.attr('data-taxonomy')] = tax_html.val();
+ });
+ var data = {
+ action: "publishpress_content_calendar_update_post",
+ post_id: post_id,
+ post_title: post_title,
+ post_date: post_date,
+ post_author: post_author,
+ post_status: post_status,
+ post_taxonomies: post_taxonomies,
+ nonce: publishpressCalendarParams.nonce
+ };
+
+ jQuery.post(ajaxurl, data, function (response) {
+ if (response.status == 'success') {
+ let PostData = publishpressCalendarParams.PostData;
+
+ var target_post = jQuery('.publishpress-calendar .publishpress-calendar-item.post-' + post_id);
+ var post_index = PostData.findIndex(function(p) {
+ return Number(p.post_id) === Number(post_id);
+ });
+
+ // update card and post global data
+ var post = PostData[post_index];
+ var taxonomies = post.taxonomies;
+
+ post.post_title = post_title;
+ post.raw_title = post_title;
+ post.post_status = post_status;
+ post.author_markup = response.author_markup;
+ post.date_markup = response.date_markup;
+
+ var response_taxonomies = response.taxonomy_terms;
+ for (var taxonomyKey in response_taxonomies) {
+ if (response_taxonomies.hasOwnProperty(taxonomyKey)) {
+ var taxonomyData = response_taxonomies[taxonomyKey];
+ taxonomies[taxonomyKey].terms = taxonomyData;
+ }
+ }
+ post.taxonomies = taxonomies;
+ publishpressCalendarParams.PostData[post_index] = post;
+
+ // update post title
+ target_post.find('.publishpress-calendar-item-title').html(post.post_title);
+
+ //refresh calendar
+ if (typeof handleRefreshOnClick === 'function') {
+ handleRefreshOnClick(e);
+ }
+ }
+
+ // enable button
+ button.removeClass('disabled');
+ // show status message
+ ppcTimerStatus(response.status, response.content);
+ });
+}
+
+export function openPostModal(post_id) {
+
+ let PostData = publishpressCalendarParams.PostData;
+
+ var post_index = PostData.findIndex(function(p) {
+ return Number(p.post_id) === Number(post_id);
+ });
+
+ if (post_index === -1) {
+ console.error('Post with id ' + post_id + ' not found');
+ console.log(PostData);
+ return;
+ }
+
+ var post = PostData[post_index];
+
+ var post_status = post.post_status;
+ // post details
+ var previous_post = PostData[post_index - 1] || PostData[PostData.length - 1];
+ var next_post = PostData[post_index + 1] || PostData[0];
+
+ var status_title = post.status_label;
+ var action_links = post.action_links;
+
+ var post_taxonomies = post.taxonomies || null;
+
+ var can_edit_post = Number(post.can_edit_post) > 0;
+
+ var target_post = jQuery('.publishpress-calendar .publishpress-calendar-item.post-' + post_id);
+
+ // build header
+ var popup_header = '';
+
+ // build content
+ var popup_content = '';
+
+ jQuery('#pp-content-calendar-general-modal-container').html(popup_content);
+
+ var height = Math.round(window.innerHeight * 0.78);
+
+ tb_show(popup_header, '#TB_inline?width=600&height=' + height + '&inlineId=pp-content-calendar-general-modal');
+ var modal_height = jQuery('body.pp-content-calendar-page #TB_window').css('height');
+ if (modal_height) {
+ // update inner content height for scroll bar
+ var inner_height = parseInt(modal_height, 10) - 55;
+
+ jQuery('.pp-content-calendar-general-modal-container .modal-content-right .scrollable-content').css('height', inner_height - 60 + 'px');
+ jQuery('.pp-content-calendar-general-modal-container .modal-content-left').css('height', inner_height + 'px');
+ jQuery('body.pp-content-calendar-page #TB_ajaxContent').css('height', inner_height + 'px');
+
+ // adjust textarea height
+ var textarea = jQuery('.pp-content-calendar-general-modal-container .modal-post-title .title-area');
+ if (textarea.length > 0) {
+ adjustTextareaHeight(false, textarea);
+ }
+ }
+
+ // init date picker
+ init_date_time_picker();
+ // init select2
+ initFormSelect2();
+
+}
+
+export function adjustTextareaHeight(event, textarea = false) {
+ if (!textarea) {
+ var textarea = jQuery('.pp-content-calendar-general-modal-container .modal-post-title .title-area');
+ }
+ // Reset the height so that it can shrink on deleting content
+ textarea.css('height', 'auto');
+ // Set the height to the scroll height of the content
+ textarea.css('height', textarea[0].scrollHeight + 'px');
+}
+
+export function initFormSelect2() {
+ jQuery('.pp-modal-form-author').pp_select2({
+ allowClear: false,
+ ajax: {
+ url: ajaxurl,
+ dataType: 'json',
+ delay: 0,
+ data: function (params) {
+ return {
+ action: 'publishpress_calendar_search_authors',
+ nonce: publishpressCalendarParams.nonce,
+ q: params.term
+ };
+ },
+ processResults: function (data) {
+ return {
+ results: data
+ };
+ },
+ cache: false
+ }
+ });
+
+ jQuery('.pp-modal-form-post-taxonomy').pp_select2({
+ allowClear: true,
+ ajax: {
+ url: ajaxurl,
+ dataType: 'json',
+ delay: 0,
+ data: function (params) {
+ return {
+ action: 'publishpress_calendar_search_terms',
+ taxonomy: jQuery(this).attr('data-taxonomy'),
+ nonce: publishpressCalendarParams.nonce,
+ q: params.term
+ };
+ },
+ processResults: function (data) {
+ return {
+ results: data
+ };
+ },
+ cache: false
+ }
+ });
+
+ jQuery('.pp-modal-form-post-status').pp_select2({
+ allowClear: false
+ });
+}
+
+
+export function init_date_time_picker() {
+ jQuery('.pp-content-calendar-general-modal-container .modal-content-right .date-time-pick').each(function () {
+ var self = jQuery(this);
+ var options = getOptions(self, {
+ alwaysSetTime: false,
+ controlType: 'select',
+ altFieldTimeOnly: false
+ });
+ if (self.hasClass('future-date')) {
+ options.minDate = new Date();
+ }
+ self.datetimepicker(options);
+ });
+}
+
+export function initToolTips() {
+ jQuery('.pp-title-tooltip').each(function() {
+ var $this = jQuery(this);
+ var titleText = $this.attr('title');
+
+ if (titleText && titleText !== '') {
+ $this.removeAttr('title');
+
+ var $tooltip = jQuery('
').text(titleText);
+ jQuery('body').append($tooltip);
+
+ $this.hover(function() {
+ $tooltip.show();
+
+ // Adjust the tooltip position to account for the arrow
+ var tooltipTop = $this.offset().top - $tooltip.outerHeight() - 10; // Position 10px above the element
+ var tooltipLeft = $this.offset().left + ($this.outerWidth() / 2) - ($tooltip.outerWidth() / 2);
+
+ $tooltip.css({
+ top: tooltipTop + 'px',
+ left: tooltipLeft + 'px',
+ position: 'absolute'
+ });
+ }, function() {
+ $tooltip.hide();
+ });
+ }
+ });
+}
+
+
+export function getOptions (self, custom_options) {
+ var default_options = {
+ dateFormat: publishpressCalendarParams.strings.date_format,
+ firstDay: publishpressCalendarParams.strings.week_first_day
+ };
+
+ var options = jQuery.extend({}, default_options, custom_options);
+ var altFieldName = self.attr('data-alt-field');
+
+ if ((!altFieldName) || typeof altFieldName == 'undefined' || altFieldName.length == 0) {
+ return options;
+ }
+
+ return jQuery.extend({}, options, {
+ altField: 'input[name="'+ altFieldName +'"]',
+ altFormat: self.attr('data-alt-format'),
+ });
+}
+
+export function ppcTimerStatus(type = "success", message = '') {
+ setTimeout(function () {
+ var uniqueClass = "pp-floating-msg-" + Math.round(new Date().getTime() + Math.random() * 100);
+ var instances = jQuery(".pp-floating-status").length;
+ jQuery("#wpbody-content").after('' + message + " ");
+ jQuery("." + uniqueClass)
+ .css("bottom", instances * 45)
+ .fadeIn(1e3)
+ .delay(1e4)
+ .fadeOut(1e3, function () {
+ jQuery(this).remove();
+ });
+ }, 500);
+}
\ No newline at end of file
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Item.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Item.jsx
new file mode 100644
index 000000000..281d84fc7
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/Item.jsx
@@ -0,0 +1,85 @@
+import {getHourStringOnFormat, getDateInstanceFromString} from './Functions';
+import ItemPopup from './ItemPopup';
+import DOMPurify from "dompurify";
+
+
+const $ = jQuery;
+
+export default function Item(props) {
+ const DEFAULT_TIME_FORMAT = 'g:i a';
+ const DEFAULT_LABEL = props.strings.untitled;
+
+ const calendarItem = React.useRef(null);
+
+ const getHourString = () => {
+ let timestampDate = getDateInstanceFromString(props.timestamp);
+
+ return getHourStringOnFormat(timestampDate, props.timeFormat || DEFAULT_TIME_FORMAT);
+ }
+
+ const getClassName = (itemID) => {
+ let className = 'publishpress-calendar-item post-' + itemID;
+
+ if (props.isPopupOpened) {
+ className += ' publishpress-calendar-item-opened-popup';
+ }
+
+ if (props.canMove) {
+ className += ' publishpress-calendar-item-movable';
+ }
+
+ return className;
+ }
+
+ const isPopupElementOrChildrenOfPopup = (element) => {
+ return $(element).hasClass('publishpress-calendar-popup')
+ || $(element).parents('.publishpress-calendar-popup').length > 0;
+ }
+
+ const dispatchClickEvent = (e) => {
+ if (isPopupElementOrChildrenOfPopup(e.target)) {
+ return;
+ }
+
+ props.onClickItemCallback(props.id);
+ }
+
+ const iconElement = props.showIcon && props.icon ?
+ : null;
+
+ const timeElement = props.showTime ?
+ {getHourString()} : null;
+
+ const label = props.label || DEFAULT_LABEL;
+
+ const sanitizedLabel = DOMPurify.sanitize(label);
+
+ return (
+
+
+ {iconElement}{timeElement}
+
+ {props.isPopupOpened &&
+
+ }
+
+ )
+}
diff --git a/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/ItemFormPopup.jsx b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/ItemFormPopup.jsx
new file mode 100644
index 000000000..2cad1b7d6
--- /dev/null
+++ b/public/wp-content/plugins/publishpress/modules/calendar/lib/async-calendar/js/ItemFormPopup.jsx
@@ -0,0 +1,532 @@
+import {callAjaxAction, callAjaxPostAction, getDateAsStringInWpFormat, getPostLinksElement} from "./Functions";
+import Select from "./Select";
+import DateTimeField from "./fields/DateTimeField";
+import AuthorsField from "./fields/AuthorsField";
+import SelectField from "./fields/SelectField";
+import PostStatusField from "./fields/PostStatusField";
+import TaxonomyField from "./fields/TaxonomyField";
+import CheckboxField from "./fields/CheckboxField";
+import LocationField from "./fields/LocationField";
+import TextArea from "./fields/TextArea";
+import TextField from "./fields/TextField";
+import UserField from "./fields/UserField";
+import NumberField from "./fields/NumberField";
+import TimeField from "./fields/TimeField";
+import MetaField from "./fields/MetaField";
+
+const $ = jQuery;
+
+export default function ItemFormPopup(props) {
+ const [postType, setPostType] = React.useState(props.postTypes[0].value);
+ const [fields, setFields] = React.useState([]);
+ const [isLoading, setIsLoading] = React.useState(false);
+ const [savingLink, setSavingLink] = React.useState(false);
+ const [errorMessage, setErrorMessage] = React.useState();
+
+ const didMount = () => {
+ resetGlobalFormFieldData()
+
+ setPostType(props.postTypes[0].value);
+
+ setDefaultValueForFields();
+ activateFixForScreenLockerSize();
+
+ return didUnmount;
+ }
+
+ const didUnmount = () => {
+ deactivateFixForScreenLockerSize();
+
+ resetGlobalFormFieldData();
+ }
+
+ const activateFixForScreenLockerSize = () => {
+ $('#wpwrap').css('overflow', 'hidden');
+ }
+
+ const deactivateFixForScreenLockerSize = () => {
+ $('#wpwrap').css('overflow', 'auto');
+ }
+
+ const setDefaultValueForFields = () => {
+ updateGlobalFormFieldData('post_type', props.postTypes[0].value);
+ updateGlobalFormFieldData('status', 'draft');
+ }
+
+ const getFormTableFieldRows = () => {
+ const fieldRows = [];
+
+ let dataProperty;
+ let field;
+ let fieldId;
+ let placeholder;
+
+ for (const dataPropertyName in fields) {
+ if (!fields.hasOwnProperty(dataPropertyName)) {
+ continue;
+ }
+
+ fieldId = 'publishpress-calendar-field-' + dataPropertyName;
+
+ dataProperty = fields[dataPropertyName];
+ placeholder = dataProperty.placeholder ? dataProperty.placeholder : null;
+
+ switch (dataProperty.type) {
+ case 'date':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'authors':
+ field = {
+ let values = [];
+ for (let i = 0; i < data.length; i++) {
+ values.push(data[i].id);
+ }
+
+ updateGlobalFormFieldData(dataPropertyName, values);
+ }}
+ onClear={(e, elem) => {
+ updateGlobalFormFieldData(dataPropertyName, null);
+ }}/>;
+ break;
+
+ case 'select':
+ field = {
+ let values = [];
+ for (let i = 0; i < data.length; i++) {
+ values.push(data[i].id);
+ }
+
+ updateGlobalFormFieldData(dataPropertyName, values);
+ }}
+ onClear={(e, elem) => {
+ updateGlobalFormFieldData(dataPropertyName, null);
+ }}/>;
+ break;
+
+ case 'status':
+ field = {
+ let value = null;
+ if (data.length > 0) {
+ value = data[0].id;
+ }
+
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}
+ onClear={(e, elem) => {
+ updateGlobalFormFieldData(dataPropertyName, null);
+ }}/>;
+ break;
+
+ case 'taxonomy':
+ field = {
+ let values = [];
+ for (let i = 0; i < data.length; i++) {
+ values.push(data[i].id);
+ }
+
+ updateGlobalFormFieldData(dataPropertyName, values);
+ }}
+ onClear={(e, elem) => {
+ updateGlobalFormFieldData(dataPropertyName, null);
+ }}/>;
+ break;
+
+ case 'checkbox':
+ field = ;
+ break;
+
+ case 'location':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'html':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'text':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'user':
+ field = ;
+ break;
+
+ case 'number':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'time':
+ field = {
+ updateGlobalFormFieldData(dataPropertyName, value);
+ }}/>;
+ break;
+
+ case 'metafield':
+ dataProperty.isEditing = true;
+ field = MetaField(dataProperty);
+ break;
+
+ default:
+ field = null;
+ break;
+ }
+
+ fieldRows.push(
+
+ {dataProperty.label}:
+ {field}
+
+ );
+ }
+
+ return fieldRows;
+ };
+
+ // We are using a global var because the states are async and we were having a hard time to make all
+ // fields work together updating the same state.
+ const getGlobalFormFieldData = (name) => {
+ if (typeof window.publishpressCalendarGlobalData === 'undefined') {
+ window.publishpressCalendarGlobalData = {};
+ }
+
+ if (typeof window.publishpressCalendarGlobalData.formFieldsData === 'undefined') {
+ window.publishpressCalendarGlobalData.formFieldsData = {};
+ }
+
+ if (window.publishpressCalendarGlobalData.formFieldsData.hasOwnProperty(name)) {
+ return window.publishpressCalendarGlobalData.formFieldsData[name];
+ }
+
+ return null;
+ }
+
+ const setGlobalFormFieldData = (name, value) => {
+ getGlobalFormFieldData(name);
+
+ window.publishpressCalendarGlobalData.formFieldsData[name] = value;
+ }
+
+ const resetGlobalFormFieldData = () => {
+ if (typeof window.publishpressCalendarGlobalData !== 'undefined'
+ && typeof window.publishpressCalendarGlobalData.formFieldsData !== 'undefined') {
+ window.publishpressCalendarGlobalData.formFieldsData = [];
+ }
+ }
+
+ const updateGlobalFormFieldData = (fieldName, value) => {
+ setGlobalFormFieldData(fieldName, value);
+ }
+
+ const getFormDataForThePostRequest = () => {
+ let formData = new FormData;
+
+ formData.append('date', getDateAsStringInWpFormat(props.date));
+ formData.append('nonce', props.nonce);
+
+ for (const fieldName in window.publishpressCalendarGlobalData.formFieldsData) {
+ if (window.publishpressCalendarGlobalData.formFieldsData.hasOwnProperty(fieldName)) {
+ formData.append(fieldName, window.publishpressCalendarGlobalData.formFieldsData[fieldName]);
+ }
+ }
+
+ //add metafield
+ let field_name = '',
+ field_value = '',
+ field_type = '',
+ skip_field = false;
+ document.querySelectorAll('.pp-calendar-form-metafied-input').forEach(function (metafield) {
+ field_name = metafield.getAttribute('name');
+ field_type = metafield.getAttribute('type');
+ field_value = metafield.value;
+ skip_field = false;
+ if (field_type === 'checkbox' && !metafield.checked) {
+ skip_field = true;
+ }
+ if (metafield.classList.contains('pp_editorial_meta_multi_select2')) {
+ skip_field = true;
+ var selected_options = metafield.selectedOptions
+ var selected_key = '';
+ for (selected_key in selected_options) {
+ if (!selected_options.hasOwnProperty(selected_key)) {
+ continue;
+ }
+ formData.append(field_name, selected_options[selected_key].value);
+ }
+ }
+
+ if (!skip_field) {
+ formData.append(field_name, field_value);
+ }
+ });
+
+ return formData;
+ }
+
+ const handleLinkOnClick = (e, linkData) => {
+ e.preventDefault();
+
+ setIsLoading(true);
+ setSavingLink(linkData.id);
+ setErrorMessage(null);
+
+ callAjaxPostAction(linkData.action, linkData.args, props.ajaxUrl, getFormDataForThePostRequest()).then((result) => {
+ if (linkData.id === 'create') {
+ setIsLoading(false);
+ setSavingLink(null);
+
+ if (result.status === 'success') {
+ if (props.onCloseCallback) {
+ props.onCloseCallback();
+ }
+ } else {
+ setErrorMessage(result.message);
+ }
+ } else if (linkData.id === 'edit') {
+ if (result.status === 'success') {
+ window.location.href = result.data.link;
+ } else {
+ setIsLoading(false);
+ setSavingLink(null);
+ setErrorMessage(result.message);
+ }
+ }
+ });
+ }
+
+ const getFooterLinks = () => {
+ const formLinks = [
+ {
+ 'id': 'create',
+ 'className': 'button-primary calendar-create-btn',
+ 'label': props.strings.save,
+ 'labelLoading': props.strings.saving,
+ 'action': 'publishpress_calendar_create_item'
+ },
+ {
+ 'id': 'edit',
+ 'className': 'button-secondary calendar-edit-btn',
+ 'label': props.strings.saveAndEdit,
+ 'labelLoading': props.strings.saving,
+ 'action': 'publishpress_calendar_create_item'
+ }
+ ];
+
+ const links = [];
+ let linkData;
+
+ for (const linkName in formLinks) {
+ if (!formLinks.hasOwnProperty(linkName)) {
+ continue;
+ }
+
+ linkData = formLinks[linkName];
+
+ if (savingLink === linkData.id) {
+ links.push({linkData.labelLoading} );
+ } else {
+ links.push(getPostLinksElement(linkData, handleLinkOnClick));
+ }
+ links.push( );
+ }
+
+ links.pop();
+
+ return links;
+ }
+
+ const handleOnSelectPostTypeField = (e) => {
+ let $target = $(e.target);
+
+ const postType = $target.pp_select2('data')[0].id;
+
+ setPostType(postType);
+
+ updateGlobalFormFieldData('post_type', postType);
+ }
+
+ const getFormPopupTitle = () => {
+ let title;
+ if (props.postId) {
+ title = '';
+ } else {
+ title = props.strings.addContentFor;
+ title = title.replace('%s', date_i18n(props.dateFormat, props.date));
+ }
+
+ return title;
+ }
+
+ const getPostTypeNameBySlug = (postTypeSlug) => {
+ for (let postTypeObj of props.postTypes) {
+ if (postTypeObj.value === postTypeSlug) {
+ return postTypeObj.text;
+ }
+ }
+
+ return props.strings.postTypeNotFound;
+ }
+
+ const fetchFieldsForSelectedPostType = () => {
+ setIsLoading(true);
+
+ const args = {
+ nonce: props.nonce,
+ postType: getGlobalFormFieldData('post_type'),
+ date: getDateAsStringInWpFormat(props.date)
+ };
+
+ setFields(null);
+
+ callAjaxAction(props.actionGetPostTypeFields, args, props.ajaxUrl)
+ .then((result) => {
+ setFields(result.fields);
+ })
+ .then(() => {
+ setFocusOnTitleField();
+
+ setIsLoading(false);
+ });
+ }
+
+ const setFocusOnTitleField = () => {
+ setTimeout(() => {
+ $('.publishpress-calendar-popup-form input').first().focus();
+ }, 500);
+ }
+
+ React.useEffect(didMount, []);
+ React.useEffect(fetchFieldsForSelectedPostType, [postType]);
+
+ const fieldTableRows = getFormTableFieldRows();
+
+ return (
+ <>
+
+
+
+ {getFormPopupTitle()}
+
+
+
+
+
+ {props.postTypes.length > 1 &&
+
+