Sindbad~EG File Manager
<?php
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
/**
* Used to generate a thick-box inline dialog such as an alert or confirm pop-up
*
* Standard: PSR-2
*
* @link http://www.php-fig.org/psr/psr-2
*
* @package Duplicator
* @subpackage classes/ui
* @copyright (c) 2017, Snapcreek LLC
*/
// Exit if accessed directly
if (! defined('DUPLICATOR_VERSION')) {
exit;
}
class DUP_UI_Dialog
{
/**
* The title that shows up in the dialog
*/
public $title;
/**
* The message displayed in the body of the dialog
*/
public $message;
/**
* The width of the dialog the default is used if not set
* Alert = 475px (default) | Confirm = 500px (default)
*/
public $width;
/**
* The height of the dialog the default is used if not set
* Alert = 125px (default) | Confirm = 150px (default)
*/
public $height;
/**
* When the progress meter is running show this text
* Available only on confirm dialogs
*/
public $progressText;
/**
* When true a progress meter will run until page is reloaded
* Available only on confirm dialogs
*/
public $progressOn = true;
/**
* The javascript call back method to call when the 'Yes' button is clicked
* Available only on confirm dialogs
*/
public $jscallback;
/**
*
* @var string
*/
public $okText;
/**
*
* @var string
*/
public $cancelText;
/**
* If true close dialog on confirm
*
* @var bool
*/
public $closeOnConfirm = false;
/**
* The id given to the full dialog
*/
private $id;
/**
* A unique id that is added to all id elements
*/
private $uniqid;
/**
* Init this object when created
*/
public function __construct()
{
add_thickbox();
$this->progressText = __('Processing please wait...', 'duplicator');
$this->uniqid = substr(uniqid('', true), 0, 14) . rand();
$this->id = 'dup-dlg-' . $this->uniqid;
$this->okText = __('OK', 'duplicator');
$this->cancelText = __('Cancel', 'duplicator');
}
/**
* Gets the unique id that is assigned to each instance of a dialog
*
* @return int The unique ID of this dialog
*/
public function getID()
{
return $this->id;
}
/**
* Gets the unique id that is assigned to each instance of a dialogs message text
*
* @return int The unique ID of the message
*/
public function getMessageID()
{
return "{$this->id}_message";
}
/**
* Initialize the alert base html code used to display when needed
*
* @return string The html content used for the alert dialog
*/
public function initAlert()
{
$onClickClose = '';
if (!is_null($this->jscallback)) {
$onClickClose .= $this->jscallback . ';';
}
$onClickClose .= 'tb_remove();';
$hideButton = "";
if (strlen($this->okText) == 0) {
$hideButton = "style='display:none'";
}
$html = '
<div id="' . esc_attr($this->id) . '" style="display:none">
<div class="dup-dlg-alert-txt">
' . $this->message . '
<br/><br/>
</div>
<div class="dup-dlg-alert-btns">
<input type="button" class="button button-large" value="' . esc_attr($this->okText) . '" onclick="' . $onClickClose . '" ' . $hideButton . '/>
</div>
</div>';
echo $html;
}
/**
* Shows the alert base JS code used to display when needed
*
* @return string The javascript content used for the alert dialog
*/
public function showAlert()
{
$this->width = is_numeric($this->width) ? $this->width : 500;
$this->height = is_numeric($this->height) ? $this->height : 175;
$html = "tb_show('" . esc_js($this->title) . "', '#TB_inline?width=" . esc_js($this->width) . "&height=" . esc_js($this->height) . "&inlineId=" . esc_js($this->id) . "');\n" .
"var styleData = jQuery('#TB_window').attr('style') + 'height: " . esc_js($this->height) . "px !important';\n" .
"jQuery('#TB_window').attr('style', styleData);";
echo $html;
}
/**
* Shows the confirm base JS code used to display when needed
*
* @return string The javascript content used for the confirm dialog
*/
public function initConfirm()
{
$progress_data = '';
$progress_func2 = '';
$onClickConfirm = '';
if (!is_null($this->jscallback)) {
$onClickConfirm .= $this->jscallback . ';';
}
//Enable the progress spinner
if ($this->progressOn) {
$progress_func1 = "__DUP_UI_Dialog_" . $this->uniqid;
$progress_func2 = ";{$progress_func1}(this)";
$progress_data = "<div class='dup-dlg-confirm-progress'><i class='fas fa-circle-notch fa-spin fa-lg fa-fw'></i> " . esc_js($this->progressText) . "</div>
<script>
function {$progress_func1}(obj)
{
jQuery(obj).parent().parent().find('.dup-dlg-confirm-progress').show();
jQuery(obj).closest('.dup-dlg-confirm-btns').find('input').attr('disabled', 'true');
}
</script>";
$onClickConfirm .= $progress_func2 . ';';
}
if ($this->closeOnConfirm) {
$onClickConfirm .= 'tb_remove();';
}
$html =
'<div id="' . esc_attr($this->id) . '" style="display:none">
<div class="dup-dlg-confirm-txt">
<span id="' . esc_attr($this->id) . '_message">' . esc_html($this->message) . '</span>
<br/><br/>
' . $progress_data . '
</div>
<div class="dup-dlg-confirm-btns">
<input type="button" class="button button-large" value="' . esc_attr($this->okText) . '" onclick="' . $onClickConfirm . '" />
<input type="button" class="button button-large" value="' . esc_attr($this->cancelText) . '" onclick="tb_remove()" />
</div>
</div>';
echo $html;
}
/**
* Shows the confirm base JS code used to display when needed
*
* @return string The javascript content used for the confirm dialog
*/
public function showConfirm()
{
$this->width = is_numeric($this->width) ? $this->width : 500;
$this->height = is_numeric($this->height) ? $this->height : 225;
$html = "tb_show('" . esc_js($this->title) . "', '#TB_inline?width=" . esc_js($this->width) . "&height=" . esc_js($this->height) . "&inlineId=" . esc_js($this->id) . "');\n" .
"var styleData = jQuery('#TB_window').attr('style') + 'height: " . esc_js($this->height) . "px !important';\n" .
"jQuery('#TB_window').attr('style', styleData);";
echo $html;
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists