';
include SMSPORTAL_DIR . 'includes/Admin/views/header.php';
Notice::render();
StatusNotices::render();
echo '
';
$this->render_tab( $current_tab );
echo '
';
}
/**
* Connection pill in the header. Uses only the cached phone state: the header never calls smsportal.app.
*
* @return array{tone:string,text:string} tone: ok, wait or off.
*/
public static function connection_pill(): array {
$connection = Connection::get();
if ( null === $connection ) {
return array(
'tone' => 'off',
'text' => __( 'Not connected', '85pl-android-sms-api' ),
);
}
if ( Connection::home_changed() ) {
return array(
'tone' => 'wait',
'text' => __( 'Connection paused', '85pl-android-sms-api' ),
);
}
$info = Api::cached_info();
$name = (string) ( $info['device_name'] ?? $connection['device_name'] ?? '' );
$name = '' === $name ? __( 'Phone', '85pl-android-sms-api' ) : $name;
if ( null === $info ) {
return array(
'tone' => 'ok',
/* translators: %s: name of the phone, e.g. "Pixel 6". */
'text' => sprintf( __( 'Connected · %s', '85pl-android-sms-api' ), $name ),
);
}
$online = ! empty( $info['device_online'] );
return array(
'tone' => $online ? 'ok' : 'wait',
'text' => $online
/* translators: %s: name of the phone, e.g. "Pixel 6". */
? sprintf( __( 'Connected · %s online', '85pl-android-sms-api' ), $name )
/* translators: %s: name of the phone, e.g. "Pixel 6". */
: sprintf( __( 'Connected · %s offline', '85pl-android-sms-api' ), $name ),
);
}
/**
* Body of a tab.
*
* @param string $tab Tab slug.
* @return void
*/
private function render_tab( string $tab ) {
if ( 'overview' === $tab ) {
OverviewPage::render();
} elseif ( 'rules' === $tab ) {
RulesPage::render();
} elseif ( 'settings' === $tab ) {
SettingsPage::render();
} else {
ListPages::render( $tab );
}
}
}