<?php
/**
* Suppress "error - 0 - No summary was found for this file" on phpdoc generation
*
* @package WPDataProjects\Project
*/
namespace WPDataProjects\Project {
use WPDataProjects\Parent_Child\WPDP_Parent_Form;
use WPDataAccess\WPDA;
/**
* Class WPDP_Project_Project_Form extends WPDP_Parent_Form
*
* @see WPDP_Parent_Form
*
* @author Peter Schulz
* @since 2.0.0
*/
class WPDP_Project_Project_Form extends WPDP_Parent_Form {
/**
* WPDP_Project_Project_Form constructor
*
* @param $schema_name
* @param $table_name
* @param $wpda_list_columns
* @param array $args
* @param array $relationship
*/
public function __construct( $schema_name, $table_name, $wpda_list_columns, array $args = array(), array $relationship = array() ) {
// Add column labels.
$args['column_headers'] = array(
'project_id' => __( 'Project ID', 'wp-data-access' ),
'project_name' => __( 'Project Name', 'wp-data-access' ),
'project_description' => __( 'Project Description', 'wp-data-access' ),
'add_to_menu' => __( 'Add To Menu', 'wp-data-access' ),
'menu_name' => __( 'Menu Name', 'wp-data-access' ),
'project_sequence' => __( 'Seq#', 'wp-data-access' ),
);
$args['edit_form_class'] = 'WPDataProjects\\Project\\WPDP_Project_Page_Form';
if ( isset( $args['mode'] ) ) {
$mode = $args['mode'];
} else {
wp_die( __( 'ERROR: Wrong arguments [missing mode]', 'wp-data-access' ) );
}
if ( 'view' === $mode ) {
$args['list_form_class'] = 'WPDataProjects\\Project\\WPDP_Project_Page_List_View';
} else {
$args['list_form_class'] = 'WPDataProjects\\Project\\WPDP_Project_Page_List';
}
parent::__construct( $schema_name, $table_name, $wpda_list_columns, $args, $relationship );
$this->title = 'Project';
}
/**
* Overwrites method show to add debug info
*
* This debug info can be helpful in case of project page structure errors
*
* @param bool $allow_save
* @param string $add_param
*/
public function show( $allow_save = true, $add_param = '' ) {
if ( 'on' === WPDA::get_option( WPDA::OPTION_PLUGIN_DEBUG ) && isset( $_REQUEST['project_id'] ) ) {
$project_id = sanitize_text_field( wp_unslash( $_REQUEST['project_id'] ) ); // input var okay.
global $wpdb;
$project_page_table_name = $wpdb->prefix . 'wpda_project_page';
$pages = $wpdb->get_results(
$wpdb->prepare(
" select * from `%1s` where project_id = %d and add_to_menu = 'Yes' order by page_sequence", // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders
array(
WPDA::remove_backticks( $project_page_table_name ),
$project_id,
)
),
'ARRAY_A'
); // phpcs:ignore Standard.Category.SniffName.ErrorCode
$project_info = '';
$first_page = true;
foreach ( $pages as $page ) {
$wpdp = new WPDP_Project( $project_id, $page['page_id'] );
if ( null === $wpdp->get_project() ) {
wp_die( __( 'Data Project page not found [need a valid project_id and page_id]', 'wp-data-access' ) );
}
if ( ! $first_page ) {
$project_info .= '<br/><br/>';
}
$project_info .= "Project $project_id, page {$page['page_id']}:<br/>";
$project_info .= json_encode( $wpdp->get_project() );
$first_page = false;
}
?>
<style>
#overlay_project {
height: 400px;
width: 600px;
position: fixed;
display: none;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
right: 0;
bottom: 0;
background-color: #f9f9f9;
opacity: .95;
border: 1px solid #ccc;
cursor: pointer;
z-index: 1000;
}
#overlay_project_text {
height: 360px;
width: 400px;
padding: 10px;
position: relative;
top: 50%;
left: 235px;
transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
color: black;
overflow-y: auto;
background-color: white;
border: 1px solid #ccc;
}
</style>
<div id="overlay_project">
<div id="overlay_project_text">
<?php echo $project_info; // phpcs:ignore WordPress.Security.EscapeOutput ?>
</div>
<div style="position: absolute; bottom: 0; right: 0; padding-right: 5px; padding-bottom: 10px;">
<a id="button-copy-clipboard" href="javascript:void(0)" class="button button-secondary"
style="text-align:center;width:145px;"
data-clipboard-text="<?php echo str_replace( '<br/>', "\n", str_replace( '"', '"', $project_info ) ); // phpcs:ignore WordPress.Security.EscapeOutput ?>">
<i class="fas fa-clipboard wpda_icon_on_button"></i>
<?php echo __( 'Copy to clipboard', 'wp-data-access' ); ?>
</a>
<br/>
<div style="height: 5px;"></div>
<a href="javascript:void(0)" class="button button-secondary"
style="text-align:center;width:145px;"
onclick="jQuery('#overlay_project').hide()">
<i class="fas fa-times-circle wpda_icon_on_button"></i>
<?php echo __( 'Close', 'wp-data-access' ); ?>
</a>
</div>
</div>
<div style="float:right;text-align:right;">
<a href="javascript:void(0);" onclick="jQuery('#overlay_project').show()" class="button">DEBUG</a>
</div>
<script type='text/javascript'>
jQuery(function () {
var sql_to_clipboard = new ClipboardJS('#button-copy-clipboard');
sql_to_clipboard.on('success', function (e) {
jQuery.notify('<?php echo __( 'Info copied to clipboard!', 'wp-data-access' ); ?>','info');
});
sql_to_clipboard.on('error', function (e) {
jQuery.notify('<?php echo __( 'Could not copy info to clipboard!', 'wp-data-access' ); ?>','error');
});
});
</script>
<?php
}
parent::show( $allow_save, $add_param );
if ( 'new' !== $this->action_posted || $this->child_request ) {
?>
<script type='text/javascript'>
jQuery(function () {
jQuery('#show_more_less_button').show();
});
</script>
<?php
}
}
/**
* Overwrite method
*
* @param bool $set_back_form_values
*/
public function prepare_items( $set_back_form_values = false ) {
parent::prepare_items( $set_back_form_values );
$column_index = $this->get_item_index( 'project_description' );
$this->form_items[ $column_index ]->set_item_class( 'row-show-less-more' );
$column_index = $this->get_item_index( 'project_sequence' );
$this->form_items[ $column_index ]->set_item_class( 'row-show-less-more' );
}
}
}