Changeset 2501805
- Timestamp:
- 03/23/2021 01:24:17 PM (5 years ago)
- Location:
- vjoon-wp-adapter/trunk
- Files:
-
- 7 edited
-
Adapter.php (modified) (1 diff)
-
readme.txt (modified) (1 diff)
-
src/Functions.php (modified) (2 diffs)
-
src/Gutenberg.php (modified) (18 diffs)
-
vendor/autoload.php (modified) (1 diff)
-
vendor/composer/autoload_real.php (modified) (3 diffs)
-
vendor/composer/autoload_static.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
vjoon-wp-adapter/trunk/Adapter.php
r2497085 r2501805 7 7 * Author URI: https://vjoon.com 8 8 * Description: vjoon WordPress Adapter for vjoon K4 9 * Version: 1.0. 89 * Version: 1.0.9 10 10 * Text Domain: vj-wp-adapter 11 11 * Domain Path: resources/LocalizedStrings -
vjoon-wp-adapter/trunk/readme.txt
r2497085 r2501805 38 38 == Changelog == 39 39 40 = 1.0.9 = 41 * Fixed Bug UNI-249: Alignments of images are now displayed correctly even if the Gutenberg Editor is selected. 42 40 43 = 1.0.8 = 41 44 * Tested with WordPress 5.7 -
vjoon-wp-adapter/trunk/src/Functions.php
r2489727 r2501805 518 518 519 519 case 'getBuildInfo': 520 $return_value['result'] = "Build: 1 58 (75ca891)";520 $return_value['result'] = "Build: 163 (9db654b)"; 521 521 522 522 default: … … 794 794 */ 795 795 public static function parseResizedImage($content, $img, $dom, $imgid) { 796 $class = $img->parentNode->getAttribute('class');796 $class = isset($img->parentNode) ? $img->parentNode->getAttribute('class') : ''; 797 797 $is_resized = ""; 798 798 $img_height = ''; -
vjoon-wp-adapter/trunk/src/Gutenberg.php
r2489727 r2501805 108 108 } 109 109 110 111 110 /*************************************** Convert with DOM Element ***************************************/ 112 111 $dom = new \DOMDocument(null, 'UTF-8'); … … 117 116 $dom->encoding = 'utf-8'; 118 117 119 //dom img-Tag, note: be aware of that this element is not child of figure-Tag120 $img_array = $dom->getElementsByTagName('img');118 $img_dnl = $dom->getElementsByTagName('img'); //returns DOMNodeList which is LIVE 119 $img_array = self::array_copy( $img_dnl ); 121 120 $img_src_alt_arr = []; 122 foreach ($img_array as $img) {123 if ( isset($img->parentNode->nodeName) && $img->parentNode->nodeName != 'figure' ) {124 //parent node is figure-Tag, exclude this, only pure img-Tag121 $uniqids = []; 122 foreach($img_array as $i => $img) { 123 if ( isset($img->parentNode->nodeName) && $img->parentNode->nodeName != 'figure' ) { //if parent node is figure-Tag, then exclude this img, only pure img-Tag 125 124 $src = $img->getAttribute('src'); 126 125 $alt = $img->getAttribute('alt'); … … 131 130 $src = $img->getAttribute('src'); 132 131 $imgid = Functions::getImageId($src); 133 134 //note: add wp-image class 135 $class = $img->getAttribute('class'); 132 133 $class = $img->getAttribute('class'); //note: add wp-image class 136 134 if(strpos($class,'wp-image') === false) { 137 135 $class = empty($class) ? "wp-image-".$imgid : $class." wp-image-".$imgid; 138 136 } 139 137 $img->setAttribute('class',$class); 140 141 //note: remove all data-Attributes! Due to GB BLock Editor marks this as invalid, except Attributes are registered 142 if ($img->hasAttributes()) { 138 139 if ($img->hasAttributes()) { //note: remove all data-Attributes! Due to GB BLock Editor marks this as invalid, except Attributes are registered 143 140 $toremove = []; 144 141 foreach($img->attributes as $attr) { 145 142 if (strpos($attr->nodeName,'data') !== false) { 146 Debug::log($attr->nodeName, 'REMOVE DATA ATTR FROM IMG-TAG');147 143 $toremove[] = $attr->nodeName; 148 144 } … … 171 167 } 172 168 173 //parent node is figure-Tag 174 $class = $img->parentNode->getAttribute('class'); //as string, no matter if single or multiple classes 175 if ( strpos( $class, "image") !== false) { //only handle figure tag, if class has image 176 177 //check if align is available 169 $class = isset($img->parentNode) ? $img->parentNode->getAttribute('class') : ''; //as string 170 if ( strpos( $class, "image") !== false) { //only handle figure tag, if figure-tag class has 'image' 178 171 $align = ""; 179 172 $wpcore_class = 'wp-block-image'; … … 181 174 $align = ',"align":"left"'; 182 175 $wpcore_class = "alignleft"; 183 } elseif ( strpos($class,"align-right") !== false) {176 } elseif ( strpos($class,"align-right") !== false ) { 184 177 $align = ',"align":"right"'; 185 178 $wpcore_class = "alignright"; 186 } elseif ( strpos($class,"align-center") !== false) {179 } elseif ( strpos($class,"align-center") !== false ) { 187 180 $align = ',"align":"center"'; 188 181 $wpcore_class = "aligncenter"; 189 } elseif ( strpos($class,"style-side") !== false ) {182 } elseif ( strpos($class,"style-side") !== false ) { 190 183 $align = ',"align":"right"'; 191 184 $wpcore_class = "alignright"; … … 197 190 //note: handle align 198 191 if (!empty($align)) { 199 //add attribute to figure tag 200 $img->parentNode->setAttribute('class',$wpcore_class.' size-full'.$is_resized); 201 202 /* 203 //postponed: later 204 if (!empty($img_percentage)) { 205 $img->parentNode->setAttribute('style','max-width:'.$img_percentage.'%'); //add style attribute to figure-tag note: this causes a Block Error 206 207 //$img->parentNode->setAttribute('data-wp-percent-width',$img_percentage.'%'); 208 209 //$preContent = $dom->createTextNode('<style>.'.(!empty($is_resized)? $is_resized.'-'.$imgid : '').' figure { max-width:'.$img_percentage.'%; }</style>'); 210 //$img->parentNode->parentNode->insertBefore($preContent, $img->parentNode); 211 }*/ 212 213 //add wp core block begin 214 $preContent = $dom->createComment(' wp:image {"id":'.$imgid.',"sizeSlug":"full"'.$align.$img_width.$img_height.',"className":"'.(!empty($is_resized)? $is_resized.'-'.$imgid : '').'"} '); 215 $img->parentNode->parentNode->insertBefore($preContent, $img->parentNode); 216 217 //add enclosure div tag begin 218 $preContent = $dom->createTextNode('<div class="wp-block-image'.(!empty($is_resized)? $is_resized.'-'.$imgid : '').'">'); 219 $img->parentNode->parentNode->insertBefore($preContent, $img->parentNode); 220 221 //wp core block end 222 $postContent = $dom->createComment(' /wp:image '); 223 $img->parentNode->parentNode->insertBefore($postContent, $img->parentNode->nextSibling); 224 225 //add enclosure div end 226 $postContent = $dom->createTextNode('</div>'); 227 $img->parentNode->parentNode->insertBefore($postContent, $img->parentNode->nextSibling); 192 //Handle img as figure Tag Child via DOM Element 193 $imgClone = $img->cloneNode(); 194 $figcap = $img->parentNode->getElementsByTagName('figcaption'); 195 $figcap = isset($figcap[0]) ? $figcap[0] : False; 196 197 $figClone = $img->parentNode->cloneNode(); //entweder true oder imgClone und figcap als child appenden 198 $figClone->appendChild($imgClone); 199 if ($figcap) { $figClone->appendChild($figcap); } 200 $figClone->setAttribute('class',$wpcore_class.' size-full'.$is_resized); 201 202 $uniqid = 'ghost'.uniqid(); 203 $uniqids[] = '<'.$uniqid.'>'; 204 $uniqids[] = '</'.$uniqid.'>'; 205 $ghost = $dom->createElement($uniqid); 206 207 $div = $dom->createElement('div'); 208 $div->setAttribute('class','wp-block-image'.(!empty($is_resized)? $is_resized.'-'.$imgid : '')); 209 $div->appendChild( $figClone ); 210 211 $ghost->appendChild( $dom->createComment(' wp:image {"id":'.$imgid.',"sizeSlug":"full"'.$align.$img_width.$img_height.',"className":"'.(!empty($is_resized)? $is_resized.'-'.$imgid : '').'"} ') ); 212 $ghost->appendChild( $div ); 213 $ghost->appendChild( $dom->createComment(' /wp:image ') ); 214 215 $img->parentNode->parentNode->replaceChild($ghost, $img->parentNode); 228 216 229 217 } else { … … 231 219 $img->parentNode->setAttribute('class',$wpcore_class.(empty($class) ? '' : ' '.$class.$is_resized.(!empty($is_resized)? $is_resized.'-'.$imgid : ''))); 232 220 233 //postponed: add also Percentage234 235 221 //wp core block begin 236 222 $preContent = $dom->createComment(' wp:image {"id":'.$imgid.',"className":"'.$class.(!empty($is_resized)? $is_resized.'-'.$imgid : '').'"'.$align.$img_width.$img_height.'} '); … … 242 228 243 229 } 230 231 $content = $dom->saveHTML(); 232 } 233 } 234 } 244 235 245 $content = $dom->saveHTML();246 }247 248 }249 }250 251 236 if (strpos($content, '<img') !== false) { 252 237 $regex = '/src="([^"]*)"/'; … … 276 261 277 262 $content = str_replace(array('<html>','<body>','</html>','</body>'), '', $content); 263 $content = str_replace($uniqids,'', $content); 278 264 279 265 Debug::log($content,'RETURN CONTENT WITH CONVERTED GUTENBERG BLOCKS'); … … 353 339 $dom->removeChild($dom->doctype); 354 340 $tags = $dom->getElementsByTagName($htmlTag); 355 356 foreach ($tags as $tag) {357 341 $tags_array = self::array_copy( $tags ); 342 $uniqids = []; 343 foreach($tags_array as $i => $tag) { 358 344 if ($tag->tagName == "blockquote") { //note: special handle p tags in blockquote, which have wp:paragraph 359 345 $_chs = $tag->childNodes; … … 369 355 } 370 356 371 //note: wenn parent ein figure-Tag ist, dann diesen parent löschen und $tag einfügen 372 if ( isset($tag->parentNode->nodeName) && $tag->parentNode->nodeName == "figure") { 357 if ( isset($tag->parentNode->nodeName) && $tag->parentNode->nodeName == "figure") { //note: wenn parent ein figure-Tag ist, dann diesen parent löschen und $tag einfügen 373 358 $tag->parentNode->parentNode->replaceChild($tag, $tag->parentNode); 374 359 } … … 389 374 } 390 375 391 392 376 switch ($htmlTag) { 393 377 case 'ol': … … 397 381 398 382 case 'oembed': 399 400 383 $oem = self::cacheEmbedObject($url); 401 384 self::$oembeded[] = array('url'=>$url,'data'=>$oem); 402 403 //note: get type and media from URL : rich/instragram, rich/twitter, video/youtube404 //$oem = self::getProvider($url);405 406 Debug::log($oem,'DATA BY CACHEEMBEDOBJECT');407 408 385 $addProviderClass = (strtolower($oem->provider_name) == 'youtube') ? (($class !=='' ) ? $class. ' wp-embed-aspect-16-9 wp-has-aspect-ratio' : 'wp-embed-aspect-16-9 wp-has-aspect-ratio') : $class; 409 410 $preContent = $dom->createComment(' wp:' . $namespace.'/'.strtolower($oem->provider_name). ' {"url":"'.$url.'","type":"'.$oem->type.'","providerNameSlug":"'.strtolower($oem->provider_name).'", "className":' .( ($addProviderClass!=='') ? '"' . $addProviderClass . '"' : '""' ). '} ');411 $tag->parentNode->insertBefore($preContent, $tag); //insert <!-- wp: hidden tag -->412 386 413 387 //note: add additional figure tag … … 416 390 //Instagram <figure class="wp-block-embed-instagram wp-block-embed is-type-rich is-provider-instagram"> 417 391 418 $elemfigure = $dom->createTextNode('<figure class="wp-block-embed-'.strtolower($oem->provider_name).' wp-block-embed is-type-'.$oem->type.' is-provider-'.strtolower($oem->provider_name).''.( ($addProviderClass!=='') ? ' '.$addProviderClass : '') .'">'); 419 $tag->parentNode->insertBefore($elemfigure, $tag); 420 421 $elemdiv = $dom->createTextNode('<div class="wp-block-embed__wrapper">'.PHP_EOL.$url.PHP_EOL.'</div></figure>'); 422 $tag->parentNode->insertBefore($elemdiv, $tag); 423 424 $postContent = $dom->createComment(' /wp:' . $namespace.'/'.strtolower($oem->provider_name).' ' ); 425 $tag->parentNode->insertBefore($postContent, $tag); 426 392 $uniqid = 'ghost'.uniqid(); 393 $uniqids[] = '<'.$uniqid.'>'; 394 $uniqids[] = '</'.$uniqid.'>'; 395 $ghost = $dom->createElement($uniqid); 396 397 $div = $dom->createElement('div'); 398 $div->setAttribute('class','wp-block-embed__wrapper'); 399 $div->appendChild ( $dom->createTextNode(PHP_EOL.$url.PHP_EOL) ); 400 401 $fig = $dom->createElement('figure'); 402 $fig->setAttribute('class','wp-block-embed-'.strtolower($oem->provider_name).' wp-block-embed is-type-'.$oem->type.' is-provider-'.strtolower($oem->provider_name).''.( ($addProviderClass!=='') ? ' '.$addProviderClass : '') ); 403 $fig->appendChild( $div ); 404 405 $ghost->appendChild( $dom->createComment(' wp:' . $namespace.'/'.strtolower($oem->provider_name). ' {"url":"'.$url.'","type":"'.$oem->type.'","providerNameSlug":"'.strtolower($oem->provider_name).'", "className":' .( ($addProviderClass!=='') ? '"' . $addProviderClass . '"' : '""' ). '} ') ); 406 $ghost->appendChild( $fig ); 407 $ghost->appendChild( $dom->createComment(' /wp:' . $namespace.'/'.strtolower($oem->provider_name).' ') ); 408 409 $tag->parentNode->replaceChild($ghost, $tag); 427 410 break; 428 411 … … 436 419 //note: additional insert needed Gutenberg Block Tags with moved Class 437 420 if ( $htmlTag === 'table' ) { 438 $tag->removeAttribute('class'); 439 $elem = $dom->createTextNode('<figure class="wp-block-table'.( ($class!=='') ? ' '.$class : '') .'">'); 440 $tag->parentNode->insertBefore($elem, $tag); 421 $tableClone = $tag->cloneNode(true); //full Node 422 $tableClone->removeAttribute('class'); 423 $elem = $dom->createElement('figure'); 424 $elem->setAttribute('class','wp-block-table'.( ($class!=='') ? ' '.$class : '')); 425 $elem->appendChild($tableClone); 426 $tag->parentNode->replaceChild($elem, $tag); 441 427 } 442 428 … … 444 430 445 431 $content = $dom->saveHTML(); 446 447 Debug::log($content,'RETURNED BY CONVERTHTMLTAG'); 432 $content = str_replace($uniqids,'', $content); 433 434 //Debug::log($content,'RETURNED BY CONVERTHTMLTAG'); 448 435 return $content; 449 436 } … … 458 445 private static function getClass($string = ''){ 459 446 preg_match('/class="(.+?)"/', $string, $input); 460 return $input[1];447 return isset($input[1]) ? $input[1] : ''; 461 448 } 462 449 … … 474 461 Debug::log($request->get_params(),'PARAMS FOR INTERNAL WP REST REQUEST'); 475 462 $response = rest_do_request($request); //future: im resonse opbject -> data -> provider_name = 'instagram' und -> type = 'rich' 476 Debug::log($response,'RESPONSE OF INTERNAL WP REST REQUEST');477 463 $server = rest_get_server(); 478 Debug::log($server,'SERVER OF INTERNAL WP REST REQUEST');479 464 $data = $server->response_to_data( $response, false); 480 Debug::log($data,'DATA OF INTERNAL WP REST REQUEST');481 465 482 466 return $data; 483 467 } 484 468 469 470 private static function array_copy($arr) { 471 $newArray = array(); 472 foreach($arr as $key => $value) { 473 if ( is_array($value) ) { 474 $newArray[$key] = self::array_copy($value); 475 } else if ( is_object($value) ) { 476 $newArray[$key] = $value; //clone $value; 477 } else { 478 $newArray[$key] = $value; 479 } 480 } 481 return $newArray; 482 } 483 485 484 } -
vjoon-wp-adapter/trunk/vendor/autoload.php
r2489727 r2501805 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit 50ce50c6b04384a330b8ebda5a205601::getLoader();7 return ComposerAutoloaderInit2a5c7227e82cd35ca70eac91ea6457c3::getLoader(); -
vjoon-wp-adapter/trunk/vendor/composer/autoload_real.php
r2489727 r2501805 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 50ce50c6b04384a330b8ebda5a2056015 class ComposerAutoloaderInit2a5c7227e82cd35ca70eac91ea6457c3 6 6 { 7 7 private static $loader; … … 20 20 } 21 21 22 spl_autoload_register(array('ComposerAutoloaderInit 50ce50c6b04384a330b8ebda5a205601', 'loadClassLoader'), true, true);22 spl_autoload_register(array('ComposerAutoloaderInit2a5c7227e82cd35ca70eac91ea6457c3', 'loadClassLoader'), true, true); 23 23 self::$loader = $loader = new \Composer\Autoload\ClassLoader(); 24 spl_autoload_unregister(array('ComposerAutoloaderInit 50ce50c6b04384a330b8ebda5a205601', 'loadClassLoader'));24 spl_autoload_unregister(array('ComposerAutoloaderInit2a5c7227e82cd35ca70eac91ea6457c3', 'loadClassLoader')); 25 25 26 26 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); … … 28 28 require_once __DIR__ . '/autoload_static.php'; 29 29 30 call_user_func(\Composer\Autoload\ComposerStaticInit 50ce50c6b04384a330b8ebda5a205601::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit2a5c7227e82cd35ca70eac91ea6457c3::getInitializer($loader)); 31 31 } else { 32 32 $map = require __DIR__ . '/autoload_namespaces.php'; -
vjoon-wp-adapter/trunk/vendor/composer/autoload_static.php
r2489727 r2501805 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 50ce50c6b04384a330b8ebda5a2056017 class ComposerStaticInit2a5c7227e82cd35ca70eac91ea6457c3 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 34 34 { 35 35 return \Closure::bind(function () use ($loader) { 36 $loader->prefixLengthsPsr4 = ComposerStaticInit 50ce50c6b04384a330b8ebda5a205601::$prefixLengthsPsr4;37 $loader->prefixDirsPsr4 = ComposerStaticInit 50ce50c6b04384a330b8ebda5a205601::$prefixDirsPsr4;38 $loader->prefixesPsr0 = ComposerStaticInit 50ce50c6b04384a330b8ebda5a205601::$prefixesPsr0;36 $loader->prefixLengthsPsr4 = ComposerStaticInit2a5c7227e82cd35ca70eac91ea6457c3::$prefixLengthsPsr4; 37 $loader->prefixDirsPsr4 = ComposerStaticInit2a5c7227e82cd35ca70eac91ea6457c3::$prefixDirsPsr4; 38 $loader->prefixesPsr0 = ComposerStaticInit2a5c7227e82cd35ca70eac91ea6457c3::$prefixesPsr0; 39 39 40 40 }, null, ClassLoader::class);
Note: See TracChangeset
for help on using the changeset viewer.