From 0cccd0698568284dc0991a4a4826716693ef670f Mon Sep 17 00:00:00 2001 From: Erick Hitter <git-contrib@ethitter.com> Date: Sat, 27 Mar 2021 17:25:07 -0700 Subject: [PATCH] Prepare meta for Gutenberg management --- dist/js/gutenberg.js | 9 +-- inc/class-wp-revisions-control.php | 42 ++++++++++ languages/wp-revisions-control-gutenberg.pot | 8 ++ package-lock.json | 83 ++++++++++++++++++-- package.json | 3 +- src/js/gutenberg.js | 4 +- webpack.mix.js | 13 ++- 7 files changed, 143 insertions(+), 19 deletions(-) create mode 100644 languages/wp-revisions-control-gutenberg.pot diff --git a/dist/js/gutenberg.js b/dist/js/gutenberg.js index ff63259..538d848 100644 --- a/dist/js/gutenberg.js +++ b/dist/js/gutenberg.js @@ -1,8 +1 @@ -/******/ (function() { // webpackBootstrap -var __webpack_exports__ = {}; -/*!*****************************!*\ - !*** ./src/js/gutenberg.js ***! - \*****************************/ -console.log('Hello, world'); -/******/ })() -; \ No newline at end of file +!function(){var o,r={194:function(o){"use strict";o.exports=wp.i18n}},t={};function n(o){var e=t[o];if(void 0!==e)return e.exports;var s=t[o]={exports:{}};return r[o](s,s.exports,n),s.exports}o=n(194).__,console.log(o("Hello, world","wp_revisions_control"))}(); \ No newline at end of file diff --git a/inc/class-wp-revisions-control.php b/inc/class-wp-revisions-control.php index 3ca4d90..224d7ea 100644 --- a/inc/class-wp-revisions-control.php +++ b/inc/class-wp-revisions-control.php @@ -114,11 +114,36 @@ class WP_Revisions_Control { * Register actions and filters. */ public function action_init() { + add_action( 'rest_api_init', array( $this, 'action_rest_api_init' ) ); add_action( 'admin_init', array( $this, 'action_admin_init' ) ); + add_action( 'enqueue_block_editor_assets', array( $this, 'action_enqueue_block_editor_assets' ) ); add_filter( 'wp_revisions_to_keep', array( $this, 'filter_wp_revisions_to_keep' ), $this->plugin_priority(), 2 ); } + /** + * Register meta for Gutenberg UI. + */ + public function action_rest_api_init() { + foreach ( array_keys( $this->get_post_types() ) as $post_type ) { + register_meta( + 'post', + $this->meta_key_limit, + array( + 'object_subtype' => $post_type, + 'type' => 'integer', + 'default' => -1, + 'single' => true, + 'show_in_rest' => true, + 'description' => __( + 'Number of revisions to retain.', + 'wp_revisions_control' + ), + ) + ); + } + } + /** * Register plugin's admin-specific elements. * @@ -145,6 +170,23 @@ class WP_Revisions_Control { WP_Revisions_Control_Bulk_Actions::get_instance( $post_types ); } + /** + * Register Gutenberg script. + */ + public function action_enqueue_block_editor_assets() { + wp_enqueue_script( + $this->settings_section, + plugins_url( + 'dist/js/gutenberg.js', + dirname( __FILE__ ) + ), + array( + 'wp-i18n', + ), + 1 + ); + } + /** * PLUGIN SETTINGS SECTION * FOUND UNDER SETTINGS > WRITING diff --git a/languages/wp-revisions-control-gutenberg.pot b/languages/wp-revisions-control-gutenberg.pot new file mode 100644 index 0000000..4dead06 --- /dev/null +++ b/languages/wp-revisions-control-gutenberg.pot @@ -0,0 +1,8 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=utf-8\n" +"X-Generator: babel-plugin-makepot\n" + +#: src/js/gutenberg.js:3 +msgid "Hello, world" +msgstr "" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b321080..95e1cb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "version": "0.1.0", "devDependencies": { "@babel/preset-react": "^7.13.13", + "@wordpress/babel-plugin-makepot": "^4.1.0", "grunt": "~0.4.5", "grunt-wp-i18n": "~0.5.0", "grunt-wp-readme-to-markdown": "~1.0.0", @@ -2334,6 +2335,38 @@ } } }, + "node_modules/@wordpress/babel-plugin-makepot": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-makepot/-/babel-plugin-makepot-4.1.0.tgz", + "integrity": "sha512-d4ywDLrPMNS9ECh+G3coDGhuqjemDo27Fck94wXRY3L80TbGF8DaLU2/2Vz3s3EcwlrRiJWRKskxPiYIpsiH9Q==", + "dev": true, + "dependencies": { + "gettext-parser": "^1.3.1", + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@wordpress/babel-plugin-makepot/node_modules/gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "dev": true, + "dependencies": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/@wordpress/babel-plugin-makepot/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -17755,7 +17788,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.2.tgz", "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.2.3", @@ -17770,7 +17804,36 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.1.tgz", "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", - "dev": true + "dev": true, + "requires": {} + }, + "@wordpress/babel-plugin-makepot": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-makepot/-/babel-plugin-makepot-4.1.0.tgz", + "integrity": "sha512-d4ywDLrPMNS9ECh+G3coDGhuqjemDo27Fck94wXRY3L80TbGF8DaLU2/2Vz3s3EcwlrRiJWRKskxPiYIpsiH9Q==", + "dev": true, + "requires": { + "gettext-parser": "^1.3.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "gettext-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", + "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "safe-buffer": "^5.1.1" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } }, "@xtuc/ieee754": { "version": "1.2.0", @@ -17832,7 +17895,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -21126,7 +21190,6 @@ "requires": { "async": "~0.9.0", "gettext-parser": "~1.1.0", - "grunt": "~0.4.5", "underscore": "~1.8.2", "underscore.string": "~3.0.3" }, @@ -21149,7 +21212,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-wp-readme-to-markdown/-/grunt-wp-readme-to-markdown-1.0.0.tgz", "integrity": "sha1-dJ/9gDtYTVC9ZOc6ehqRhz6djPs=", - "dev": true + "dev": true, + "requires": {} }, "handle-thing": { "version": "2.0.1", @@ -21546,7 +21610,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -24729,7 +24794,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -28379,7 +28445,8 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "dev": true + "dev": true, + "requires": {} }, "xtend": { "version": "4.0.2", diff --git a/package.json b/package.json index cd118ff..94ad9bc 100755 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "author": "Erick Hitter", "devDependencies": { "@babel/preset-react": "^7.13.13", + "@wordpress/babel-plugin-makepot": "^4.1.0", "grunt": "~0.4.5", "grunt-wp-i18n": "~0.5.0", "grunt-wp-readme-to-markdown": "~1.0.0", @@ -14,6 +15,6 @@ "scripts": { "dev": "NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --config=node_modules/laravel-mix/setup/webpack.config.js", - "production": "NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js" + "prod": "NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js" } } diff --git a/src/js/gutenberg.js b/src/js/gutenberg.js index 3355c93..f6136ff 100644 --- a/src/js/gutenberg.js +++ b/src/js/gutenberg.js @@ -1 +1,3 @@ -console.log( 'Hello, world' ); +const { __ } = require( '@wordpress/i18n' ); + +console.log( __( 'Hello, world', 'wp_revisions_control' ) ); diff --git a/webpack.mix.js b/webpack.mix.js index 660f898..95e1a2b 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -3,9 +3,20 @@ const mix = require( 'laravel-mix' ); mix.autoload( {} ) .js( 'src/js/gutenberg.js', 'dist/js/gutenberg.js' ) .react() + .babelConfig( { + 'plugins': [ + [ + '@wordpress/babel-plugin-makepot', + { + 'output': 'languages/wp-revisions-control-gutenberg.pot', + }, + ], + ], + } ) .webpackConfig( { externals: { + '@wordpress/i18n': 'wp.i18n', 'react': 'React', - 'react-dom': 'ReactDOM' + 'react-dom': 'ReactDOM', } } ); -- GitLab