diff --git a/src/classes/api/endpoints/class-tainacan-rest-metadata-section-controller.php b/src/classes/api/endpoints/class-tainacan-rest-metadata-sections-controller.php similarity index 86% rename from src/classes/api/endpoints/class-tainacan-rest-metadata-section-controller.php rename to src/classes/api/endpoints/class-tainacan-rest-metadata-sections-controller.php index a63da5089..7297ae3c2 100644 --- a/src/classes/api/endpoints/class-tainacan-rest-metadata-section-controller.php +++ b/src/classes/api/endpoints/class-tainacan-rest-metadata-sections-controller.php @@ -6,7 +6,7 @@ use \Tainacan\API\REST_Controller; use Tainacan\Entities; use Tainacan\Repositories; -class REST_Metadata_Section_Controller extends REST_Controller { +class REST_Metadata_Sections_Controller extends REST_Controller { public function __construct() { parent::__construct(); $this->rest_base = 'metadata-sections'; @@ -19,8 +19,8 @@ class REST_Metadata_Section_Controller extends REST_Controller { * @throws \Exception */ public function init_objects() { - $this->metadatum_section_repository = Repositories\Metadata_Section::get_instance(); - $this->metadatum_repository = Repositories\Metadata::get_instance(); + $this->metadata_sections_repository = Repositories\Metadata_Sections::get_instance(); + $this->metadata_repository = Repositories\Metadata::get_instance(); } /** @@ -84,23 +84,23 @@ class REST_Metadata_Section_Controller extends REST_Controller { 'schema' => [$this, 'get_schema'] ) ); - register_rest_route($this->namespace, '/collection/(?P[\d]+)/' . $this->rest_base . '/(?P[\d]+)/metadatum', + register_rest_route($this->namespace, '/collection/(?P[\d]+)/' . $this->rest_base . '/(?P[\d]+)/metadata', array( array( 'methods' => \WP_REST_Server::READABLE, - 'callback' => array($this, 'get_metadatum_list'), + 'callback' => array($this, 'get_metadata_list'), 'permission_callback' => array($this, 'get_items_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::CREATABLE), ), array( 'methods' => \WP_REST_Server::CREATABLE, - 'callback' => array($this, 'add_metadatum'), + 'callback' => array($this, 'add_metadata'), 'permission_callback' => array($this, 'update_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::EDITABLE), ), array( 'methods' => \WP_REST_Server::DELETABLE, - 'callback' => array($this, 'delete_metadatum'), + 'callback' => array($this, 'delete_metadata'), 'permission_callback' => array($this, 'update_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::EDITABLE), ), @@ -125,7 +125,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { $number = $request['number']; } - $result = $this->metadatum_section_repository->fetch($metadatum_id, 'OBJECT'); + $result = $this->metadata_sections_repository->fetch($metadatum_id, 'OBJECT'); if (! $result instanceof Entities\Metadatum) { return new \WP_REST_Response([ @@ -144,7 +144,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { * @throws \Exception */ public function get_item_permissions_check( $request ) { - $metadatum = $this->metadatum_section_repository->fetch($request['metadatum_id']); + $metadatum = $this->metadata_sections_repository->fetch($request['metadatum_id']); if ( $metadatum instanceof Entities\Metadatum ) { return $metadatum->can_read(); @@ -165,15 +165,15 @@ class REST_Metadata_Section_Controller extends REST_Controller { if($collection_id == null) { throw new \InvalidArgumentException('You need provide a collection id'); } - $metadatum_section = new Entities\Metadatum_Section(); + $metadata_section = new Entities\Metadata_Section(); $meta = json_decode( $request, true ); foreach ( $meta as $key => $value ) { $set_ = 'set_' . $key; - $metadatum_section->$set_( $value ); + $metadata_section->$set_( $value ); } $collection = new Entities\Collection( $collection_id ); - $metadatum_section->set_collection( $collection ); - return $metadatum_section; + $metadata_section->set_collection( $collection ); + return $metadata_section; } /** @@ -193,8 +193,8 @@ class REST_Metadata_Section_Controller extends REST_Controller { } if($prepared->validate()) { - $metadatum_section = $this->metadatum_section_repository->insert($prepared); - $response = $this->prepare_item_for_response($metadatum_section, $request); + $metadata_section = $this->metadata_sections_repository->insert($prepared); + $response = $this->prepare_item_for_response($metadata_section, $request); return new \WP_REST_Response($response, 201); } else { return new \WP_REST_Response([ @@ -251,12 +251,12 @@ class REST_Metadata_Section_Controller extends REST_Controller { // $item_arr['enabled'] = $item->get_enabled_for_collection(); } - if( !empty($item_arr['metadatum_list']) ) { - $metadatum_list = $item_arr['metadatum_list']; - $item_arr['metadatum_object_list'] = []; - foreach($metadatum_list as $metadatum_id) { - $meta = $this->metadatum_repository->fetch($metadatum_id, 'OBJECT'); - $item_arr['metadatum_object_list'][] = $meta->_toArray(); + if( !empty($item_arr['metadata_list']) ) { + $metadata_list = $item_arr['metadata_list']; + $item_arr['metadata_object_list'] = []; + foreach($metadata_list as $metadatum_id) { + $meta = $this->metadata_repository->fetch($metadatum_id, 'OBJECT'); + $item_arr['metadata_object_list'][] = $meta->_toArray(); } } @@ -267,7 +267,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { * * Also take care to do any permissions verification before exposing the data */ - $extra_metadata = apply_filters('tainacan-api-response-metadatum-section-meta', [], $request); + $extra_metadata = apply_filters('tainacan-api-response-metadata-section-meta', [], $request); foreach ($extra_metadata as $extra_meta) { $item_arr[$extra_meta] = get_post_meta($item_arr['id'], $extra_meta, true); @@ -295,7 +295,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { $collection = new Entities\Collection( $collection_id ); - $result = $this->metadatum_section_repository->fetch_by_collection( $collection, $args ); + $result = $this->metadata_sections_repository->fetch_by_collection( $collection, $args ); } $prepared_item = []; @@ -341,7 +341,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { public function delete_item( $request ) { $metadatum_id = $request['metadatum_id']; - $metadatum = $this->metadatum_section_repository->fetch($metadatum_id); + $metadatum = $this->metadata_sections_repository->fetch($metadatum_id); if (! $metadatum instanceof Entities\Metadatum) { return new \WP_REST_Response([ @@ -350,7 +350,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { ], 400); } - $metadatum_trashed = $this->metadatum_section_repository->trash($metadatum); + $metadatum_trashed = $this->metadata_sections_repository->trash($metadatum); $prepared = $this->prepare_item_for_response($metadatum_trashed, $request); @@ -364,7 +364,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { * @throws \Exception */ public function delete_item_permissions_check( $request ) { - $metadatum = $this->metadatum_section_repository->fetch($request['metadatum_id']); + $metadatum = $this->metadata_sections_repository->fetch($request['metadatum_id']); if ($metadatum instanceof Entities\Metadatum) { return $metadatum->can_delete(); @@ -396,7 +396,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { $attributes[$att] = $value; } - $metadatum = $this->metadatum_section_repository->fetch($metadatum_id); + $metadatum = $this->metadata_sections_repository->fetch($metadatum_id); $error_message = __('Metadata with this ID was not found', 'tainacan'); @@ -425,7 +425,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { $prepared_metadata = $this->prepare_item_for_updating($metadatum, $attributes); if($prepared_metadata->validate()){ - $updated_metadata = $this->metadatum_section_repository->update($prepared_metadata); + $updated_metadata = $this->metadata_sections_repository->update($prepared_metadata); $response = $this->prepare_item_for_response($updated_metadata, $request); @@ -455,17 +455,17 @@ class REST_Metadata_Section_Controller extends REST_Controller { if( !empty($request->get_body()) && isset($request['metadata_section_id']) ){ $body = json_decode($request->get_body(), true); $metadata_section_id = $request['metadata_section_id']; - $metadatum_list = $body['metadatum_list']; + $metadata_list = $body['metadata_list']; try { - $metadatum_section = $this->metadatum_section_repository->add_metadatum($metadata_section_id, $metadatum_list); - if($metadatum_section == false) { + $metadata_section = $this->metadata_sections_repository->add_metadatum($metadata_section_id, $metadata_list); + if($metadata_section == false) { return new \WP_REST_Response([ 'error_message' => __('One or more values are invalid.', 'tainacan'), 'item' => $request->get_body() ], 400); } - $response = $this->prepare_item_for_response($metadatum_section, $request); + $response = $this->prepare_item_for_response($metadata_section, $request); return new \WP_REST_Response($response, 201); } catch (\Exception $exception) { return new \WP_REST_Response($exception->getMessage(), 400); @@ -481,17 +481,17 @@ class REST_Metadata_Section_Controller extends REST_Controller { if( !empty($request->get_body()) && isset($request['metadata_section_id']) ){ $body = json_decode($request->get_body(), true); $metadata_section_id = $request['metadata_section_id']; - $metadatum_list = $body['metadatum_list']; + $metadata_list = $body['metadata_list']; try { - $metadatum_section = $this->metadatum_section_repository->delete_metadatum($metadata_section_id, $metadatum_list); - if($metadatum_section == false) { + $metadata_section = $this->metadata_sections_repository->delete_metadatum($metadata_section_id, $metadata_list); + if($metadata_section == false) { return new \WP_REST_Response([ 'error_message' => __('One or more values are invalid.', 'tainacan'), 'item' => $request->get_body() ], 400); } - $response = $this->prepare_item_for_response($metadatum_section, $request); + $response = $this->prepare_item_for_response($metadata_section, $request); return new \WP_REST_Response($response, 201); } catch (\Exception $exception) { return new \WP_REST_Response($exception->getMessage(), 400); @@ -503,12 +503,12 @@ class REST_Metadata_Section_Controller extends REST_Controller { ], 400); } - public function get_metadatum_list( $request ) { + public function get_metadata_list( $request ) { if(isset($request['metadata_section_id']) ){ $metadata_section_id = $request['metadata_section_id']; try { - $result = $this->metadatum_section_repository->get_metadatum_list($metadata_section_id); + $result = $this->metadata_sections_repository->get_metadata_list($metadata_section_id); $prepared_item = []; foreach ( $result as $item ) { $prepared_item[] = $item->_toArray(); @@ -532,7 +532,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { */ public function update_item_permissions_check( $request ) { return true; - $metadatum = $this->metadatum_section_repository->fetch($request['metadatum_id']); + $metadatum = $this->metadata_sections_repository->fetch($request['metadatum_id']); if ($metadatum instanceof Entities\Metadatum) { return $metadatum->can_edit(); @@ -575,7 +575,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { parent::get_wp_query_params() ); } elseif ($method === \WP_REST_Server::CREATABLE || $method === \WP_REST_Server::EDITABLE) { - $map = $this->metadatum_section_repository->get_map(); + $map = $this->metadata_sections_repository->get_map(); foreach ($map as $mapped => $value){ $set_ = 'set_'. $mapped; @@ -599,7 +599,7 @@ class REST_Metadata_Section_Controller extends REST_Controller { 'type' => 'object' ]; - $main_schema = parent::get_repository_schema( $this->metadatum_section_repository ); + $main_schema = parent::get_repository_schema( $this->metadata_sections_repository ); $permissions_schema = parent::get_permissions_schema(); // $item_metadata_scheme = parent::get_repository_schema( $this->item_metadata_repository ); diff --git a/src/classes/api/tainacan-rest-creator.php b/src/classes/api/tainacan-rest-creator.php index e7c301fec..14d3dbe1d 100644 --- a/src/classes/api/tainacan-rest-creator.php +++ b/src/classes/api/tainacan-rest-creator.php @@ -22,7 +22,7 @@ $rest_oaipmh_expose_controller = new \Tainacan\API\EndPoints\REST_Oaipmh_ $rest_item_metadata_controller = new \Tainacan\API\EndPoints\REST_Item_Metadata_Controller(); $rest_sequence_edit_controller = new \Tainacan\API\EndPoints\REST_Sequence_Edit_Controller(); $rest_metadata_types_controller = new \Tainacan\API\EndPoints\REST_Metadata_Types_Controller(); -$rest_metadata_section_controller = new \Tainacan\API\EndPoints\REST_Metadata_Section_Controller(); +$rest_metadata_sections_controller = new \Tainacan\API\EndPoints\REST_Metadata_Sections_Controller(); $rest_metadatum_mappers_controller = new \Tainacan\API\EndPoints\REST_Metadatum_Mappers_Controller(); $rest_background_processes_controller = new \Tainacan\API\EndPoints\REST_Background_Processes_Controller(); // Add here other endpoints imports diff --git a/src/classes/entities/class-tainacan-metadatum-section.php b/src/classes/entities/class-tainacan-metadata-section.php similarity index 69% rename from src/classes/entities/class-tainacan-metadatum-section.php rename to src/classes/entities/class-tainacan-metadata-section.php index 80eb62e33..5b2a0a58e 100644 --- a/src/classes/entities/class-tainacan-metadatum-section.php +++ b/src/classes/entities/class-tainacan-metadata-section.php @@ -7,7 +7,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); /** * Represents the Entity Metadatum */ -class Metadatum_Section extends Entity { +class Metadata_Section extends Entity { // Collection getter and setter declared here use \Tainacan\Traits\Entity_Collection_Relation; @@ -16,7 +16,7 @@ class Metadatum_Section extends Entity { $name, $slug, $description, - $metadatum_list; + $metadata_list; /** * {@inheritDoc} @@ -26,11 +26,11 @@ class Metadatum_Section extends Entity { protected $repository = 'Metadata_Section'; public function __toString() { - return apply_filters("tainacan-metadatum-section-to-string", $this->get_name(), $this); + return apply_filters("tainacan-metadata-section-to-string", $this->get_name(), $this); } /** - * Return the metadatum section name + * Return the metadata section name * * @return string */ @@ -39,7 +39,7 @@ class Metadatum_Section extends Entity { } /** - * Get metadatum section slug + * Get metadata section slug * * @return string */ @@ -48,7 +48,7 @@ class Metadatum_Section extends Entity { } /** - * Return the metadatum section description + * Return the metadata section description * * @return string */ @@ -57,16 +57,16 @@ class Metadatum_Section extends Entity { } /** - * Return the metadatum_list of section + * Return the metadata_list of section * * @return [int] */ - function get_metadatum_list() { - return $this->get_mapped_property('metadatum_list'); + function get_metadata_list() { + return $this->get_mapped_property('metadata_list'); } /** - * Set the metadatum section name + * Set the metadata section name * * @param [string] $value * @return void @@ -76,9 +76,9 @@ class Metadatum_Section extends Entity { } /** - * Set the metadatum section slug + * Set the metadata section slug * - * If you dont set the metadatum slug, it will be set automatically based on the name and + * If you dont set the metadata slug, it will be set automatically based on the name and * following WordPress default behavior of creating slugs for posts. * * If you set the slug for an existing one, WordPress will append a number at the end of in order @@ -92,7 +92,7 @@ class Metadatum_Section extends Entity { } /** - * Set metadatum section description + * Set metadata section description * * @param [string] $value The text description * @return void @@ -103,26 +103,26 @@ class Metadatum_Section extends Entity { /** - * Set metadatum list of the section + * Set metadata list of the section * - * @param [string|int] $value The array of list metadatum + * @param [string|int] $value The array of metadata in this section * @return void */ - function set_metadatum_list($value) { - $this->set_mapped_property('metadatum_list', array_unique($value)); + function set_metadata_list($value) { + $this->set_mapped_property('metadata_list', array_unique($value)); } /** * {@inheritdoc } * - * Also validates the metadatum, calling the validate_options callback of the Metadatum Type + * Also validates the metadata, calling the validate_options callback of the Metadatum Type * * @return bool valid or not * @throws \Exception */ public function validate() { $no_errors = true; - $metadatum_list = $this->get_metadatum_list(); + $metadata_list = $this->get_metadata_list(); $name = $this->get_name(); $collection = $this->get_collection(); @@ -135,8 +135,8 @@ class Metadatum_Section extends Entity { $this->add_error($this->get_id(), __("name is required", 'tainacan')); $no_errors = false; } - if( !empty($metadatum_list) ) { - foreach($metadatum_list as $metadatum_id) { + if( !empty($metadata_list) ) { + foreach($metadata_list as $metadatum_id) { if(get_post_type($metadatum_id) != \Tainacan\Entities\Metadatum::$post_type ) { $this->add_error($this->get_id(), __("is not a valid metadata", 'tainacan')); $no_errors = false; diff --git a/src/classes/entities/class-tainacan-metadatum.php b/src/classes/entities/class-tainacan-metadatum.php index 8e5e38435..ea415eba7 100644 --- a/src/classes/entities/class-tainacan-metadatum.php +++ b/src/classes/entities/class-tainacan-metadatum.php @@ -25,7 +25,7 @@ class Metadatum extends Entity { $default_value, $metadata_type, $metadata_type_options, - $metadatum_section_id; + $metadata_section_id; // Collection getter and setter declared here use \Tainacan\Traits\Entity_Collection_Relation; @@ -254,12 +254,12 @@ class Metadatum extends Entity { } /** - * Return the metadatum_section_id + * Return the metadata_section_id * * @return string */ - function get_metadatum_section_id(){ - return $this->get_mapped_property('metadatum_section_id'); + function get_metadata_section_id(){ + return $this->get_mapped_property('metadata_section_id'); } /** @@ -450,8 +450,8 @@ class Metadatum extends Entity { * @param [string] $value * @return void */ - function set_metadatum_section_id( $value) { - return $this->set_mapped_property('metadatum_section_id', $value); + function set_metadata_section_id( $value) { + return $this->set_mapped_property('metadata_section_id', $value); } /** diff --git a/src/classes/repositories/class-tainacan-metadata-section.php b/src/classes/repositories/class-tainacan-metadata-sections.php similarity index 81% rename from src/classes/repositories/class-tainacan-metadata-section.php rename to src/classes/repositories/class-tainacan-metadata-sections.php index 29d6d27ec..fa72df316 100644 --- a/src/classes/repositories/class-tainacan-metadata-section.php +++ b/src/classes/repositories/class-tainacan-metadata-sections.php @@ -11,9 +11,9 @@ use \Respect\Validation\Validator as v; /** * Class Metadata */ -class Metadata_Section extends Repository { +class Metadata_Sections extends Repository { - public $entities_type = '\Tainacan\Entities\Metadatum_Section'; + public $entities_type = '\Tainacan\Entities\Metadata_Section'; private static $instance = null; protected function __construct() { @@ -59,7 +59,7 @@ class Metadata_Section extends Repository { 'map' => 'post_content', 'title' => __( 'Description', 'tainacan' ), 'type' => 'string', - 'description' => __( 'The metadatum section description.', 'tainacan' ), + 'description' => __( 'The metadata section description.', 'tainacan' ), 'default' => '', ], 'collection_id' => [ @@ -68,14 +68,14 @@ class Metadata_Section extends Repository { 'type' => ['integer', 'string'], 'description' => __( 'The collection ID', 'tainacan' ), ], - 'metadatum_list' => [ + 'metadata_list' => [ 'map' => 'meta', - 'title' => __( 'Metadatum list', 'tainacan' ), + 'title' => __( 'Metadata list', 'tainacan' ), 'type' => 'array', 'items' => [ 'type' => 'integer' ], - 'description' => __( 'The metadatum ID list', 'tainacan' ), + 'description' => __( 'The metadata ID list', 'tainacan' ), ] ] ); } @@ -87,7 +87,7 @@ class Metadata_Section extends Repository { */ public function get_cpt_labels() { return array( - 'name' => __( 'Metadata Section', 'tainacan' ), + 'name' => __( 'Metadata Sections', 'tainacan' ), 'singular_name' => __( 'Metadata Section', 'tainacan' ), 'add_new' => __( 'Add new', 'tainacan' ), 'add_new_item' => __( 'Add new Metadata Section', 'tainacan' ), @@ -125,24 +125,24 @@ class Metadata_Section extends Repository { 'page-attributes' ] ); - register_post_type( Entities\Metadatum_Section::get_post_type(), $args ); + register_post_type( Entities\Metadata_Section::get_post_type(), $args ); } /** - * fetch metadatum section based on ID or WP_Query args + * fetch metadata section based on ID or WP_Query args * - * metadatum section are stored as posts. Check WP_Query docs + * metadata section are stored as posts. Check WP_Query docs * to learn all args accepted in the $args parameter (@see https://developer.wordpress.org/reference/classes/wp_query/) * You can also use a mapped property, such as name and description, as an argument and it will be mapped to the * appropriate WP_Query argument * - * If a number is passed to $args, it will return a \Tainacan\Entities\Metadatum_Section object. But if the post is not found or + * If a number is passed to $args, it will return a \Tainacan\Entities\Metadata_Section object. But if the post is not found or * does not match the entity post type, it will return an empty array * - * @param array $args WP_Query args || int $args the metadatum section id + * @param array $args WP_Query args || int $args the metadata section id * @param string $output The desired output format (@see \Tainacan\Repositories\Repository::fetch_output() for possible values) * - * @return Entities\Metadatum_Section|\WP_Query|Array an instance of wp query OR array of entities; + * @return Entities\Metadata_Section|\WP_Query|Array an instance of wp query OR array of entities; * @throws \Exception */ public function fetch( $args, $output = null ) { @@ -151,7 +151,7 @@ class Metadata_Section extends Repository { $existing_post = get_post( $args ); if ( $existing_post instanceof \WP_Post ) { try { - return new Entities\Metadatum_Section( $existing_post ); + return new Entities\Metadata_Section( $existing_post ); } catch (\Exception $e) { return []; } @@ -164,7 +164,7 @@ class Metadata_Section extends Repository { ], $args ); $args = $this->parse_fetch_args( $args ); - $args['post_type'] = Entities\Metadatum_Section::get_post_type(); + $args['post_type'] = Entities\Metadata_Section::get_post_type(); $args = apply_filters( 'tainacan_fetch_args', $args, 'metadata-section' ); $wp_query = new \WP_Query( $args ); @@ -193,12 +193,12 @@ class Metadata_Section extends Repository { } /** - * fetch metadatum section by collection + * fetch metadata section by collection * * @param Entities\Collection $collection * @param array $args WP_Query args * - * @return array Entities\Metadatum_Section + * @return array Entities\Metadata_Section * @throws \Exception */ public function fetch_by_collection( Entities\Collection $collection, $args = [] ) { @@ -271,19 +271,19 @@ class Metadata_Section extends Repository { } /** - * @param \Tainacan\Entities\Metadatum_Section $metadatum_section + * @param \Tainacan\Entities\Metadata_Section $metadata_section * - * @return \Tainacan\Entities\Metadatum_Section + * @return \Tainacan\Entities\Metadata_Section * {@inheritDoc} * @see \Tainacan\Repositories\Repository::insert() */ - public function insert( $metadatum_section ) { - $new_metadatum_section = parent::insert( $metadatum_section ); - return $new_metadatum_section; + public function insert( $metadata_section ) { + $new_metadata_section = parent::insert( $metadata_section ); + return $new_metadata_section; } /** - * @param \Tainacan\Entities\Metadatum_Section $object + * @param \Tainacan\Entities\Metadata_Section $object * @param $new_values * * @return mixed|string|Entities\Entity @@ -293,12 +293,12 @@ class Metadata_Section extends Repository { return $this->insert( $object ); } - public function add_metadatum($metadata_section_id, $metadatum_list) { + public function add_metadatum($metadata_section_id, $metadata_list) { $metadata_section = $this->fetch($metadata_section_id); if ($metadata_section) { - $list = $metadata_section->get_metadatum_list(); - $metadatum_list = array_merge($list, $metadatum_list); - $metadata_section->set_metadatum_list($metadatum_list); + $list = $metadata_section->get_metadata_list(); + $metadata_list = array_merge($list, $metadata_list); + $metadata_section->set_metadata_list($metadata_list); if($metadata_section->validate()) { $metadata_section = $this->update($metadata_section); return $metadata_section; @@ -307,11 +307,11 @@ class Metadata_Section extends Repository { return false; } - public function delete_metadatum($metadata_section_id, $metadatum_list) { + public function delete_metadatum($metadata_section_id, $metadata_list) { $metadata_section = $this->fetch($metadata_section_id); - $list = $metadata_section->get_metadatum_list(); - $list = array_diff($list, $metadatum_list); - $metadata_section->set_metadatum_list($list); + $list = $metadata_section->get_metadata_list(); + $list = array_diff($list, $metadata_list); + $metadata_section->set_metadata_list($list); if($metadata_section->validate()) { $metadata_section = $this->update($metadata_section); return $metadata_section; @@ -319,13 +319,13 @@ class Metadata_Section extends Repository { return false; } - public function get_metadatum_list($metadata_section_id) { + public function get_metadata_list($metadata_section_id) { $metadata_section = $this->fetch($metadata_section_id); - $list = $metadata_section->get_metadatum_list(); + $list = $metadata_section->get_metadata_list(); $args = array('post__in' => $list); $metadata_repository = \Tainacan\Repositories\Metadata::get_instance(); - $metadatum_list = $metadata_repository->fetch($args, 'OBJECT'); - return $metadatum_list; + $metadata_list = $metadata_repository->fetch($args, 'OBJECT'); + return $metadata_list; } /** diff --git a/src/classes/repositories/class-tainacan-metadata.php b/src/classes/repositories/class-tainacan-metadata.php index 85e4b0c0f..87c93ad89 100644 --- a/src/classes/repositories/class-tainacan-metadata.php +++ b/src/classes/repositories/class-tainacan-metadata.php @@ -225,7 +225,7 @@ class Metadata extends Repository { // yes or no. It cant be multiple if its collection_key 'default' => 'no' ], - 'metadatum_section_id' => [ + 'metadata_section_id' => [ 'map' => 'meta', 'title' => __( 'Metadatum section', 'tainacan' ), 'type' => ['integer', 'string', 'array'], @@ -657,7 +657,7 @@ class Metadata extends Repository { $this->update_taxonomy_metadatum( $new_metadatum ); $this->update_metadata_type_index( $new_metadatum ); - $this->update_metadatum_section( $new_metadatum ); + $this->update_metadata_section( $new_metadatum ); return $new_metadatum; } @@ -1592,7 +1592,7 @@ class Metadata extends Repository { */ public function delete( Entities\Entity $entity, $permanent = true ) { $this->delete_taxonomy_metadatum($entity); - $this->update_metadatum_section($entity, true); + $this->update_metadata_section($entity, true); return parent::delete($entity, $permanent); } @@ -1724,12 +1724,12 @@ class Metadata extends Repository { } - public function update_metadatum_section( Entities\Metadatum $metadatum, $remove = false ) { - $metadatum_section_repository = Metadata_Section::get_instance(); + public function update_metadata_section( Entities\Metadatum $metadatum, $remove = false ) { + $metadata_section_repository = Metadata_Section::get_instance(); if (!$remove) { - $metadatum_section_repository->add_metadatum($metadatum->get_metadatum_section_id(), [$metadatum->get_id()]); + $metadata_section_repository->add_metadatum($metadatum->get_metadata_section_id(), [$metadatum->get_id()]); } else { - $metadatum_section_repository->delete_metadatum($metadatum->get_metadatum_section_id(), [$metadatum->get_id()]); + $metadata_section_repository->delete_metadatum($metadatum->get_metadata_section_id(), [$metadatum->get_id()]); } } diff --git a/src/views/admin/components/edition/metadata-section-edition-form.vue b/src/views/admin/components/edition/metadata-section-edition-form.vue new file mode 100644 index 000000000..2f99cfa92 --- /dev/null +++ b/src/views/admin/components/edition/metadata-section-edition-form.vue @@ -0,0 +1,382 @@ + + + + + + + diff --git a/src/views/admin/js/store/modules/metadata/actions.js b/src/views/admin/js/store/modules/metadata/actions.js index 7a606e724..8cb37d140 100644 --- a/src/views/admin/js/store/modules/metadata/actions.js +++ b/src/views/admin/js/store/modules/metadata/actions.js @@ -273,9 +273,9 @@ export const updateMetadatumMappers = ({commit}, metadatumMappers) => { }; // METADATA SECTIONS -export const fetchMetadataSections = ({commit}, collectionId) => { +export const fetchMetadataSections = ({commit}, {collectionId}) => { return new Promise((resolve, reject) => { - axios.tainacan.get('/collection/' + collectionId + '/metadatasection') + axios.tainacan.get('/collection/' + collectionId + '/metadata-sections') .then((res) => { let metadataSections = res.data; commit('setMetadataSections', metadataSections); @@ -287,6 +287,85 @@ export const fetchMetadataSections = ({commit}, collectionId) => { }); } +export const sendMetadataSection = ({commit}, { collectionId, name, status, newIndex }) => { + return new Promise((resolve, reject) => { + let endpoint = '/collection/' + collectionId + '/metadata-sections/'; + + endpoint += '?context=edit'; + + axios.tainacan.post(endpoint, { + name: name, + status: status, + }) + .then(res => { + let metadataSection = res.data; + commit('setSingleMetadataSection', { metadataSection: metadataSection, index: newIndex }); + + resolve(metadataSection); + }) + .catch(error => { + reject(error.response); + }); + }); +}; + + +export const updateMetadataSection = ({commit}, {collectionId, metadataSectionId, index, options }) => { + return new Promise((resolve, reject) => { + let endpoint = '/collection/' + collectionId + '/metadata/' + metadataSectionId; + + endpoint += '?context=edit'; + + axios.tainacan.put(endpoint, options) + .then(res => { + let metadataSection = res.data; + commit('setSingleMetadataSection', { metadataSection: metadataSection, index: index }); + resolve(metadataSection); + }) + .catch(error => { + reject({ + error_message: error['response']['data'].error_message, + errors: error['response']['data'].errors + }); + }); + }); +}; + +export const deleteMetadataSection = ({commit}, { collectionId, metadataSectionId }) => { + let endpoint = '/collection/' + collectionId + '/metadata-sections/' + metadataSectionId; + + return new Promise((resolve, reject) => { + axios.tainacan.delete(endpoint) + .then(res => { + const metadataSection = res.data; + commit('deleteMetadataSection', metadataSection); + resolve(res.data); + }).catch((error) => { + console.log(error); + reject(error); + }); + }); +}; + +export const updateMetadataSections = ({commit}, metadataSections) => { + commit('setMetadataSections', metadataSections); +}; + +export const updateCollectionMetadataSectionsOrder = ({ commit }, {collectionId, metadataSectionsOrder}) => { + + return new Promise((resolve, reject) => { + axios.tainacan.patch('/collections/' + collectionId + '/metadata_sections_order?context=edit', { + metadata_sections_order: metadataSectionsOrder + }).then(res => { + commit('collection/setCollection', res.data, { root: true }); + commit('updateMetadataSectionsOrderFromCollection', res.data.metadata_sections_order); + resolve(res.data); + }).catch(error => { + reject(error.response); + }); + }); +} + export const cleanMetadataSections = ({commit}) => { commit('cleanMetadataSections'); }; diff --git a/src/views/admin/js/store/modules/metadata/mutations.js b/src/views/admin/js/store/modules/metadata/mutations.js index e2737bc3b..d12c75ad1 100644 --- a/src/views/admin/js/store/modules/metadata/mutations.js +++ b/src/views/admin/js/store/modules/metadata/mutations.js @@ -92,7 +92,26 @@ export const cleanMetadata = (state) => { } export const setMetadataSections = (state, metadataSections) => { - state.metadataSections = metadatumSections; + state.metadataSections = metadataSections; +} + +export const setSingleMetadataSection = (state, { metadataSection, index }) => { + + if (index != undefined && index != null) + Vue.set( state.metadataSections, index, metadataSection); + else { + const existingIndex = state.metadataSections.findIndex((aMetadataSection) => aMetadataSection.id == metadataSection.id); + + if (existingIndex >= 0) + Vue.set( state.metadataSections, existingIndex, metadataSection) + } +} + + +export const deleteMetadataSection = ( state, metadataSection ) => { + let index = state.metadataSection.findIndex(deletedMetadataSection => deletedMetadataSection.id == metadataSection.id); + if (index >= 0) + state.metadataSection.splice(index, 1); } export const cleanMetadataSections = (state) => { diff --git a/src/views/admin/pages/lists/metadata-page.vue b/src/views/admin/pages/lists/metadata-page.vue index f7bdd0541..1569e7b83 100644 --- a/src/views/admin/pages/lists/metadata-page.vue +++ b/src/views/admin/pages/lists/metadata-page.vue @@ -295,6 +295,22 @@ @onEditionCanceled="onEditionCanceled()" :index="index" /> + + + + @@ -358,6 +374,59 @@ v-if="hightlightedMetadatum == metadatum.name"/> + + + + @@ -380,13 +449,14 @@

{{ $i18n.get('info_can_not_edit_metadata') }}

- +