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 / pr-content / mediaUpload.js
vk-blocks / src / blocks / pr-content Last commit date
deprecated 2 months ago block.json 1 month ago edit.js 2 months ago icon.svg 2 months ago index.js 2 months ago index.php 2 months ago mediaUpload.js 2 months ago save.js 2 weeks ago style.scss 2 months ago utils.js 2 months ago
mediaUpload.js
147 lines
1 import { __ } from '@wordpress/i18n';
2 import { Button } from '@wordpress/components';
3 import { fixBrokenUnicode } from '@vkblocks/utils/fixBrokenUnicode';
4 import { MediaUpload } from '@wordpress/block-editor';
5
6 // 過去に保存された画像か確認
7 export const isDeprecatedImage = (image) => {
8 return image && image.indexOf('{') === -1;
9 };
10
11 // 画像の枠線設定を取得
12 export const getImageBorder = (ImageBorderColor) => {
13 let imageBorderSettings = 'none';
14 //borderColorが指定されなかった場合はボーダーを非表示に
15 if (ImageBorderColor) {
16 imageBorderSettings = `1px solid ${ImageBorderColor}`;
17 }
18 return imageBorderSettings;
19 };
20
21 export const PrContentMediaUploadEdit = ({
22 ImageBorderColor,
23 setAttributes,
24 Image,
25 }) => {
26 /* eslint no-unused-vars: 0 */
27 const imageBorderSettings = getImageBorder(ImageBorderColor);
28 const prContentDatas = {};
29
30 //画像のURL保存
31 const setImageURL = (value) =>
32 setAttributes({ Image: value.sizes.full.url });
33
34 //画像のJSONオブジェクト保存
35 const setImageJSON = (value) => {
36 if (value) {
37 // JSONデータから抜き出し
38 const imageData = {
39 alt: value.alt,
40 sizes: {
41 full: {
42 url: value.sizes.full.url,
43 },
44 },
45 };
46
47 setAttributes({ Image: JSON.stringify(imageData) });
48 }
49 };
50 const getImagePlaceHolderDeprecated = (image, borderSettings) => {
51 if (!image) {
52 return __('Select image', 'vk-blocks');
53 }
54 return (
55 <img
56 className={'vk_prContent_colImg_image'}
57 src={image}
58 alt={__('Upload image', 'vk-blocks')}
59 style={{ border: borderSettings }}
60 />
61 );
62 };
63
64 const getImagePlaceHolder = (image, borderSettings) => {
65 image = JSON.parse(fixBrokenUnicode(image));
66
67 if (image === null || typeof image.sizes === 'undefined') {
68 return __('Select image', 'vk-blocks');
69 }
70 return (
71 <img
72 className={'vk_prContent_colImg_image'}
73 src={image.sizes.full.url}
74 alt={image.alt}
75 style={{ border: borderSettings }}
76 />
77 );
78 };
79
80 //バージョンによって画像の保存方式変更
81 if (isDeprecatedImage(Image)) {
82 prContentDatas.setImage = setImageURL;
83 prContentDatas.value = Image;
84 prContentDatas.alt = __('Upload image', 'vk-blocks');
85 prContentDatas.getImagePlaceHolder = getImagePlaceHolderDeprecated;
86 } else {
87 prContentDatas.setImage = setImageJSON;
88 prContentDatas.value = JSON.parse(fixBrokenUnicode(Image));
89 prContentDatas.alt = prContentDatas.value.alt;
90 prContentDatas.getImagePlaceHolder = getImagePlaceHolder;
91 }
92
93 const isImageUpload =
94 Image !== null && Image !== undefined && Image !== '' && Image !== '{}';
95
96 return (
97 <MediaUpload
98 onSelect={prContentDatas.setImage}
99 type="image"
100 value={prContentDatas.value}
101 render={({ open }) => (
102 <Button
103 onClick={open}
104 className={
105 isImageUpload ? 'image-button' : 'button button-large'
106 }
107 >
108 {prContentDatas.getImagePlaceHolder(
109 Image,
110 imageBorderSettings
111 )}
112 </Button>
113 )}
114 />
115 );
116 };
117
118 export const PrContentMediaUpload = ({ Image, ImageBorderColor }) => {
119 if (!Image) {
120 return __('Select Image', 'vk-blocks');
121 }
122
123 const imageBorderSettings = getImageBorder(ImageBorderColor);
124
125 if (Image && Image.indexOf('{') === -1) {
126 return (
127 <img
128 className={'vk_prContent_colImg_image'}
129 src={Image}
130 alt={__('Upload image', 'vk-blocks')}
131 style={{ border: imageBorderSettings }}
132 />
133 );
134 }
135 const imageParse = JSON.parse(fixBrokenUnicode(Image));
136 if (imageParse && typeof imageParse.sizes !== 'undefined') {
137 return (
138 <img
139 className={'vk_prContent_colImg_image'}
140 src={imageParse.sizes.full.url}
141 alt={imageParse.alt}
142 style={{ border: imageBorderSettings }}
143 />
144 );
145 }
146 };
147