PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / blocks / page-content / edit.js
vk-blocks / src / blocks / page-content Last commit date
block.json 1 month ago class-vk-blocks-check-using-vk-page-content-block.php 2 months ago edit.js 2 months ago icon.svg 2 months ago index.js 2 months ago index.php 2 months ago
edit.js
118 lines
1 import { __ } from '@wordpress/i18n';
2 import { PanelBody, BaseControl, SelectControl } from '@wordpress/components';
3 import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
4 import ServerSideRender from '@wordpress/server-side-render';
5 import { useSelect } from '@wordpress/data';
6
7 // usePosts は本ブロック専用のためローカル定義
8 const usePosts = (postType, query) => {
9 return useSelect(
10 (select) => {
11 return (
12 select('core').getEntityRecords(
13 'postType',
14 postType.slug,
15 query
16 ) || []
17 );
18 },
19 [postType, query]
20 );
21 };
22
23 const getPageLabel = (page) => {
24 let label = page.title.rendered;
25 if (page.status === 'private') {
26 label += ` (${__('Private', 'vk-blocks')})`;
27 }
28 if (page.password) {
29 label += ` (${__('Password Protected', 'vk-blocks')})`;
30 }
31 return label;
32 };
33
34 const getPagesSelect = (pages, currentTargetPost) => {
35 const defaultSelect = [
36 {
37 label: __('Unspecified', 'vk-blocks'),
38 value: -1,
39 },
40 ];
41
42 // 選択リストから非�
43 �開・パスワード保護のページを除外する(現在選択中のページは除く)
44 const availablePages = pages.filter(
45 (page) =>
46 (page.status === 'publish' && !page.password) ||
47 page.id === currentTargetPost
48 );
49
50 // 利用可能なページから選択オプションを作成する
51 const pagesSelect = availablePages.map((page) => ({
52 label:
53 page.status === 'private' || page.password
54 ? getPageLabel(page)
55 : page.title.rendered,
56 value: page.id,
57 }));
58
59 return defaultSelect.concat(pagesSelect);
60 };
61
62 export default function PageContentEdit({ attributes, setAttributes }) {
63 const { TargetPost } = attributes;
64
65 const pages = usePosts(
66 { slug: 'page' },
67 { per_page: -1, status: 'private,publish' }
68 );
69
70 const pagesSelect = getPagesSelect(pages, TargetPost);
71
72 let editContent;
73 if (TargetPost === -1) {
74 editContent = (
75 <div className="alert alert-warning text-center">
76 {__(
77 'Because no post is selected, The block Will not render',
78 'vk-blocks'
79 )}
80 </div>
81 );
82 } else {
83 editContent = (
84 <ServerSideRender
85 block="vk-blocks/page-content"
86 attributes={attributes}
87 />
88 );
89 }
90
91 const blockProps = useBlockProps();
92
93 return (
94 <>
95 <InspectorControls>
96 <PanelBody
97 title={__('Page Setting', 'vk-blocks')}
98 initialOpen={true}
99 >
100 <BaseControl id={'vb-call-01'}>
101 <SelectControl
102 label={__('Select Page', 'vk-blocks')}
103 value={TargetPost}
104 options={pagesSelect}
105 onChange={(value) =>
106 setAttributes({
107 TargetPost: parseInt(value, 10),
108 })
109 }
110 />
111 </BaseControl>
112 </PanelBody>
113 </InspectorControls>
114 <div {...blockProps}>{editContent}</div>
115 </>
116 );
117 }
118