/** * REST API: WP_REST_Taxonomies_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class used to manage taxonomies via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Taxonomies_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'taxonomies'; } /** * Registers the routes for taxonomies. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'taxonomy' => array( 'description' => __( 'An alphanumeric identifier for the taxonomy.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read taxonomies. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { if ( ! empty( $request['type'] ) ) { $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); } else { $taxonomies = get_taxonomies( '', 'objects' ); } foreach ( $taxonomies as $taxonomy ) { if ( ! empty( $taxonomy->show_in_rest ) && current_user_can( $taxonomy->cap->assign_terms ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all public taxonomies. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { // Retrieve the list of registered collection query parameters. $registered = $this->get_collection_params(); if ( isset( $registered['type'] ) && ! empty( $request['type'] ) ) { $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); } else { $taxonomies = get_taxonomies( '', 'objects' ); } $data = array(); foreach ( $taxonomies as $tax_type => $value ) { if ( empty( $value->show_in_rest ) || ( 'edit' === $request['context'] && ! current_user_can( $value->cap->assign_terms ) ) ) { continue; } $tax = $this->prepare_item_for_response( $value, $request ); $tax = $this->prepare_response_for_collection( $tax ); $data[ $tax_type ] = $tax; } if ( empty( $data ) ) { // Response should still be returned as a JSON object when it is empty. $data = (object) $data; } return rest_ensure_response( $data ); } /** * Checks if a given request has access to a taxonomy. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, otherwise false or WP_Error object. */ public function get_item_permissions_check( $request ) { $tax_obj = get_taxonomy( $request['taxonomy'] ); if ( $tax_obj ) { if ( empty( $tax_obj->show_in_rest ) ) { return false; } if ( 'edit' === $request['context'] && ! current_user_can( $tax_obj->cap->assign_terms ) ) { return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); } } return true; } /** * Retrieves a specific taxonomy. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $tax_obj = get_taxonomy( $request['taxonomy'] ); if ( empty( $tax_obj ) ) { return new WP_Error( 'rest_taxonomy_invalid', __( 'Invalid taxonomy.' ), array( 'status' => 404 ) ); } $data = $this->prepare_item_for_response( $tax_obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a taxonomy object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$taxonomy` to `$item` to match parent class for PHP 8 named parameter support. * * @param WP_Taxonomy $item Taxonomy data. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $taxonomy = $item; $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; $fields = $this->get_fields_for_response( $request ); $data = array(); if ( in_array( 'name', $fields, true ) ) { $data['name'] = $taxonomy->label; } if ( in_array( 'slug', $fields, true ) ) { $data['slug'] = $taxonomy->name; } if ( in_array( 'capabilities', $fields, true ) ) { $data['capabilities'] = $taxonomy->cap; } if ( in_array( 'description', $fields, true ) ) { $data['description'] = $taxonomy->description; } if ( in_array( 'labels', $fields, true ) ) { $data['labels'] = $taxonomy->labels; } if ( in_array( 'types', $fields, true ) ) { $data['types'] = array_values( $taxonomy->object_type ); } if ( in_array( 'show_cloud', $fields, true ) ) { $data['show_cloud'] = $taxonomy->show_tagcloud; } if ( in_array( 'hierarchical', $fields, true ) ) { $data['hierarchical'] = $taxonomy->hierarchical; } if ( in_array( 'rest_base', $fields, true ) ) { $data['rest_base'] = $base; } if ( in_array( 'rest_namespace', $fields, true ) ) { $data['rest_namespace'] = $taxonomy->rest_namespace; } if ( in_array( 'visibility', $fields, true ) ) { $data['visibility'] = array( 'public' => (bool) $taxonomy->public, 'publicly_queryable' => (bool) $taxonomy->publicly_queryable, 'show_admin_column' => (bool) $taxonomy->show_admin_column, 'show_in_nav_menus' => (bool) $taxonomy->show_in_nav_menus, 'show_in_quick_edit' => (bool) $taxonomy->show_in_quick_edit, 'show_ui' => (bool) $taxonomy->show_ui, ); } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); // Wrap the data in a response object. $response = rest_ensure_response( $data ); if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { $response->add_links( $this->prepare_links( $taxonomy ) ); } /** * Filters a taxonomy returned from the REST API. * * Allows modification of the taxonomy data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Taxonomy $item The original taxonomy object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_taxonomy', $response, $taxonomy, $request ); } /** * Prepares links for the request. * * @since 6.1.0 * * @param WP_Taxonomy $taxonomy The taxonomy. * @return array Links for the given taxonomy. */ protected function prepare_links( $taxonomy ) { return array( 'collection' => array( 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), ), 'https://api.w.org/items' => array( 'href' => rest_url( rest_get_route_for_taxonomy_items( $taxonomy->name ) ), ), ); } /** * Retrieves the taxonomy's schema, conforming to JSON Schema. * * @since 4.7.0 * @since 5.0.0 The `visibility` property was added. * @since 5.9.0 The `rest_namespace` property was added. * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'taxonomy', 'type' => 'object', 'properties' => array( 'capabilities' => array( 'description' => __( 'All capabilities used by the taxonomy.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'description' => array( 'description' => __( 'A human-readable description of the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'hierarchical' => array( 'description' => __( 'Whether or not the taxonomy should have children.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'labels' => array( 'description' => __( 'Human-readable labels for the taxonomy for various contexts.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'The title for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'show_cloud' => array( 'description' => __( 'Whether or not the term cloud should be displayed.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'types' => array( 'description' => __( 'Types associated with the taxonomy.' ), 'type' => 'array', 'items' => array( 'type' => 'string', ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'rest_base' => array( 'description' => __( 'REST base route for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'rest_namespace' => array( 'description' => __( 'REST namespace route for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'visibility' => array( 'description' => __( 'The visibility settings for the taxonomy.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, 'properties' => array( 'public' => array( 'description' => __( 'Whether a taxonomy is intended for use publicly either via the admin interface or by front-end users.' ), 'type' => 'boolean', ), 'publicly_queryable' => array( 'description' => __( 'Whether the taxonomy is publicly queryable.' ), 'type' => 'boolean', ), 'show_ui' => array( 'description' => __( 'Whether to generate a default UI for managing this taxonomy.' ), 'type' => 'boolean', ), 'show_admin_column' => array( 'description' => __( 'Whether to allow automatic creation of taxonomy columns on associated post-types table.' ), 'type' => 'boolean', ), 'show_in_nav_menus' => array( 'description' => __( 'Whether to make the taxonomy available for selection in navigation menus.' ), 'type' => 'boolean', ), 'show_in_quick_edit' => array( 'description' => __( 'Whether to show the taxonomy in the quick/bulk edit panel.' ), 'type' => 'boolean', ), ), ), ), ); $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Retrieves the query params for collections. * * @since 4.7.0 * * @return array Collection parameters. */ public function get_collection_params() { $new_params = array(); $new_params['context'] = $this->get_context_param( array( 'default' => 'view' ) ); $new_params['type'] = array( 'description' => __( 'Limit results to taxonomies associated with a specific post type.' ), 'type' => 'string', ); return $new_params; } } Návrat branné přípravy do škol ROZHODNĚ – THOR Tac
Rubriky

