Version Description
Download this release
Release Info
Developer | publishpress |
Plugin | Post Expirator |
Version | 2.5.1 |
Comparing to | |
See all releases |
Code changes from version 2.5.0 to 2.5.1
- assets/css/style.css +19 -0
- assets/js/block.js +439 -1
- assets/js/block.js.map +1 -1
- assets/jsx/block.jsx +6 -3
- classes/Display.class.php +1 -3
- composer.json +1 -1
- composer.lock +6 -6
- languages/post-expirator.pot +74 -74
- post-expirator.php +52 -178
- readme.txt +11 -3
- vendor/composer/InstalledVersions.php +2 -2
- vendor/composer/installed.php +2 -2
- views/bulk-edit.php +1 -1
- views/classic-metabox.php +124 -0
- views/how-to-expire.php +14 -21
- views/quick-edit.php +1 -1
assets/css/style.css
CHANGED
@@ -32,3 +32,22 @@
|
|
32 |
font-style: italic;
|
33 |
font-size: x-small;
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
font-style: italic;
|
33 |
font-size: x-small;
|
34 |
}
|
35 |
+
|
36 |
+
div.pe-classic-fields {
|
37 |
+
display: flex;
|
38 |
+
flex-direction: row;
|
39 |
+
flex-wrap: wrap;
|
40 |
+
align-content: center;
|
41 |
+
justify-content: space-between;
|
42 |
+
align-items: center;
|
43 |
+
}
|
44 |
+
|
45 |
+
div.pe-classic-fields > div {
|
46 |
+
display: flex;
|
47 |
+
flex-direction: column;
|
48 |
+
padding: 5px;
|
49 |
+
}
|
50 |
+
|
51 |
+
div.pe-classic-fields > div > label {
|
52 |
+
font-weight: bold;
|
53 |
+
}
|
assets/js/block.js
CHANGED
@@ -1,2 +1,440 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
//# sourceMappingURL=block.js.map
|
1 |
+
/******/ (function(modules) { // webpackBootstrap
|
2 |
+
/******/ // The module cache
|
3 |
+
/******/ var installedModules = {};
|
4 |
+
/******/
|
5 |
+
/******/ // The require function
|
6 |
+
/******/ function __webpack_require__(moduleId) {
|
7 |
+
/******/
|
8 |
+
/******/ // Check if module is in cache
|
9 |
+
/******/ if(installedModules[moduleId]) {
|
10 |
+
/******/ return installedModules[moduleId].exports;
|
11 |
+
/******/ }
|
12 |
+
/******/ // Create a new module (and put it into the cache)
|
13 |
+
/******/ var module = installedModules[moduleId] = {
|
14 |
+
/******/ i: moduleId,
|
15 |
+
/******/ l: false,
|
16 |
+
/******/ exports: {}
|
17 |
+
/******/ };
|
18 |
+
/******/
|
19 |
+
/******/ // Execute the module function
|
20 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
21 |
+
/******/
|
22 |
+
/******/ // Flag the module as loaded
|
23 |
+
/******/ module.l = true;
|
24 |
+
/******/
|
25 |
+
/******/ // Return the exports of the module
|
26 |
+
/******/ return module.exports;
|
27 |
+
/******/ }
|
28 |
+
/******/
|
29 |
+
/******/
|
30 |
+
/******/ // expose the modules object (__webpack_modules__)
|
31 |
+
/******/ __webpack_require__.m = modules;
|
32 |
+
/******/
|
33 |
+
/******/ // expose the module cache
|
34 |
+
/******/ __webpack_require__.c = installedModules;
|
35 |
+
/******/
|
36 |
+
/******/ // define getter function for harmony exports
|
37 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
38 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
39 |
+
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
40 |
+
/******/ }
|
41 |
+
/******/ };
|
42 |
+
/******/
|
43 |
+
/******/ // define __esModule on exports
|
44 |
+
/******/ __webpack_require__.r = function(exports) {
|
45 |
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
46 |
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
47 |
+
/******/ }
|
48 |
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
49 |
+
/******/ };
|
50 |
+
/******/
|
51 |
+
/******/ // create a fake namespace object
|
52 |
+
/******/ // mode & 1: value is a module id, require it
|
53 |
+
/******/ // mode & 2: merge all properties of value into the ns
|
54 |
+
/******/ // mode & 4: return value when already ns object
|
55 |
+
/******/ // mode & 8|1: behave like require
|
56 |
+
/******/ __webpack_require__.t = function(value, mode) {
|
57 |
+
/******/ if(mode & 1) value = __webpack_require__(value);
|
58 |
+
/******/ if(mode & 8) return value;
|
59 |
+
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
60 |
+
/******/ var ns = Object.create(null);
|
61 |
+
/******/ __webpack_require__.r(ns);
|
62 |
+
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
63 |
+
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
64 |
+
/******/ return ns;
|
65 |
+
/******/ };
|
66 |
+
/******/
|
67 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
68 |
+
/******/ __webpack_require__.n = function(module) {
|
69 |
+
/******/ var getter = module && module.__esModule ?
|
70 |
+
/******/ function getDefault() { return module['default']; } :
|
71 |
+
/******/ function getModuleExports() { return module; };
|
72 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
73 |
+
/******/ return getter;
|
74 |
+
/******/ };
|
75 |
+
/******/
|
76 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
77 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
78 |
+
/******/
|
79 |
+
/******/ // __webpack_public_path__
|
80 |
+
/******/ __webpack_require__.p = "";
|
81 |
+
/******/
|
82 |
+
/******/
|
83 |
+
/******/ // Load entry module and return exports
|
84 |
+
/******/ return __webpack_require__(__webpack_require__.s = 0);
|
85 |
+
/******/ })
|
86 |
+
/************************************************************************/
|
87 |
+
/******/ ({
|
88 |
+
|
89 |
+
/***/ "./assets/jsx/block.jsx":
|
90 |
+
/*!******************************!*\
|
91 |
+
!*** ./assets/jsx/block.jsx ***!
|
92 |
+
\******************************/
|
93 |
+
/*! no static exports found */
|
94 |
+
/***/ (function(module, exports, __webpack_require__) {
|
95 |
+
|
96 |
+
"use strict";
|
97 |
+
|
98 |
+
|
99 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
100 |
+
|
101 |
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
102 |
+
|
103 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
104 |
+
|
105 |
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
106 |
+
|
107 |
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
108 |
+
|
109 |
+
(function (wp, config) {
|
110 |
+
var registerPlugin = wp.plugins.registerPlugin;
|
111 |
+
var __ = wp.i18n.__;
|
112 |
+
var PluginDocumentSettingPanel = wp.editPost.PluginDocumentSettingPanel;
|
113 |
+
var _wp$components = wp.components,
|
114 |
+
PanelRow = _wp$components.PanelRow,
|
115 |
+
DateTimePicker = _wp$components.DateTimePicker,
|
116 |
+
CheckboxControl = _wp$components.CheckboxControl,
|
117 |
+
SelectControl = _wp$components.SelectControl,
|
118 |
+
FormTokenField = _wp$components.FormTokenField,
|
119 |
+
Spinner = _wp$components.Spinner;
|
120 |
+
var _wp$element = wp.element,
|
121 |
+
Fragment = _wp$element.Fragment,
|
122 |
+
Component = _wp$element.Component;
|
123 |
+
var decodeEntities = wp.htmlEntities.decodeEntities;
|
124 |
+
var _lodash = lodash,
|
125 |
+
isEmpty = _lodash.isEmpty,
|
126 |
+
keys = _lodash.keys,
|
127 |
+
compact = _lodash.compact;
|
128 |
+
|
129 |
+
var PostExpiratorSidebar = function (_Component) {
|
130 |
+
_inherits(PostExpiratorSidebar, _Component);
|
131 |
+
|
132 |
+
function PostExpiratorSidebar() {
|
133 |
+
_classCallCheck(this, PostExpiratorSidebar);
|
134 |
+
|
135 |
+
var _this = _possibleConstructorReturn(this, (PostExpiratorSidebar.__proto__ || Object.getPrototypeOf(PostExpiratorSidebar)).apply(this, arguments));
|
136 |
+
|
137 |
+
_this.state = {
|
138 |
+
categoriesList: [],
|
139 |
+
catIdVsName: []
|
140 |
+
};
|
141 |
+
return _this;
|
142 |
+
}
|
143 |
+
|
144 |
+
_createClass(PostExpiratorSidebar, [{
|
145 |
+
key: 'componentWillMount',
|
146 |
+
value: function componentWillMount() {
|
147 |
+
var _this2 = this;
|
148 |
+
|
149 |
+
var attributes = this.state.attributes;
|
150 |
+
|
151 |
+
|
152 |
+
var postMeta = wp.data.select('core/editor').getEditedPostAttribute('meta');
|
153 |
+
var postType = wp.data.select('core/editor').getCurrentPostType();
|
154 |
+
|
155 |
+
var enabled = config.defaults.autoEnable == 1;
|
156 |
+
var date = new Date();
|
157 |
+
|
158 |
+
var expireAction = this.getExpireType(postMeta);
|
159 |
+
|
160 |
+
var categories = [];
|
161 |
+
if (expireAction.includes('category')) {
|
162 |
+
categories = this.getCategories(postMeta);
|
163 |
+
}
|
164 |
+
|
165 |
+
if (postMeta['_expiration-date-status'] && postMeta['_expiration-date-status'] === 'saved') {
|
166 |
+
enabled = true;
|
167 |
+
}
|
168 |
+
|
169 |
+
if (postMeta['_expiration-date']) {
|
170 |
+
date.setTime((postMeta['_expiration-date'] + date.getTimezoneOffset() * 60) * 1000);
|
171 |
+
} else {
|
172 |
+
categories = config.default_categories;
|
173 |
+
if (config.default_date) {
|
174 |
+
date.setTime((parseInt(config.default_date) + date.getTimezoneOffset() * 60) * 1000);
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
var taxonomy = config.defaults.taxonomy || 'category';
|
179 |
+
|
180 |
+
this.setState({
|
181 |
+
enabled: enabled,
|
182 |
+
date: date,
|
183 |
+
expireAction: expireAction,
|
184 |
+
categories: categories,
|
185 |
+
taxonomy: taxonomy
|
186 |
+
});
|
187 |
+
|
188 |
+
var categoriesList = [];
|
189 |
+
var catIdVsName = [];
|
190 |
+
|
191 |
+
if (!taxonomy && postType === 'post' || taxonomy === 'category') {
|
192 |
+
wp.apiFetch({
|
193 |
+
path: wp.url.addQueryArgs('wp/v2/categories', { per_page: -1, hide_empty: false })
|
194 |
+
}).then(function (list) {
|
195 |
+
list.forEach(function (cat) {
|
196 |
+
categoriesList[cat.name] = cat;
|
197 |
+
catIdVsName[cat.id] = cat.name;
|
198 |
+
});
|
199 |
+
_this2.setState({ categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: __('Category') });
|
200 |
+
});
|
201 |
+
} else if (postType !== 'page') {
|
202 |
+
wp.apiFetch({
|
203 |
+
path: wp.url.addQueryArgs('wp/v2/taxonomies/' + taxonomy, { context: 'edit' })
|
204 |
+
}).then(function (taxAttributes) {
|
205 |
+
// fetch all terms
|
206 |
+
wp.apiFetch({
|
207 |
+
path: wp.url.addQueryArgs('wp/v2/' + taxAttributes.rest_base, { context: 'edit' })
|
208 |
+
}).then(function (terms) {
|
209 |
+
terms.forEach(function (term) {
|
210 |
+
categoriesList[decodeEntities(term.name)] = term;
|
211 |
+
catIdVsName[term.id] = decodeEntities(term.name);
|
212 |
+
});
|
213 |
+
_this2.setState({ categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: decodeEntities(taxAttributes.name) });
|
214 |
+
});
|
215 |
+
});
|
216 |
+
}
|
217 |
+
}
|
218 |
+
}, {
|
219 |
+
key: 'componentDidUpdate',
|
220 |
+
value: function componentDidUpdate() {
|
221 |
+
var _state = this.state,
|
222 |
+
enabled = _state.enabled,
|
223 |
+
date = _state.date,
|
224 |
+
expireAction = _state.expireAction,
|
225 |
+
categories = _state.categories,
|
226 |
+
attribute = _state.attribute;
|
227 |
+
|
228 |
+
var setPostMeta = function setPostMeta(newMeta) {
|
229 |
+
return wp.data.dispatch('core/editor').editPost({ meta: newMeta });
|
230 |
+
};
|
231 |
+
var postMeta = wp.data.select('core/editor').getEditedPostAttribute('meta');
|
232 |
+
|
233 |
+
switch (attribute) {
|
234 |
+
case 'enabled':
|
235 |
+
setPostMeta({ '_expiration-date-status': enabled ? 'saved' : '' });
|
236 |
+
// if date is not set when the checkbox is enabled, set it to the default date
|
237 |
+
// this is to prevent the user from having to click the date to set it
|
238 |
+
if (!postMeta['_expiration-date']) {
|
239 |
+
setPostMeta({ '_expiration-date': this.getDate(date) });
|
240 |
+
}
|
241 |
+
break;
|
242 |
+
case 'date':
|
243 |
+
if (typeof date === 'string') {
|
244 |
+
setPostMeta({ '_expiration-date': this.getDate(date) });
|
245 |
+
}
|
246 |
+
break;
|
247 |
+
case 'action':
|
248 |
+
setPostMeta({ '_expiration-date-type': expireAction });
|
249 |
+
if (!expireAction.includes('category')) {
|
250 |
+
setPostMeta({ '_expiration-date-categories': [] });
|
251 |
+
}
|
252 |
+
break;
|
253 |
+
case 'category':
|
254 |
+
setPostMeta({ '_expiration-date-categories': categories });
|
255 |
+
break;
|
256 |
+
}
|
257 |
+
}
|
258 |
+
}, {
|
259 |
+
key: 'render',
|
260 |
+
value: function render() {
|
261 |
+
var _this3 = this;
|
262 |
+
|
263 |
+
var _state2 = this.state,
|
264 |
+
categoriesList = _state2.categoriesList,
|
265 |
+
catIdVsName = _state2.catIdVsName;
|
266 |
+
var _state3 = this.state,
|
267 |
+
enabled = _state3.enabled,
|
268 |
+
date = _state3.date,
|
269 |
+
expireAction = _state3.expireAction,
|
270 |
+
categories = _state3.categories,
|
271 |
+
taxonomy = _state3.taxonomy;
|
272 |
+
|
273 |
+
|
274 |
+
var postType = wp.data.select('core/editor').getCurrentPostType();
|
275 |
+
|
276 |
+
var actionsList = [{ label: __('Draft', 'post-expirator'), value: 'draft' }, { label: __('Delete', 'post-expirator'), value: 'delete' }, { label: __('Trash', 'post-expirator'), value: 'trash' }, { label: __('Private', 'post-expirator'), value: 'private' }, { label: __('Stick', 'post-expirator'), value: 'stick' }, { label: __('Unstick', 'post-expirator'), value: 'unstick' }];
|
277 |
+
|
278 |
+
if (postType !== 'page') {
|
279 |
+
actionsList = _.union(actionsList, [{ label: __('Category: Replace', 'post-expirator'), value: 'category' }, { label: __('Category: Add', 'post-expirator'), value: 'category-add' }, { label: __('Category: Remove', 'post-expirator'), value: 'category-remove' }]);
|
280 |
+
}
|
281 |
+
|
282 |
+
var selectedCats = categories && compact(categories.map(function (id) {
|
283 |
+
return catIdVsName[id] || false;
|
284 |
+
}));
|
285 |
+
if (typeof selectedCats === 'string') {
|
286 |
+
selectedCats = [];
|
287 |
+
}
|
288 |
+
|
289 |
+
return React.createElement(
|
290 |
+
PluginDocumentSettingPanel,
|
291 |
+
{ title: __('Post Expirator', 'post-expirator'), icon: 'calendar', initialOpen: enabled },
|
292 |
+
React.createElement(
|
293 |
+
PanelRow,
|
294 |
+
null,
|
295 |
+
React.createElement(CheckboxControl, {
|
296 |
+
label: __('Enable Post Expiration', 'post-expirator'),
|
297 |
+
checked: enabled,
|
298 |
+
onChange: function onChange(value) {
|
299 |
+
_this3.setState({ enabled: !enabled, attribute: 'enabled' });
|
300 |
+
}
|
301 |
+
})
|
302 |
+
),
|
303 |
+
enabled && React.createElement(
|
304 |
+
Fragment,
|
305 |
+
null,
|
306 |
+
React.createElement(
|
307 |
+
PanelRow,
|
308 |
+
null,
|
309 |
+
React.createElement(DateTimePicker, {
|
310 |
+
currentDate: date,
|
311 |
+
onChange: function onChange(value) {
|
312 |
+
return _this3.setState({ date: value, attribute: 'date' });
|
313 |
+
},
|
314 |
+
is12Hour: true
|
315 |
+
})
|
316 |
+
),
|
317 |
+
React.createElement(SelectControl, {
|
318 |
+
label: __('How to expire', 'post-expirator'),
|
319 |
+
value: expireAction,
|
320 |
+
options: actionsList,
|
321 |
+
onChange: function onChange(value) {
|
322 |
+
_this3.setState({ expireAction: value, attribute: 'action' });
|
323 |
+
}
|
324 |
+
}),
|
325 |
+
expireAction.includes('category') && (isEmpty(keys(categoriesList)) && React.createElement(
|
326 |
+
Fragment,
|
327 |
+
null,
|
328 |
+
__('Loading', 'post-expirator') + (' (' + taxonomy + ')'),
|
329 |
+
React.createElement(Spinner, null)
|
330 |
+
) || React.createElement(FormTokenField, {
|
331 |
+
label: __('Expiration Categories', 'post-expirator') + (' (' + taxonomy + ')'),
|
332 |
+
value: selectedCats,
|
333 |
+
suggestions: Object.keys(categoriesList),
|
334 |
+
onChange: function onChange(value) {
|
335 |
+
_this3.setState({ categories: _this3.selectCategories(value), attribute: 'category' });
|
336 |
+
},
|
337 |
+
maxSuggestions: 10
|
338 |
+
}))
|
339 |
+
)
|
340 |
+
);
|
341 |
+
}
|
342 |
+
|
343 |
+
// what action to take on expiration
|
344 |
+
|
345 |
+
}, {
|
346 |
+
key: 'getExpireType',
|
347 |
+
value: function getExpireType(postMeta) {
|
348 |
+
var typeNew = postMeta['_expiration-date-type'];
|
349 |
+
var typeOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['expireType'];
|
350 |
+
|
351 |
+
if (typeNew) {
|
352 |
+
return typeNew;
|
353 |
+
}
|
354 |
+
|
355 |
+
if (typeOld) {
|
356 |
+
return typeOld;
|
357 |
+
}
|
358 |
+
|
359 |
+
return 'draft';
|
360 |
+
}
|
361 |
+
|
362 |
+
// what categories to add/remove/replace
|
363 |
+
|
364 |
+
}, {
|
365 |
+
key: 'getCategories',
|
366 |
+
value: function getCategories(postMeta) {
|
367 |
+
var categoriesNew = postMeta['_expiration-date-categories'] && postMeta['_expiration-date-categories'];
|
368 |
+
var categoriesOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['category'];
|
369 |
+
|
370 |
+
if ((typeof categoriesNew === 'undefined' ? 'undefined' : _typeof(categoriesNew)) === 'object' && categoriesNew.length > 0) {
|
371 |
+
return categoriesNew;
|
372 |
+
}
|
373 |
+
|
374 |
+
if (categoriesOld && typeof categoriesOld !== 'undefined' && (typeof categoriesOld === 'undefined' ? 'undefined' : _typeof(categoriesOld)) !== 'object') {
|
375 |
+
categories = [categoriesOld];
|
376 |
+
}
|
377 |
+
|
378 |
+
return categoriesOld;
|
379 |
+
}
|
380 |
+
|
381 |
+
// fired for the autocomplete
|
382 |
+
|
383 |
+
}, {
|
384 |
+
key: 'selectCategories',
|
385 |
+
value: function selectCategories(tokens) {
|
386 |
+
var _state4 = this.state,
|
387 |
+
categoriesList = _state4.categoriesList,
|
388 |
+
catIdVsName = _state4.catIdVsName;
|
389 |
+
|
390 |
+
|
391 |
+
var hasNoSuggestion = tokens.some(function (token) {
|
392 |
+
return typeof token === 'string' && !categoriesList[token];
|
393 |
+
});
|
394 |
+
|
395 |
+
if (hasNoSuggestion) {
|
396 |
+
return;
|
397 |
+
}
|
398 |
+
|
399 |
+
var categories = tokens.map(function (token) {
|
400 |
+
return typeof token === 'string' ? categoriesList[token] : token;
|
401 |
+
});
|
402 |
+
|
403 |
+
return categories.map(function (cat) {
|
404 |
+
return cat.id;
|
405 |
+
});
|
406 |
+
}
|
407 |
+
}, {
|
408 |
+
key: 'getDate',
|
409 |
+
value: function getDate(date) {
|
410 |
+
var newDate = new Date();
|
411 |
+
newDate.setTime(Date.parse(date));
|
412 |
+
newDate.setTime(newDate.getTime() - new Date().getTimezoneOffset() * 60 * 1000);
|
413 |
+
return newDate.getTime() / 1000;
|
414 |
+
}
|
415 |
+
}]);
|
416 |
+
|
417 |
+
return PostExpiratorSidebar;
|
418 |
+
}(Component);
|
419 |
+
|
420 |
+
registerPlugin('postexpirator-sidebar', {
|
421 |
+
render: PostExpiratorSidebar
|
422 |
+
});
|
423 |
+
})(window.wp, config);
|
424 |
+
|
425 |
+
/***/ }),
|
426 |
+
|
427 |
+
/***/ 0:
|
428 |
+
/*!************************************!*\
|
429 |
+
!*** multi ./assets/jsx/block.jsx ***!
|
430 |
+
\************************************/
|
431 |
+
/*! no static exports found */
|
432 |
+
/***/ (function(module, exports, __webpack_require__) {
|
433 |
+
|
434 |
+
module.exports = __webpack_require__(/*! ./assets/jsx/block.jsx */"./assets/jsx/block.jsx");
|
435 |
+
|
436 |
+
|
437 |
+
/***/ })
|
438 |
+
|
439 |
+
/******/ });
|
440 |
//# sourceMappingURL=block.js.map
|
assets/js/block.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/jsx/block.jsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","wp","config","registerPlugin","plugins","__","i18n","PluginDocumentSettingPanel","editPost","components","PanelRow","DateTimePicker","CheckboxControl","SelectControl","FormTokenField","Spinner","element","Fragment","Component","decodeEntities","htmlEntities","lodash","isEmpty","keys","compact","render","arguments","state","categoriesList","catIdVsName","newMeta","postMeta","this","attributes","data","select","getEditedPostAttribute","postType","getCurrentPostType","enabled","defaults","autoEnable","date","Date","expireAction","getExpireType","categories","includes","getCategories","setTime","getTimezoneOffset","default_categories","default_date","parseInt","getDate","dispatch","meta","taxonomy","setState","apiFetch","path","url","addQueryArgs","per_page","hide_empty","then","list","forEach","cat","id","context","taxAttributes","rest_base","terms","term","setPostMeta","attribute","actionsList","label","_","union","selectedCats","map","title","icon","initialOpen","checked","onChange","currentDate","is12Hour","options","suggestions","selectCategories","maxSuggestions","typeNew","typeOld","categoriesNew","categoriesOld","length","tokens","some","token","newDate","parse","getTime","window"],"mappings":"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","file":"block.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","(function ( wp, config ) {\r\n\r\n const { registerPlugin } = wp.plugins;\r\n const { __ } = wp.i18n;\r\n const { PluginDocumentSettingPanel } = wp.editPost;\r\n const { PanelRow, DateTimePicker, CheckboxControl, SelectControl, FormTokenField, Spinner } = wp.components;\r\n const { Fragment, Component } = wp.element;\r\n const { decodeEntities } = wp.htmlEntities;\r\n const { isEmpty, keys, compact } = lodash;\r\n\r\n class PostExpiratorSidebar extends Component {\r\n constructor() {\r\n super( ...arguments );\r\n\r\n this.state = {\r\n categoriesList: [],\r\n catIdVsName: [],\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n const { attributes } = this.state;\r\n\r\n const postMeta = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'meta' );\r\n const postType = wp.data.select('core/editor').getCurrentPostType();\r\n\r\n let enabled = config.defaults.autoEnable == 1;\r\n let date = new Date();\r\n\r\n let expireAction = this.getExpireType(postMeta);\r\n\r\n let categories = [];\r\n if(expireAction.includes('category')){\r\n categories = this.getCategories(postMeta);\r\n }\r\n\r\n if(postMeta['_expiration-date-status'] && postMeta['_expiration-date-status'] === 'saved'){\r\n enabled = true;\r\n }\r\n\r\n if(postMeta['_expiration-date']){\r\n date.setTime((postMeta['_expiration-date'] + date.getTimezoneOffset() * 60) * 1000);\r\n }else{\r\n categories = config.default_categories;\r\n if(config.default_date){\r\n date.setTime((parseInt(config.default_date) + date.getTimezoneOffset() * 60) * 1000);\r\n // update the post meta for date so that the user does not have to click the date to set it\r\n const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );\r\n setPostMeta( {'_expiration-date': this.getDate(date) } );\r\n }\r\n }\r\n\r\n let taxonomy = config.defaults.taxonomy || 'category';\r\n\r\n this.setState( {\r\n enabled: enabled,\r\n date: date,\r\n expireAction: expireAction,\r\n categories: categories,\r\n taxonomy: taxonomy,\r\n } );\r\n\r\n let categoriesList = [];\r\n let catIdVsName = [];\r\n\r\n if( (!taxonomy && postType === 'post') || taxonomy === 'category' ){\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( 'wp/v2/categories', { per_page: -1, hide_empty: false } ),\r\n } ).then( ( list ) => {\r\n list.forEach(cat => {\r\n categoriesList[ cat.name ] = cat;\r\n catIdVsName[ cat.id ] = cat.name;\r\n });\r\n this.setState( { categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: __( 'Category' ) } );\r\n } );\r\n }else if(postType !== 'page') {\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( `wp/v2/taxonomies/${taxonomy}`, { context: 'edit' } ),\r\n } ).then( ( taxAttributes ) => {\r\n // fetch all terms\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( `wp/v2/${taxAttributes.rest_base}`, { context: 'edit' } ),\r\n } ).then( ( terms ) => {\r\n terms.forEach(term => {\r\n categoriesList[ decodeEntities(term.name) ] = term;\r\n catIdVsName[ term.id ] = decodeEntities(term.name);\r\n });\r\n this.setState( { categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: decodeEntities(taxAttributes.name) } );\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n const { enabled, date, expireAction, categories, attribute } = this.state;\r\n const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );\r\n\r\n switch(attribute){\r\n case 'enabled':\r\n setPostMeta( { '_expiration-date-status' : (enabled ? 'saved' : '' ) } );\r\n break;\r\n case 'date':\r\n if(typeof date === 'string'){\r\n setPostMeta( {'_expiration-date': this.getDate(date) } );\r\n }\r\n break;\r\n case 'action':\r\n setPostMeta( { '_expiration-date-type': expireAction } );\r\n if(!expireAction.includes('category')){\r\n setPostMeta( { '_expiration-date-categories': [] } );\r\n }\r\n break;\r\n case 'category':\r\n setPostMeta( { '_expiration-date-categories': categories } );\r\n break;\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const { categoriesList, catIdVsName } = this.state;\r\n const { enabled, date, expireAction, categories, taxonomy } = this.state;\r\n\r\n const postType = wp.data.select('core/editor').getCurrentPostType();\r\n\r\n let actionsList = [\r\n { label: __( 'Draft', 'post-expirator' ), value: 'draft' },\r\n { label: __( 'Delete', 'post-expirator' ), value: 'delete' },\r\n { label: __( 'Trash', 'post-expirator' ), value: 'trash' },\r\n { label: __( 'Private', 'post-expirator' ), value: 'private' },\r\n { label: __( 'Stick', 'post-expirator' ), value: 'stick' },\r\n { label: __( 'Unstick', 'post-expirator' ), value: 'unstick' },\r\n ];\r\n\r\n if(postType !== 'page'){\r\n actionsList = _.union(actionsList, [\r\n { label: __('Category: Replace', 'post-expirator'), value: 'category' },\r\n { label: __('Category: Add', 'post-expirator'), value: 'category-add' },\r\n { label: __('Category: Remove', 'post-expirator'), value: 'category-remove' },\r\n ]);\r\n }\r\n\r\n let selectedCats = categories && compact(categories.map((id) => catIdVsName[id] || false ));\r\n if(typeof selectedCats === 'string'){\r\n selectedCats = [];\r\n }\r\n \r\n return (\r\n <PluginDocumentSettingPanel title={ __( 'Post Expirator', 'post-expirator' ) } icon=\"calendar\" initialOpen={ enabled }>\r\n <PanelRow>\r\n <CheckboxControl\r\n label={ __( 'Enable Post Expiration', 'post-expirator' ) }\r\n checked={ enabled }\r\n onChange={ (value) => { this.setState( { enabled: !enabled, attribute: 'enabled' } ) } }\r\n />\r\n </PanelRow>\r\n { enabled && (\r\n <Fragment>\r\n <PanelRow>\r\n <DateTimePicker\r\n currentDate={ date }\r\n onChange={ ( value ) => this.setState( { date: value, attribute: 'date' } ) }\r\n is12Hour={ true }\r\n />\r\n </PanelRow>\r\n <SelectControl\r\n label={ __( 'How to expire', 'post-expirator' ) }\r\n value={ expireAction }\r\n options={ actionsList }\r\n onChange={ (value) => { this.setState( { expireAction: value, attribute: 'action' } ) } }\r\n />\r\n { expireAction.includes('category') && \r\n (\r\n ( isEmpty(keys(categoriesList)) && (\r\n <Fragment>\r\n { __( 'Loading', 'post-expirator' ) + ` (${taxonomy})` }\r\n <Spinner/>\r\n </Fragment>\r\n ) )\r\n ||\r\n (\r\n <FormTokenField\r\n label={ __('Expiration Categories', 'post-expirator') + ` (${taxonomy})` }\r\n value={ selectedCats }\r\n suggestions={ Object.keys(categoriesList) }\r\n onChange={ ( value ) => { this.setState( { categories: this.selectCategories(value), attribute: 'category' } ) } }\r\n maxSuggestions={ 10 }\r\n />\r\n )\r\n ) }\r\n </Fragment>\r\n ) }\r\n </PluginDocumentSettingPanel>\r\n );\r\n }\r\n\r\n // what action to take on expiration\r\n getExpireType(postMeta) {\r\n let typeNew = postMeta['_expiration-date-type'];\r\n let typeOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['expireType'];\r\n\r\n if(typeNew){\r\n return typeNew;\r\n }\r\n\r\n if(typeOld){\r\n return typeOld;\r\n }\r\n\r\n return 'draft';\r\n }\r\n\r\n // what categories to add/remove/replace\r\n getCategories(postMeta) {\r\n let categoriesNew = postMeta['_expiration-date-categories'] && postMeta['_expiration-date-categories'];\r\n let categoriesOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['category'];\r\n\r\n if(typeof categoriesNew === 'object' && categoriesNew.length > 0){\r\n return categoriesNew;\r\n }\r\n\r\n if(categoriesOld && typeof categoriesOld !== 'undefined' && typeof categoriesOld !== 'object'){\r\n categories = [ categoriesOld ];\r\n }\r\n\r\n return categoriesOld;\r\n\r\n }\r\n\r\n // fired for the autocomplete\r\n selectCategories(tokens) {\r\n const { categoriesList, catIdVsName } = this.state;\r\n\r\n var hasNoSuggestion = tokens.some(function (token) {\r\n return typeof token === 'string' && !categoriesList[token];\r\n });\r\n\r\n if (hasNoSuggestion) {\r\n return;\r\n }\r\n\r\n var categories = tokens.map(function (token) {\r\n return typeof token === 'string' ? categoriesList[token] : token;\r\n })\r\n\r\n return categories.map( (cat) => cat.id );\r\n }\r\n\r\n getDate(date){\r\n let newDate = new Date();\r\n newDate.setTime(Date.parse(date));\r\n newDate.setTime(newDate.getTime() - new Date().getTimezoneOffset() * 60 * 1000);\r\n return ((newDate.getTime()) / 1000);\r\n }\r\n\r\n }\r\n\r\n registerPlugin( 'postexpirator-sidebar', {\r\n render: PostExpiratorSidebar\r\n } );\r\n\r\n\r\n})( window.wp, config );"],"sourceRoot":""}
|
1 |
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/jsx/block.jsx"],"names":["wp","config","registerPlugin","plugins","__","i18n","PluginDocumentSettingPanel","editPost","components","PanelRow","DateTimePicker","CheckboxControl","SelectControl","FormTokenField","Spinner","element","Fragment","Component","decodeEntities","htmlEntities","lodash","isEmpty","keys","compact","PostExpiratorSidebar","arguments","state","categoriesList","catIdVsName","attributes","postMeta","data","select","getEditedPostAttribute","postType","getCurrentPostType","enabled","defaults","autoEnable","date","Date","expireAction","getExpireType","categories","includes","getCategories","setTime","getTimezoneOffset","default_categories","default_date","parseInt","taxonomy","setState","apiFetch","path","url","addQueryArgs","per_page","hide_empty","then","list","forEach","cat","name","id","context","taxAttributes","rest_base","terms","term","attribute","setPostMeta","newMeta","dispatch","meta","getDate","actionsList","label","value","_","union","selectedCats","map","Object","selectCategories","typeNew","typeOld","categoriesNew","categoriesOld","length","tokens","hasNoSuggestion","some","token","newDate","parse","getTime","render","window"],"mappings":"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","file":"block.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","(function ( wp, config ) {\r\n\r\n const { registerPlugin } = wp.plugins;\r\n const { __ } = wp.i18n;\r\n const { PluginDocumentSettingPanel } = wp.editPost;\r\n const { PanelRow, DateTimePicker, CheckboxControl, SelectControl, FormTokenField, Spinner } = wp.components;\r\n const { Fragment, Component } = wp.element;\r\n const { decodeEntities } = wp.htmlEntities;\r\n const { isEmpty, keys, compact } = lodash;\r\n\r\n class PostExpiratorSidebar extends Component {\r\n constructor() {\r\n super( ...arguments );\r\n\r\n this.state = {\r\n categoriesList: [],\r\n catIdVsName: [],\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n const { attributes } = this.state;\r\n\r\n const postMeta = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'meta' );\r\n const postType = wp.data.select('core/editor').getCurrentPostType();\r\n\r\n let enabled = config.defaults.autoEnable == 1;\r\n let date = new Date();\r\n\r\n let expireAction = this.getExpireType(postMeta);\r\n\r\n let categories = [];\r\n if(expireAction.includes('category')){\r\n categories = this.getCategories(postMeta);\r\n }\r\n\r\n if(postMeta['_expiration-date-status'] && postMeta['_expiration-date-status'] === 'saved'){\r\n enabled = true;\r\n }\r\n\r\n if(postMeta['_expiration-date']){\r\n date.setTime((postMeta['_expiration-date'] + date.getTimezoneOffset() * 60) * 1000);\r\n }else{\r\n categories = config.default_categories;\r\n if(config.default_date){\r\n date.setTime((parseInt(config.default_date) + date.getTimezoneOffset() * 60) * 1000);\r\n }\r\n }\r\n\r\n let taxonomy = config.defaults.taxonomy || 'category';\r\n\r\n this.setState( {\r\n enabled: enabled,\r\n date: date,\r\n expireAction: expireAction,\r\n categories: categories,\r\n taxonomy: taxonomy,\r\n } );\r\n\r\n let categoriesList = [];\r\n let catIdVsName = [];\r\n\r\n if( (!taxonomy && postType === 'post') || taxonomy === 'category' ){\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( 'wp/v2/categories', { per_page: -1, hide_empty: false } ),\r\n } ).then( ( list ) => {\r\n list.forEach(cat => {\r\n categoriesList[ cat.name ] = cat;\r\n catIdVsName[ cat.id ] = cat.name;\r\n });\r\n this.setState( { categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: __( 'Category' ) } );\r\n } );\r\n }else if(postType !== 'page') {\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( `wp/v2/taxonomies/${taxonomy}`, { context: 'edit' } ),\r\n } ).then( ( taxAttributes ) => {\r\n // fetch all terms\r\n wp.apiFetch( {\r\n path: wp.url.addQueryArgs( `wp/v2/${taxAttributes.rest_base}`, { context: 'edit' } ),\r\n } ).then( ( terms ) => {\r\n terms.forEach(term => {\r\n categoriesList[ decodeEntities(term.name) ] = term;\r\n catIdVsName[ term.id ] = decodeEntities(term.name);\r\n });\r\n this.setState( { categoriesList: categoriesList, catIdVsName: catIdVsName, taxonomy: decodeEntities(taxAttributes.name) } );\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n const { enabled, date, expireAction, categories, attribute } = this.state;\r\n const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );\r\n const postMeta = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'meta' );\r\n\r\n switch(attribute){\r\n case 'enabled':\r\n setPostMeta( { '_expiration-date-status' : (enabled ? 'saved' : '' ) } );\r\n // if date is not set when the checkbox is enabled, set it to the default date\r\n // this is to prevent the user from having to click the date to set it\r\n if(!postMeta['_expiration-date']){\r\n setPostMeta( {'_expiration-date': this.getDate(date) } );\r\n }\r\n break;\r\n case 'date':\r\n if(typeof date === 'string'){\r\n setPostMeta( {'_expiration-date': this.getDate(date) } );\r\n }\r\n break;\r\n case 'action':\r\n setPostMeta( { '_expiration-date-type': expireAction } );\r\n if(!expireAction.includes('category')){\r\n setPostMeta( { '_expiration-date-categories': [] } );\r\n }\r\n break;\r\n case 'category':\r\n setPostMeta( { '_expiration-date-categories': categories } );\r\n break;\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const { categoriesList, catIdVsName } = this.state;\r\n const { enabled, date, expireAction, categories, taxonomy } = this.state;\r\n\r\n const postType = wp.data.select('core/editor').getCurrentPostType();\r\n\r\n let actionsList = [\r\n { label: __( 'Draft', 'post-expirator' ), value: 'draft' },\r\n { label: __( 'Delete', 'post-expirator' ), value: 'delete' },\r\n { label: __( 'Trash', 'post-expirator' ), value: 'trash' },\r\n { label: __( 'Private', 'post-expirator' ), value: 'private' },\r\n { label: __( 'Stick', 'post-expirator' ), value: 'stick' },\r\n { label: __( 'Unstick', 'post-expirator' ), value: 'unstick' },\r\n ];\r\n\r\n if(postType !== 'page'){\r\n actionsList = _.union(actionsList, [\r\n { label: __('Category: Replace', 'post-expirator'), value: 'category' },\r\n { label: __('Category: Add', 'post-expirator'), value: 'category-add' },\r\n { label: __('Category: Remove', 'post-expirator'), value: 'category-remove' },\r\n ]);\r\n }\r\n\r\n let selectedCats = categories && compact(categories.map((id) => catIdVsName[id] || false ));\r\n if(typeof selectedCats === 'string'){\r\n selectedCats = [];\r\n }\r\n \r\n return (\r\n <PluginDocumentSettingPanel title={ __( 'Post Expirator', 'post-expirator' ) } icon=\"calendar\" initialOpen={ enabled }>\r\n <PanelRow>\r\n <CheckboxControl\r\n label={ __( 'Enable Post Expiration', 'post-expirator' ) }\r\n checked={ enabled }\r\n onChange={ (value) => { this.setState( { enabled: !enabled, attribute: 'enabled' } ) } }\r\n />\r\n </PanelRow>\r\n { enabled && (\r\n <Fragment>\r\n <PanelRow>\r\n <DateTimePicker\r\n currentDate={ date }\r\n onChange={ ( value ) => this.setState( { date: value, attribute: 'date' } ) }\r\n is12Hour={ true }\r\n />\r\n </PanelRow>\r\n <SelectControl\r\n label={ __( 'How to expire', 'post-expirator' ) }\r\n value={ expireAction }\r\n options={ actionsList }\r\n onChange={ (value) => { this.setState( { expireAction: value, attribute: 'action' } ) } }\r\n />\r\n { expireAction.includes('category') && \r\n (\r\n ( isEmpty(keys(categoriesList)) && (\r\n <Fragment>\r\n { __( 'Loading', 'post-expirator' ) + ` (${taxonomy})` }\r\n <Spinner/>\r\n </Fragment>\r\n ) )\r\n ||\r\n (\r\n <FormTokenField\r\n label={ __('Expiration Categories', 'post-expirator') + ` (${taxonomy})` }\r\n value={ selectedCats }\r\n suggestions={ Object.keys(categoriesList) }\r\n onChange={ ( value ) => { this.setState( { categories: this.selectCategories(value), attribute: 'category' } ) } }\r\n maxSuggestions={ 10 }\r\n />\r\n )\r\n ) }\r\n </Fragment>\r\n ) }\r\n </PluginDocumentSettingPanel>\r\n );\r\n }\r\n\r\n // what action to take on expiration\r\n getExpireType(postMeta) {\r\n let typeNew = postMeta['_expiration-date-type'];\r\n let typeOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['expireType'];\r\n\r\n if(typeNew){\r\n return typeNew;\r\n }\r\n\r\n if(typeOld){\r\n return typeOld;\r\n }\r\n\r\n return 'draft';\r\n }\r\n\r\n // what categories to add/remove/replace\r\n getCategories(postMeta) {\r\n let categoriesNew = postMeta['_expiration-date-categories'] && postMeta['_expiration-date-categories'];\r\n let categoriesOld = postMeta['_expiration-date-options'] && postMeta['_expiration-date-options']['category'];\r\n\r\n if(typeof categoriesNew === 'object' && categoriesNew.length > 0){\r\n return categoriesNew;\r\n }\r\n\r\n if(categoriesOld && typeof categoriesOld !== 'undefined' && typeof categoriesOld !== 'object'){\r\n categories = [ categoriesOld ];\r\n }\r\n\r\n return categoriesOld;\r\n\r\n }\r\n\r\n // fired for the autocomplete\r\n selectCategories(tokens) {\r\n const { categoriesList, catIdVsName } = this.state;\r\n\r\n var hasNoSuggestion = tokens.some(function (token) {\r\n return typeof token === 'string' && !categoriesList[token];\r\n });\r\n\r\n if (hasNoSuggestion) {\r\n return;\r\n }\r\n\r\n var categories = tokens.map(function (token) {\r\n return typeof token === 'string' ? categoriesList[token] : token;\r\n })\r\n\r\n return categories.map( (cat) => cat.id );\r\n }\r\n\r\n getDate(date){\r\n let newDate = new Date();\r\n newDate.setTime(Date.parse(date));\r\n newDate.setTime(newDate.getTime() - new Date().getTimezoneOffset() * 60 * 1000);\r\n return ((newDate.getTime()) / 1000);\r\n }\r\n\r\n }\r\n\r\n registerPlugin( 'postexpirator-sidebar', {\r\n render: PostExpiratorSidebar\r\n } );\r\n\r\n\r\n})( window.wp, config );"],"sourceRoot":""}
|
assets/jsx/block.jsx
CHANGED
@@ -44,9 +44,6 @@
|
|
44 |
categories = config.default_categories;
|
45 |
if(config.default_date){
|
46 |
date.setTime((parseInt(config.default_date) + date.getTimezoneOffset() * 60) * 1000);
|
47 |
-
// update the post meta for date so that the user does not have to click the date to set it
|
48 |
-
const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );
|
49 |
-
setPostMeta( {'_expiration-date': this.getDate(date) } );
|
50 |
}
|
51 |
}
|
52 |
|
@@ -95,10 +92,16 @@
|
|
95 |
componentDidUpdate() {
|
96 |
const { enabled, date, expireAction, categories, attribute } = this.state;
|
97 |
const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );
|
|
|
98 |
|
99 |
switch(attribute){
|
100 |
case 'enabled':
|
101 |
setPostMeta( { '_expiration-date-status' : (enabled ? 'saved' : '' ) } );
|
|
|
|
|
|
|
|
|
|
|
102 |
break;
|
103 |
case 'date':
|
104 |
if(typeof date === 'string'){
|
44 |
categories = config.default_categories;
|
45 |
if(config.default_date){
|
46 |
date.setTime((parseInt(config.default_date) + date.getTimezoneOffset() * 60) * 1000);
|
|
|
|
|
|
|
47 |
}
|
48 |
}
|
49 |
|
92 |
componentDidUpdate() {
|
93 |
const { enabled, date, expireAction, categories, attribute } = this.state;
|
94 |
const setPostMeta = (newMeta) => wp.data.dispatch( 'core/editor' ).editPost( { meta: newMeta } );
|
95 |
+
const postMeta = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'meta' );
|
96 |
|
97 |
switch(attribute){
|
98 |
case 'enabled':
|
99 |
setPostMeta( { '_expiration-date-status' : (enabled ? 'saved' : '' ) } );
|
100 |
+
// if date is not set when the checkbox is enabled, set it to the default date
|
101 |
+
// this is to prevent the user from having to click the date to set it
|
102 |
+
if(!postMeta['_expiration-date']){
|
103 |
+
setPostMeta( {'_expiration-date': this.getDate(date) } );
|
104 |
+
}
|
105 |
break;
|
106 |
case 'date':
|
107 |
if(typeof date === 'string'){
|
classes/Display.class.php
CHANGED
@@ -223,9 +223,7 @@ class PostExpirator_Display {
|
|
223 |
update_option( 'expirationdateFooterContents', $_POST['expired-footer-contents'] );
|
224 |
update_option( 'expirationdateFooterStyle', $_POST['expired-footer-style'] );
|
225 |
update_option( 'expirationdateGutenbergSupport', $_POST['gutenberg-support'] );
|
226 |
-
|
227 |
-
update_option( 'expirationdateCategoryDefaults', $_POST['expirationdate_category'] );
|
228 |
-
}
|
229 |
update_option( 'expirationdateDefaultDate', $_POST['expired-default-expiration-date'] );
|
230 |
if ( $_POST['expired-custom-expiration-date'] ) {
|
231 |
update_option( 'expirationdateDefaultDateCustom', $_POST['expired-custom-expiration-date'] );
|
223 |
update_option( 'expirationdateFooterContents', $_POST['expired-footer-contents'] );
|
224 |
update_option( 'expirationdateFooterStyle', $_POST['expired-footer-style'] );
|
225 |
update_option( 'expirationdateGutenbergSupport', $_POST['gutenberg-support'] );
|
226 |
+
update_option( 'expirationdateCategoryDefaults', isset( $_POST['expirationdate_category'] ) ? $_POST['expirationdate_category'] : array() );
|
|
|
|
|
227 |
update_option( 'expirationdateDefaultDate', $_POST['expired-default-expiration-date'] );
|
228 |
if ( $_POST['expired-custom-expiration-date'] ) {
|
229 |
update_option( 'expirationdateDefaultDateCustom', $_POST['expired-custom-expiration-date'] );
|
composer.json
CHANGED
@@ -26,7 +26,7 @@
|
|
26 |
}
|
27 |
],
|
28 |
"dist": {
|
29 |
-
"url": "https://github.com/publishpress/PublishPress-Future/releases/download/v2.5.
|
30 |
"type": "zip"
|
31 |
},
|
32 |
"require-dev": {
|
26 |
}
|
27 |
],
|
28 |
"dist": {
|
29 |
+
"url": "https://github.com/publishpress/PublishPress-Future/releases/download/v2.5.1/post-expirator-2.5.1.zip",
|
30 |
"type": "zip"
|
31 |
},
|
32 |
"require-dev": {
|
composer.lock
CHANGED
@@ -9,16 +9,16 @@
|
|
9 |
"packages-dev": [
|
10 |
{
|
11 |
"name": "consolidation/annotated-command",
|
12 |
-
"version": "4.3.
|
13 |
"source": {
|
14 |
"type": "git",
|
15 |
"url": "https://github.com/consolidation/annotated-command.git",
|
16 |
-
"reference": "
|
17 |
},
|
18 |
"dist": {
|
19 |
"type": "zip",
|
20 |
-
"url": "https://api.github.com/repos/consolidation/annotated-command/zipball/
|
21 |
-
"reference": "
|
22 |
"shasum": ""
|
23 |
},
|
24 |
"require": {
|
@@ -58,9 +58,9 @@
|
|
58 |
"description": "Initialize Symfony Console commands from annotated command class methods.",
|
59 |
"support": {
|
60 |
"issues": "https://github.com/consolidation/annotated-command/issues",
|
61 |
-
"source": "https://github.com/consolidation/annotated-command/tree/4.3.
|
62 |
},
|
63 |
-
"time": "2021-
|
64 |
},
|
65 |
{
|
66 |
"name": "consolidation/config",
|
9 |
"packages-dev": [
|
10 |
{
|
11 |
"name": "consolidation/annotated-command",
|
12 |
+
"version": "4.3.2",
|
13 |
"source": {
|
14 |
"type": "git",
|
15 |
"url": "https://github.com/consolidation/annotated-command.git",
|
16 |
+
"reference": "101c7dd0388259cfbba41b705b9255d2b1976bbf"
|
17 |
},
|
18 |
"dist": {
|
19 |
"type": "zip",
|
20 |
+
"url": "https://api.github.com/repos/consolidation/annotated-command/zipball/101c7dd0388259cfbba41b705b9255d2b1976bbf",
|
21 |
+
"reference": "101c7dd0388259cfbba41b705b9255d2b1976bbf",
|
22 |
"shasum": ""
|
23 |
},
|
24 |
"require": {
|
58 |
"description": "Initialize Symfony Console commands from annotated command class methods.",
|
59 |
"support": {
|
60 |
"issues": "https://github.com/consolidation/annotated-command/issues",
|
61 |
+
"source": "https://github.com/consolidation/annotated-command/tree/4.3.2"
|
62 |
},
|
63 |
+
"time": "2021-09-19T14:35:36+00:00"
|
64 |
},
|
65 |
{
|
66 |
"name": "consolidation/config",
|
languages/post-expirator.pot
CHANGED
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: Post Expirator 2.4.4\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/PublishPress-Future\n"
|
8 |
-
"POT-Creation-Date: 2021-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -70,111 +70,58 @@ msgstr ""
|
|
70 |
msgid "Expires"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: post-expirator.php:
|
74 |
-
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: post-expirator.php:337
|
78 |
-
msgid "The published date/time will be used as the expiration value"
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: post-expirator.php:340 views/bulk-edit.php:51 views/quick-edit.php:32
|
82 |
-
msgid "Year"
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: post-expirator.php:341 views/bulk-edit.php:31 views/quick-edit.php:14
|
86 |
-
msgid "Month"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: post-expirator.php:342 views/bulk-edit.php:47 views/quick-edit.php:28
|
90 |
-
msgid "Day"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: post-expirator.php:379 views/bulk-edit.php:55 views/quick-edit.php:36
|
94 |
-
msgid "Hour"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: post-expirator.php:380 views/bulk-edit.php:59 views/quick-edit.php:40
|
98 |
-
msgid "Minute"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: post-expirator.php:401 views/bulk-edit.php:67 views/menu-defaults.php:60
|
102 |
-
#: views/quick-edit.php:47
|
103 |
-
msgid "How to expire"
|
104 |
-
msgstr ""
|
105 |
-
|
106 |
-
#: post-expirator.php:412 views/bulk-edit.php:79 views/quick-edit.php:57
|
107 |
-
msgid "Expiration Categories"
|
108 |
-
msgstr ""
|
109 |
-
|
110 |
-
#: post-expirator.php:423
|
111 |
-
msgid ""
|
112 |
-
"You must assign a heirarchical taxonomy to this post type to use this "
|
113 |
-
"feature."
|
114 |
-
msgstr ""
|
115 |
-
|
116 |
-
#: post-expirator.php:425
|
117 |
-
msgid ""
|
118 |
-
"More than 1 heirachical taxonomy detected. You must assign a default "
|
119 |
-
"taxonomy on the settings screen."
|
120 |
-
msgstr ""
|
121 |
-
|
122 |
-
#: post-expirator.php:435
|
123 |
-
msgid "Taxonomy Name"
|
124 |
-
msgstr ""
|
125 |
-
|
126 |
-
#: post-expirator.php:744 post-expirator.php:755 post-expirator.php:766
|
127 |
-
#: post-expirator.php:777
|
128 |
msgid ""
|
129 |
"%1$s (%2$s) has expired at %3$s. Post status has been successfully changed "
|
130 |
"to \"%4$s\"."
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: post-expirator.php:
|
134 |
msgid ""
|
135 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" status has been successfully "
|
136 |
"set."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: post-expirator.php:
|
140 |
msgid ""
|
141 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" status has been successfully "
|
142 |
"removed."
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: post-expirator.php:
|
146 |
msgid ""
|
147 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" have now been set to "
|
148 |
"\"%5$s\"."
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: post-expirator.php:
|
152 |
msgid ""
|
153 |
"%1$s (%2$s) has expired at %3$s. The following post \"%4$s\" have now been "
|
154 |
"added: \"%5$s\". The full list of categories on the post are: \"%6$s\"."
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: post-expirator.php:
|
158 |
msgid ""
|
159 |
"%1$s (%2$s) has expired at %3$s. The following post \"%4$s\" have now been "
|
160 |
"removed: \"%5$s\". The full list of categories on the post are: \"%6$s\"."
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: post-expirator.php:
|
164 |
msgid "Post Expiration Complete \"%s\""
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: post-expirator.php:
|
168 |
msgid "[%1$s] %2$s"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: post-expirator.php:
|
172 |
msgid ""
|
173 |
"Select the hierarchical taxonomy to be used for \"category\" based "
|
174 |
"expiration."
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: post-expirator.php:
|
178 |
msgid "No taxonomies found"
|
179 |
msgstr ""
|
180 |
|
@@ -182,6 +129,10 @@ msgstr ""
|
|
182 |
msgid "Date"
|
183 |
msgstr ""
|
184 |
|
|
|
|
|
|
|
|
|
185 |
#: views/bulk-edit.php:22
|
186 |
msgid "No Change"
|
187 |
msgstr ""
|
@@ -210,47 +161,96 @@ msgstr ""
|
|
210 |
msgid "Remove from posts"
|
211 |
msgstr ""
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
#: views/bulk-edit.php:66 views/quick-edit.php:46
|
214 |
msgid "Type"
|
215 |
msgstr ""
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
#: views/expire-column.php:3
|
218 |
msgid "Never"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: views/how-to-expire.php:
|
222 |
msgid "Draft"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: views/how-to-expire.php:
|
226 |
msgid "Delete"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: views/how-to-expire.php:
|
230 |
msgid "Trash"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: views/how-to-expire.php:
|
234 |
msgid "Private"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: views/how-to-expire.php:
|
238 |
msgid "Stick"
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: views/how-to-expire.php:
|
242 |
msgid "Unstick"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: views/how-to-expire.php:
|
246 |
msgid "Category: Replace"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: views/how-to-expire.php:
|
250 |
msgid "Category: Add"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: views/how-to-expire.php:
|
254 |
msgid "Category: Remove"
|
255 |
msgstr ""
|
256 |
|
5 |
"Project-Id-Version: Post Expirator 2.4.4\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/PublishPress-Future\n"
|
8 |
+
"POT-Creation-Date: 2021-09-07 07:34:21+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
70 |
msgid "Expires"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: post-expirator.php:618 post-expirator.php:629 post-expirator.php:640
|
74 |
+
#: post-expirator.php:651
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
msgid ""
|
76 |
"%1$s (%2$s) has expired at %3$s. Post status has been successfully changed "
|
77 |
"to \"%4$s\"."
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: post-expirator.php:662
|
81 |
msgid ""
|
82 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" status has been successfully "
|
83 |
"set."
|
84 |
msgstr ""
|
85 |
|
86 |
+
#: post-expirator.php:673
|
87 |
msgid ""
|
88 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" status has been successfully "
|
89 |
"removed."
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: post-expirator.php:686 post-expirator.php:700
|
93 |
msgid ""
|
94 |
"%1$s (%2$s) has expired at %3$s. Post \"%4$s\" have now been set to "
|
95 |
"\"%5$s\"."
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: post-expirator.php:723 post-expirator.php:737
|
99 |
msgid ""
|
100 |
"%1$s (%2$s) has expired at %3$s. The following post \"%4$s\" have now been "
|
101 |
"added: \"%5$s\". The full list of categories on the post are: \"%6$s\"."
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: post-expirator.php:766 post-expirator.php:787
|
105 |
msgid ""
|
106 |
"%1$s (%2$s) has expired at %3$s. The following post \"%4$s\" have now been "
|
107 |
"removed: \"%5$s\". The full list of categories on the post are: \"%6$s\"."
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: post-expirator.php:806
|
111 |
msgid "Post Expiration Complete \"%s\""
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: post-expirator.php:842
|
115 |
msgid "[%1$s] %2$s"
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: post-expirator.php:1415
|
119 |
msgid ""
|
120 |
"Select the hierarchical taxonomy to be used for \"category\" based "
|
121 |
"expiration."
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: post-expirator.php:1417
|
125 |
msgid "No taxonomies found"
|
126 |
msgstr ""
|
127 |
|
129 |
msgid "Date"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: views/bulk-edit.php:20 views/classic-metabox.php:3 views/quick-edit.php:7
|
133 |
+
msgid "Enable Post Expiration"
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
#: views/bulk-edit.php:22
|
137 |
msgid "No Change"
|
138 |
msgstr ""
|
161 |
msgid "Remove from posts"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: views/bulk-edit.php:31 views/classic-metabox.php:40 views/quick-edit.php:14
|
165 |
+
msgid "Month"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: views/bulk-edit.php:47 views/classic-metabox.php:57 views/quick-edit.php:28
|
169 |
+
msgid "Day"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: views/bulk-edit.php:51 views/classic-metabox.php:16 views/quick-edit.php:32
|
173 |
+
msgid "Year"
|
174 |
+
msgstr ""
|
175 |
+
|
176 |
+
#: views/bulk-edit.php:55 views/classic-metabox.php:61 views/quick-edit.php:36
|
177 |
+
msgid "Hour"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: views/bulk-edit.php:59 views/classic-metabox.php:79 views/quick-edit.php:40
|
181 |
+
msgid "Minute"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
#: views/bulk-edit.php:66 views/quick-edit.php:46
|
185 |
msgid "Type"
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: views/bulk-edit.php:67 views/classic-metabox.php:83
|
189 |
+
#: views/menu-defaults.php:60 views/quick-edit.php:47
|
190 |
+
msgid "How to expire"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: views/bulk-edit.php:79 views/classic-metabox.php:96 views/quick-edit.php:57
|
194 |
+
msgid "Expiration Categories"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: views/classic-metabox.php:9
|
198 |
+
msgid "The published date/time will be used as the expiration value"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: views/classic-metabox.php:104
|
202 |
+
msgid ""
|
203 |
+
"You must assign a heirarchical taxonomy to this post type to use this "
|
204 |
+
"feature."
|
205 |
+
msgstr ""
|
206 |
+
|
207 |
+
#: views/classic-metabox.php:106
|
208 |
+
msgid ""
|
209 |
+
"More than 1 heirachical taxonomy detected. You must assign a default "
|
210 |
+
"taxonomy on the settings screen."
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
#: views/classic-metabox.php:116
|
214 |
+
msgid "Taxonomy Name"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
#: views/expire-column.php:3
|
218 |
msgid "Never"
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: views/how-to-expire.php:24
|
222 |
msgid "Draft"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: views/how-to-expire.php:25
|
226 |
msgid "Delete"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: views/how-to-expire.php:26
|
230 |
msgid "Trash"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: views/how-to-expire.php:27
|
234 |
msgid "Private"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: views/how-to-expire.php:28
|
238 |
msgid "Stick"
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: views/how-to-expire.php:29
|
242 |
msgid "Unstick"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: views/how-to-expire.php:31
|
246 |
msgid "Category: Replace"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: views/how-to-expire.php:32
|
250 |
msgid "Category: Add"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: views/how-to-expire.php:33
|
254 |
msgid "Category: Remove"
|
255 |
msgstr ""
|
256 |
|
post-expirator.php
CHANGED
@@ -3,15 +3,15 @@
|
|
3 |
Plugin Name: Post Expirator
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
|
5 |
Description: Allows you to add an expiration date (minute) to posts which you can configure to either delete the post, change it to a draft, or update the post categories at expiration time.
|
6 |
-
Author:
|
7 |
-
Version: 2.5.
|
8 |
-
Author URI: http://
|
9 |
Text Domain: post-expirator
|
10 |
Domain Path: /languages
|
11 |
*/
|
12 |
|
13 |
// Default Values
|
14 |
-
define( 'POSTEXPIRATOR_VERSION', '2.5.
|
15 |
define( 'POSTEXPIRATOR_DATEFORMAT', __( 'l F jS, Y', 'post-expirator' ) );
|
16 |
define( 'POSTEXPIRATOR_TIMEFORMAT', __( 'g:ia', 'post-expirator' ) );
|
17 |
define( 'POSTEXPIRATOR_FOOTERCONTENTS', __( 'Post expires at EXPIRATIONTIME on EXPIRATIONDATE', 'post-expirator' ) );
|
@@ -68,7 +68,7 @@ add_action( 'plugins_loaded', 'postexpirator_init' );
|
|
68 |
function postexpirator_add_column( $columns, $type ) {
|
69 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $type ) );
|
70 |
// if settings are not configured, show the metabox by default only for posts and pages
|
71 |
-
if ( ( ! isset( $defaults['activeMetaBox'] ) && in_array( $type, array( 'post', 'page' ), true ) ) || $defaults['activeMetaBox'] === 'active' ) {
|
72 |
$columns['expirationdate'] = __( 'Expires', 'post-expirator' );
|
73 |
}
|
74 |
return $columns;
|
@@ -243,8 +243,8 @@ add_action( 'bulk_edit_custom_box', 'postexpirator_bulkedit', 10, 2 );
|
|
243 |
* @access private
|
244 |
*/
|
245 |
function postexpirator_get_post_types() {
|
246 |
-
$post_types = get_post_types( array('public' => true) );
|
247 |
-
$post_types = array_merge( $post_types, get_post_types( array('public' => false, '_builtin' => false ) ) );
|
248 |
|
249 |
// in case some post types should not be supported.
|
250 |
$unset_post_types = apply_filters( 'postexpirator_unset_post_types', array( 'attachment' ) );
|
@@ -265,11 +265,11 @@ function postexpirator_get_post_types() {
|
|
265 |
*/
|
266 |
function postexpirator_meta_custom() {
|
267 |
$post_types = postexpirator_get_post_types();
|
268 |
-
foreach ( $post_types as $
|
269 |
-
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $
|
270 |
// if settings are not configured, show the metabox by default only for posts and pages
|
271 |
-
if ( ( ! isset( $defaults['activeMetaBox'] ) && in_array( $
|
272 |
-
add_meta_box( 'expirationdatediv', __( 'Post Expirator', 'post-expirator' ), 'postexpirator_meta_box', $
|
273 |
}
|
274 |
}
|
275 |
}
|
@@ -287,23 +287,18 @@ function postexpirator_meta_box( $post ) {
|
|
287 |
$expirationdatets = get_post_meta( $post->ID, '_expiration-date', true );
|
288 |
$firstsave = get_post_meta( $post->ID, '_expiration-date-status', true );
|
289 |
|
290 |
-
|
291 |
-
wp_nonce_field( '__postexpirator', '_postexpiratornonce' );
|
292 |
-
|
293 |
-
$default = '';
|
294 |
-
$expireType = '';
|
295 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post->post_type ) );
|
296 |
if ( empty( $expirationdatets ) ) {
|
297 |
$default_expiry = PostExpirator_Facade::get_default_expiry( $post->post_type );
|
298 |
|
299 |
$defaultmonth = $default_expiry['month'];
|
300 |
-
$defaultday
|
301 |
-
$defaulthour
|
302 |
-
$defaultyear
|
303 |
-
$defaultminute
|
304 |
|
305 |
$enabled = '';
|
306 |
-
$disabled = ' disabled="disabled"';
|
307 |
$categories = get_option( 'expirationdateCategoryDefaults' );
|
308 |
|
309 |
if ( isset( $defaults['expireType'] ) ) {
|
@@ -313,7 +308,6 @@ function postexpirator_meta_box( $post ) {
|
|
313 |
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
314 |
if ( isset( $defaults['autoEnable'] ) && ( $firstsave !== 'saved' ) && ( $defaults['autoEnable'] === true || $defaults['autoEnable'] == 1 ) ) {
|
315 |
$enabled = ' checked="checked"';
|
316 |
-
$disabled = '';
|
317 |
}
|
318 |
} else {
|
319 |
$defaultmonth = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'm' );
|
@@ -322,121 +316,26 @@ function postexpirator_meta_box( $post ) {
|
|
322 |
$defaulthour = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'H' );
|
323 |
$defaultminute = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'i' );
|
324 |
$enabled = ' checked="checked"';
|
325 |
-
$disabled = '';
|
326 |
|
327 |
$attributes = PostExpirator_Facade::get_expire_principles( $post->ID );
|
328 |
$expireType = $attributes['expireType'];
|
329 |
$categories = $attributes['category'];
|
330 |
}
|
331 |
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
$currentyear = date( 'Y' );
|
347 |
-
|
348 |
-
if ( $defaultyear < $currentyear ) {
|
349 |
-
$currentyear = $defaultyear;
|
350 |
-
}
|
351 |
-
|
352 |
-
for ( $i = $currentyear; $i <= $currentyear + 10; $i++ ) {
|
353 |
-
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
354 |
-
if ( $i == $defaultyear ) {
|
355 |
-
$selected = ' selected="selected"';
|
356 |
-
} else {
|
357 |
-
$selected = '';
|
358 |
-
}
|
359 |
-
$rv[] = '<option' . $selected . '>' . ( $i ) . '</option>';
|
360 |
-
}
|
361 |
-
$rv[] = '</select>';
|
362 |
-
$rv[] = '</td><td>';
|
363 |
-
$rv[] = '<select name="expirationdate_month" id="expirationdate_month"' . $disabled . '>';
|
364 |
-
|
365 |
-
for ( $i = 1; $i <= 12; $i++ ) {
|
366 |
-
if ( $defaultmonth === date_i18n( 'm', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ) ) {
|
367 |
-
$selected = ' selected="selected"';
|
368 |
-
} else {
|
369 |
-
$selected = '';
|
370 |
-
}
|
371 |
-
$rv[] = '<option value="' . date_i18n( 'm', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ) . '"' . $selected . '>' . date_i18n( 'F', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ) . '</option>';
|
372 |
-
}
|
373 |
-
|
374 |
-
$rv[] = '</select>';
|
375 |
-
$rv[] = '</td><td>';
|
376 |
-
$rv[] = '<input type="text" id="expirationdate_day" name="expirationdate_day" value="' . $defaultday . '" size="2"' . $disabled . ' />,';
|
377 |
-
$rv[] = '</td></tr><tr>';
|
378 |
-
$rv[] = '<th style="text-align: left;"></th>';
|
379 |
-
$rv[] = '<th style="text-align: left;">' . __( 'Hour', 'post-expirator' ) . '(' . date_i18n( 'T', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ) . ')</th>';
|
380 |
-
$rv[] = '<th style="text-align: left;">' . __( 'Minute', 'post-expirator' ) . '</th>';
|
381 |
-
$rv[] = '</tr><tr>';
|
382 |
-
$rv[] = '<td>@</td><td>';
|
383 |
-
$rv[] = '<select name="expirationdate_hour" id="expirationdate_hour"' . $disabled . '>';
|
384 |
-
|
385 |
-
for ( $i = 1; $i <= 24; $i++ ) {
|
386 |
-
if ( $defaulthour === date_i18n( 'H', mktime( $i, 0, 0, date_i18n( 'n' ), date_i18n( 'j' ), date_i18n( 'Y' ) ) ) ) {
|
387 |
-
$selected = ' selected="selected"';
|
388 |
-
} else {
|
389 |
-
$selected = '';
|
390 |
-
}
|
391 |
-
$rv[] = '<option value="' . date_i18n( 'H', mktime( $i, 0, 0, date_i18n( 'n' ), date_i18n( 'j' ), date_i18n( 'Y' ) ) ) . '"' . $selected . '>' . date_i18n( 'H', mktime( $i, 0, 0, date_i18n( 'n' ), date_i18n( 'j' ), date_i18n( 'Y' ) ) ) . '</option>';
|
392 |
-
}
|
393 |
-
|
394 |
-
$rv[] = '</select></td><td>';
|
395 |
-
$rv[] = '<input type="text" id="expirationdate_minute" name="expirationdate_minute" value="' . $defaultminute . '" size="2"' . $disabled . ' />';
|
396 |
-
$rv[] = '</td></tr></table>';
|
397 |
-
}
|
398 |
-
$rv[] = '<input type="hidden" name="expirationdate_formcheck" value="true" />';
|
399 |
-
echo implode( "\n", $rv );
|
400 |
-
|
401 |
-
echo '<br/>' . __( 'How to expire', 'post-expirator' ) . ': ';
|
402 |
-
_postexpirator_expire_type( array('type' => $post->post_type, 'name' => 'expirationdate_expiretype', 'selected' => $expireType, 'disabled' => $disabled, 'onchange' => 'expirationdate_toggle_category(this)') );
|
403 |
-
echo '<br/>';
|
404 |
-
|
405 |
-
if ( $post->post_type !== 'page' ) {
|
406 |
-
if ( isset( $expireType ) && ( $expireType === 'category' || $expireType === 'category-add' || $expireType === 'category-remove' ) ) {
|
407 |
-
$catdisplay = 'block';
|
408 |
-
} else {
|
409 |
-
$catdisplay = 'none';
|
410 |
-
}
|
411 |
-
echo '<div id="expired-category-selection" style="display: ' . $catdisplay . '">';
|
412 |
-
echo '<br/>' . __( 'Expiration Categories', 'post-expirator' ) . ':<br/>';
|
413 |
-
|
414 |
-
echo '<div class="wp-tab-panel" id="post-expirator-cat-list">';
|
415 |
-
echo '<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">';
|
416 |
-
$walker = new Walker_PostExpirator_Category_Checklist();
|
417 |
-
if ( ! empty( $disabled ) ) {
|
418 |
-
$walker->setDisabled();
|
419 |
-
}
|
420 |
-
$taxonomies = get_object_taxonomies( $post->post_type, 'object' );
|
421 |
-
$taxonomies = wp_filter_object_list( $taxonomies, array('hierarchical' => true) );
|
422 |
-
if ( sizeof( $taxonomies ) === 0 ) {
|
423 |
-
echo '<p>' . __( 'You must assign a heirarchical taxonomy to this post type to use this feature.', 'post-expirator' ) . '</p>';
|
424 |
-
} elseif ( sizeof( $taxonomies ) > 1 && ! isset( $defaults['taxonomy'] ) ) {
|
425 |
-
echo '<p>' . __( 'More than 1 heirachical taxonomy detected. You must assign a default taxonomy on the settings screen.', 'post-expirator' ) . '</p>';
|
426 |
-
} else {
|
427 |
-
$keys = array_keys( $taxonomies );
|
428 |
-
$taxonomy = isset( $defaults['taxonomy'] ) ? $defaults['taxonomy'] : $keys[0];
|
429 |
-
wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy, 'walker' => $walker, 'selected_cats' => $categories, 'checked_ontop' => false ) );
|
430 |
-
echo '<input type="hidden" name="taxonomy-heirarchical" value="' . $taxonomy . '" />';
|
431 |
-
}
|
432 |
-
echo '</ul>';
|
433 |
-
echo '</div>';
|
434 |
-
if ( isset( $taxonomy ) ) {
|
435 |
-
echo '<p class="post-expirator-taxonomy-name">' . __( 'Taxonomy Name', 'post-expirator' ) . ': ' . $taxonomy . '</p>';
|
436 |
-
}
|
437 |
-
echo '</div>';
|
438 |
-
}
|
439 |
-
echo '<div id="expirationdate_ajax_result"></div>';
|
440 |
}
|
441 |
|
442 |
/**
|
@@ -447,57 +346,32 @@ function postexpirator_meta_box( $post ) {
|
|
447 |
* @access private
|
448 |
*/
|
449 |
function postexpirator_js_admin_header() {
|
450 |
-
// Define custom JavaScript function
|
451 |
?>
|
452 |
<script type="text/javascript">
|
453 |
//<![CDATA[
|
454 |
-
function
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
document.getElementById('expirationdate_day').disabled = true;
|
476 |
-
document.getElementById('expirationdate_year').disabled = true;
|
477 |
-
document.getElementById('expirationdate_hour').disabled = true;
|
478 |
-
document.getElementById('expirationdate_minute').disabled = true;
|
479 |
-
}
|
480 |
-
document.getElementById('expirationdate_expiretype').disabled = true;
|
481 |
-
var cats = document.getElementsByName('expirationdate_category[]');
|
482 |
-
var max = cats.length;
|
483 |
-
for (var i=0; i<max; i++) {
|
484 |
-
cats[i].disabled = 'disable';
|
485 |
-
}
|
486 |
-
var enable = 'false';
|
487 |
-
}
|
488 |
-
return true;
|
489 |
-
}
|
490 |
-
function expirationdate_toggle_category(id) {
|
491 |
-
if (id.options[id.selectedIndex].value == 'category') {
|
492 |
-
jQuery('#expired-category-selection').show();
|
493 |
-
} else if (id.options[id.selectedIndex].value == 'category-add') {
|
494 |
-
jQuery('#expired-category-selection').show(); //TEMP
|
495 |
-
} else if (id.options[id.selectedIndex].value == 'category-remove') {
|
496 |
-
jQuery('#expired-category-selection').show(); //TEMP
|
497 |
-
} else {
|
498 |
-
jQuery('#expired-category-selection').hide();
|
499 |
}
|
500 |
-
}
|
501 |
//]]>
|
502 |
</script>
|
503 |
<?php
|
3 |
Plugin Name: Post Expirator
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
|
5 |
Description: Allows you to add an expiration date (minute) to posts which you can configure to either delete the post, change it to a draft, or update the post categories at expiration time.
|
6 |
+
Author: PublishPress
|
7 |
+
Version: 2.5.1
|
8 |
+
Author URI: http://publishpress.com
|
9 |
Text Domain: post-expirator
|
10 |
Domain Path: /languages
|
11 |
*/
|
12 |
|
13 |
// Default Values
|
14 |
+
define( 'POSTEXPIRATOR_VERSION', '2.5.1' );
|
15 |
define( 'POSTEXPIRATOR_DATEFORMAT', __( 'l F jS, Y', 'post-expirator' ) );
|
16 |
define( 'POSTEXPIRATOR_TIMEFORMAT', __( 'g:ia', 'post-expirator' ) );
|
17 |
define( 'POSTEXPIRATOR_FOOTERCONTENTS', __( 'Post expires at EXPIRATIONTIME on EXPIRATIONDATE', 'post-expirator' ) );
|
68 |
function postexpirator_add_column( $columns, $type ) {
|
69 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $type ) );
|
70 |
// if settings are not configured, show the metabox by default only for posts and pages
|
71 |
+
if ( ( ! isset( $defaults['activeMetaBox'] ) && in_array( $type, array( 'post', 'page' ), true ) ) || ( is_array( $defaults ) && $defaults['activeMetaBox'] === 'active' ) ) {
|
72 |
$columns['expirationdate'] = __( 'Expires', 'post-expirator' );
|
73 |
}
|
74 |
return $columns;
|
243 |
* @access private
|
244 |
*/
|
245 |
function postexpirator_get_post_types() {
|
246 |
+
$post_types = get_post_types( array( 'public' => true ) );
|
247 |
+
$post_types = array_merge( $post_types, get_post_types( array( 'public' => false, 'show_ui' => true, '_builtin' => false ) ) );
|
248 |
|
249 |
// in case some post types should not be supported.
|
250 |
$unset_post_types = apply_filters( 'postexpirator_unset_post_types', array( 'attachment' ) );
|
265 |
*/
|
266 |
function postexpirator_meta_custom() {
|
267 |
$post_types = postexpirator_get_post_types();
|
268 |
+
foreach ( $post_types as $type ) {
|
269 |
+
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $type ) );
|
270 |
// if settings are not configured, show the metabox by default only for posts and pages
|
271 |
+
if ( ( ! isset( $defaults['activeMetaBox'] ) && in_array( $type, array( 'post', 'page' ), true ) ) || ( is_array( $defaults ) && $defaults['activeMetaBox'] === 'active' ) ) {
|
272 |
+
add_meta_box( 'expirationdatediv', __( 'Post Expirator', 'post-expirator' ), 'postexpirator_meta_box', $type, 'side', 'core', array( '__back_compat_meta_box' => PostExpirator_Facade::show_gutenberg_metabox() ) );
|
273 |
}
|
274 |
}
|
275 |
}
|
287 |
$expirationdatets = get_post_meta( $post->ID, '_expiration-date', true );
|
288 |
$firstsave = get_post_meta( $post->ID, '_expiration-date-status', true );
|
289 |
|
290 |
+
$default = $expireType = $enabled = $defaultmonth = $defaultday = $defaulthour = $defaultyear = $defaultminute = $categories = '';
|
|
|
|
|
|
|
|
|
291 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post->post_type ) );
|
292 |
if ( empty( $expirationdatets ) ) {
|
293 |
$default_expiry = PostExpirator_Facade::get_default_expiry( $post->post_type );
|
294 |
|
295 |
$defaultmonth = $default_expiry['month'];
|
296 |
+
$defaultday = $default_expiry['day'];
|
297 |
+
$defaulthour = $default_expiry['hour'];
|
298 |
+
$defaultyear = $default_expiry['year'];
|
299 |
+
$defaultminute = $default_expiry['minute'];
|
300 |
|
301 |
$enabled = '';
|
|
|
302 |
$categories = get_option( 'expirationdateCategoryDefaults' );
|
303 |
|
304 |
if ( isset( $defaults['expireType'] ) ) {
|
308 |
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
309 |
if ( isset( $defaults['autoEnable'] ) && ( $firstsave !== 'saved' ) && ( $defaults['autoEnable'] === true || $defaults['autoEnable'] == 1 ) ) {
|
310 |
$enabled = ' checked="checked"';
|
|
|
311 |
}
|
312 |
} else {
|
313 |
$defaultmonth = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'm' );
|
316 |
$defaulthour = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'H' );
|
317 |
$defaultminute = get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $expirationdatets ), 'i' );
|
318 |
$enabled = ' checked="checked"';
|
|
|
319 |
|
320 |
$attributes = PostExpirator_Facade::get_expire_principles( $post->ID );
|
321 |
$expireType = $attributes['expireType'];
|
322 |
$categories = $attributes['category'];
|
323 |
}
|
324 |
|
325 |
+
PostExpirator_Display::getInstance()->render_template(
|
326 |
+
'classic-metabox', array(
|
327 |
+
'post' => $post,
|
328 |
+
'enabled' => $enabled,
|
329 |
+
'default' => $default,
|
330 |
+
'defaultmonth' => $defaultmonth,
|
331 |
+
'defaultday' => $defaultday,
|
332 |
+
'defaulthour' => $defaulthour,
|
333 |
+
'defaultyear' => $defaultyear,
|
334 |
+
'defaultminute' => $defaultminute,
|
335 |
+
'categories' => $categories,
|
336 |
+
'expireType' => $expireType,
|
337 |
+
)
|
338 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
}
|
340 |
|
341 |
/**
|
346 |
* @access private
|
347 |
*/
|
348 |
function postexpirator_js_admin_header() {
|
|
|
349 |
?>
|
350 |
<script type="text/javascript">
|
351 |
//<![CDATA[
|
352 |
+
(function($){
|
353 |
+
$(document).ready(function(){
|
354 |
+
init();
|
355 |
+
});
|
356 |
+
|
357 |
+
function init(){
|
358 |
+
$('#enable-expirationdate').on('click', function(e){
|
359 |
+
if($(this).is(':checked')){
|
360 |
+
$('.pe-classic-fields').show();
|
361 |
+
}else{
|
362 |
+
$('.pe-classic-fields').hide();
|
363 |
+
}
|
364 |
+
});
|
365 |
+
|
366 |
+
$('.pe-howtoexpire').on('change', function(e){
|
367 |
+
if($(this).val().indexOf('category') !== -1){
|
368 |
+
$('#expired-category-selection').show();
|
369 |
+
}else{
|
370 |
+
$('#expired-category-selection').hide();
|
371 |
+
}
|
372 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
}
|
374 |
+
})(jQuery);
|
375 |
//]]>
|
376 |
</script>
|
377 |
<?php
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== Post Expirator: Automatically Unpublish WordPress Posts ===
|
2 |
-
Contributors: publishpress, kevinB, stevejburge, andergmartins
|
3 |
Author: publishpress
|
4 |
Author URI: https://publishpress.com
|
5 |
Tags: expire, posts, pages, schedule
|
6 |
-
Requires at least:
|
7 |
Tested up to: 5.8
|
8 |
-
Stable tag: 2.5.
|
9 |
|
10 |
Add an expiration date to posts. When your post is automatically unpublished, you can delete the post, change the status, or update the post categories.
|
11 |
|
@@ -81,6 +81,14 @@ This section describes how to install the plugin and get it working.
|
|
81 |
|
82 |
== Changelog ==
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
= [2.5.0] - 08 Aug 2021 =
|
85 |
|
86 |
* Fixed: Appearance Widgets screen shows PHP Notice, #92;
|
1 |
=== Post Expirator: Automatically Unpublish WordPress Posts ===
|
2 |
+
Contributors: publishpress, kevinB, stevejburge, andergmartins, rozroz
|
3 |
Author: publishpress
|
4 |
Author URI: https://publishpress.com
|
5 |
Tags: expire, posts, pages, schedule
|
6 |
+
Requires at least: 5.0
|
7 |
Tested up to: 5.8
|
8 |
+
Stable tag: 2.5.1
|
9 |
|
10 |
Add an expiration date to posts. When your post is automatically unpublished, you can delete the post, change the status, or update the post categories.
|
11 |
|
81 |
|
82 |
== Changelog ==
|
83 |
|
84 |
+
= [2.5.1] - 27 Sep 2021 =
|
85 |
+
|
86 |
+
* Fixed: Default Expiration Categories cannot be unset, #94;
|
87 |
+
* Fixed: Tidy up design for Classic Editor version, #83;
|
88 |
+
* Fixed: All posts now carry the default expiration, #115;
|
89 |
+
* Fixed: Error with 2.5.0 and WordPress 5.8.1, #110;
|
90 |
+
* Fixed: Do not show private post types that don't have an admin UI, #116;
|
91 |
+
|
92 |
= [2.5.0] - 08 Aug 2021 =
|
93 |
|
94 |
* Fixed: Appearance Widgets screen shows PHP Notice, #92;
|
vendor/composer/InstalledVersions.php
CHANGED
@@ -29,7 +29,7 @@ private static $installed = array (
|
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
-
'reference' => '
|
33 |
'name' => 'publishpress/post-expirator',
|
34 |
),
|
35 |
'versions' =>
|
@@ -41,7 +41,7 @@ private static $installed = array (
|
|
41 |
'aliases' =>
|
42 |
array (
|
43 |
),
|
44 |
-
'reference' => '
|
45 |
),
|
46 |
),
|
47 |
);
|
29 |
'aliases' =>
|
30 |
array (
|
31 |
),
|
32 |
+
'reference' => '4996c39a952ccb9b01d2783c88728a1c578b6fa2',
|
33 |
'name' => 'publishpress/post-expirator',
|
34 |
),
|
35 |
'versions' =>
|
41 |
'aliases' =>
|
42 |
array (
|
43 |
),
|
44 |
+
'reference' => '4996c39a952ccb9b01d2783c88728a1c578b6fa2',
|
45 |
),
|
46 |
),
|
47 |
);
|
vendor/composer/installed.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
-
'reference' => '
|
10 |
'name' => 'publishpress/post-expirator',
|
11 |
),
|
12 |
'versions' =>
|
@@ -18,7 +18,7 @@
|
|
18 |
'aliases' =>
|
19 |
array (
|
20 |
),
|
21 |
-
'reference' => '
|
22 |
),
|
23 |
),
|
24 |
);
|
6 |
'aliases' =>
|
7 |
array (
|
8 |
),
|
9 |
+
'reference' => '4996c39a952ccb9b01d2783c88728a1c578b6fa2',
|
10 |
'name' => 'publishpress/post-expirator',
|
11 |
),
|
12 |
'versions' =>
|
18 |
'aliases' =>
|
19 |
array (
|
20 |
),
|
21 |
+
'reference' => '4996c39a952ccb9b01d2783c88728a1c578b6fa2',
|
22 |
),
|
23 |
),
|
24 |
);
|
views/bulk-edit.php
CHANGED
@@ -69,7 +69,7 @@
|
|
69 |
<label>
|
70 |
<?php
|
71 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post_type ) );
|
72 |
-
_postexpirator_expire_type( array('name' => 'expirationdate_expiretype', 'selected' => $defaults['expireType'], 'post_type' => $post_type ) );
|
73 |
?>
|
74 |
</label>
|
75 |
</div>
|
69 |
<label>
|
70 |
<?php
|
71 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post_type ) );
|
72 |
+
_postexpirator_expire_type( array('name' => 'expirationdate_expiretype', 'selected' => empty( $defaults ) ? 'draft' : $defaults['expireType'], 'post_type' => $post_type ) );
|
73 |
?>
|
74 |
</label>
|
75 |
</div>
|
views/classic-metabox.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<p>
|
2 |
+
<input type="checkbox" name="enable-expirationdate" id="enable-expirationdate" value="checked"' . <?php echo $enabled; ?>/>
|
3 |
+
<label for="enable-expirationdate"><?php _e( 'Enable Post Expiration', 'post-expirator' ); ?></label>
|
4 |
+
</p>
|
5 |
+
|
6 |
+
<?php
|
7 |
+
if ( $default === 'publish' ) {
|
8 |
+
?>
|
9 |
+
<em><?php _e( 'The published date/time will be used as the expiration value', 'post-expirator' ); ?></em>
|
10 |
+
<?php
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
?>
|
14 |
+
<div class="pe-classic-fields" style="display: <?php echo empty( $enabled ) ? 'none' : 'flex'; ?>">
|
15 |
+
<div>
|
16 |
+
<label><?php _e( 'Year', 'post-expirator' ); ?></label>
|
17 |
+
<select name="expirationdate_year" id="expirationdate_year" >
|
18 |
+
<?php
|
19 |
+
$currentyear = date( 'Y' );
|
20 |
+
|
21 |
+
if ( $defaultyear < $currentyear ) {
|
22 |
+
$currentyear = $defaultyear;
|
23 |
+
}
|
24 |
+
|
25 |
+
for ( $i = $currentyear; $i <= $currentyear + 10; $i++ ) {
|
26 |
+
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
27 |
+
if ( $i == $defaultyear ) {
|
28 |
+
$selected = ' selected="selected"';
|
29 |
+
} else {
|
30 |
+
$selected = '';
|
31 |
+
}
|
32 |
+
?>
|
33 |
+
<option <?php echo $selected; ?> value="<?php echo $i; ?>"><?php echo $i; ?></option>
|
34 |
+
<?php
|
35 |
+
}
|
36 |
+
?>
|
37 |
+
</select>
|
38 |
+
</div>
|
39 |
+
<div>
|
40 |
+
<label><?php _e( 'Month', 'post-expirator' ); ?></label>
|
41 |
+
<select name="expirationdate_month" id="expirationdate_month" >
|
42 |
+
<?php
|
43 |
+
for ( $i = 1; $i <= 12; $i++ ) {
|
44 |
+
if ( $defaultmonth === date_i18n( 'm', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ) ) {
|
45 |
+
$selected = ' selected="selected"';
|
46 |
+
} else {
|
47 |
+
$selected = '';
|
48 |
+
}
|
49 |
+
?>
|
50 |
+
<option value="<?php echo date_i18n( 'm', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ); ?>" <?php echo $selected; ?>><?php echo date_i18n( 'F', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ); ?></option>
|
51 |
+
<?php
|
52 |
+
}
|
53 |
+
?>
|
54 |
+
</select>
|
55 |
+
</div>
|
56 |
+
<div>
|
57 |
+
<label><?php _e( 'Day', 'post-expirator' ); ?></label>
|
58 |
+
<input type="text" id="expirationdate_day" name="expirationdate_day" value="<?php echo $defaultday; ?>" size="2" />
|
59 |
+
</div>
|
60 |
+
<div>
|
61 |
+
<label><?php _e( 'Hour', 'post-expirator' ); ?> (<?php echo date_i18n( 'T', mktime( 0, 0, 0, $i, 1, date_i18n( 'Y' ) ) ); ?>)</label>
|
62 |
+
<select name="expirationdate_hour" id="expirationdate_hour" >
|
63 |
+
<?php
|
64 |
+
for ( $i = 1; $i <= 24; $i++ ) {
|
65 |
+
$hour = date_i18n( 'H', mktime( $i, 0, 0, date_i18n( 'n' ), date_i18n( 'j' ), date_i18n( 'Y' ) ) );
|
66 |
+
if ( $defaulthour === $hour ) {
|
67 |
+
$selected = ' selected="selected"';
|
68 |
+
} else {
|
69 |
+
$selected = '';
|
70 |
+
}
|
71 |
+
?>
|
72 |
+
<option value="<?php echo $hour; ?>" <?php echo $selected; ?>><?php echo $hour; ?></option>
|
73 |
+
<?php
|
74 |
+
}
|
75 |
+
?>
|
76 |
+
</select>
|
77 |
+
</div>
|
78 |
+
<div>
|
79 |
+
<label><?php _e( 'Minute', 'post-expirator' ); ?></label>
|
80 |
+
<input type="text" id="expirationdate_minute" name="expirationdate_minute" value="<?php echo $defaultminute; ?>" size="2" />
|
81 |
+
</div>
|
82 |
+
<div>
|
83 |
+
<label><?php _e( 'How to expire', 'post-expirator' ); ?></label>
|
84 |
+
<?php _postexpirator_expire_type( array('type' => $post->post_type, 'name' => 'expirationdate_expiretype', 'selected' => $expireType ) ); ?>
|
85 |
+
</div>
|
86 |
+
|
87 |
+
<?php
|
88 |
+
if ( $post->post_type !== 'page' ) {
|
89 |
+
if ( isset( $expireType ) && ( $expireType === 'category' || $expireType === 'category-add' || $expireType === 'category-remove' ) ) {
|
90 |
+
$catdisplay = 'block';
|
91 |
+
} else {
|
92 |
+
$catdisplay = 'none';
|
93 |
+
}
|
94 |
+
|
95 |
+
echo '<div id="expired-category-selection" style="display: ' . $catdisplay . '">';
|
96 |
+
echo '<br/>' . __( 'Expiration Categories', 'post-expirator' ) . ':<br/>';
|
97 |
+
|
98 |
+
echo '<div class="wp-tab-panel" id="post-expirator-cat-list">';
|
99 |
+
echo '<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">';
|
100 |
+
$walker = new Walker_PostExpirator_Category_Checklist();
|
101 |
+
$taxonomies = get_object_taxonomies( $post->post_type, 'object' );
|
102 |
+
$taxonomies = wp_filter_object_list( $taxonomies, array('hierarchical' => true) );
|
103 |
+
if ( sizeof( $taxonomies ) === 0 ) {
|
104 |
+
echo '<p>' . __( 'You must assign a heirarchical taxonomy to this post type to use this feature.', 'post-expirator' ) . '</p>';
|
105 |
+
} elseif ( sizeof( $taxonomies ) > 1 && ! isset( $defaults['taxonomy'] ) ) {
|
106 |
+
echo '<p>' . __( 'More than 1 heirachical taxonomy detected. You must assign a default taxonomy on the settings screen.', 'post-expirator' ) . '</p>';
|
107 |
+
} else {
|
108 |
+
$keys = array_keys( $taxonomies );
|
109 |
+
$taxonomy = isset( $defaults['taxonomy'] ) ? $defaults['taxonomy'] : $keys[0];
|
110 |
+
wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy, 'walker' => $walker, 'selected_cats' => $categories, 'checked_ontop' => false ) );
|
111 |
+
echo '<input type="hidden" name="taxonomy-heirarchical" value="' . $taxonomy . '" />';
|
112 |
+
}
|
113 |
+
echo '</ul>';
|
114 |
+
echo '</div>';
|
115 |
+
if ( isset( $taxonomy ) ) {
|
116 |
+
echo '<p class="post-expirator-taxonomy-name">' . __( 'Taxonomy Name', 'post-expirator' ) . ': ' . $taxonomy . '</p>';
|
117 |
+
}
|
118 |
+
echo '</div>';
|
119 |
+
}
|
120 |
+
?>
|
121 |
+
</div>
|
122 |
+
|
123 |
+
<input type="hidden" name="expirationdate_formcheck" value="true" />
|
124 |
+
<?php wp_nonce_field( '__postexpirator', '_postexpiratornonce' ); ?>
|
views/how-to-expire.php
CHANGED
@@ -9,12 +9,6 @@ if ( ! isset( $name ) ) {
|
|
9 |
if ( ! isset( $id ) ) {
|
10 |
$id = $name;
|
11 |
}
|
12 |
-
if ( ! isset( $disabled ) ) {
|
13 |
-
$disabled = false;
|
14 |
-
}
|
15 |
-
if ( ! isset( $onchange ) ) {
|
16 |
-
$onchange = '';
|
17 |
-
}
|
18 |
if ( ! isset( $type ) ) {
|
19 |
$type = '';
|
20 |
}
|
@@ -24,19 +18,18 @@ if ( empty( $type ) && isset( $opts['post_type'] ) ) {
|
|
24 |
$type = $opts['post_type'];
|
25 |
}
|
26 |
|
27 |
-
$rv = array();
|
28 |
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
9 |
if ( ! isset( $id ) ) {
|
10 |
$id = $name;
|
11 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
if ( ! isset( $type ) ) {
|
13 |
$type = '';
|
14 |
}
|
18 |
$type = $opts['post_type'];
|
19 |
}
|
20 |
|
|
|
21 |
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
22 |
+
?>
|
23 |
+
<select name="<?php echo $name; ?>" id="<?php echo $id; ?>" class="pe-howtoexpire">
|
24 |
+
<option value="draft" <?php echo $selected === 'draft' ? 'selected="selected"' : ''; ?>><?php _e( 'Draft', 'post-expirator' ); ?></option>
|
25 |
+
<option value="delete" <?php echo $selected === 'delete' ? 'selected="selected"' : ''; ?>><?php _e( 'Delete', 'post-expirator' ); ?></option>
|
26 |
+
<option value="trash" <?php echo $selected === 'trash' ? 'selected="selected"' : ''; ?>><?php _e( 'Trash', 'post-expirator' ); ?></option>
|
27 |
+
<option value="private" <?php echo $selected === 'private' ? 'selected="selected"' : ''; ?>><?php _e( 'Private', 'post-expirator' ); ?></option>
|
28 |
+
<option value="stick" <?php echo $selected === 'stick' ? 'selected="selected"' : ''; ?>><?php _e( 'Stick', 'post-expirator' ); ?></option>
|
29 |
+
<option value="unstick" <?php echo $selected === 'unstick' ? 'selected="selected"' : ''; ?>><?php _e( 'Unstick', 'post-expirator' ); ?></option>
|
30 |
+
<?php if ( $type !== 'page' ) { ?>
|
31 |
+
<option value="category" <?php echo $selected === 'category' ? 'selected="selected"' : ''; ?>><?php _e( 'Category: Replace', 'post-expirator' ); ?></option>
|
32 |
+
<option value="category-add" <?php echo $selected === 'category-add' ? 'selected="selected"' : ''; ?>><?php _e( 'Category: Add', 'post-expirator' ); ?></option>
|
33 |
+
<option value="category-remove" <?php echo $selected === 'category-remove' ? 'selected="selected"' : ''; ?>><?php _e( 'Category: Remove', 'post-expirator' ); ?></option>
|
34 |
+
<?php } ?>
|
35 |
+
</select>
|
views/quick-edit.php
CHANGED
@@ -48,7 +48,7 @@
|
|
48 |
</legend>
|
49 |
<?php
|
50 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post_type ) );
|
51 |
-
_postexpirator_expire_type( array( 'name' => 'expirationdate_expiretype', 'selected' => $defaults['expireType'], 'post_type' => $post_type ) );
|
52 |
?>
|
53 |
</div>
|
54 |
<div class="pe-category-list">
|
48 |
</legend>
|
49 |
<?php
|
50 |
$defaults = get_option( 'expirationdateDefaults' . ucfirst( $post_type ) );
|
51 |
+
_postexpirator_expire_type( array( 'name' => 'expirationdate_expiretype', 'selected' => empty( $defaults ) ? 'draft' : $defaults['expireType'], 'post_type' => $post_type ) );
|
52 |
?>
|
53 |
</div>
|
54 |
<div class="pe-category-list">
|