119 lines
3.3 KiB
PHP
119 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace WPML\TM\Notices;
|
|
|
|
use WPML\TM\ATE\ClonedSites\Lock;
|
|
use WPML\TM\Templates\Notices\AteLocked;
|
|
|
|
class AteLockNotice implements \IWPML_Backend_Action, \IWPML_DIC_Action {
|
|
|
|
/**
|
|
* @var AteLocked
|
|
*/
|
|
private $templateRenderer;
|
|
|
|
public function __construct( AteLocked $templateRenderer ) {
|
|
$this->templateRenderer = $templateRenderer;
|
|
}
|
|
|
|
public function add_hooks() {
|
|
add_action( 'admin_notices', [ $this, 'ateLockNotice' ] );
|
|
add_action( 'admin_enqueue_scripts', [ $this, 'enqueueScripts' ] );
|
|
}
|
|
|
|
public function enqueueScripts() {
|
|
if ( $this->shouldRender() ) {
|
|
wp_enqueue_script(
|
|
'wpml-tm-ate-lock',
|
|
WPML_TM_URL . '/res/js/ate-api-lock-notification.js',
|
|
[],
|
|
WPML_TM_VERSION,
|
|
true
|
|
);
|
|
}
|
|
}
|
|
|
|
public function ateLockNotice() {
|
|
if ( $this->shouldRender() ) {
|
|
$this->renderNotice();
|
|
}
|
|
}
|
|
|
|
private function shouldRender() {
|
|
return Lock::isLocked() && $this->shouldDisplayOnCurrentPage();
|
|
}
|
|
|
|
private function renderNotice() {
|
|
if ( current_user_can( 'manage_options' ) ) {
|
|
$this->renderAdminNotice();
|
|
} else {
|
|
$this->renderUserNotice();
|
|
}
|
|
}
|
|
|
|
private function renderAdminNotice() {
|
|
$model = (object) [
|
|
'title' => __( 'Site Moved or Copied - Action Required', 'wpml-translation-management' ),
|
|
'intro' => __( 'Looks like this site is a copy of a different site, or moved to a different URL.', 'wpml-translation-management' ),
|
|
'radio_option_1' => __( 'I moved the site to this new URL', 'wpml-translation-management' ),
|
|
'radio_option_2' => __( 'This is a copy of my original site', 'wpml-translation-management' ),
|
|
'btn_text' => __( 'Save', 'wpml-translation-management' ),
|
|
'link_text' => __( 'More details', 'wpml-translation-management' ),
|
|
];
|
|
|
|
$this->templateRenderer->renderAdmin( $model );
|
|
}
|
|
|
|
private function renderUserNotice() {
|
|
$model = (object) [
|
|
'title' => __( 'Site Moved or Copied - Action Required', 'wpml-translation-management' ),
|
|
'intro' => __( 'Looks like this site is a copy of a different site, or moved to a different URL. Please contact your translation manager to update Translation Management plugin configuration.', 'wpml-translation-management' ),
|
|
];
|
|
|
|
$this->templateRenderer->renderUser( $model );
|
|
}
|
|
|
|
private function shouldDisplayOnCurrentPage() {
|
|
return $this->shouldDisplayOnScreen( [ 'dashboard' ] ) || $this->shouldDisplayOnPage( $this->getPages() );
|
|
}
|
|
|
|
/**
|
|
* @param array $screens
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function shouldDisplayOnScreen( array $screens ) {
|
|
$currentScreen = get_current_screen();
|
|
return $currentScreen instanceof \WP_Screen
|
|
&& in_array( $currentScreen->id, $screens );
|
|
}
|
|
|
|
/**
|
|
* @param array $pages
|
|
*
|
|
* @return bool
|
|
*/
|
|
private function shouldDisplayOnPage( array $pages ) {
|
|
return isset( $_GET['page'] ) && in_array( $_GET['page'], $pages );
|
|
}
|
|
|
|
/**
|
|
* @return array|string[]
|
|
*/
|
|
private function getPages() {
|
|
$pages = [
|
|
WPML_PLUGIN_FOLDER . '/menu/languages.php',
|
|
WPML_PLUGIN_FOLDER . '/menu/theme-localization.php',
|
|
WPML_PLUGIN_FOLDER . '/menu/settings.php',
|
|
WPML_PLUGIN_FOLDER . '/menu/support.php',
|
|
WPML_TM_FOLDER . '/menu/settings',
|
|
WPML_TM_FOLDER . '/menu/main.php',
|
|
WPML_TM_FOLDER . '/menu/translations-queue.php',
|
|
WPML_TM_FOLDER . '/menu/string-translation.php',
|
|
WPML_TM_FOLDER . '/menu/settings.php',
|
|
];
|
|
|
|
return $pages;
|
|
}
|
|
}
|