Návrat branné přípravy do škol ROZHODNĚ

Když se řekne branná výchova, tak se nám dříve narozeným vybaví léta na základní a střední škole. Branné cvičení, zkoušení plynových masek, práce s buzolou, první pomoc nebo základy střelby, ale i mnoho dalších dovedností, které 90% z nás nikdy nepoužilo, ale měli jsme o nich nějaké podvědomí. Když se oprostím od politického marasmu, který brannou výchovu doprovázel tak to bylo docela zábavné a každopádně užitečné.

Po roce 1989  a konci studené války se změnil politický pohled na svět. Začali jsme žít v iluzi že svět už bude pouze lepší, armádu a civilní obranu již nebude potřeba. A podle toho jsme se začali i chovat. Rušili jsme zbrojní továrny, zrušili jsme základní vojenskou službu a z armády jsme udělali větší expediční sbor.  Poměrně propracovanou koncepci civilní obrany jsme postupně nechali vyhnít a také jsme vyhodnotili brannou výchovu jako nepotřebnou. To se změnilo 24. února 2022, v den kdy Rusko napadlo suverénní stát Ukrajinu. V tento den si celá Evropa a nejenom Evropa uvědomila, že naše iluze o tom, že se všichni budeme mít jenom rádi, je naprosto lichá. Že stále existují síly, které si chtějí urvat větší díl ze svého souseda a neštítí se ničeho ani války.

Poučení z vývoje na Ukrajině je mnoho, ale od samého začátku války se jasně ukázalo, že bez zapojení obyvatelstva do obrany státu, by se Ukrajina ubránit Rusku nedokázala.

