Merge branch 'develop' of github.com:tainacan/tainacan into develop
This commit is contained in:
commit
d17fcb7532
|
@ -390,14 +390,14 @@ class REST_Metadata_Sections_Controller extends REST_Controller {
|
|||
public function delete_item( $request ) {
|
||||
$metadata_section_id = $request['metadata_section_id'];
|
||||
$metadatum_section = $this->metadata_sections_repository->fetch($metadata_section_id);
|
||||
if (! $metadatum_section instanceof Entities\Metadatum) {
|
||||
if (! $metadatum_section instanceof Entities\Metadata_Section) {
|
||||
return new \WP_REST_Response([
|
||||
'error_message' => __('Metadata with this ID was not found', 'tainacan'),
|
||||
'error_message' => __('Metadata section with this ID was not found', 'tainacan'),
|
||||
'item_id' => $metadata_section_id
|
||||
], 400);
|
||||
}
|
||||
|
||||
$metadatum_section_trashed = $this->metadata_sections_repository->trash($metadatum_section);
|
||||
$metadatum_section_trashed = $this->metadata_sections_repository->delete($metadatum_section);
|
||||
$prepared = $this->prepare_item_for_response($metadatum_section_trashed, $request);
|
||||
return new \WP_REST_Response($prepared, 200);
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ class Metadata extends Repository {
|
|||
|
||||
add_action('tainacan-insert-tainacan-taxonomy', [$this, 'hook_taxonomies_saved_as_private']);
|
||||
add_action('tainacan-insert-tainacan-taxonomy', [$this, 'hook_taxonomies_saved_not_allow_insert_new_terms']);
|
||||
add_action('tainacan-insert-tainacan-metadatum', [$this, 'hook_metadata_update_order']);
|
||||
|
||||
}
|
||||
|
||||
|
@ -1734,4 +1735,38 @@ class Metadata extends Repository {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* When a metadata is saved, if the metadata section changes, the ordering needs to be updated
|
||||
*
|
||||
* @param \Tainacan\Entities\Metadatum $metadata
|
||||
* @return void
|
||||
*/
|
||||
public function hook_metadata_update_order($metadata) {
|
||||
$tainacan_metadata_sections_repository = \tainacan_metadata_sections();
|
||||
$tainacan_collections_repository = \tainacan_collections();
|
||||
$metadata_section_id = $metadata->get_metadata_section_id();
|
||||
$metadata_section = $tainacan_metadata_sections_repository->fetch($metadata_section_id);
|
||||
if ( $metadata_section instanceof \Tainacan\Entities\Metadata_Section ) {
|
||||
$collection = $metadata_section->get_collection();
|
||||
$metadata_sections_order = $collection->get_metadata_section_order();
|
||||
if( empty($metadata_sections_order) ) {
|
||||
return;
|
||||
}
|
||||
foreach( $metadata_sections_order as &$metadata_section_order ) {
|
||||
$pos = array_search($metadata->get_id(), array_column($metadata_section_order['metadata_order'], 'id'));
|
||||
if($pos !== false) {
|
||||
if( $metadata_section_id != $metadata_section_order['id']) {
|
||||
array_splice($metadata_section_order['metadata_order'], $pos, 1);
|
||||
}
|
||||
} else if($metadata_section_id == $metadata_section_order['id']) {
|
||||
$metadata_section_order['metadata_order'][] = ["id" => $metadata->get_id(), "enabled" => $metadata->get_enabled_for_collection()];
|
||||
}
|
||||
}
|
||||
$collection->set_metadata_section_order($metadata_sections_order);
|
||||
if($collection->validate()) {
|
||||
$tainacan_collections_repository->update($collection);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -71,3 +71,12 @@ function tainacan_terms() {
|
|||
function tainacan_roles() {
|
||||
return \Tainacan\Roles::get_instance();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the singleton Metadata Repository instance
|
||||
* @return \Tainacan\Repositories\Metadata The Tainacan Metadata Repository
|
||||
*/
|
||||
function tainacan_metadata_sections() {
|
||||
return \Tainacan\Repositories\Metadata_Sections::get_instance();
|
||||
}
|
||||
|
|
|
@ -319,6 +319,22 @@ class MetadataSection extends TAINACAN_UnitTestCase {
|
|||
$this->assertFalse($metadata_ordinate_enabled[1]->get_enabled_for_collection());
|
||||
$this->assertTrue($metadata_ordinate_enabled[2]->get_enabled_for_collection());
|
||||
|
||||
//changing the metadata section of the metadata without changing the ordering
|
||||
$metadatum2->set_metadata_section_id($metadata_section_a->get_id());
|
||||
$this->assertTrue($metadatum2->validate(), json_encode($metadatum2->get_errors()));
|
||||
$Tainacan_Metadata->update($metadatum2);
|
||||
|
||||
$metadatum_c->set_metadata_section_id($metadata_section_1->get_id());
|
||||
$this->assertTrue($metadatum_c->validate(), json_encode($metadatum_c->get_errors()));
|
||||
$Tainacan_Metadata->update($metadatum_c);
|
||||
|
||||
$metadata_ordinate_enabled = $Tainacan_Metadata->fetch_by_collection( $update_collection, [ 'include_disabled' => true ] );
|
||||
$this->assertEquals( 8, count($metadata_ordinate_enabled) );
|
||||
$this->assertEquals( 'metadatum3', $metadata_ordinate_enabled[0]->get_name() );
|
||||
$this->assertEquals( 'metadatum_b', $metadata_ordinate_enabled[3]->get_name() );
|
||||
$this->assertEquals( 'metadatum2', $metadata_ordinate_enabled[5]->get_name() );
|
||||
$this->assertEquals( 'metadatum_c', $metadata_ordinate_enabled[2]->get_name() );
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue