$src = $tags->get_attribute( 'src' ); return is_string( $src ) && preg_match( '~^(?:https?:)?//(?:www\.)?tiktok\.com/embed\.js(?:[?#][^\s]*)?$~iD', $src ) ? '' : $match[0]; }, $updated ); return is_string( $cleaned ) ? $cleaned : $updated; } /** * Old saved blocks can retain aspect-ratio classes or an earlier provider * name. Normalize rendered markup only; keep saved content and captions. */ public static function block_html( $html, $block ) { $url = isset( $block['attrs']['url'] ) ? $block['attrs']['url'] : ''; if ( false === self::video_id( $url ) || false === strpos( $html, 'class="wi-tiktok-player"' ) ) { return $html; } $tags = new WP_HTML_Tag_Processor( $html ); if ( $tags->next_tag( 'FIGURE' ) ) { $classes = preg_split( '/\s+/', (string) $tags->get_attribute( 'class' ) ); foreach ( $classes as $class ) { if ( 'wp-has-aspect-ratio' === $class || 0 === strpos( $class, 'wp-embed-aspect-' ) ) { $tags->remove_class( $class ); } } $tags->add_class( 'wi-tiktok-block' ); } /* * Fortuna's frontend Plyr initializer treats every iframe under * .wp-block-embed__wrapper in a non-YouTube block as a YouTube video. * Keep the native figure/block, but use our own frontend-only wrapper * so neither that replacement nor its broad Plyr initializer matches. * Gutenberg's editor preview is not changed by this render filter. */ if ( $tags->next_tag( array( 'tag_name' => 'DIV', 'class_name' => 'wp-block-embed__wrapper' ) ) ) { $tags->remove_class( 'wp-block-embed__wrapper' ); $tags->add_class( 'wi-tiktok-embed__wrapper' ); } return $tags->get_updated_html(); } /** Frontend: handlers run before oEmbed, including cached failed lookups. */ public static function register_handler() { wp_embed_register_handler( 'wi-tiktok-block-player', '~^https?://(?:www\.|m\.)?tiktok\.com/@[a-zA-Z0-9._-]+/video/[0-9]{15,20}/?(?:[?#].*)?$~iD', array( __CLASS__, 'handle_embed' ), 5 ); } public static function handle_embed( $matches, $attr, $url, $rawattr ) { $id = self::video_id( $url ); return false === $id ? false : self::player( $id ); } /** Also supports callers using wp_oembed_get() directly. */ public static function pre_oembed( $result, $url, $args ) { if ( null !== $result ) { return $result; } $id = self::video_id( $url ); return false === $id ? $result : self::player( $id ); } /** * Editor: this hook runs AFTER REST authentication and route permission * checks, before the original proxy callback makes its outbound request. * It deliberately does not use rest_pre_dispatch or alter permissions. */ public static function rest_embed( $result, $request, $route, $handler ) { if ( null !== $result || '/oembed/1.0/proxy' !== untrailingslashit( $request->get_route() ) || ! in_array( $request->get_method(), array( 'GET', 'HEAD' ), true ) ) { return $result; } $id = self::video_id( $request->get_param( 'url' ) ); if ( false === $id ) { return $result; } return rest_ensure_response( array( 'version' => '1.0', 'type' => 'video', 'provider_name' => 'TikTok', 'provider_url' => 'https://www.tiktok.com', 'title' => 'TikTok video', 'width' => 360, 'height' => 640, 'html' => self::player( $id ), ) ); } /** Frontend and editor use different iframe layers; size each separately. */ public static function styles() { wp_register_style( 'wi-tiktok-block-player', false, array(), self::VERSION ); wp_enqueue_style( 'wi-tiktok-block-player' ); wp_add_inline_style( 'wi-tiktok-block-player', '.wp-block-embed.wi-tiktok-block>div.wi-tiktok-embed__wrapper,' . '.wp-block-embed.wi-tiktok-block>div.wp-block-embed__wrapper,' . '.wp-block-embed.is-provider-tiktok>div.wp-block-embed__wrapper{position:relative;max-width:360px;width:100%;height:auto!important;min-height:0!important;padding:0!important;aspect-ratio:auto!important;margin-left:auto;margin-right:auto;}' . '.wp-block-embed.wi-tiktok-block>div.wi-tiktok-embed__wrapper::before,' . '.wp-block-embed.wi-tiktok-block>div.wp-block-embed__wrapper::before,' . '.wp-block-embed.is-provider-tiktok>div.wp-block-embed__wrapper::before{content:none!important;display:none!important;padding:0!important;}' . '.wi-tiktok-player{position:relative!important;width:100%!important;max-width:360px;min-height:0!important;aspect-ratio:9/16;margin:0 auto!important;padding:0!important;}' . '.wi-tiktok-player>iframe{position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;}' . '.wp-block-embed.is-provider-tiktok>div.wp-block-embed__wrapper>iframe.components-sandbox{position:static!important;inset:auto!important;display:block!important;width:100%!important;height:auto!important;min-height:0!important;max-width:360px!important;max-height:none!important;aspect-ratio:9/16!important;margin:0 auto!important;border:0!important;}' ); } } WI_TikTok_Block_Player::boot(); საჯარო და კერძო სკოლებში მასწავლებლებისა და ადმინისტრაციული პერსონალის ტესტირება მიმდინარეობს - რადიო ფორტუნა / Fortuna.ge
LIVE
უსმინე პირდაპირ ეთერს

საჯარო და კერძო სკოლებში მასწავლებლებისა და ადმინისტრაციული პერსონალის ტესტირება მიმდინარეობს

93
მასწავლებლების ტესტირება

საქართველოს მასშტაბით საჯარო და კერძო სკოლებში მასწავლებლებისა და ადმინისტრაციული პერსონალის სავალდებულო სისტემური ტესტირება აქტიურად მიმდინარეობს. ინფორმაციას განათლებისა და მეცნიერების სამინისტრო ავრცელებს.

მათივე ცნობით, მცხეთის საზოგადოებრივი ჯანდაცვის ცენტრის თანამშრომლებმა საგურამოს საჯარო სკოლაში რიგით მესამე ტესტირება ჩაატარეს. მანამდე ჩატარებული ორი ტესტირებიდან, ვირუსი არავის გამოვლენია.

“სავალდებულო ტესტირება, რომელსაც სახელმწიფო სრულად უზრუნველყოფს, სკოლებში ორ კვირაში ერთხელ ჯანდაცვის სამინისტროსთან ერთად შემუშავებული პროტოკოლის საფუძველზე ტარდება. შედეგად, საკუთარ ჯანმრთელობას აკონტროლებს 2085 საჯარო და 300-მდე კერძო სკოლის პედაგოგი, რაც მათი უსაფრთხოებისთვის მნიშვნელოვანია”, – წერია გავრცელებულ განცხადებაში.