Začátkem září jsem se účastnil konference pořádané spolkem Československý legionář. Stěžejním tématem této konference bylo zapojení veteránů do výchovy mládeže. Zaznělo zde více příspěvků. Některé zajímavé, některé méně, co mě ale nejvíc zaujalo bylo vystoupení ukrajinských dětí, členů organizace Mladých mírotvůrců.  Příběhy těchto dětí byly na jednu stranu velmi smutné, když si uvědomíte, že kvůli ambicím jednoho diktátorského režimu přišli ze dne na den o vše co měli rády. Na druhou stranu velmi inspirující, když popisovali jak jejich členové pomáhali během prvních dnů a týdnů války a jak jejich pomoc byla účinná.

Následně se rozvinula debata i se zástupcem MO, na téma zavedení branné přípravy do škol. Bohužel krom konstatování, že je to potřeba z této debaty nevzniklo v podstatě  nic. A je to škoda, protože na jedné straně máme děti a mládež, pro které by byla tato příprava přínosem, na straně druhé máme vojáky v záloze, kteří mají zkušenosti a rádi by je předávali dál, ale nevědí jak a kde.

Existují zde různé organizace a spolky, které se věnují práci s dětmi, ale je to nekoncepční řešení, založené a velké obětavosti těch kteří se v těchto organizacích práci s dětmi věnují. Ale co si budeme povídat, bez podpory státu je to dřív nebo později přestane bavit, ať už z důvodu věku nebo prostě už nebudou finance na to, aby tuto činnost dotovali. A pak je zde POKOS, který ovšem kromě příležitostných návštěv škol s ukázkou zbraní a besedou na téma armáda nedělá v podstatě nic.

Na konferenci také zaznělo z úst krajského velitele PČR, že i Policie řeší podobný problém s dopravní přípravou dětí na školách. Asi nejvíce mělo zaujalo jeho konstatování, že  školy nemají zájem o dopravní přípravu a pokud se to nedá do osnov, tak jejich veškerá snaha je k ničemu. Z toho vyplývá jediné. Jakákoliv snaha ze zdola je bez podpory úředníků nahoře odsouzena k nezdaru.

Nechci se zabývat dopravní přípravou. Sice jsem i bývalý policista, ale o dopravní přípravě vím pramálo. Ovšem téma branné přípravy mě zajímá a to nejenom jako bývalého vojáka, ale i jako tátu od čtyř dětí, který je přesvědčen o tom, že bychom se k tomuto konceptu branné přípravy našich dětí měli vrátit.

A jsem si jist, že stejně smýšlí i paní ministryně obrany, která se zapojením bývalých profesionálních vojáků do přípravy dětí zabývá.

V bodě 7 desatera MO se uvádí:

POKOS zapojení bývalých profesionálních vojáků a vojáků aktivní zálohy do besed na školách

  • Maximalizace množství navštívených škol na daném teritoriu za rok
  • Vzdělávání učitelů

Podle mého názoru je ovšem sedmý bod tohoto desatera nedostatečný a koncepčně špatný. Besedy s bývalými vojáky mohou být pro děti zajímavé a poučné, ale tím to končí. Protože když uděláme krok A a dětem armádu přiblížíme, měl by následovat i krok B. A těm dětem které o danou tématiku projeví zájem bychom měli nabídnout něco víc. Měli bychom podpořit branné kroužky, kam děti můžou  docházet a naučit se víc. K tomu aby to mělo smysl musí být tyto kroužky sdruženy v nějaké organizaci s celorepublikovou působností. Protože pak by se dala ujednotit i koncepce přípravy, dala by se koordinovat materiální vybavení atd. Druhou možností a podle mě mnohem efektivnější by bylo zavedení branné přípravy přímo do škol. Aby k tomu došlo, je ovšem nutná spolupráce mezi ministerstvem obrany a ministerstvem školství a brannou přípravu zařadit do  osnov.

Vzdělávání učitelů – další část bodu sedm desatera MO, je podle mého názoru také špatně. Učitelé jsou již dnes zahlceni, mají své specializace, svou výuku, hromadu papírování a představa, že si ještě přiberou brannou přípravu mi přijde nereálná. Máme zde ovšem mnoho válečných veteránů, kteří tyto znalosti mají. Pokud se vytvoří jednotná koncepce výuky, tak jsem si jistý že se najde dostatek zkušených chlapů kteří budou schopni brannou přípravu učit. Další výhodou bude i to, že se mohou vytvořit pracovní místa pro bývalé vojáky. Umožníme jim zpětné začlení do společnosti, budou dělat to co umí a my můžeme jejich znalostí využít ve prospěch našich dětí.