PluginProbe
codoc / 0.9.3.2
codoc v0.9.3.2
0.9.8.8 0.9.8.9 0.9.9 0.9.9.1 trunk 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.8.1 0.8.2 0.8.3 0.8.4 0.8.6 0.8.7 0.8.8 0.8.9 0.9 0.9.1 0.9.10 0.9.11 All 114 releases
← All changes | class-codoc.php +133 -440 trunk0.9.3.2 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 require_once(plugin_dir_path( __FILE__ ) .'class-codoc-util.php');
3 3 final class Codoc {
4 +
4 5 public function __construct() {
5 - add_action('plugins_loaded', [$this,'codoc_load_textdomain']);
6 6 if (is_admin()) {
7 7 // setting
8 8 $this->add_settings();
9 9 }
@@ -23,12 +23,8 @@
23 23 if (isset($params_decoded["the_content_filter_priority"])) {
24 24 $priority = $params_decoded["the_content_filter_priority"];
25 25 }
26 26 }
27 - // ショーココードの退避
28 - if (isset($CODOC_SETTINGS['shortcode_evacuation']) and $CODOC_SETTINGS['shortcode_evacuation']) {
29 - add_filter('the_content',[$this,'the_content_shortcode_evacuations'],0);
30 - }
31 27 add_filter('the_content',[$this,'the_content'],$priority);
32 28 // 2021-09-24 the_content を利用しない場合は個別に呼び出ししてもらう
33 29 add_filter('codoc_the_content',[$this,'the_content'],$priority);
34 30
@@ -33,11 +29,8 @@
33 29 add_filter('codoc_the_content',[$this,'the_content'],$priority);
34 30
35 31 // 2020-07-25 excerpt対応
36 32 add_filter('excerpt_allowed_blocks',[$this,'excerpt_allowed_blocks']);
37 -
38 - // テーマが allowed_block_types_all で制限している場合に codoc ブロックを許可リストに追加
39 - add_filter('allowed_block_types_all', [$this,'allowed_block_types_all'], 100, 2);
40 33
41 34 $auth_info = get_option(CODOC_AUTHINFO_OPTION_NAME);
42 35
43 36 if ($auth_info) {
@@ -45,24 +38,26 @@
45 38 add_action( 'save_post', [$this,'save_post'], 20, 3 );
46 39 add_action( 'added_post_meta', [$this,'updated_post_meta'], 10, 3 );
47 40 add_action( 'updated_post_meta',[$this,'updated_post_meta'], 10, 3 );
48 41 add_action( 'deleted_post_meta',[$this,'deleted_post_meta'], 10, 4 );
49 - // 文字数バリデーションエラーの管理画面通知
50 - add_action( 'admin_notices', [$this,'show_validation_notices'] );
51 42 }
52 - global $pagenow;
53 - //管理画面でcodoc認証があり投稿画面の場合
54 - if (is_admin() and $auth_info and preg_match('/^post/',$pagenow)) {
43 + if (is_admin() and $auth_info) { //管理画面
55 44 // Gutenberg のサポートがない場合は何もしない
56 45 if ( function_exists( 'register_block_type' ) ) {
57 - // gutenberg - init.php handles all block registration and script enqueuing
46 + // gutenberg
58 47 require_once 'src/init.php';
48 + add_action('wp_loaded', function() {
49 + wp_localize_script('wordpress-cgb-block-js', 'OPTIONS', array(
50 + 'codoc_url' => $this->get_codoc_url(),
51 + 'codoc_usercode' => get_option(CODOC_USERCODE_OPTION_NAME),
52 + 'codoc_plugin_version' => CODOC_PLUGIN_VERSION,
53 + 'codoc_sdk_path' => CODOC_SDK_PATH,
54 + ));
55 + });
59 56 }
60 57 // tinymce
61 58 $this->add_mce();
62 - } elseif(is_admin() and $auth_info and preg_match('/^edit/',$pagenow)) {
63 - // 記事編集ページ
64 - } elseif(!is_admin()) { // ブログ画面
59 + } else { // ブログ画面
65 60 // codocのJS登録
66 61 add_action( 'wp_enqueue_scripts', function() {
67 62 $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
68 63 $load_script_condition = '';
@@ -87,10 +82,9 @@
87 82 add_shortcode('codoc', [$this, 'injector_shortcode']);
88 83 // テーマをbodyにも反映
89 84 add_filter('body_class', function($classes) {
90 85 $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
91 - // デフォルトを変更
92 - $css_path = 'rainbow-square';
86 + $css_path = 'blue';
93 87 if (isset($CODOC_SETTINGS["css_path"]) and $CODOC_SETTINGS["css_path"]) {
94 88 $css_path = $CODOC_SETTINGS["css_path"];
95 89 }
96 90 array_push($classes,sprintf( "codoc-theme-%s",$css_path));
@@ -99,11 +93,8 @@
99 93
100 94 }
101 95 return $this;
102 96 }
103 - function codoc_load_textdomain() {
104 - load_plugin_textdomain('codoc', false, dirname(plugin_basename( __FILE__ )) . '/languages/');
105 - }
106 97 public function get_codoc_url() {
107 98 $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
108 99 if (isset($CODOC_SETTINGS["debug_params"])) {
109 100 $params_decoded = json_decode($CODOC_SETTINGS["debug_params"],true);
@@ -157,9 +148,9 @@
157 148 public function add_settings() {
158 149 global $CODOC_SETTINGS;
159 150 add_action( 'admin_menu' ,function(){
160 151 add_options_page(
161 - __('codoc Settings','codoc'), //ページタイトル
152 + 'codoc の設定', //ページタイトル
162 153 'codoc', //設定メニューに表示されるメニュータイトル
163 154 'edit_users', //権限
164 155 'codoc', //設定ページのURL。options-general.php?page=codoc
165 156 function() {
@@ -176,59 +167,20 @@
176 167 add_action('admin_print_styles', 'codoc_admin_styles');
177 168 function codoc_admin_styles($hook) {
178 169 wp_enqueue_style('codoc-options-style', plugins_url( 'codoc/css/codoc-options.css', __DIR__ ));
179 170 }
180 -
181 - // notification を削除する Ajax 処理
182 - add_action('wp_ajax_dismiss_codoc_notification', function() {
183 - delete_transient('codoc_api_notification');
184 - wp_die();
185 - });
186 -
187 - // 管理画面で notification の dismiss を処理する JavaScript
188 - add_action('admin_footer', function() {
189 - ?>
190 - <script type="text/javascript">
191 - jQuery(document).ready(function($) {
192 - // codoc notification の×ボタンがクリックされたときの処理
193 - $(document).on('click', '.codoc-notification .notice-dismiss', function() {
194 - $.post(ajaxurl, {
195 - action: 'dismiss_codoc_notification'
196 - });
197 - });
198 - });
199 - </script>
200 - <?php
201 - });
202 -
203 171 add_action( "admin_init", function() {
204 - global $CODOC_USERCODE;
205 - global $CODOC_SETTINGS;
206 - global $CODOC_TOKEN;
207 - global $CODOC_AUTHINFO;
208 172 // codocからの認証データ処理
209 - if (current_user_can('edit_posts') && !isset($_GET['confirm_token']) and isset($_GET['page']) and $_GET['page'] == 'codoc' and isset($_GET['fetch_token_key'])) {
210 - $current_url = admin_url('options-general.php') . '?page=codoc';
173 + if (isset($_GET['page']) and $_GET['page'] == 'codoc' and isset($_GET['fetch_token_key'])) {
211 174 $key = sanitize_text_field($_GET['fetch_token_key']);
212 175 $usercode = sanitize_text_field($_GET['usercode']);
213 -
214 - // 確認画面の表示
215 - if (
216 - !isset($_GET['_wpnonce']) or
217 - (isset($_GET['_wpnonce']) and !wp_verify_nonce($_GET['_wpnonce'],'fetch_token_nonce'))
218 - ) {
219 - wp_redirect($current_url .
220 - sprintf("&confirm_token=1&fetch_token_key=%s&usercode=%s",$key,$usercode));
221 - exit;
222 - }
223 176 update_option(CODOC_USERCODE_OPTION_NAME,$usercode);
224 177 //$data = $this->callAPI('GET','/token',[ "fetch_token_key" => $key ]);
225 178 $data = $this->util->get_token([ "fetch_token_key" => $key ],["usercode" => $usercode, "token" => "1"]);
226 - if ($data->status and property_exists($data,'token') and $token = $data->token) {
179 + if ($data->status and $token = $data->token) {
227 180 update_option(CODOC_TOKEN_OPTION_NAME,$token);
228 181 //$data = $this->callAPI('GET','');
229 182 $data = $this->util->get_user_info([],["usercode" => $usercode, "token" => $token]);
230 -
231 183 if ($data->status and $user = $data->user) {
232 184 $this->update_codoc_authinfo($user);
233 185 }
234 186 #$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
@@ -233,14 +185,18 @@
233 185 }
234 186 #$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
235 187 #$current_url = preg_replace('/(.*)fetch_token_key.*/','${1}&codoc_auth_finished=1',$current_url);
236 188 //add_settings_error( 'general', 'settings_updated', __( 'OK' ), 'success' );
189 + $current_url = admin_url('options-general.php') . '?page=codoc&codoc_auth_finished=1';
237 190
238 - $current_url = $current_url . '&codoc_auth_finished=1';
239 191 wp_redirect( $current_url);
240 192 exit;
241 193 }
242 194 }
195 + global $CODOC_USERCODE;
196 + global $CODOC_SETTINGS;
197 + global $CODOC_TOKEN;
198 + global $CODOC_AUTHINFO;
243 199 $CODOC_USERCODE = get_option(CODOC_USERCODE_OPTION_NAME);
244 200 $CODOC_SETTINGS = get_option(CODOC_SETTINGS_OPTION_NAME);
245 201 $CODOC_TOKEN = get_option(CODOC_TOKEN_OPTION_NAME);
246 202 $CODOC_AUTHINFO = get_option(CODOC_AUTHINFO_OPTION_NAME);
@@ -278,11 +234,8 @@
278 234 }
279 235 if (!isset($CODOC_SETTINGS['do_not_filter_the_content'])) {
280 236 $CODOC_SETTINGS['do_not_filter_the_content'] = '0';
281 237 }
282 - if (!isset($CODOC_SETTINGS['shortcode_evacuation'])) {
283 - $CODOC_SETTINGS['shortcode_evacuation'] = '0';
284 - }
285 238
286 239 if (!isset($CODOC_SETTINGS['entry_button_text'])) {
287 240 $CODOC_SETTINGS['entry_button_text'] = '';
288 241 }
@@ -306,14 +259,9 @@
306 259 }
307 260 if (!isset($CODOC_SETTINGS['show_powered_by'])) {
308 261 $CODOC_SETTINGS['show_powered_by'] = '1';
309 262 }
310 - if (!isset($CODOC_SETTINGS['show_created_by'])) {
311 - $CODOC_SETTINGS['show_created_by'] = '1';
312 - }
313 - if (!isset($CODOC_SETTINGS['show_copyright'])) {
314 - $CODOC_SETTINGS['show_copyright'] = '1';
315 - }
263 +
316 264 if (!isset($CODOC_SETTINGS['codoc_tag_attributes'])) {
317 265 $CODOC_SETTINGS['codoc_tag_attributes'] = '';
318 266 }
319 267 if (!isset($CODOC_SETTINGS['codoc_script_tag_attributes'])) {
@@ -327,18 +275,14 @@
327 275 }
328 276 if (!isset($CODOC_SETTINGS['debug_params'])) {
329 277 $CODOC_SETTINGS['debug_params'] = '';
330 278 }
331 - if (!isset($CODOC_SETTINGS['block_defaults'])) {
332 - $CODOC_SETTINGS['block_defaults'] = '';
333 - }
334 279 add_settings_section(
335 280 'setting_section_id', // id
336 - __('codoc Settings','codoc'), // title
337 - [$this,'show_tadv_notice'],
281 + 'codoc 設定ページ', // title
282 + function (){}, // callback
338 283 'codoc' // page
339 284 );
340 -
341 285 // 認証がある場合
342 286 if ($CODOC_AUTHINFO) {
343 287 // クリエイター情報だけ更新 (POST時に同期をとる)
344 288 if (isset($_GET['page']) and $_GET['page'] == 'codoc' and isset($_GET['settings-updated'])) {
@@ -347,38 +291,26 @@
347 291 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
348 292 ]);
349 293 if ($data->status and $user = $data->user) {
350 294 $this->update_codoc_authinfo($user);
351 - // 一度get_optionしてるのでリロードする
352 - $CODOC_AUTHINFO = get_option(CODOC_AUTHINFO_OPTION_NAME);
353 295 }
354 296 }
355 297
356 298 register_setting(
357 299 'codoc_option_group', // option group
358 - CODOC_SETTINGS_OPTION_NAME, // option name(DB)
359 - array('sanitize_callback' => function($input) {
360 - if (isset($input['block_defaults']) && $input['block_defaults'] !== '') {
361 - if (json_decode($input['block_defaults'], true) === null && $input['block_defaults'] !== 'null') {
362 - $old = get_option(CODOC_SETTINGS_OPTION_NAME);
363 - $input['block_defaults'] = isset($old['block_defaults']) ? $old['block_defaults'] : '';
364 - add_settings_error('block_defaults', 'invalid_json', esc_html(__('Block Default Values: Invalid JSON format. The value was not saved.','codoc')), 'error');
365 - }
366 - }
367 - return $input;
368 - })
300 + CODOC_SETTINGS_OPTION_NAME // option name(DB)
369 301 );
370 302 add_settings_field(
371 303 'css_path', // id
372 - __('Theme','codoc'), // title
304 + 'テーマ', // title
373 305 function() {
374 306 global $CODOC_SETTINGS;
375 - echo '<div class="excerpt">' . esc_html(__('You can change the design of the paywall by specifying a theme.<br />You can also specify CSS directly by selecting "Path Specification"','codoc')) . '</div>';
376 - echo sprintf('<div class="inputGroup"><input type="text" name="%s[css_path]" value="%s" id="codoc_css_path" readonly>',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['css_path']));
307 + echo '<div class="excerpt">テーマを指定してペイウォールのデザインを変えることができます。<br>パスを指定を選択することでCSSを直接指定するこもと可能です。</div>';
308 + echo sprintf('<div class="inputGroup"><input type="text" name="%s[css_path]" value="%s" id="codoc_css_path" readonly>',CODOC_SETTINGS_OPTION_NAME,$CODOC_SETTINGS['css_path']);
377 309 echo '' .
378 310 '<script type="text/javascript"> ' .
379 311 ' function gen_css_path(select) { ' .
380 - ' if (select.value == "dark" || select.value == "dark-square") { ' .
312 + ' if (select.value == "dark") { ' .
381 313 ' document.getElementById("darkmode-caution").style.display="block";' .
382 314 ' } else { ' .
383 315 ' if (document.getElementById("darkmode-caution")) { ' .
384 316 ' document.getElementById("darkmode-caution").style.display="none";' .
@@ -396,50 +328,44 @@
396 328 ' } ' .
397 329 '</script> ' ;
398 330
399 331 echo sprintf('<select name="theme_name" onChange="gen_css_path(this)" id="codoc_theme_select">');
400 - foreach (["rainbow","blue","red","green","black","dark","rainbow-square","blue-square","red-square","green-square","black-square","dark-square"] as $theme) {
401 - if ($theme == "rainbow") {
402 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "rainbow" ? "selected" : ""),esc_attr(__('Rainbow colors','codoc')));
403 - }
332 + foreach (["blue","red","green","black","dark","blue-square","red-square","green-square","black-square","dark-square"] as $theme) {
404 333 if ($theme == "blue") {
405 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "blue" ? "selected" : ""),esc_attr(__('Blue','codoc')));
334 + echo sprintf('<option value="%s" %s>青</option>', $theme, ($CODOC_SETTINGS["css_path"] == "blue" ? "selected" : ""));
406 335 }
407 336 if ($theme == "red") {
408 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "red" ? "selected" : ""),esc_attr(__('Red','codoc')));
337 + echo sprintf('<option value="%s" %s>赤</option>', $theme, ($CODOC_SETTINGS["css_path"] == "red" ? "selected" : ""));
409 338 }
410 339 if ($theme == "green") {
411 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "green" ? "selected" : ""),esc_attr(__('Green','codoc')));
340 + echo sprintf('<option value="%s" %s>緑</option>', $theme, ($CODOC_SETTINGS["css_path"] == "green" ? "selected" : ""));
412 341 }
413 342 if ($theme == "black") {
414 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "black" ? "selected" : ""),esc_attr(__('Black','codoc')));
343 + echo sprintf('<option value="%s" %s>黒</option>', $theme, ($CODOC_SETTINGS["css_path"] == "black" ? "selected" : ""));
415 344 }
416 345 if ($theme == "dark") {
417 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "dark" ? "selected" : ""),esc_attr(__('Dark mode','codoc')));
346 + echo sprintf('<option value="%s" %s>ダークモード</option>', $theme, ($CODOC_SETTINGS["css_path"] == "dark" ? "selected" : ""));
418 347 }
419 - if ($theme == "rainbow-square") {
420 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "rainbow-square" ? "selected" : ""),esc_attr(__("Rainbow Colors / Square design",'codoc')));
421 - }
422 348 if ($theme == "blue-square") {
423 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "blue-square" ? "selected" : ""),esc_attr(__('Blue / Square design','codoc')));
349 + echo sprintf('<option value="%s" %s>青(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "blue-square" ? "selected" : ""));
424 350 }
425 351 if ($theme == "red-square") {
426 - echo sprintf('<option value="%s" %s>%s/option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "red-square" ? "selected" : ""),esc_attr(__('Red / Square design','codoc')));
352 + echo sprintf('<option value="%s" %s>赤(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "red-square" ? "selected" : ""));
427 353 }
428 354 if ($theme == "green-square") {
429 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "green-square" ? "selected" : ""),esc_attr(__('Green / Square design','codoc')));
355 + echo sprintf('<option value="%s" %s>緑(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "green-square" ? "selected" : ""));
430 356 }
431 357 if ($theme == "black-square") {
432 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "black-square" ? "selected" : ""),esc_attr(__('Black / Square design','codoc')));
358 + echo sprintf('<option value="%s" %s>黒(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "black-square" ? "selected" : ""));
433 359 }
434 360 if ($theme == "dark-square") {
435 - echo sprintf('<option value="%s" %s>%s</option>', esc_attr($theme), esc_attr($CODOC_SETTINGS["css_path"] == "dark-square" ? "selected" : ""),esc_attr(__('Dark mode / Square design','codoc')));
361 + echo sprintf('<option value="%s" %s>ダークモード(四角)</option>', $theme, ($CODOC_SETTINGS["css_path"] == "dark-square" ? "selected" : ""));
436 362 }
437 363 }
438 - echo sprintf('<option value="path" %s>%s</option>', esc_attr(preg_match("/\//",$CODOC_SETTINGS["css_path"]) ? "selected" : ""),esc_attr(__('Path Specification','codoc')));
364 + echo sprintf('<option value="path" %s>パス指定</option>', (preg_match("/\//",$CODOC_SETTINGS["css_path"]) ? "selected" : ""));
439 365 echo '<script type="text/javascript">gen_css_path(document.getElementById(\'codoc_theme_select\'))</script>';
440 366 echo sprintf('</select></div>');
441 - echo '<p id="darkmode-caution" style="display:none">' . esc_attr(__('Please note that the theme for dark mode has white text color, and depending on the background color, the text may not be visible.','codoc')). '</p>';
367 + echo '<p id="darkmode-caution" style="display:none">ダークモード向けテーマは文字色が白となり、背景色によっては文字が見えない状態となるためご注意ください。</p>';
442 368 },
443 369 'codoc', //page
444 370 'setting_section_id' //Section
445 371 );
@@ -444,49 +370,46 @@
444 370 'setting_section_id' //Section
445 371 );
446 372 add_settings_field(
447 373 'paywall_text', // id
448 - __('Texts in paywall','codoc'), // title
374 + '各種文言', // title
449 375 function() {
450 376 global $CODOC_SETTINGS;
451 - global $CODOC_AUTHINFO;
452 - echo '<div class="excerpt">' . esc_html(__('You can change, show and hide texts in your paywall.','codoc')) . '</div>';
377 + echo '<div class="excerpt">ペイウォール内の一部文言を変更できます。</div>';
453 378 echo '<table class="innerTable"><tbody>';
454 - echo '<tr><th>' . esc_html(__('Display of likes','codoc')) . '</th><td>';
455 - echo sprintf('<input type="radio" value="1" name="%s[show_like]" id="show_like_on" %s><label for="show_like_on">' . esc_html(__('Enable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_like'] == '1' ? "checked" : ""));
456 - echo sprintf('<input type="radio" value="0" name="%s[show_like]" id="show_like_off" %s><label for="show_like_off">' . esc_html(__('Disable','codoc')) . '</label> <br / >',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_like'] == '0' ? "checked" : ""));
379 + echo '<tr><th>いいねの表示</th><td>';
380 + echo sprintf('<input type="radio" value="1" name="%s[show_like]" id="show_like_on" %s><label for="show_like_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_like'] == '1' ? "checked" : ""));
381 + echo sprintf('<input type="radio" value="0" name="%s[show_like]" id="show_like_off" %s><label for="show_like_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_like'] == '0' ? "checked" : ""));
457 382 echo '</td></tr>';
458 383
459 - echo '<tr><th>' . esc_html(__('Display of PoweredBy','codoc')) . '</th><td>';
460 - echo sprintf('<input type="hidden" value="1" name="%s[show_about_codoc]">',esc_attr(CODOC_SETTINGS_OPTION_NAME));
461 - echo sprintf('<input type="hidden" value="1" name="%s[show_created_by]">',esc_attr(CODOC_SETTINGS_OPTION_NAME));
462 - echo sprintf('<input type="hidden" value="1" name="%s[show_powered_by]">',esc_attr(CODOC_SETTINGS_OPTION_NAME));
463 - if (isset($CODOC_AUTHINFO['account_is_pro']) and $CODOC_AUTHINFO['account_is_pro']) {
464 - echo sprintf('<input type="radio" value="1" name="%s[show_copyright]" id="show_copyright_on" %s><label for="show_copyright_on">' . esc_html(__('Enable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_copyright'] == '1' ? "checked" : ""));
465 - echo sprintf('<input type="radio" value="0" name="%s[show_copyright]" id="show_copyright_off" %s><label for="show_copyright_off">' . esc_html(__('Disable','codoc')) . '</label> <br / >',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_copyright'] == '0' ? "checked" : ""));
466 - } else {
467 - echo esc_html(__('Only PRO accounts can be disabled.','codoc'));
468 - }
384 + echo '<tr><th>codocについての表示</th><td>';
385 + echo sprintf('<input type="radio" value="1" name="%s[show_about_codoc]" id="show_about_codoc_on" %s><label for="show_about_codoc_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_about_codoc'] == '1' ? "checked" : ""));
386 + echo sprintf('<input type="radio" value="0" name="%s[show_about_codoc]" id="show_about_codoc_off" %s><label for="show_about_codoc_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_about_codoc'] == '0' ? "checked" : ""));
469 387 echo '</td></tr>';
470 388
471 - echo '<tr><th>' . esc_html(__('"Purchase Article" button text','codoc')) . '</th><td>';
472 - echo sprintf('<input type="text" name="%s[entry_button_text]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['entry_button_text']));
389 + echo '<tr><th>PoweredByの表示</th><td>';
390 + echo sprintf('<input type="radio" value="1" name="%s[show_powered_by]" id="show_powered_by_on" %s><label for="show_powered_by_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_powered_by'] == '1' ? "checked" : ""));
391 + echo sprintf('<input type="radio" value="0" name="%s[show_powered_by]" id="show_powered_by_off" %s><label for="show_powered_by_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_powered_by'] == '0' ? "checked" : ""));
473 392 echo '</td></tr>';
474 393
475 - echo '<tr><th>' . esc_html(__('"Purchase Subscription" button text.','codoc')) . '</th><td>';
476 - echo sprintf('<input type="text" name="%s[subscription_button_text]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['subscription_button_text']));
394 + echo '<tr><th>記事購入ボタンのテキスト</th><td>';
395 + echo sprintf('<input type="text" name="%s[entry_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['entry_button_text']));
477 396 echo '</td></tr>';
397 +
398 + echo '<tr><th>サブスクリプション購入ボタンのテキスト</th><td>';
399 + echo sprintf('<input type="text" name="%s[subscription_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['subscription_button_text']));
400 + echo '</td></tr>';
478 401
479 - echo '<tr><th>' . esc_html(__('Support button text','codoc')) . '</th><td>';
480 - echo sprintf('<input type="text" name="%s[support_button_text]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['support_button_text']));
402 + echo '<tr><th>サポートボタンのテキスト</th><td>';
403 + echo sprintf('<input type="text" name="%s[support_button_text]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['support_button_text']));
481 404 echo '</td></tr>';
482 405
483 - echo '<tr><th>' . esc_html(__('Text for "Articles Included in Subscription".','codoc')) . '</th><td>';
484 - echo sprintf('<input type="text" name="%s[subscription_message]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['subscription_message']));
406 + echo '<tr><th>「サブスクリプションに含まれる記事」のテキスト</th><td>';
407 + echo sprintf('<input type="text" name="%s[subscription_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['subscription_message']));
485 408 echo '</td></tr>';
486 409
487 - echo '<tr><th>' . esc_html(__('Text for support description','codoc')) . '</th><td>';
488 - echo sprintf('<input type="text" name="%s[support_message]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['support_message']));
410 + echo '<tr><th>サポート説明のテキスト</th><td>';
411 + echo sprintf('<input type="text" name="%s[support_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['support_message']));
489 412 echo '</td></tr>';
490 413
491 414 echo '</tbody></table>';
492 415 },
@@ -495,13 +418,13 @@
495 418 );
496 419
497 420 add_settings_field(
498 421 'codoc_tag_attributes', // id
499 - __('Attributes for codoc tag','codoc'), // title
422 + 'codocタグの属性', // title
500 423 function() {
501 424 global $CODOC_SETTINGS;
502 - echo '<div class="excerpt">' . esc_html(__('You can add specific attributes to codoc tags.','codoc')) . '</div>';
503 - echo sprintf('<input type="text" name="%s[codoc_tag_attributes]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['codoc_tag_attributes']));
425 + echo '<div class="excerpt">codocタグに特定の属性を追加することができます。</div>';
426 + echo sprintf('<input type="text" name="%s[codoc_tag_attributes]" value="%s">',CODOC_SETTINGS_OPTION_NAME,htmlspecialchars($CODOC_SETTINGS['codoc_tag_attributes']));
504 427 },
505 428 'codoc', //page
506 429 'setting_section_id' //Section
507 430 );
@@ -506,13 +429,13 @@
506 429 'setting_section_id' //Section
507 430 );
508 431 add_settings_field(
509 432 'codoc_script_tag_attributes', // id
510 - __('Attributes for codoc script tag','codoc'), // title
433 + 'codoc scriptタグの属性', // title
511 434 function() {
512 435 global $CODOC_SETTINGS;
513 - echo '<div class="excerpt">' . esc_html(__('You can add specific attributes to codoc script tags.','codoc')) . '</div>';
514 - echo sprintf('<input type="text" name="%s[codoc_script_tag_attributes]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['codoc_script_tag_attributes']));
436 + echo '<div class="excerpt">codoc scriptタグに特定の属性を追加することができます。</div>';
437 + echo sprintf('<input type="text" name="%s[codoc_script_tag_attributes]" value="%s">',CODOC_SETTINGS_OPTION_NAME,htmlspecialchars($CODOC_SETTINGS['codoc_script_tag_attributes']));
515 438 },
516 439 'codoc', //page
517 440 'setting_section_id' //Section
518 441 );
@@ -517,16 +440,16 @@
517 440 'setting_section_id' //Section
518 441 );
519 442 add_settings_field(
520 443 'str_replace_binded_url', // id
521 - __('Permalink','codoc'), // title
444 + 'パーマリンク', // title
522 445 function() {
523 446 global $CODOC_SETTINGS;
524 - echo '<div class="excerpt">' . esc_html(__('You can replace the part of permalink registered on the codoc.','codoc')) . '</div>';
525 - echo sprintf('<input type="text" name="%s[str_replace_binded_url_from]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['str_replace_binded_url_from']));
526 - echo ('<span class="suptext">→</span>');
527 - echo sprintf('<input type="text" name="%s[str_replace_binded_url_to]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['str_replace_binded_url_to']));
528 -
447 + echo '<div class="excerpt">codoc側に登録するパーマリンクを置換することができます。</div>';
448 + echo sprintf('<input type="text" name="%s[str_replace_binded_url_from]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_replace_binded_url_from']));
449 + echo ('<span class="suptext">を</span>');
450 + echo sprintf('<input type="text" name="%s[str_replace_binded_url_to]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_replace_binded_url_to']));
451 + echo ('に変換');
529 452 },
530 453 'codoc', //page
531 454 'setting_section_id' //Section
532 455 );
@@ -532,14 +455,16 @@
532 455 );
533 456
534 457 add_settings_field(
535 458 'str_around_codoc_tag', // id
536 - __('HTML insertion','codoc'), // title
459 + 'HTMLの挿入', // title
537 460 function() {
538 461 global $CODOC_SETTINGS;
539 - echo '<div class="excerpt">' . esc_html(__('You can insert HTML before and after the codoc tag.','codoc')) . '</div>';
540 - echo sprintf('<div class="inputRow"><p>%s</p><textarea name="%s[str_before_codoc_tag]" cols="40">%s</textarea></div>',esc_html(__('Before HTML','codoc')),esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['str_before_codoc_tag']));
541 - echo sprintf('<div class="inputRow"><p>%s</p><textarea name="%s[str_after_codoc_tag]" cols="40">%s</textarea></div>',esc_html(__('After HTML','codoc')),esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['str_after_codoc_tag']));
462 + echo '<div class="excerpt">codocタグの前後にHTMLを挿入することができます。</div>';
463 + echo sprintf('<div class="inputRow"><textarea name="%s[str_before_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_before_codoc_tag']));
464 + echo ('を前に挿入</div>');
465 + echo sprintf('<div class="inputRow"><textarea name="%s[str_after_codoc_tag]" cols="40">%s</textarea>',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['str_after_codoc_tag']));
466 + echo ('を後に挿入</div>');
542 467
543 468 },
544 469 'codoc', //page
545 470 'setting_section_id' //Section
@@ -546,26 +471,26 @@
546 471 );
547 472
548 473 add_settings_field(
549 474 'always_show_support_tag', // id
550 - __('Automatic support insertion','codoc'), // title
475 + 'サポートの自動挿入', // title
551 476 function() {
552 477 global $CODOC_SETTINGS;
553 - echo '<div class="excerpt">' . esc_html(__('It adds support functions to the post without inserting a codoc block.','codoc')) . '</div>';
478 + echo '<div class="excerpt">codocブロックを挿入することなく投稿にサポート機能を追加します</div>';
554 479 echo '<table class="innerTable"><tbody>';
555 - echo '<tr><th>' . esc_html(__('Automatic insertion','codoc')) . '</th><td>';
556 - echo sprintf('<input type="radio" value="1" name="%s[always_show_support]" id="always_show_support_on" %s><label for="always_show_support_on">' . esc_html(__('Enable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['always_show_support'] == '1' ? "checked" : ""));
557 - echo sprintf('<input type="radio" value="0" name="%s[always_show_support]" id="always_show_support_off" %s><label for="always_show_support_off">' . esc_html(__('Disable','codoc')) . '</label> <br / >',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['always_show_support'] == '0' ? "checked" : ""));
480 + echo '<tr><th>自動挿入</th><td>';
481 + echo sprintf('<input type="radio" value="1" name="%s[always_show_support]" id="always_show_support_on" %s><label for="always_show_support_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['always_show_support'] == '1' ? "checked" : ""));
482 + echo sprintf('<input type="radio" value="0" name="%s[always_show_support]" id="always_show_support_off" %s><label for="always_show_support_off">しない</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['always_show_support'] == '0' ? "checked" : ""));
558 483 echo '</td></tr>';
559 - echo '<tr><th>'. esc_html(__('Position','codoc')) . '</th><td>';
560 - echo sprintf('<input type="radio" value="top" name="%s[show_support_location]" id="show_support_location_top" %s><label for="show_support_location_top">' . esc_html(__('TOP','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_support_location'] == 'top' ? "checked" : ""));
561 - echo sprintf('<input type="radio" value="bottom" name="%s[show_support_location]" id="show_support_location_bottom" %s><label for="show_support_location_bottom">' . esc_html(__('Bottom','codoc')) . '</label> <br / >',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['show_support_location'] == 'bottom' ? "checked" : ""));
484 + echo '<tr><th>表示位置</th><td>';
485 + echo sprintf('<input type="radio" value="top" name="%s[show_support_location]" id="show_support_location_top" %s><label for="show_support_location_top">冒頭</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_support_location'] == 'top' ? "checked" : ""));
486 + echo sprintf('<input type="radio" value="bottom" name="%s[show_support_location]" id="show_support_location_bottom" %s><label for="show_support_location_bottom">末尾</label> <br / >',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['show_support_location'] == 'bottom' ? "checked" : ""));
562 487 echo '</td></tr>';
563 - echo '<tr><th>' . esc_html(__('Description','codoc')) . '</th><td>';
564 - echo sprintf('<input type="text" placeholder="' . esc_html(__('You can customize the description of the support.','codoc')) . '" size="50%%" name="%s[show_support_message]" value="%s">',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['show_support_message']));
488 + echo '<tr><th>説明文</th><td>';
489 + echo sprintf('<input type="text" placeholder="サポートの説明文をカスタマイズできます" size="50%%" name="%s[show_support_message]" value="%s">',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['show_support_message']));
565 490 echo '</td></tr>';
566 - echo '<tr><th>' . esc_html(__('Category names','codoc')) . '</th><td>';
567 - echo sprintf('<input placeholder="' . esc_html(__('Inserted into articles of categories, divided by &quot;|&quot;','codoc')) . '" type="text" size="50%%" name="%s[show_support_categories]" value="%s"><br />',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['show_support_categories']));
491 + echo '<tr><th>対象カテゴリ名</th><td>';
492 + echo sprintf('<input placeholder="&quot;|&quot;区切りで複数指定できます" type="text" size="50%%" name="%s[show_support_categories]" value="%s"><br />',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['show_support_categories']));
568 493 echo '</td></tr>';
569 494 echo '</tbody></table>';
570 495
571 496 },
@@ -573,39 +498,25 @@
573 498 'setting_section_id' //Section
574 499 );
575 500 add_settings_field(
576 501 'do_not_filter_the_content', // id
577 - __('Disable plugin filter','codoc'), // title
502 + '支障が出る処理を無効化', // title
578 503 function() {
579 504 global $CODOC_SETTINGS;
580 - echo '<div class="excerpt">' . esc_html(__('You can disable filter processing that includes shortcodes from other plugins that interfere with the operation of codoc. Please use this only if codoc is not functioning properly.','codoc')) . '</div>';
581 - echo sprintf('<input type="radio" value="1" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_on" %s><label for="do_not_filter_the_content_on">' . esc_html(__('Enable','codoc')) .'</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['do_not_filter_the_content'] == '1' ? "checked" : ""));
582 - echo sprintf('<input type="radio" value="0" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_off" %s><label for="do_not_filter_the_content_off">' . esc_html(__('Disable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['do_not_filter_the_content'] == '0' ? "checked" : ""));
505 + echo '<div class="excerpt">codocの動作に支障が出る他のプラグインによる<strong>フィルター処理</strong>を無効化できます。codocが上手く動かない場合のみ利用してください。</div>';
506 + echo sprintf('<input type="radio" value="1" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_on" %s><label for="do_not_filter_the_content_on">する</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['do_not_filter_the_content'] == '1' ? "checked" : ""));
507 + echo sprintf('<input type="radio" value="0" name="%s[do_not_filter_the_content]" id="do_not_filter_the_content_off" %s><label for="do_not_filter_the_content_off">しない</label> ',CODOC_SETTINGS_OPTION_NAME,($CODOC_SETTINGS['do_not_filter_the_content'] == '0' ? "checked" : ""));
583 508 },
584 509 'codoc', //page
585 510 'setting_section_id' //Section
586 511 );
587 -
588 512 add_settings_field(
589 - 'shortcode_evacuation', // id
590 - __('Shortcode evacuation','codoc'), // title
591 - function() {
592 - global $CODOC_SETTINGS;
593 - echo '<div class="excerpt">' . esc_html(__('The execution results of shortcodes written in the paid part are moved to the free part, and are used and displayed on the HTML during viewing of the paid part. Please use this if the shortcode does not work as expected in the paid part. Please note that the execution results of shortcodes in the paid part will be written in the source code.','codoc')). '</div>';
594 - echo sprintf('<input type="radio" value="1" name="%s[shortcode_evacuation]" id="shortcode_evacuation_on" %s><label for="shortcode_evacuation_on">' . esc_html(__('Enable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['shortcode_evacuation'] == '1' ? "checked" : ""));
595 - echo sprintf('<input type="radio" value="0" name="%s[shortcode_evacuation]" id="shortcode_evacuation_off" %s><label for="shortcode_evacuation_off">' . esc_html(__('Disable','codoc')) . '</label> ',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_attr($CODOC_SETTINGS['shortcode_evacuation'] == '0' ? "checked" : ""));
596 - },
597 - 'codoc', //page
598 - 'setting_section_id' //Section
599 - );
600 -
601 - add_settings_field(
602 513 'debug_params', // id
603 - __('Debug Parameters','codoc'), // title
514 + 'デバック用', // title
604 515 function() {
605 516 global $CODOC_SETTINGS;
606 - echo '<div class="excerpt">' . esc_html(__('You can specify parameters for debugging. Please use this only upon request from codoc support.','codoc')) . '</div>';
607 - echo sprintf('<input placeholder="" type="text" size="50%%" name="%s[debug_params]" value="%s"><br />',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['debug_params']));
517 + echo '<div class="excerpt">デバック用のパラメーターを指定できます。codocサポートから依頼がある場合のみ利用してください。</div>';
518 + echo sprintf('<input placeholder="" type="text" size="50%%" name="%s[debug_params]" value="%s"><br />',CODOC_SETTINGS_OPTION_NAME,esc_html($CODOC_SETTINGS['debug_params']));
608 519 },
609 520 'codoc', //page
610 521 'setting_section_id' //Section
611 522 );
@@ -610,52 +521,27 @@
610 521 'setting_section_id' //Section
611 522 );
612 523
613 524 add_settings_field(
614 - 'block_defaults', // id
615 - __('Block Default Values','codoc'), // title
616 - function() {
617 - global $CODOC_SETTINGS;
618 - echo '<div class="excerpt">' . esc_html(__('You can specify default values for new codoc blocks in JSON format.','codoc')) . '</div>';
619 - echo sprintf('<textarea placeholder=\'{"showPrice":false,"price":300}\' rows="3" cols="50" name="%s[block_defaults]">%s</textarea>',esc_attr(CODOC_SETTINGS_OPTION_NAME),esc_html($CODOC_SETTINGS['block_defaults']));
620 - echo '<p class="description">'
621 - . 'showPrice (bool: true), '
622 - . 'price (int: 500), '
623 - . 'limited (bool: false), '
624 - . 'limitedCount (int: 10), '
625 - . 'affiliateMode (bool: false), '
626 - . 'affiliateRate (string: "0.0500"), '
627 - . 'showSupport (bool: false), '
628 - . 'showPaywalledSupport (bool: false), '
629 - . 'statusLimited (bool: false), '
630 - . 'subscriptions (object: {})'
631 - . '</p>';
632 - },
633 - 'codoc', //page
634 - 'setting_section_id' //Section
635 - );
636 -
637 - add_settings_field(
638 525 'cretor_info', // id
639 - __('Creator\'s Information','codoc'), // title
526 + 'クリエイター情報', // title
640 527 function() {
641 528 global $CODOC_SETTINGS;
642 529 global $CODOC_AUTHINFO;
643 530 echo sprintf('<p><font id="codoc-update-creator-info-message"></font></p>',"");
644 531 // 変更を保存時に常に同期するのでこの表示は必要ないがUI上保持しておく
645 - $script = "document.getElementById('codoc-update-creator-info-message').innerText='" . __("Please save changes to update the information.","codoc") . "';document.getElementById('codoc-update-creator-info-message').color='red';";
532 + $script = "document.getElementById('codoc-update-creator-info-message').innerText='情報を更新するには変更を保存してください';document.getElementById('codoc-update-creator-info-message').color='red';";
646 533 if (isset($CODOC_AUTHINFO['profile_image_url'])) {
647 - echo sprintf('<img src="%s" width="40" height="40" />',esc_attr($CODOC_AUTHINFO['profile_image_url']));
534 + echo sprintf('<img src="%s" width="40" height="40" />',$CODOC_AUTHINFO['profile_image_url']);
648 535 }
649 - echo sprintf('<p>%s %s %s</p>',esc_html($CODOC_AUTHINFO['name']),esc_html((isset($CODOC_AUTHINFO['account_is_pro']) and $CODOC_AUTHINFO['account_is_pro']) ? ' [PRO]' : ''),esc_html(isset($CODOC_AUTHINFO['country']) ? $CODOC_AUTHINFO['country'] : '' ));
536 + echo sprintf('<p>%s</p>',$CODOC_AUTHINFO['name']);
650 537 if ($connect_code = $CODOC_SETTINGS['codoc_connect_code']) {
651 - // Translators: %s is the integration code, and %s is additional information based on the registration mode.
652 - echo sprintf('<p>' . esc_html(__('Extensions integration completed (Extensions code: %1$s) %2$s','codoc')) . '</p>',
653 - esc_html($connect_code),
654 - esc_html($CODOC_SETTINGS['codoc_connect_registration_mode'] == 'dedicated' ? __('Set the audience as a private account.','codoc') : ''));
538 + echo sprintf('<p>%s外部サービス連携済(連携コード:%s)</p>',
539 + ($CODOC_SETTINGS['codoc_connect_registration_mode'] == 'dedicated' ? '専用ユーザーモードで' : ''),
540 + $connect_code);
655 541 }
656 - echo sprintf('<p><a href="javascript:void(0);" onClick="' . esc_attr($script) . '">' . esc_html(__('Update creator\'s Information','codoc')) . '</a></p>');
657 - echo ('<p>' . esc_html(__('Please update each time if you change the logo or cover image on the codoc side.','codoc')) . '</p>');
542 + echo sprintf('<p>情報を<a href="javascript:void(0);" onClick="' . $script . '">更新する</a></p>');
543 + echo ('<p>codoc側でロゴやカバー画像を変更した場合は都度更新を行ってください</p>');
658 544 },
659 545 'codoc', //page
660 546 'setting_section_id' //Section
661 547 );
@@ -669,26 +555,25 @@
669 555 CODOC_TOKEN_OPTION_NAME
670 556 );
671 557
672 558 if (isset($_GET['codoc_auth_finished']) and $_GET['codoc_auth_finished']) {
673 - add_settings_error( 'general', 'settings_updated', esc_html(__( 'codoc authentication has been completed.' ,'codoc'), 'success' ));
559 + add_settings_error( 'general', 'settings_updated', __( 'codocの認証が完了しました' ), 'success' );
674 560 }
675 561
676 562 add_settings_field(
677 563 'codoc_auth',
678 - __('Authentication','codoc'),
564 + '認証',
679 565 function() {
680 566 global $CODOC_USERCODE;
681 567 global $CODOC_TOKEN;
682 568 global $CODOC_AUTHINFO;
683 - $script = "javascript:document.getElementById('codoc-usercode').value='-';document.getElementById('codoc-token').value='-';document.getElementById('codoc-auth-message').innerText='" . __('Please save changes to complete the unbinding.','codoc') . "';document.getElementById('codoc-auth-message').color='red';";
569 + $script = "javascript:document.getElementById('codoc-usercode').value='-';document.getElementById('codoc-token').value='-';document.getElementById('codoc-auth-message').innerText='解除を完了するには変更を保存してください';document.getElementById('codoc-auth-message').color='red';";
684 570
685 - // Translators: %s is the email address.
686 - echo sprintf('<p><font color="green" id="codoc-auth-message">' . esc_html(__('Authorized as %s','codoc')) . '</font></p>',esc_attr($CODOC_AUTHINFO['email']));
571 + echo sprintf('<p><font color="green" id="codoc-auth-message"><strong>%s</strong> で認証済</font></p>',$CODOC_AUTHINFO['email']);
687 572
688 - echo sprintf('<input id="codoc-usercode" type="hidden" name="%s" value="%s">',esc_attr(CODOC_USERCODE_OPTION_NAME),esc_attr($CODOC_USERCODE));
689 - echo sprintf('<input id="codoc-token" type="hidden" name="%s" value="%s">',esc_attr(CODOC_TOKEN_OPTION_NAME),esc_attr($CODOC_TOKEN));
690 - echo sprintf('<p><a href="javascript:void(0);" onClick="' . esc_attr($script) . '">' . esc_html(__('Unbind authorization','codoc')) . '</p>');
573 + echo sprintf('<input id="codoc-usercode" type="hidden" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
574 + echo sprintf('<input id="codoc-token" type="hidden" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
575 + echo sprintf('<p>認証を<a href="javascript:void(0);" onClick="' . $script . '">解除する</p>');
691 576 },
692 577 'codoc',
693 578 'setting_section_id'
694 579 );
@@ -698,9 +583,9 @@
698 583 // ない場合
699 584 if (!$CODOC_AUTHINFO and !isset($_GET['auth_by_myself'])) {
700 585 add_settings_field(
701 586 'codoc_auth',
702 - __('Authentication','codoc'),
587 + '認証',
703 588 function() {
704 589 $theme = wp_get_theme();
705 590 $from = 'wp';
706 591 if ($theme->get('Name') === 'codoc') {
@@ -707,31 +592,17 @@
707 592 $from = 'wp_codoc';
708 593 }
709 594 //$current_url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
710 595 $current_url = admin_url('options-general.php') . '?page=codoc';
711 - $direct_url = sprintf("location.href='%s&auth_by_myself=1'",$current_url);
712 596 $login_url = sprintf("location.href='%s'",$this->get_codoc_url() . '/me/token?from=' . $from . '&return_url=' . urlencode($current_url));
713 597 $register_url = sprintf("location.href='%s'",$this->get_codoc_url() . '/register?from=' . $from . '&return_url=' . urlencode($current_url));
714 598 // submitを消しておく
715 - echo ('<script type="text/javascript">window.onload=function(){document.getElementById(\'submit\').style.display = \'none\'}</script>');
716 - if (isset($_GET['confirm_token'])) {
717 - $confirm_url = sprintf("location.href='%s&_wpnonce=%s&fetch_token_key=%s&usercode=%s'",$current_url,
718 - wp_create_nonce('fetch_token_nonce'),
719 - esc_attr($_GET['fetch_token_key']),
720 - esc_attr($_GET['usercode']));
721 - echo (esc_html(__('The authentication information has been obtained. Please click the confirmation button to complete the setup.','codoc')) . '<br />');
722 - echo sprintf('<input type="button" class="button button-primary" value="%s" onClick="%s"> ',esc_html(__('Confirm authentication','codoc')),esc_attr($confirm_url));
723 - } else {
724 -
725 - echo (esc_html(__('Authentication is required to use codoc on WordPress.','codoc')) . '<br />');
726 - echo (esc_html(__('You can authenticate by directly entering the user code and API token, or by logging in and registering with codoc.','codoc')) . '<br /><br />');
727 - echo sprintf('<input type="button" class="button button-primary" value="%s" onClick="%s"> ',esc_attr(__('Authenticate by direct input','codoc')),esc_attr($direct_url));
728 - echo sprintf('<input type="button" class="button button-primary" value="%s" onClick="%s"> <input type="button" class="button button-primary" value="%s" onClick="%s"><br /><br />',esc_attr(__('Login and authenticate','codoc')),esc_attr($login_url),esc_attr(__('Register and authenticate','codoc')),esc_attr($register_url));
729 - }
730 - if (!$this->util->health_check()) {
731 - echo sprintf('<p style="color: red;">Cannot communicate with the codoc server. Please allow communication to https://codoc.jp in your firewall settings on the server or WordPress side.</p>');
732 - }
599 + echo ('<script type="text/javascript">window.onload=function(){document.getElementById(\'submit\').style.display = \'none\'}</script>');
600 + echo ('codocをWordPressでご利用いただくには認証が必要です。<br />');
601 + echo sprintf('ユーザーコードとAPIトークンを<a href="%s&auth_by_myself=1">直接入力</a>することでも認証できます。<br /><br />',$current_url);
602 + echo sprintf('<input type="button" class="button button-primary" value="ログインして認証" onClick="%s"> <input type="button" class="button button-primary" value="登録して認証" onClick="%s"><br /><br />',$login_url,$register_url);
733 603
604 +
734 605 },
735 606 'codoc',
736 607 'setting_section_id'
737 608 );
@@ -754,9 +625,9 @@
754 625 'ユーザーコード',
755 626 function() {
756 627 global $CODOC_USERCODE;
757 628 echo '<input type="hidden" name="auth_by_myself" value="1">';
758 - echo sprintf('<input type="text" name="%s" value="%s">',esc_attr(CODOC_USERCODE_OPTION_NAME),esc_attr($CODOC_USERCODE));
629 + echo sprintf('<input type="text" name="%s" value="%s">',CODOC_USERCODE_OPTION_NAME,$CODOC_USERCODE);
759 630 },
760 631 'codoc',
761 632 'setting_section_id'
762 633 );
@@ -764,9 +635,9 @@
764 635 'codoc_token',
765 636 'APIトークン',
766 637 function() {
767 638 global $CODOC_TOKEN;
768 - echo sprintf('<input type="text" name="%s" value="%s">',esc_attr(CODOC_TOKEN_OPTION_NAME),esc_attr($CODOC_TOKEN));
639 + echo sprintf('<input type="text" name="%s" value="%s">',CODOC_TOKEN_OPTION_NAME,$CODOC_TOKEN);
769 640 },
770 641 'codoc',
771 642 'setting_section_id'
772 643 );
@@ -788,9 +659,9 @@
788 659 $data = $this->util->get_support_entry([],[
789 660 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
790 661 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
791 662 ]);
792 - if ($data and $data->status and $entry = $data->entry) {
663 + if ($data->status and $entry = $data->entry) {
793 664 update_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME,$entry->code);
794 665 } else {
795 666 update_option(CODOC_SUPPORT_ENTRYCODE_OPTION_NAME,'');
796 667 }
@@ -818,9 +689,9 @@
818 689 });
819 690 // プラグイン一覧に設定のリンクをいれる
820 691 add_filter( 'plugin_action_links_' . plugin_basename( plugin_dir_path( __FILE__ ) . 'codoc' . '.php' ),
821 692 function( $links ) {
822 - $setting_link = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'page', 'codoc', admin_url( 'options-general.php' ) ) ), esc_html( __('Settings') ) );
693 + $setting_link = sprintf( '<a href="%s">%s</a>', esc_url( add_query_arg( 'page', 'codoc', admin_url( 'options-general.php' ) ) ), esc_html( '設定' ) );
823 694 array_unshift( $links, $setting_link );
824 695
825 696 return $links;
826 697 }
@@ -842,13 +713,8 @@
842 713 // プラグイン内で使うCSRF を生成
843 714 $path = plugins_url( 'codoc/src_mce/codoc-editor-onload.js', __DIR__ );
844 715 wp_enqueue_script( 'codoc-editor-onload', $path, array('jquery'), '', true );
845 716 // I just want to insert this global variables but i don't know how i can do it..
846 - $auth_info = get_option(CODOC_AUTHINFO_OPTION_NAME);
847 - $codoc_settings = get_option(CODOC_SETTINGS_OPTION_NAME);
848 - $block_defaults_raw = isset($codoc_settings['block_defaults']) ? $codoc_settings['block_defaults'] : '';
849 - $block_defaults_decoded = json_decode($block_defaults_raw, true);
850 - $block_defaults = is_array($block_defaults_decoded) ? $block_defaults_decoded : new stdClass();
851 717 wp_localize_script(
852 718 'codoc-editor-onload',
853 719 'CODOCEDITOR',
854 720 array(
@@ -858,12 +724,8 @@
858 724 'codoc_url' => $this->get_codoc_url(),
859 725 'codoc_usercode' => get_option(CODOC_USERCODE_OPTION_NAME),
860 726 'codoc_plugin_version' => CODOC_PLUGIN_VERSION,
861 727 'codoc_sdk_path' => CODOC_SDK_PATH,
862 - 'codoc_account_is_pro' => isset($auth_info['account_is_pro']) ? $auth_info['account_is_pro'] : 0,
863 - 'codoc_currency_code' => isset($auth_info['currency_code']) ? $auth_info['currency_code'] : 0,
864 - 'codoc_currency_decimal_places' => isset($auth_info['currency_decimal_places']) ? $auth_info['currency_decimal_places'] : 0,
865 - 'codoc_block_defaults' => $block_defaults,
866 728 )
867 729 );
868 730
869 731 // ここでtinymceのプラグイン追加
@@ -920,18 +782,11 @@
920 782 'profile_image_url' => $user->profile_image_url,
921 783 'cover_image_url' => $user->cover_image_url,
922 784 'connect_code' => property_exists($user,'connect_code') ? $user->connect_code : '',
923 785 'connect_image_url' => property_exists($user,'connect_image_url') ? $user->connect_image_url : '',
924 - 'account_is_pro' => property_exists($user,'account_is_pro') ? $user->account_is_pro : '',
925 - 'created_at' => property_exists($user,'created_at') ? $user->created_at : 0,
926 - 'country' => property_exists($user,'country') ? $user->country : '',
927 - 'currency_code' => property_exists($user,'currency_code') ? $user->currency_code : '',
928 - 'currency_decimal_places' => property_exists($user,'currency_decimal_places') ? $user->currency_decimal_places : '',
929 786 ]);
930 787 $CODOC_AUTHINFO = get_option(CODOC_AUTHINFO_OPTION_NAME);
931 - return $CODOC_AUTHINFO;
932 788 }
933 - // 保存用コンテンツにフィルターを実施する
934 789 public function get_filtered_content($post_emulated) {
935 790 // 記事ページであることをエミュレートしてフィルター実行
936 791 $post_backuped = null;
937 792 if (isset($GLOBALS['post'])) {
@@ -951,9 +806,9 @@
951 806 $wp_query->is_main_query = true;
952 807
953 808 $wp_query->post = $post_emulated;
954 809 $wp_query->queried_object = $post_emulated;
955 - $wp_query->queried_object_id = $post_emulated->ID;
810 + $wp_query->queried_object_id = $post_emulated->id;
956 811
957 812 $GLOBALS['wp_query'] = $wp_query;
958 813 }
959 814 // $this->the_content でオリジナルを返してもらうため
@@ -961,29 +816,8 @@
961 816 $content = preg_replace(
962 817 '/ (\/)?wp:codoc\/codoc-block /',' \\1wptmp:codoc/codoc-block ',
963 818 $post_emulated->post_content
964 819 );
965 - // post_metaに内容を保存し、無料パートにショートコードの退避をおこなう
966 - $codoc_settings = get_option(CODOC_SETTINGS_OPTION_NAME);
967 - if (isset($codoc_settings['shortcode_evacuation']) and $codoc_settings['shortcode_evacuation']) {
968 - $splited = preg_split('/\/wptmp:codoc\/codoc-block/s',$content);
969 - if (isset($splited[0]) and isset($splited[1])) {
970 - // すべてのショートコードを $match_all にいれる
971 - preg_match_all('/\[[^\[\]]+?\](.+\[\/[^\[\]]+?\])?/',$splited[1],$match_all);
972 - // ショートコードをURLエンコードしてdivタグの中にいれておく(後でmetaの中のショートコードと付け合せ)
973 - $replaced = preg_replace_callback('/\[[^\[\]]+?\](.+\[\/[^\[\]]+?\])?/',function($matches) {
974 - return sprintf ('<div class="codoc-evacuation-dests" data-shortcode="%s"></div>', urlencode($matches[0]));
975 - },$splited[1]);
976 - // 0番目に配列で入っているのでそこを退避対象の配列とする
977 - $evacuations = $match_all[0];
978 - // ショートコードの中身をタグに退避
979 - $content = $splited[0] . '/wptmp:codoc/codoc-block' . $replaced;
980 - // 無料パートでショートコードを実行できるようにする
981 - update_post_meta($post_emulated->ID,'codoc_shortcode_evacuations',join('**codoc**',$evacuations));
982 - } else {
983 - update_post_meta($post_emulated->id,'codoc_shortcode_evacuations',"");
984 - }
985 - }
986 820 #$content = do_shortcode( $content );
987 821 $content_filtered = apply_filters( 'the_content', $content);
988 822 $this->do_not_filter_the_content = false;
989 823
@@ -1004,47 +838,11 @@
1004 838 if (preg_match('/^(auto-draft|inherit)$/',$post->post_status)) {
1005 839 return;
1006 840 }
1007 841 $entryCode = get_post_meta($post_ID,'codoc_entry_code',true);
1008 - $postId = get_post_meta($post_ID,'codoc_saved_post_id',true);
1009 - // 保存されているIDと違う場合は破棄(duplicate pageなどでmeta情報をコピーされた可能性がある)
1010 - if ($postId and $postId != $post_ID) {
1011 - $entryCode = '';
1012 - }
1013 842 $codoc_settings = get_option(CODOC_SETTINGS_OPTION_NAME);
1014 843 $post_content = (isset($codoc_settings['do_not_filter_the_content']) and $codoc_settings['do_not_filter_the_content']) ?
1015 844 $post->post_content : $this->get_filtered_content($post);
1016 -
1017 - // codoc タグ(span/div または Gutenberg ブロック)が含まれていれば API側と統一した文字数検証を行う
1018 - $has_codoc_tag = preg_match('/<(?:span|div)[^>]+data-id="codoc-tag"/', $post_content)
1019 - || preg_match('/wp:codoc\/codoc-block/', $post_content);
1020 - if ($has_codoc_tag) {
1021 - // codoc タグ位置で free / paywalled を分割
1022 - $gutenberg_split = '/(?:<(?:div|p)(?:[^>]+|)>|)<\!-- +wp:codoc\/codoc-block .*<\!-- +\/wp:codoc\/codoc-block +-->(?:<\/(?:div|p)>|)/s';
1023 - $tag_split = '/<(?:span|div)[^>]+data-id="codoc-tag"(?:[^>]+|)>(?:.+|)<\/(?:span|div)>/';
1024 - $end_tag_regex = '/<(?:div|p)>::CODOC_WP_END_PAYWALL::<\/(?:div|p)>/';
1025 - $for_split = preg_split($end_tag_regex, $post_content);
1026 - $for_split = $for_split[0];
1027 - if (preg_match('/wp:codoc\/codoc-block/', $for_split)) {
1028 - $splited = preg_split($gutenberg_split, $for_split);
1029 - } else {
1030 - $splited = preg_split($tag_split, $for_split);
1031 - }
1032 - $body_free = isset($splited[0]) ? $splited[0] : '';
1033 - $body_paywalled = isset($splited[1]) ? $splited[1] : '';
1034 - $errors = $this->util->validate_entry_lengths([
1035 - 'title' => $post->post_title,
1036 - 'body_free' => $body_free,
1037 - 'body_paywalled' => $body_paywalled,
1038 - 'binded_url' => get_permalink($post_ID),
1039 - ]);
1040 - if ($errors) {
1041 - set_transient('codoc_entry_validation_errors', $errors, MINUTE_IN_SECONDS * 5);
1042 - // 同期はスキップ
1043 - return true;
1044 - }
1045 - }
1046 -
1047 845 $res = $this->util->sync_entry([
1048 846 "post_title" => $post->post_title,
1049 847 "post_content" => $post_content,
1050 848 // password が設定されてる場合は限定公開にする
@@ -1055,27 +853,11 @@
1055 853 ],[
1056 854 "usercode" => get_option(CODOC_USERCODE_OPTION_NAME),
1057 855 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
1058 856 ]);
1059 - $prudent_update_post_meta_entry_code = null;
1060 - if (isset($codoc_settings["debug_params"])) {
1061 - $params_decoded = json_decode($codoc_settings["debug_params"],true);
1062 - if (isset($params_decoded["prudent_update_post_meta_entry_code"])) {
1063 - $prudent_update_post_meta_entry_code = $params_decoded["prudent_update_post_meta_entry_code"];
1064 - }
1065 - }
1066 - if ($prudent_update_post_meta_entry_code == 2) {
1067 - error_log('CODOC:: ' . sprintf ("%s : %s : %s : %s", $post_ID, (is_object($res) ? "1" : 0),$res->status,$entryCode));
1068 - }
857 +
1069 858 if (is_object($res) and $res->status and !$entryCode) {
1070 - // 20230222 https://stackoverflow.com/questions/26640785/update-post-meta-not-work-only-when-save-data-not-for-update
1071 - if ($prudent_update_post_meta_entry_code) {
1072 - add_post_meta($post_ID,'codoc_entry_code',$res->entry->code);
1073 - add_post_meta($post_ID,'codoc_saved_post_id',$post_ID);
1074 - } else {
1075 - update_post_meta($post_ID,'codoc_entry_code',$res->entry->code);
1076 - update_post_meta($post_ID,'codoc_saved_post_id',$post_ID);
1077 - }
859 + update_post_meta($post_ID,'codoc_entry_code',$res->entry->code);
1078 860 }
1079 861 return true;
1080 862 }
1081 863 function updated_post_meta( $meta_ID, $post_ID, $meta_key ) {
@@ -1080,8 +862,9 @@
1080 862 }
1081 863 function updated_post_meta( $meta_ID, $post_ID, $meta_key ) {
1082 864 // スルーされてる場合は他のメタ情報更新のタイミングにサムネイルをアップロード
1083 865 $has_to_resend = get_post_meta($post_ID,'codoc_post_thumbnail_invoking_entry_code',true);
866 + $has_to_resendi = get_post_meta($post_ID,'icodoc_post_thumbnail_invoking_entry_code',true);
1084 867 if ($has_to_resend != 1 and $meta_key != '_thumbnail_id') {
1085 868 return;
1086 869 }
1087 870 if ( has_post_thumbnail($post_ID) ) {
@@ -1117,25 +900,9 @@
1117 900 "token" => get_option(CODOC_TOKEN_OPTION_NAME),
1118 901 ]
1119 902 );
1120 903 }
1121 - // 退避されてるかどうかをmetaを使って確認し、無料エリアの一番最後にショートコードを追加
1122 - function the_content_shortcode_evacuations( $post_content ) {
1123 - if ($this->do_not_filter_the_content) {
1124 - return $post_content;
1125 - }
1126 - $post = get_post();
1127 - if (!$post) {
1128 - return $post_content;
1129 - }
1130 - $evacuations_meta = get_post_meta($post->ID,'codoc_shortcode_evacuations',true);
1131 - $evacuations = preg_split('/\*\*codoc\*\*/',$evacuations_meta);
1132 - foreach ($evacuations as $evacuation) {
1133 - $post_content = sprintf('<div class="codoc-evacuations" style="display:none;" data-shortcode="%s">%s</div>',
1134 - urlencode($evacuation),$evacuation) . $post_content;
1135 - }
1136 - return $post_content;
1137 - }
904 +
1138 905 function the_content( $post_content ) {
1139 906 if ( is_single() && in_the_loop() && is_main_query() ) {
1140 907 }
1141 908 // get_filtered_content から do_not_filter_the_contentを有効にされるパターン
@@ -1143,12 +910,8 @@
1143 910 if ($this->do_not_filter_the_content) {
1144 911 return $post_content;
1145 912 }
1146 913 $post = get_post();
1147 - // 20211215 null になる場合がある
1148 - if (!$post) {
1149 - return $post_content;
1150 - }
1151 914 # is_amp で実装しているテンプレート用
1152 915 $is_amp_endpoint = (function_exists('is_amp_endpoint') && is_amp_endpoint()) ? true :
1153 916 ((function_exists('is_amp') && is_amp()) ? true : false);
1154 917 return $this->util->filter_content([
@@ -1166,76 +929,6 @@
1166 929 if (is_array($allowed_blocks)) {
1167 930 array_push($allowed_blocks,'codoc/codoc-block');
1168 931 }
1169 932 return $allowed_blocks;
1170 - }
1171 -
1172 - function allowed_block_types_all ($allowed_block_types, $block_editor_context) {
1173 - // テーマ等がブロックを制限していない場合(true = 全ブロック許可)はそのまま返す
1174 - if ($allowed_block_types === true) {
1175 - return $allowed_block_types;
1176 - }
1177 - // 配列で制限されている場合、codoc ブロックを追加
1178 - if (is_array($allowed_block_types) && !in_array('codoc/codoc-block', $allowed_block_types)) {
1179 - $allowed_block_types[] = 'codoc/codoc-block';
1180 - }
1181 - return $allowed_block_types;
1182 - }
1183 -
1184 - function show_validation_notices() {
1185 - $errors = get_transient('codoc_entry_validation_errors');
1186 - if (!$errors || !is_array($errors)) {
1187 - return;
1188 - }
1189 - delete_transient('codoc_entry_validation_errors');
1190 - $header = __('codoc could not sync this entry due to length limits:', 'codoc');
1191 - echo '<div class="notice notice-error is-dismissible"><p><strong>' . esc_html($header) . '</strong></p><ul>';
1192 - foreach ($errors as $message) {
1193 - echo '<li>' . esc_html($message) . '</li>';
1194 - }
1195 - echo '</ul></div>';
1196 - }
1197 -
1198 - function show_tadv_notice() {
1199 - // API からの notification を表示
1200 - $api_notifications = get_transient('codoc_api_notification');
1201 - if ($api_notifications && is_array($api_notifications)) {
1202 - // notification 配列のキーと値を表示
1203 - foreach ($api_notifications as $key => $value) {
1204 - // 値が配列やオブジェクトの場合は json_encode で文字列化
1205 - if (is_array($value) || is_object($value)) {
1206 - $value = json_encode($value, JSON_UNESCAPED_UNICODE);
1207 - }
1208 - echo "<div class=\"notice notice-warning is-dismissible codoc-notification\"><p>" . esc_html($value) . "</p></div>";
1209 - }
1210 - //delete_transient('codoc_api_notification');
1211 - }
1212 -
1213 - $name = 'Advanced Editor Tools';
1214 - $name_escaped = preg_replace('/ /','+',$name);
1215 - $install_url = network_admin_url( "plugin-install.php?tab=search&s=" . $name );
1216 - $options_url = network_admin_url( "options-general.php?page=tinymce-advanced" );
1217 -
1218 - //<a href=\"%s\">%s</a> を有効にし、設定画面にて &quot;Keep paragraph tags in the Classic block and the Classic Editor&quot; を有効にしてください。
1219 - //<a href=\"%s\">%s</a> の設定画面にて &quot;Keep paragraph tags in the Classic block and the Classic Editor&quot; を有効にしてください。
1220 - // Translators: %s is a link to the installation page with the plugin name.
1221 - $tadv_message_for_install = sprintf(__("Please enable %s and enable &quot;Keep paragraph tags in the Classic block and the Classic Editor&quot; on the settings screen.","codoc"),sprintf("<a href=\"%s\">%s</a>",$install_url,$name));
1222 - // Translators: %s is a link to the options settings page with the plugin name.
1223 - $tadv_message_for_options = sprintf(__("Please enable &quot;Keep paragraph tags in the Classic block and the Classic Editor&quot; on the %s settings screen.","codoc"),sprintf("<a href=\"%s\">%s</a>",$options_url,$name));
1224 - // クラシックエディタで advanced editor tools を入れてない場合は notice
1225 - if (is_plugin_active('classic-editor/classic-editor.php') and
1226 - !is_plugin_active('tinymce-advanced/tinymce-advanced.php')) {
1227 - echo "<div class=\"notice notice-warning is-dismissible\"><p>" . esc_html($tadv_message_for_install) . "</p></div>";
1228 - }
1229 -
1230 - // advanced editor tools の設定を調査
1231 - $no_autop = false;
1232 - $tadv_admin_settings = get_option( 'tadv_admin_settings', false );
1233 - if (isset($tadv_admin_settings['options']) and preg_match('/no_autop/',$tadv_admin_settings['options'])) {
1234 - $no_autop = true;
1235 - }
1236 - // advanced editor tools が有効で no_autop (Keep paragraph tags in the Classic block and the Classic Editor) が無効
1237 - if (is_plugin_active('tinymce-advanced/tinymce-advanced.php') and !$no_autop) {
1238 - echo "<div class=\"notice notice-warning is-dismissible\"><p>" . esc_html($tadv_message_for_options) . "</p></div>";
1239 - }
1240 933 }
1241 934 }