include disabled fields info in api response
This commit is contained in:
parent
772890f193
commit
495cd9b64b
|
@ -281,6 +281,7 @@ class TAINACAN_REST_Fields_Controller extends TAINACAN_REST_Controller {
|
|||
$form = ob_get_clean();
|
||||
$item_arr['edit_form'] = $form;
|
||||
$item_arr['field_type_object'] = $item->get_field_type_object();
|
||||
$item_arr['disabled'] = $item->get_disabled_for_collection();
|
||||
}
|
||||
|
||||
return $item_arr;
|
||||
|
@ -299,6 +300,10 @@ class TAINACAN_REST_Fields_Controller extends TAINACAN_REST_Controller {
|
|||
$collection_id = $request['collection_id'];
|
||||
|
||||
$args = $this->prepare_filters( $request );
|
||||
|
||||
if ($request['context'] === 'edit') {
|
||||
$args['include_disabled'] = true;
|
||||
}
|
||||
|
||||
$collection = new Entities\Collection( $collection_id );
|
||||
|
||||
|
|
|
@ -11,7 +11,9 @@ class Field extends Entity {
|
|||
|
||||
// Collection getter and setter declared here
|
||||
use \Tainacan\Traits\Entity_Collection_Relation;
|
||||
|
||||
|
||||
public $disabled_for_collection = false;
|
||||
|
||||
protected static $post_type = 'tainacan-field';
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@ -323,6 +325,21 @@ class Field extends Entity {
|
|||
function set_field_type_options( $value ){
|
||||
$this->set_mapped_property('field_type_options', $value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Transient property used to store the status of the field for a particular collection
|
||||
*
|
||||
* Used by the API to tell front end when a field is disabled
|
||||
*
|
||||
*/
|
||||
public function get_disabled_for_collection() {
|
||||
return $this->disabled_for_collection;
|
||||
}
|
||||
public function set_disabled_for_collection($value) {
|
||||
$this->disabled_for_collection = $value;
|
||||
}
|
||||
|
||||
|
||||
// helpers
|
||||
|
||||
|
|
|
@ -333,7 +333,7 @@ class Fields extends Repository {
|
|||
return $this->order_result(
|
||||
$this->fetch( $args, $output ),
|
||||
$collection,
|
||||
isset( $args['disabled_fields'] ) ? $args['disabled_fields'] : false
|
||||
isset( $args['include_disabled'] ) ? $args['include_disabled'] : false
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -344,10 +344,10 @@ class Fields extends Repository {
|
|||
*
|
||||
* @param $result Response from method fetch
|
||||
* @param Entities\Collection $collection
|
||||
* @param bool $disabled_fields Disabled fields wont appear on list collection fields
|
||||
* @param bool $include_disabled Wether to include disabled fields in the results or not
|
||||
* @return array or WP_Query ordinate
|
||||
*/
|
||||
public function order_result( $result, Entities\Collection $collection, $disabled_fields = false ){
|
||||
public function order_result( $result, Entities\Collection $collection, $include_disabled = false ){
|
||||
$order = $collection->get_fields_order();
|
||||
if($order) {
|
||||
$order = ( is_array($order) ) ? $order : unserialize($order);
|
||||
|
@ -363,9 +363,11 @@ class Fields extends Repository {
|
|||
if( $index !== false ) {
|
||||
|
||||
// skipping fields disabled if the arg is set
|
||||
if( $disabled_fields && !$order[$index]['enable'] ){
|
||||
continue;
|
||||
}
|
||||
if( !$include_disabled && !$order[$index]['enable'] ) {
|
||||
continue;
|
||||
} elseif ($include_disabled && !$order[$index]['enable']) {
|
||||
$item->set_disabled_for_collection(true);
|
||||
}
|
||||
|
||||
$result_ordinate[$index] = $item;
|
||||
} else {
|
||||
|
|
|
@ -259,10 +259,14 @@ class Fields extends TAINACAN_UnitTestCase {
|
|||
$update_collection = $Tainacan_Collections->update( $collection );
|
||||
|
||||
$fields_ordinate = $Tainacan_Fields->fetch_by_collection( $update_collection, [], 'OBJECT' );
|
||||
$this->assertEquals( 'field3', $fields_ordinate[0]->get_name() );
|
||||
$this->assertEquals( 'field2', $fields_ordinate[0]->get_name() );
|
||||
|
||||
$fields_ordinate_enabled = $Tainacan_Fields->fetch_by_collection( $update_collection, [ 'disabled_fields' => true ], 'OBJECT' );
|
||||
$this->assertEquals( 'field2', $fields_ordinate_enabled[0]->get_name() );
|
||||
$fields_ordinate_enabled = $Tainacan_Fields->fetch_by_collection( $update_collection, [ 'include_disabled' => true ], 'OBJECT' );
|
||||
$this->assertEquals( 'field3', $fields_ordinate_enabled[0]->get_name() );
|
||||
|
||||
$this->assertTrue($fields_ordinate_enabled[0]->get_disabled_for_collection());
|
||||
$this->assertFalse($fields_ordinate_enabled[1]->get_disabled_for_collection());
|
||||
$this->assertFalse($fields_ordinate_enabled[2]->get_disabled_for_collection());
|
||||
}
|
||||
|
||||
function test_unique_slugs() {
|
||||
|
|
Loading…
Reference in New Issue