You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.4 KiB
PHTML
158 lines
4.4 KiB
PHTML
8 months ago
|
<?php
|
||
|
namespace DeployerForGit;
|
||
|
|
||
|
use DeployerForGit\Subpages\DashboardPage\Dashboard;
|
||
|
use DeployerForGit\Subpages\InstallThemePage\InstallTheme;
|
||
|
use DeployerForGit\Subpages\InstallPluginPage\InstallPlugin;
|
||
|
use DeployerForGit\Subpages\LogsPage\Logs;
|
||
|
use DeployerForGit\Subpages\MiscellaneousPage\Miscellaneous;
|
||
|
|
||
|
/**
|
||
|
* Class Admin
|
||
|
*
|
||
|
* @package DeployerForGit
|
||
|
*/
|
||
|
class Admin {
|
||
|
/**
|
||
|
* Admin constructor.
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
$this->init_dashboard_page();
|
||
|
$this->init_install_theme_page();
|
||
|
$this->init_install_plugin_page();
|
||
|
$this->init_logs_page();
|
||
|
$this->init_miscellaneous_page();
|
||
|
|
||
|
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
||
|
add_action( is_multisite() ? 'network_admin_notices' : 'admin_notices', array( $this, 'display_alert_notification_box' ) );
|
||
|
add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initialize dashboard page
|
||
|
*/
|
||
|
private function init_dashboard_page() {
|
||
|
new Dashboard();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initialize install theme page
|
||
|
*/
|
||
|
public function init_install_theme_page() {
|
||
|
new InstallTheme();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initialize install plugin page
|
||
|
*/
|
||
|
private function init_install_plugin_page() {
|
||
|
new InstallPlugin();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initialize miscellaneous page
|
||
|
*/
|
||
|
private function init_miscellaneous_page() {
|
||
|
new Miscellaneous();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Initialize logs page
|
||
|
*/
|
||
|
private function init_logs_page() {
|
||
|
new Logs();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Display alert notification box
|
||
|
*/
|
||
|
public function display_alert_notification_box() {
|
||
|
$data_manager = new DataManager();
|
||
|
$alert_notification_setting = $data_manager->get_alert_notification_setting();
|
||
|
|
||
|
if ( $alert_notification_setting ) {
|
||
|
$menu_slug = Helper::menu_slug();
|
||
|
$dashboard_url = is_multisite() ? network_admin_url( "admin.php?page={$menu_slug}" ) : menu_page_url( $menu_slug, false );
|
||
|
|
||
|
// translators: %s = dashboard url.
|
||
|
$html = wp_kses_post( __( '<strong>Warning:</strong> Please do not make any changes to the theme or plugin code directly because some themes or plugins are connected with Git.<br>Click <a href="%s">here</a> to learn more.', 'deployer-for-git' ) );
|
||
|
$html = sprintf( $html, esc_url( $dashboard_url ) );
|
||
|
|
||
|
$html = apply_filters( 'dfg_alert_notification_message', $html );
|
||
|
|
||
|
$html = "<div class='dfg_alert_box' >{$html}</div>";
|
||
|
|
||
|
echo wp_kses(
|
||
|
$html,
|
||
|
array(
|
||
|
'a' => array(
|
||
|
'href' => array(),
|
||
|
'title' => array(),
|
||
|
),
|
||
|
'br' => array(),
|
||
|
'strong' => array(),
|
||
|
'div' => array(
|
||
|
'class' => array(),
|
||
|
),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enqueue scripts
|
||
|
*/
|
||
|
public function enqueue_scripts() {
|
||
|
wp_enqueue_style( 'dfg-styles', DFG_URL . 'assets/css/deployer-for-git-main.css', array(), DFG_VERSION );
|
||
|
|
||
|
wp_enqueue_script( 'dfg-script', DFG_URL . 'assets/js/deployer-for-git-main.js', array(), DFG_VERSION, true );
|
||
|
|
||
|
wp_localize_script(
|
||
|
'dfg-script',
|
||
|
'dfg',
|
||
|
array(
|
||
|
'copy_url_label' => __( 'Copy URL', 'deployer-for-git' ),
|
||
|
'copied_url_label' => __( 'Copied!', 'deployer-for-git' ),
|
||
|
'updating_now_label' => __( 'Updating now...', 'deployer-for-git' ),
|
||
|
'error_label' => __( 'Something went wrong', 'deployer-for-git' ),
|
||
|
'update_completed_label' => __( 'Updated!', 'deployer-for-git' ),
|
||
|
'update_theme_label' => __( 'Update Theme', 'deployer-for-git' ),
|
||
|
'update_plugin_label' => __( 'Update Plugin', 'deployer-for-git' ),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* When user is on a plugin related admin page, display footer text.
|
||
|
*
|
||
|
* @param string $text Footer text.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function admin_footer( $text ) {
|
||
|
|
||
|
global $current_screen;
|
||
|
|
||
|
if ( ! empty( $current_screen->id ) && strpos( $current_screen->id, 'deployer-for-git' ) !== false ) {
|
||
|
$url = 'https://wordpress.org/support/plugin/deployer-for-git/reviews/?filter=5#new-post';
|
||
|
$text = sprintf(
|
||
|
wp_kses( /* translators: $1$s - Deployer for Git plugin name; $2$s - WP.org review link; $3$s - WP.org review link. */
|
||
|
__( 'Please rate %1$s <a href="%2$s" target="_blank" rel="noopener noreferrer">★★★★★</a> on <a href="%3$s" target="_blank" rel="noopener">WordPress.org</a> to support and promote our solution. Thank you very much!', 'deployer-for-git' ),
|
||
|
array(
|
||
|
'a' => array(
|
||
|
'href' => array(),
|
||
|
'target' => array(),
|
||
|
'rel' => array(),
|
||
|
),
|
||
|
)
|
||
|
),
|
||
|
'<strong>Deployer for Git</strong>',
|
||
|
$url,
|
||
|
$url
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return $text;
|
||
|
}
|
||
|
}
|