Starting the dev admin interface

This commit is contained in:
Leo Germani 2017-12-01 17:42:43 -02:00
parent 20b56854a3
commit 9a8f36fda6
11 changed files with 131 additions and 9 deletions

View File

@ -9,7 +9,7 @@ use \Respect\Validation\Validator as v;
use Tainacan\Entities\Collection;
class Collections extends Repository {
protected $entities_type = '\Tainacan\Entities\Collection';
public $entities_type = '\Tainacan\Entities\Collection';
public function get_map() {
return apply_filters('tainacan-get-map', [
'id' => [

View File

@ -7,7 +7,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
use \Respect\Validation\Validator as v;
class Filters extends Repository {
protected $entities_type = '\Tainacan\Entities\Filter';
public $entities_type = '\Tainacan\Entities\Filter';
public function get_map() {
return apply_filters('tainacan-get-map', [

View File

@ -6,7 +6,7 @@ use Tainacan\Entities;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
class Item_Metadata extends Repository {
protected $entities_type = '\Tainacan\Entities\Item_Metadata_Entity';
public $entities_type = '\Tainacan\Entities\Item_Metadata_Entity';
public function insert($item_metadata) {
$unique = ! $item_metadata->is_multiple();

View File

@ -7,7 +7,7 @@ use \Respect\Validation\Validator as v;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
class Items extends Repository {
protected $entities_type = '\Tainacan\Entities\Item';
public $entities_type = '\Tainacan\Entities\Item';
public function get_map() {
return apply_filters('tainacan-get-map', [
'id' => [

View File

@ -11,7 +11,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
*
*/
class Logs extends Repository {
protected $entities_type = '\Tainacan\Entities\Log';
public $entities_type = '\Tainacan\Entities\Log';
public function __construct() {
parent::__construct();

View File

@ -10,7 +10,7 @@ use \Respect\Validation\Validator as v;
* Class Metadatas
*/
class Metadatas extends Repository {
protected $entities_type = '\Tainacan\Entities\Metadata';
public $entities_type = '\Tainacan\Entities\Metadata';
protected $default_metadata = 'default';
public function get_map() {

View File

@ -9,7 +9,7 @@ use \Respect\Validation\Validator as v;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
abstract class Repository {
protected $entities_type = '\Tainacan\Entities\Entity';
public $entities_type = '\Tainacan\Entities\Entity';
/**
* Register hooks

View File

@ -11,7 +11,7 @@ use \Respect\Validation\Validator as v;
* Class Tainacan_Taxonomies
*/
class Taxonomies extends Repository {
protected $entities_type = '\Tainacan\Entities\Taxonomy';
public $entities_type = '\Tainacan\Entities\Taxonomy';
public function get_map() {
return apply_filters('tainacan-get-map', [

View File

@ -11,7 +11,8 @@ use \Respect\Validation\Validator as v;
*/
class Terms extends Repository {
protected $entities_type = '\Tainacan\Entities\Term';
public $entities_type = '\Tainacan\Entities\Term';
public function get_map() {
return apply_filters('tainacan-get-map', [
'term_id' => [

View File

@ -0,0 +1,118 @@
<?php
namespace Tainacan\DevInterface;
class DevInterface {
public function __construct() {
add_action('add_meta_boxes', array(&$this, 'register_metaboxes'));
}
/**
* Run through all post types attributes and add metaboxes for them.
*
* Also run through all collections metadata and add metaboxes for its items post type
*
* @return void
*/
function register_metaboxes() {
global $Tainacan_Collections, $Tainacan_Filters, $Tainacan_Logs, $Tainacan_Metadatas, $Tainacan_Taxonomies;
$repositories = [$Tainacan_Collections, $Tainacan_Filters, $Tainacan_Logs, $Tainacan_Metadatas, $Tainacan_Taxonomies];
foreach ($repositories as $repo) {
// get repository post type
$cpt = $repo->entities_type::get_post_type();
$slug = str_replace('Tainacan\Repositories\\', '', get_class($repo));
add_meta_box(
$slug . '_properties',
__('Properties', 'tainacan'),
array(&$this, 'properties_metabox_' . $slug),
$cpt,
'normal'
);
}
}
function properties_metabox_Collections() {
global $Tainacan_Collections;
$this->properties_metabox($Tainacan_Collections);
}
function properties_metabox_Filters() {
global $Tainacan_Filters;
$this->properties_metabox($Tainacan_Filters);
}
function properties_metabox_Logs() {
global $Tainacan_Logs;
$this->properties_metabox($Tainacan_Logs);
}
function properties_metabox_Metadatas() {
global $Tainacan_Metadatas;
$this->properties_metabox($Tainacan_Metadatas);
}
function properties_metabox_Taxonomies() {
global $Tainacan_Taxonomies;
$this->properties_metabox($Tainacan_Taxonomies);
}
function properties_metabox($repo) {
global $pagenow, $typenow, $post;
$map = $repo->get_map();
$entity = new $repo->entities_type($post);
?>
<div id="postcustomstuff">
<table>
<thead>
<tr>
<th class="left"><?php _e('Property', 'tainacan'); ?></th>
<th><?php _e('Value', 'tainacan'); ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($map as $prop => $mapped): ?>
<tr>
<td>
<label><?php echo $mapped['title']; ?></label><br/>
<small><?php echo $mapped['description']; ?></small>
</td>
<td>
<textarea name="<?php echo $prop; ?>"><?php echo htmlspecialchars($entity->get_mapped_property($prop)); ?></textarea>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php
}
}
?>

View File

@ -16,6 +16,9 @@ const CLASSES_DIR = __DIR__ . '/classes/';
require_once(CLASSES_DIR . 'tainacan-creator.php');
require_once(API_DIR . 'tainacan-rest-creator.php');
require_once('dev-interface/class-tainacan-dev-interface.php');
$Tainacan_Dev_interface = new \Tainacan\DevInterface\DevInterface();
function tnc_enable_dev_wp_interface() {
return defined('TNC_ENABLE_DEV_WP_INTERFACE') && true === TNC_ENABLE_DEV_WP_INTERFACE ? true : false;
}