Delete category

This commit is contained in:
weryques 2018-03-23 10:03:39 -03:00
parent 4bcb108dd2
commit ec66b0b576
17 changed files with 88 additions and 93 deletions

View File

@ -93,7 +93,6 @@
</template>
<script>
import { mapActions } from 'vuex'
export default {
@ -118,28 +117,29 @@
this.$dialog.confirm({
message: this.$i18n.get('info_warning_category_delete'),
onConfirm: () => {
this.deleteCategory(categoryId).then(() => {
this.loadCategories();
this.$toast.open({
duration: 3000,
message: this.$i18n.get('info_category_deleted'),
position: 'is-bottom',
type: 'is-secondary',
queue: true
});
for (let i = 0; i < this.selectedCategories.length; i++) {
if (this.selectedCategories[i].id === this.categoryId)
this.selectedCategories.splice(i, 1);
}
}).catch(() =>
this.$toast.open({
duration: 3000,
message: this.$i18n.get('info_error_deleting_category'),
position: 'is-bottom',
type: 'is-danger',
queue: true
this.deleteCategory(categoryId)
.then((res) => {
this.$toast.open({
duration: 3000,
message: this.$i18n.get('info_category_deleted'),
position: 'is-bottom',
type: 'is-secondary',
queue: true
});
for (let i = 0; i < this.selectedCategories.length; i++) {
if (this.selectedCategories[i].id === this.categoryId)
this.selectedCategories.splice(i, 1);
}
})
);
.catch((error) => {
this.$toast.open({
duration: 3000,
message: this.$i18n.get('info_error_deleting_category'),
position: 'is-bottom',
type: 'is-danger',
queue: true
});
});
}
});
},

View File

@ -95,7 +95,6 @@ export default {
message: this.$i18n.get('info_warning_collection_delete'),
onConfirm: () => {
this.deleteCollection(collectionId).then(() => {
this.loadCollections();
this.$toast.open({
duration: 3000,
message: this.$i18n.get('info_collection_deleted'),

View File

@ -137,10 +137,13 @@ return [
'info_no_category_created' => __( 'No category was created in this repository.', 'tainacan' ),
'info_no_item_created' => __( 'No item was created in this collection.', 'tainacan' ),
'info_error_deleting_collection' => __( 'Error on deleting collection.', 'tainacan' ),
'info_error_deleting_category' => __( 'Error on deleting category', 'tainacan' ),
'info_collection_deleted' => __( 'Collection deleted.', 'tainacan' ),
'info_item_deleted' => __( 'Item deleted.', 'tainacan' ),
'info_category_deleted' => __( 'Category deleted', 'tainacan' ),
'info_warning_collection_delete' => __( 'Do you really want to delete this collection?', 'tainacan' ),
'info_warning_item_delete' => __( 'Do you really want to delete this item?', 'tainacan' ),
'info_warning_category_delete' => __( 'Do you really want to delete this category?', 'tainacan' ),
'info_warning_selected_collections_delete' => __( 'Do you really want to delete the selected collections?', 'tainacan' ),
'info_warning_selected_items_delete' => __( 'Do you really want to delete the selected items?', 'tainacan' ),
'info_warning_collection_related' => __( 'The field Collection related is required', 'tainacan' ),

View File

@ -68,8 +68,8 @@ class TAINACAN_REST_Collections_Controller extends TAINACAN_REST_Controller {
'callback' => array($this, 'delete_item'),
'permission_callback' => array($this, 'delete_item_permissions_check'),
'args' => array(
'body_args' => array(
'description' => __('To delete permanently, in body you can pass \'is_permanently\' as true. By default this will only trash collection'),
'permanently' => array(
'description' => __('To delete permanently, you can pass \'permanently\' as true. By default this will only trash collection'),
'default' => 'false'
),
)
@ -275,9 +275,9 @@ class TAINACAN_REST_Collections_Controller extends TAINACAN_REST_Controller {
*/
public function delete_item( $request ) {
$collection_id = $request['collection_id'];
$is_permanently = json_decode($request->get_body(), true);
$permanently = $request['permanently'];
$args = [$collection_id, $is_permanently];
$args = [$collection_id, $permanently];
$collection = $this->collections_repository->delete($args);

View File

@ -78,8 +78,8 @@ class TAINACAN_REST_Filters_Controller extends TAINACAN_REST_Controller {
'callback' => array($this, 'delete_item'),
'permission_callback' => array($this, 'delete_item_permissions_check'),
'args' => array(
'body_args' => array(
'description' => __('To delete permanently, in body you can pass \'is_permanently\' as true. By default this will only trash collection'),
'permanently' => array(
'description' => __('To delete permanently, you can pass \'permanently\' as true. By default this will only trash collection'),
'default' => 'false'
),
)
@ -218,21 +218,13 @@ class TAINACAN_REST_Filters_Controller extends TAINACAN_REST_Controller {
*/
public function delete_item( $request ) {
$filter_id = $request['filter_id'];
$permanently = $request['permanently'];
$is_permanently = json_decode($request->get_body(), true);
$args = [$filter_id, $permanently];
if(!empty($is_permanently)){
$args = [$filter_id, $is_permanently];
$filter = $this->filter_repository->delete($args);
$filter = $this->filter_repository->delete($args);
return new WP_REST_Response($this->prepare_item_for_response($filter, $request), 200);
}
return new WP_REST_Response([
'error_message' => __('The body could not be empty', 'tainacan'),
'body' => $request->get_body()
], 400);
return new WP_REST_Response($this->prepare_item_for_response($filter, $request), 200);
}
/**

View File

@ -77,8 +77,8 @@ class TAINACAN_REST_Items_Controller extends TAINACAN_REST_Controller {
'callback' => array($this, 'delete_item'),
'permission_callback' => array($this, 'delete_item_permissions_check'),
'args' => array(
'body_args' => array(
'description' => __('To delete permanently, in body you can pass \'is_permanently\' as true. By default this will only trash collection'),
'permanently' => array(
'description' => __('To delete permanently, you can pass \'permanently\' as true. By default this will only trash collection'),
'default' => 'false'
),
)
@ -306,10 +306,10 @@ class TAINACAN_REST_Items_Controller extends TAINACAN_REST_Controller {
* @return WP_Error|WP_REST_Response
*/
public function delete_item( $request ) {
$item_id = $request['item_id'];
$is_permanently = json_decode($request->get_body(), true);
$item_id = $request['item_id'];
$permanently = $request['permanently'];
$args = [$item_id, $is_permanently];
$args = [$item_id, $permanently];
$item = $this->items_repository->delete($args);

View File

@ -58,9 +58,9 @@ class TAINACAN_REST_Taxonomies_Controller extends TAINACAN_REST_Controller {
'callback' => array($this, 'delete_item'),
'permission_callback' => array($this, 'delete_item_permissions_check'),
'args' => array(
'body_args' => array(
'description' => __('To delete permanently, in body you can pass \'is_permanently\' as true. By default this will only trash collection'),
'default' => 'false'
'permanently' => array(
'description' => __('To delete permanently, you can pass \'permanently\' as true. By default this will only trash collection'),
'default' => 'false',
),
)
),
@ -164,22 +164,14 @@ class TAINACAN_REST_Taxonomies_Controller extends TAINACAN_REST_Controller {
*/
public function delete_item( $request ) {
$taxonomy_id = $request['taxonomy_id'];
if(empty($request->get_body())){
return new WP_REST_Response([
'error_message' => __('Body can not be empty.', 'tainacan'),
'body' => $request->get_body()
], 400);
}
$is_permanently = json_decode($request->get_body(), true);
$permanently = $request['permanently'];
$taxonomy = $this->taxonomy_repository->fetch($taxonomy_id);
if(!empty($taxonomy)) {
$taxonomy_name = $taxonomy->get_db_identifier();
$args = [ $taxonomy_id, $taxonomy_name, $is_permanently ];
$args = [ $taxonomy_id, $taxonomy_name, $permanently ];
$deleted = $this->taxonomy_repository->delete( $args );

View File

@ -243,8 +243,8 @@ class Collections extends Repository {
* @return mixed|Collection
*/
public function delete( $args ) {
if ( ! empty( $args[1] ) && $args[1]['is_permanently'] === true ) {
return new Entities\Collection( wp_delete_post( $args[0], $args[1]['is_permanently'] ) );
if ( ! empty( $args[1] ) && $args[1] === true ) {
return new Entities\Collection( wp_delete_post( $args[0], $args[1] ) );
}
return new Entities\Collection( wp_trash_post( $args[0] ) );

View File

@ -188,8 +188,8 @@ class Filters extends Repository {
*
*/
public function delete($args){
if(!empty($args[1]) && $args[1]['is_permanently'] === true){
return new Entities\Filter(wp_delete_post($args[0], $args[1]['is_permanently']));
if(!empty($args[1]) && $args[1] === true){
return new Entities\Filter(wp_delete_post($args[0], $args[1]));
}
return new Entities\Filter(wp_trash_post($args[0]));

View File

@ -304,8 +304,8 @@ class Items extends Repository {
* @return mixed|Entities\Item
*/
public function delete( $args ) {
if ( ! empty( $args[1] ) && $args[1]['is_permanently'] === true ) {
return new Entities\Item( wp_delete_post( $args[0], $args[1]['is_permanently'] ) );
if ( ! empty( $args[1] ) && $args[1] === true ) {
return new Entities\Item( wp_delete_post( $args[0], $args[1] ) );
}
return new Entities\Item( wp_trash_post( $args[0] ) );

View File

@ -209,9 +209,9 @@ class Taxonomies extends Repository {
public function delete($args){
$taxonomy_id = $args[0];
$taxonomy_name = $args[1];
$is_permanently = $args[2]['is_permanently'];
$permanently = $args[2];
if($is_permanently === true){
if($permanently === true){
$unregistered = unregister_taxonomy($taxonomy_name);
if($unregistered instanceof \WP_Error){

View File

@ -25,14 +25,17 @@ export const createCategory = ({commit}, category) => {
export const deleteCategory = ({ commit }, categoryId) => {
return new Promise(( resolve, reject ) => {
axios.tainacan.delete(`/taxonomies/${categoryId}`, {
'is_permanently': true
})
axios.tainacan.delete(`/taxonomies/${categoryId}?permanently=${true}`)
.then(res => {
console.info(res);
resolve( res.data );
commit('deleteCategory', res.data);
resolve( res );
})
.catch(error => {
console.error(error);
reject( error )
});
});

View File

@ -8,4 +8,12 @@ export const setCategories = (state, categories) => {
export const setCategoryName = (state, name) => {
state.categoryName = name;
};
export const deleteCategory = ( state, category ) => {
let index = state.categories.findIndex(deletedCategory => deletedCategory.id === category.id);
if (index >= 0) {
state.categories.splice(index, 1);
}
};

View File

@ -97,13 +97,13 @@ class TAINACAN_REST_Collections_Controller extends TAINACAN_UnitApiTestCase {
$collection1 = $this->tainacan_entity_factory->create_entity('collection', '', true);
// Delete permanently
$delete_permanently = json_encode(['is_permanently' => true]);
$delete_permanently = ['permanently' => true];
$request = new \WP_REST_Request(
'DELETE',
$this->namespace . '/collections/' . $collection1->get_id()
);
$request->set_body($delete_permanently);
$request->set_query_params($delete_permanently);
$response = $this->server->dispatch($request);
@ -122,13 +122,13 @@ class TAINACAN_REST_Collections_Controller extends TAINACAN_UnitApiTestCase {
$collection2 = $this->tainacan_entity_factory->create_entity('collection', '', true);
// Move to trash
$delete_permanently = json_encode(['is_permanently' => false]);
$delete_permanently = ['permanently' => false];
$request = new \WP_REST_Request(
'DELETE',
$this->namespace . '/collections/' . $collection2->get_id()
);
$request->set_body($delete_permanently);
$request->set_query_params($delete_permanently);
$response = $this->server->dispatch($request);

View File

@ -84,14 +84,12 @@ class TAINACAN_REST_Terms_Controller extends TAINACAN_UnitApiTestCase {
true
);
$is_permanently = json_encode([
'is_permanently' => false
]);
$permanently = [ 'permanently' => false ];
$request = new \WP_REST_Request(
'DELETE', $this->namespace . '/filters/' . $filter->get_id());
$request->set_body($is_permanently);
$request->set_query_params($permanently);
$response = $this->server->dispatch($request);
@ -105,14 +103,12 @@ class TAINACAN_REST_Terms_Controller extends TAINACAN_UnitApiTestCase {
##### DELETE #####
$is_permanently = json_encode([
'is_permanently' => true
]);
$permanently = [ 'permanently' => true ];
$request = new \WP_REST_Request(
'DELETE', $this->namespace . '/filters/' . $filter->get_id());
$request->set_body($is_permanently);
$request->set_query_params($permanently);
$response = $this->server->dispatch($request);

View File

@ -93,13 +93,13 @@ class TAINACAN_REST_Items_Controller extends TAINACAN_UnitApiTestCase {
);
// Move to trash
$delete_permanently = json_encode(['is_permanently' => false]);
$delete_permanently = ['permanently' => false];
$request = new \WP_REST_Request(
'DELETE',
$this->namespace . '/items/' . $item1->get_id()
);
$request->set_body($delete_permanently);
$request->set_query_params($delete_permanently);
$response = $this->server->dispatch($request);
@ -126,13 +126,13 @@ class TAINACAN_REST_Items_Controller extends TAINACAN_UnitApiTestCase {
);
// Delete permanently
$delete_permanently = json_encode(['is_permanently' => true]);
$delete_permanently = ['permanently' => true];
$request = new \WP_REST_Request(
'DELETE',
$this->namespace . '/items/' . $item2->get_id()
);
$request->set_body($delete_permanently);
$request->set_query_params($delete_permanently);
$response = $this->server->dispatch($request);

View File

@ -19,13 +19,13 @@ class TAINACAN_REST_Taxonomies_Controller extends TAINACAN_UnitApiTestCase {
true
);
$is_permanently = json_encode(['is_permanently' => false]);
$permanently = [ 'permanently' => false ];
$request_trash = new \WP_REST_Request(
'DELETE', $this->namespace . '/taxonomies/' . $taxonomy->get_id()
);
$request_trash->set_body($is_permanently);
$request_trash->set_query_params($permanently);
$this->server->dispatch($request_trash);
@ -36,13 +36,13 @@ class TAINACAN_REST_Taxonomies_Controller extends TAINACAN_UnitApiTestCase {
################ DELETE ###
$is_permanently = json_encode(['is_permanently' => true]);
$permanently = [ 'permanently' => true ];
$request_delete = new \WP_REST_Request(
'DELETE', $this->namespace . '/taxonomies/' . $taxonomy->get_id()
);
$request_delete->set_body($is_permanently);
$request_delete->set_query_params($permanently);
$this->server->dispatch($request_delete);
@ -122,8 +122,10 @@ class TAINACAN_REST_Taxonomies_Controller extends TAINACAN_UnitApiTestCase {
$data = $response->get_data();
$this->assertEquals($taxonomy1->get_name(), $data[1]['name']);
$this->assertEquals($taxonomy2->get_name(), $data[0]['name']);
$names = [ $data[1]['name'], $data[0]['name']];
$this->assertContains($taxonomy1->get_name(), $names);
$this->assertContains($taxonomy2->get_name(), $names);
}
public function test_update_taxonomy(){