-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Versão 1.1.1 - Organização de Pastas e melhorias no autocomplete do M…
…useusBR.
- Loading branch information
1 parent
3379e2d
commit 4940c35
Showing
10 changed files
with
681 additions
and
638 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
<?php | ||
|
||
/** | ||
* Funções com a lógica para fazer com que uma nova atividade criada puxe | ||
* os dados possíveis da Instituição que a criou. | ||
*/ | ||
|
||
/** | ||
* Define automaticamente o relacionamento da instituição com a atividade | ||
*/ | ||
function cne_preset_atividade_instituicao($item) { | ||
if ( $item instanceof \Tainacan\Entities\Item ) { | ||
$collection_id = $item->get_collection_id(); | ||
|
||
if ( $collection_id !== cne_get_instituicoes_collection_id() ) { | ||
|
||
$referer_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; | ||
if ( !empty($referer_url) ) { | ||
|
||
$query_string = parse_url($referer_url, PHP_URL_QUERY); | ||
parse_str($query_string, $params); | ||
$from_instituicao = $params['from-instituicao']; | ||
|
||
if ( $from_instituicao && is_numeric($from_instituicao) ) { | ||
|
||
$instituicao_metadatum = new \Tainacan\Entities\Metadatum( cne_get_instituicoes_relationship_metadata_id() ); | ||
|
||
if ( $instituicao_metadatum instanceof \Tainacan\Entities\Metadatum ) { | ||
|
||
$new_instituicao_item_metadatum = new \Tainacan\Entities\Item_Metadata_Entity( $item, $instituicao_metadatum ); | ||
|
||
if ( !$new_instituicao_item_metadatum->has_value() ) { | ||
$new_instituicao_item_metadatum->set_value( $from_instituicao ); | ||
|
||
if ( $new_instituicao_item_metadatum->validate() ) { | ||
\Tainacan\Repositories\Item_Metadata::get_instance()->insert( $new_instituicao_item_metadatum ); | ||
|
||
cne_preset_atividade_data_from_instituicao($item, $from_instituicao); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
add_action('tainacan-insert', 'cne_preset_atividade_instituicao', 10, 1); | ||
|
||
/** | ||
* Pré-preenche os metadados da atividade com os dados da instituição | ||
*/ | ||
function cne_preset_atividade_data_from_instituicao($item_atividade, $instituicao_id) { | ||
|
||
$metadata_mapping = [ | ||
'109029' => '38402',// Região (Instituição) => Região (Atividade) | ||
'109034' => '38396', // Estado | ||
'109040' => '38390', // Cidade | ||
'109045' => '38386', // Bairro | ||
'109053' => '38388', // Endereço | ||
'109057' => '38384', // Complemento | ||
'109065' => '85235', // CEP | ||
'109049' => '38382', // Número | ||
'85237' => '85237', // Plus Code | ||
'109069' => '85239', // Geo Localização | ||
|
||
'85081' => '85081', // Telefone | ||
'85083' => '85083', // Telefone privado | ||
'85087' => '85087', // E-mail | ||
'85089' => '85089', // E-mail privado | ||
'85103' => '85103', // Site | ||
'85282' => '85282', // Redes Sociais | ||
]; | ||
|
||
$child_metadata_mapping = [ | ||
'85286' => '85286', // ... => Facebook | ||
'85309' => '85309', // ... => YouTube | ||
'85303' => '85303', // ... => Instagram | ||
'85316' => '85316', // ... => TikTok | ||
'85295' => '85295', // ... => Twitter | ||
'85421' => '85421' // ... => Outra rede social | ||
]; | ||
|
||
$tainacan_items_repository = \Tainacan\Repositories\Items::get_instance(); | ||
$item_instituicao = $tainacan_items_repository->fetch($instituicao_id, cne_get_instituicoes_collection_id()); | ||
|
||
if ( $item_instituicao instanceof \Tainacan\Entities\Item ) { | ||
|
||
// Percorre os metadados da instituição e copia para a atividade | ||
foreach($metadata_mapping as $instituicao_metadatum_id => $atividade_metadatum_id) { | ||
|
||
$instituicao_metadatum = new \Tainacan\Entities\Metadatum( $instituicao_metadatum_id ); | ||
$atividade_metadatum = new \Tainacan\Entities\Metadatum( $atividade_metadatum_id ); | ||
|
||
// Verifica se os dois objetos de metadados foram montados corretamente | ||
if ( $instituicao_metadatum instanceof \Tainacan\Entities\Metadatum && $atividade_metadatum instanceof \Tainacan\Entities\Metadatum ) { | ||
|
||
$instituicao_item_metadatum = new \Tainacan\Entities\Item_Metadata_Entity( $item_instituicao, $instituicao_metadatum ); | ||
|
||
if ( $instituicao_item_metadatum->has_value() ) { | ||
|
||
$atividade_item_metadatum = new \Tainacan\Entities\Item_Metadata_Entity( $item_atividade, $atividade_metadatum ); | ||
|
||
// Insere o valor no metadado apenas se ele ainda não tiver sido preenchido | ||
if ( !$atividade_item_metadatum->has_value() ) { | ||
|
||
// No caso do metadado composto, percorre o vetor de metadados filhos | ||
if ( $instituicao_metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' && $atividade_metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' ) { | ||
|
||
if ( !$instituicao_metadatum->is_multiple() ) { | ||
|
||
$instituicao_child_item_metadata = $instituicao_item_metadatum->get_value(); | ||
|
||
$parent_meta_id = null; | ||
foreach ($instituicao_child_item_metadata as $child_instituicao_metadatum_id => $instituicao_child_item_metadatum) { | ||
$atividade_child_metadatum = false; | ||
|
||
if ( $instituicao_child_item_metadatum->has_value() ) { | ||
|
||
$atividade_child_metadatum = new \Tainacan\Entities\Metadatum( $child_metadata_mapping[$child_instituicao_metadatum_id] ); | ||
|
||
if ( $atividade_child_metadatum instanceof \Tainacan\Entities\Metadatum ) { | ||
$atividade_child_item_metadatum = new \Tainacan\Entities\Item_Metadata_Entity( $item_atividade, $atividade_child_metadatum, null, $parent_meta_id ); | ||
$atividade_child_item_metadatum->set_value( $instituicao_child_item_metadatum->get_value() ); | ||
|
||
if ( $atividade_child_item_metadatum->validate() ) { | ||
$updated_atividade_child_metadum = \Tainacan\Repositories\Item_Metadata::get_instance()->insert( $atividade_child_item_metadatum ); | ||
$parent_meta_id = $updated_atividade_child_metadum->get_parent_meta_id(); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} else { | ||
|
||
if ( | ||
$instituicao_metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy' && | ||
$atividade_metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy' | ||
) { | ||
|
||
$terms = $instituicao_item_metadatum->get_value(); | ||
|
||
if ( false == $terms || null == $terms ) | ||
continue; | ||
|
||
if ( is_array( $terms ) ) { | ||
$terms = array_map( function($term) { | ||
return is_object($term) && $term instanceof \Tainacan\Entities\Term ? $term->get_name() : null; | ||
}, $terms ); | ||
$terms = array_filter( $terms, function($term) { | ||
return null != $term && !empty($term); | ||
}); | ||
} else { | ||
$terms = is_object($terms) && $terms instanceof \Tainacan\Entities\Term ? $terms->get_name() : null; | ||
} | ||
|
||
if ( false == $terms || null == $terms || empty($terms) || !count($terms) ) | ||
continue; | ||
|
||
$atividade_item_metadatum->set_value( $terms ); | ||
|
||
if ( $atividade_item_metadatum->validate() ) { | ||
\Tainacan\Repositories\Item_Metadata::get_instance()->insert( $atividade_item_metadatum ); | ||
} | ||
|
||
} else { | ||
$atividade_item_metadatum->set_value( $instituicao_item_metadatum->get_value() ); | ||
|
||
if ( $atividade_item_metadatum->validate() ) { | ||
\Tainacan\Repositories\Item_Metadata::get_instance()->insert( $atividade_item_metadatum ); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
<?php | ||
|
||
/** | ||
* Alterações gerais feitas pelo tema que impactam na parte pública do site | ||
*/ | ||
|
||
/** | ||
* Carregas estilos básicos do tema | ||
*/ | ||
add_action( 'wp_enqueue_scripts', function () { | ||
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); | ||
|
||
wp_enqueue_style( 'cne-tainacan-icons', get_stylesheet_directory_uri() . '/assets/css/icons-tweaks.css', array(), wp_get_theme()->get('Version') ); | ||
wp_enqueue_style( 'view-mode-cnegrid', get_stylesheet_directory_uri() . '/assets/css/view-mode-cnegrid.css', array(), wp_get_theme()->get('Version') ); | ||
|
||
if ( is_page( 'cadastro' ) ) | ||
wp_enqueue_script( 'cne-register-form-script', get_stylesheet_directory_uri() . '/assets/js/register-form.js', array(), wp_get_theme()->get('Version'), true ); | ||
|
||
if ( is_singular() && cne_get_instituicoes_collection_post_type() == get_post_type() ) | ||
wp_enqueue_style( 'cne-instituicao-single', get_stylesheet_directory_uri() . '/assets/css/instituicao-single.css', array(), wp_get_theme()->get('Version') ); | ||
|
||
if ( is_singular() && cne_is_post_type_a_tainacan_collection( get_post_type() ) && cne_get_instituicoes_collection_post_type() != get_post_type() ) | ||
wp_enqueue_style( 'cne-atividade-single', get_stylesheet_directory_uri() . '/assets/css/atividade-single.css', array(), wp_get_theme()->get('Version') ); | ||
|
||
wp_enqueue_style( 'cne-style', get_stylesheet_uri(), array(), wp_get_theme()->get('Version') ); | ||
}); | ||
|
||
/** | ||
* Lista somente os itens das coleções de eventos no nível repositório (Página da Agenda Cultural) | ||
*/ | ||
function cne_fetch_args_posts_items_repository( $args, $entity ) { | ||
|
||
if ( $entity !== 'items' || !isset($args['post_type']) || count($args['post_type']) <= 1 ) | ||
return $args; | ||
|
||
$referer_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; | ||
if ( !empty($referer_url) ) { | ||
$path_string = parse_url($referer_url, PHP_URL_PATH); | ||
|
||
if ( $path_string === '/itens/' || $path_string === '/items/') { | ||
$args['post_type'] = array_filter( | ||
$args['post_type'], | ||
function($collection_post_type) { | ||
return $collection_post_type !== cne_get_instituicoes_collection_post_type(); | ||
} | ||
); | ||
} | ||
} | ||
|
||
return $args; | ||
} | ||
add_filter( 'tainacan-fetch-args', 'cne_fetch_args_posts_items_repository', 11, 2 ); | ||
|
||
/* Registra modos de visualização Tainacan para o VisiteMuseus */ | ||
function cne_register_tainacan_view_modes() { | ||
if ( function_exists( 'tainacan_register_view_mode' ) ) { | ||
|
||
// Cartão de Atividades | ||
tainacan_register_view_mode('cnegrid', array( | ||
'label' => 'Cartão do Visite Museus', | ||
'description' => 'Uma grade de itens de atividades e instituições feita para o VisiteMUSEUS', | ||
'icon' => '<span class="icon"><i class="tainacan-icon tainacan-icon-viewcards tainacan-icon-1-25em"></i></span>', | ||
'dynamic_metadata' => false, | ||
'template' => get_stylesheet_directory() . '/tainacan/view-mode-cnegrid.php' | ||
)); | ||
|
||
// Cartão de Instituição | ||
tainacan_register_view_mode('cnegrid2', array( | ||
'label' => 'Cartão de instituição', | ||
'description' => 'Uma grade de itens de instituições feita para o VisiteMUSEUS', | ||
'icon' => '<span class="icon"><i class="tainacan-icon tainacan-icon-viewrecords tainacan-icon-1-25em"></i></span>', | ||
'dynamic_metadata' => false, | ||
'template' => get_stylesheet_directory() . '/tainacan/view-mode-cnegrid.php' | ||
)); | ||
} | ||
} | ||
add_action( 'after_setup_theme', 'cne_register_tainacan_view_modes' ); | ||
|
||
/* Define o novo cartões do VisiteMuseus como modo de visualização padrão */ | ||
function cne_set_default_view_mode($default) { | ||
if ( !is_admin() ) | ||
return 'cnegrid'; | ||
|
||
return $default; | ||
} | ||
add_filter( 'tainacan-default-view-mode-for-themes', 'cne_set_default_view_mode', 10, 1 ); | ||
|
||
/* Permite que apenas os cartões do VisiteMuseus estejam disponíveis como modos de visualição */ | ||
function cne_set_enabled_view_modes($registered_view_modes_slugs) { | ||
|
||
if ( !is_admin() ) | ||
return [ 'cnegrid', 'cnegrid2' ]; | ||
|
||
return $registered_view_modes_slugs; | ||
} | ||
add_filter( 'tainacan-enabled-view-modes-for-themes', 'cne_set_enabled_view_modes', 10, 1 ); | ||
|
||
/** | ||
* Adiciona a informação do post type nos cartões da busca. Isso ajuda a diferenciar | ||
* os tipos de conteúdo nas listagens genéricas | ||
*/ | ||
function cne_add_post_type_to_card() { | ||
if ( is_search() ) { | ||
$post_type_object = get_post_type_object( get_post_type() ); | ||
|
||
if ( !$post_type_object ) | ||
return; | ||
|
||
if ( !$post_type_object->labels || !$post_type_object->labels->singular_name ) | ||
return; | ||
|
||
$post_type_label = $post_type_object->labels->singular_name; | ||
?> | ||
<ul class="entry-meta" data-type="simple:slash" data-id="meta_2"> | ||
<li class="meta-post-type" itemprop="type"> | ||
<span itemprop="name"> <?php echo $post_type_label; ?></span> | ||
</li> | ||
</ul> | ||
<?php | ||
} | ||
} | ||
add_action('blocksy:loop:card:end', 'cne_add_post_type_to_card', 10); | ||
|
||
/** | ||
* Adiciona classes ao body para identificar se o usuário está filtrando por uma coleção. | ||
* Com esta classe conseguimos esconder os filtros de data (nível repositório) no contexto | ||
* das listas de itens de termos usados pelas instituições. | ||
*/ | ||
function cne_add_collection_id_filtering_to_body_class( $classes ) { | ||
$current_metaquery = isset($_GET['metaquery']) ? $_GET['metaquery'] : false; | ||
|
||
if ( !$current_metaquery || !count( $current_metaquery ) ) | ||
return $classes; | ||
|
||
foreach( $current_metaquery as $metaquery ) { | ||
if ( isset($metaquery['value']) && isset($metaquery['key']) && $metaquery['key'] === 'collection_id' ) { | ||
if ( is_array( $metaquery['value'] ) ) { | ||
foreach ($metaquery['value'] as $value) { | ||
$classes[] = 'filtered-by-collection-' . $value; | ||
} | ||
} else { | ||
$classes[] = 'filtered-by-collection-' . $metaquery['value']; | ||
} | ||
|
||
break; | ||
} | ||
} | ||
|
||
return $classes; | ||
} | ||
add_filter( 'body_class', 'cne_add_collection_id_filtering_to_body_class' ); | ||
|
||
/** | ||
* Muda ícone de conta que aparece no cabeçalho do site | ||
*/ | ||
add_filter('blocksy:header:account:icons', function ($icon) { | ||
$icon['type-1'] = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||
<mask id="mask0_669_2704" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24"> | ||
<rect width="24" height="24" fill="var(--theme-icon-color, var(--theme-text-color))"/> | ||
</mask> | ||
<g mask="url(#mask0_669_2704)"> | ||
<path d="M5 17V10H7V17H5ZM11 17V10H13V17H11ZM2 21V19H22V21H2ZM17 17V10H19V17H17ZM2 8V6L12 1L22 6V8H2ZM6.45 6H17.55L12 3.25L6.45 6Z" fill="var(--theme-icon-color, var(--theme-text-color))"/> | ||
</g> | ||
</svg>'; | ||
return $icon; | ||
}); | ||
|
||
/* Desabilita os recursos de Google fontes do Blocksy já que ele não é necessário */ | ||
add_filter('blocksy:typography:google:use-remote', function () { | ||
return false; | ||
}); | ||
add_filter('blocksy_typography_font_sources', function ($sources) { | ||
unset($sources['google']); | ||
return $sources; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-notices'), 'version' => '9ee7187f0b62ec0b9352'); | ||
<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-notices'), 'version' => '031d2fea3e141c90d75a'); |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.