diff --git a/dist/js/gutenberg.js b/dist/js/gutenberg.js index ff6325909d9bae814ad5a9247bdde9e7a6ec704f..538d84802de8aac982c4f024d4b4847e34750746 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 3ca4d905d81b9fa729c757ce2432355b28d93690..224d7eab67b8f65dcbaa1a52aefc511b5ecfaa26 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 0000000000000000000000000000000000000000..4dead06726e5e952a08d107576dbc205c26b68ed --- /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 b3210807d1938598a4f4012e7efd0dc436a61b54..95e1cb4362c732083061e2fffd4eaac1831c22b8 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 cd118ff8d807bca37387a989fabf990916ec7666..94ad9bc306cad42c9fd027f717b4ec978a842e16 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 3355c937cec3de925706a838aaafdfe1e675c1cf..f6136ff9f8f5dbf41a6286a583a6d8849aeb959b 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 660f89829f2765999fbab0785453a35b94d5fab6..95e1a2b8efee2a0609b5e99abcec9cd5d64ca958 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', } } );