diff --git a/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/index.php b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/index.php new file mode 100644 index 0000000..9a6d8b0 --- /dev/null +++ b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/index.php @@ -0,0 +1,48 @@ + function ($attributes) { + // require_once __DIR__ . '/render.php'; + // }, + // ] + ); +}); + +\add_action('admin_init', function () { + if (isset($_GET['complete_nba'])) { + require_once __DIR__ . '/model.php'; + $nba_id = $_GET['complete_nba']; + + $nba = \ionos_wordpress\essentials\dashboard\blocks\next_best_actions\model\NBA::getNBA($nba_id); + $nba->setStatus( "completed", true); + } +}); + +\add_action('rest_api_init', function () { + \register_rest_route('ionos/v1', '/dismiss_nba/(?P[a-zA-Z0-9-]+)', [ + 'methods' => 'GET', + 'callback' => function ($request) { + require_once __DIR__ . '/model.php'; + $params = $request->get_params(); + $nba_id = $params['id']; + + $nba = \ionos_wordpress\essentials\dashboard\blocks\next_best_actions\model\NBA::getNBA($nba_id); + $res = $nba->setStatus( "dismissed", true); + if ($res) { + return new \WP_REST_Response(['status' => 'success', 'res' => $res], 200); + } + return new \WP_REST_Response(['status' => 'error'], 500); + }, + 'permission_callback' => function () { + return true || \current_user_can('manage_options'); + }, + ]); +}); + + diff --git a/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/model.php b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/model.php new file mode 100644 index 0000000..7abeab2 --- /dev/null +++ b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/model.php @@ -0,0 +1,162 @@ +id] = $this; + } + + public function __get($property) + { + if ('active' === $property) { + $status = $this->_get_status(); + if (isset($status["completed"]) && $status["completed"] || isset($status["dismissed"]) && $status["dismissed"]) { + return false; + } + // $status = (object) $this->_get_status(); + // if ($status?->completed ?? false || $status?->dismissed ?? false) { + // return false; + // } + return ! $this->completed; + } + } + + private static function _get_option() + { + if (! isset(self::$option_value)) { + self::$option_value = \get_option(self::$option_name, []); + } + return self::$option_value; + } + + private static function _set_option(array $option) + { + return \update_option(self::$option_name, $option); + } + + private function _get_status() + { + $option = $this->_get_option(); + return $option[$this->id] ?? []; + } + + function setStatus($key, $value) { + $id = $this->id; + $option = self::_get_option(); + + $option[$id] ??= []; + $option[$id][$key] = $value; + return self::_set_option($option); + } + + public static function getNBA($id) + { + return self::$actions[$id]; + } + + public static function getActions() + { + return self::$actions; + } + + public static function register($id, $title, $description, $link, $completed = false) + { + new NBA($id, $title, $description, $link, $completed); + } + +} +NBA::register( + id: 'addPage', + title: 'Add a page', + description: 'Create some content for your website visitor.', + link: admin_url('post-new.php?post_type=page'), + completed: wp_count_posts('page')->publish > 0 +); + +NBA::register( + id: 'checkPluginsPage', + title: 'Check plugins page', + description: 'Ensure all your plugins are up-to-date and functioning correctly.', + link: admin_url('plugins.php?complete_nba=checkPluginsPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkThemesPage', + title: 'Check themes page', + description: 'Review and manage your installed themes for a fresh look.', + link: admin_url('themes.php?complete_nba=checkThemesPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkSettingsPage', + title: 'Check settings page', + description: 'Verify your site settings to ensure everything is configured properly.', + link: admin_url('options-general.php?complete_nba=checkSettingsPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkUpdatesPage', + title: 'Check updates page', + description: 'Stay secure by keeping your WordPress installation up-to-date.', + link: admin_url('update-core.php?complete_nba=checkUpdatesPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkCommentsPage', + title: 'Check comments page', + description: 'Moderate and manage comments to keep your community engaged.', + link: admin_url('edit-comments.php?complete_nba=checkCommentsPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkPostsPage', + title: 'Check posts page', + description: 'Review your posts to ensure they are up-to-date and relevant.', + link: admin_url('edit.php?post_type=post&complete_nba=checkPostsPage'), + // completed: (function(){ + // return false; + // })() +); + +NBA::register( + id: 'checkUsersPage', + title: 'Check users page', + description: 'Manage user roles and permissions to maintain site security.', + link: admin_url('users.php?complete_nba=checkUsersPage'), + // completed: (function(){ + // return false; + // })() +); diff --git a/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/render.php b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/render.php new file mode 100644 index 0000000..19eb602 --- /dev/null +++ b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/render.php @@ -0,0 +1,50 @@ +' +. '
' +. sprintf('

%s

', \esc_html__('Next best actions ⚡', 'ionos-essentials')) +. sprintf('

%s

', \esc_html__('Description of this block', 'ionos-essentials')) +. '
' +. '
' +. '%s' +. '
'; + +$body = ''; +foreach ($actions as $action) { + $active = $action->active; + if (! $active) { + continue; + } + $body .= '
' + . sprintf('

%s

', \esc_html($action->title, 'ionos-essentials')) + . sprintf('

%s

', \esc_html($action->description, 'ionos-essentials')) + . '
' + . sprintf( + '', + \esc_url($action->link), + \esc_html("Primary button", 'ionos-essentials'), + ) + . '
' + . sprintf( + '', + $action->id, + \esc_html("Dismiss", 'ionos-essentials') + ) + . '
'; +} + +if (empty($body)) { + return; +} + +\printf($template, $body); diff --git a/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/style.css b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/style.css new file mode 100644 index 0000000..485af83 --- /dev/null +++ b/packages/wp-plugin/essentials/inc/dashboard/blocks/nba/style.css @@ -0,0 +1,35 @@ +#ionos-dashboard__essentials_nba { + min-height:0px; +} + +#ionos-dashboard__essentials_nba > .wp-block-group { + margin-top:0px; + margin-bottom:15px; + padding-top:0; + padding-right:0; + padding-bottom:0; + padding-left:0 +} + +#ionos-dashboard__essentials_nba > .wp-block-columns { + border-style:none; + border-width:0px; + display: flex; + flex-wrap: wrap !important; +} + +#ionos-dashboard__essentials_nba > .wp-block-columns > .wp-block-column { + border-color:#bcc8d4; + border-width:1px; + border-radius:24px; + flex: 1 1 calc(33.333% - 14px); + max-width: calc(33.333% - 14px); + box-sizing: border-box; +} + +/* Ensure the last columns do not stretch */ +#ionos-dashboard__essentials_nba > .wp-block-columns > .wp-block-column:nth-child(3n+1) { + margin-left: 0; +} + + diff --git a/packages/wp-plugin/essentials/inc/dashboard/data/ionos/post_content.html b/packages/wp-plugin/essentials/inc/dashboard/data/ionos/post_content.html index aa59261..593b1b6 100644 --- a/packages/wp-plugin/essentials/inc/dashboard/data/ionos/post_content.html +++ b/packages/wp-plugin/essentials/inc/dashboard/data/ionos/post_content.html @@ -82,6 +82,8 @@

Next best action 1

+ +
diff --git a/packages/wp-plugin/essentials/inc/dashboard/data/ionos/rendered-skeleton.html b/packages/wp-plugin/essentials/inc/dashboard/data/ionos/rendered-skeleton.html index f5247a7..f19c0ee 100644 --- a/packages/wp-plugin/essentials/inc/dashboard/data/ionos/rendered-skeleton.html +++ b/packages/wp-plugin/essentials/inc/dashboard/data/ionos/rendered-skeleton.html @@ -1002,6 +1002,44 @@ .wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{ width:100%; } + + - - +
diff --git a/packages/wp-plugin/essentials/inc/dashboard/index.php b/packages/wp-plugin/essentials/inc/dashboard/index.php index 05e4bac..8a5cace 100644 --- a/packages/wp-plugin/essentials/inc/dashboard/index.php +++ b/packages/wp-plugin/essentials/inc/dashboard/index.php @@ -31,6 +31,8 @@ require_once __DIR__ . '/editor.php'; } +require_once __DIR__ . '/blocks/nba/index.php'; + \add_action('init', function () { define('IONOS_ESSENTIALS_DASHBOARD_ADMIN_PAGE_TITLE', __('IONOS Dashboard', 'ionos-essentials')); diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE.po b/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE.po index b75326d..d8406dc 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE.po @@ -39,7 +39,7 @@ msgstr "IONOS-Gruppe" msgid "https://www.ionos-group.com/brands.html" msgstr "https://www.ionos-group.com/brands.html" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "IONOS Dashboard" @@ -195,3 +195,21 @@ msgstr "Sicherheits-Scan" #: build/dashboard/blocks/vulnerability/render.php:36 msgid "IONOS Security Plugin not available" msgstr "IONOS Security Plugin nicht verfügbar" + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE_formal.po b/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE_formal.po index cec7f29..434d3e8 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE_formal.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-de_DE_formal.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: de_DE_formal\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: de_DE_formal\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "IONOS Security Plugin nicht verfügbar" msgid "Hello World !" msgstr "Hallo Welt!" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "IONOS Dashboard" @@ -195,3 +195,21 @@ msgstr "Schwachstelle" msgctxt "block description" msgid "Show wp scan data." msgstr "wp-Scandaten anzeigen." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-en_US.po b/packages/wp-plugin/essentials/languages/ionos-essentials-en_US.po index 897f282..69970b4 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-en_US.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-en_US.po @@ -39,7 +39,7 @@ msgstr "IONOS Group" msgid "https://www.ionos-group.com/brands.html" msgstr "https://www.ionos-group.com/brands.html" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "IONOS Dashboard" @@ -195,3 +195,21 @@ msgstr "Vulnerability Scan" #: build/dashboard/blocks/vulnerability/render.php:36 msgid "IONOS Security Plugin not available" msgstr "IONOS Security Plugin not available" + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-es_ES.po b/packages/wp-plugin/essentials/languages/ionos-essentials-es_ES.po index e35dc0c..7b38cd9 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-es_ES.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-es_ES.po @@ -142,7 +142,7 @@ msgstr "Quick Links" msgid "Hello World !" msgstr "Hola a todos." -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "Cuadro de mandos de IONOS" @@ -195,3 +195,21 @@ msgstr "Vulnerabilidad" msgctxt "block description" msgid "Show wp scan data." msgstr "Mostrar datos de escaneo wp." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-fr_FR.po b/packages/wp-plugin/essentials/languages/ionos-essentials-fr_FR.po index 8adec71..d5016f7 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-fr_FR.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-fr_FR.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: fr\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "IONOS Security Plugin n'est pas disponible" msgid "Hello World !" msgstr "Hello World !" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "Tableau de bord IONOS" @@ -195,3 +195,21 @@ msgstr "Vulnérabilité" msgctxt "block description" msgid "Show wp scan data." msgstr "Afficher les données de balayage wp." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-it_IT.po b/packages/wp-plugin/essentials/languages/ionos-essentials-it_IT.po index bc6e875..47ce8ea 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-it_IT.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-it_IT.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: it\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "Plugin di sicurezza IONOS non disponibile" msgid "Hello World !" msgstr "Ciao mondo!" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "Cruscotto IONOS" @@ -195,3 +195,21 @@ msgstr "Vulnerabilità" msgctxt "block description" msgid "Show wp scan data." msgstr "Mostra i dati della scansione wp." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-nl_NL.po b/packages/wp-plugin/essentials/languages/ionos-essentials-nl_NL.po index 7a2d250..6adcbf8 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-nl_NL.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-nl_NL.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: nl\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "IONOS Security Plugin niet beschikbaar" msgid "Hello World !" msgstr "Hallo Wereld!" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "IONOS-dashboard" @@ -195,3 +195,21 @@ msgstr "Kwetsbaarheid" msgctxt "block description" msgid "Show wp scan data." msgstr "Wp-scangegevens weergeven." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-pl_PL.po b/packages/wp-plugin/essentials/languages/ionos-essentials-pl_PL.po index b277c70..577f899 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-pl_PL.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-pl_PL.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: pl\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "Wtyczka IONOS Security Plugin nie jest dostępna" msgid "Hello World !" msgstr "Hello World!" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "Pulpit nawigacyjny IONOS" @@ -195,3 +195,21 @@ msgstr "Podatność" msgctxt "block description" msgid "Show wp scan data." msgstr "Pokaż dane skanowania wp." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials-sv_SE.po b/packages/wp-plugin/essentials/languages/ionos-essentials-sv_SE.po index 9fbac0b..425cc09 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials-sv_SE.po +++ b/packages/wp-plugin/essentials/languages/ionos-essentials-sv_SE.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"Content-Transfer-Encoding: 8bit\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Language: sv\n" -"Language-Team: none\n" +"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "Last-Translator: Automatically generated\n" +"Language-Team: none\n" "MIME-Version: 1.0\n" -"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2025-02-19T08:22:27+00:00\n" +"PO-Revision-Date: 2025-02-19T08:22:27+00:00\n" +"Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Project-Id-Version: ionos-wordpress/essentials 0.0.4\n" -"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/html\n" "X-Domain: ionos-essentials\n" "X-Generator: WP-CLI 2.11.0\n" @@ -162,7 +162,7 @@ msgstr "IONOS Security Plugin är inte tillgängligt" msgid "Hello World !" msgstr "Hej världen!" -#: inc/dashboard/index.php:35 +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "IONOS instrumentpanel" @@ -195,3 +195,21 @@ msgstr "Sårbarhet" msgctxt "block description" msgid "Show wp scan data." msgstr "Visa wp-skanningsdata." + +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" diff --git a/packages/wp-plugin/essentials/languages/ionos-essentials.pot b/packages/wp-plugin/essentials/languages/ionos-essentials.pot index 8e44011..afc2ff1 100644 --- a/packages/wp-plugin/essentials/languages/ionos-essentials.pot +++ b/packages/wp-plugin/essentials/languages/ionos-essentials.pot @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2025-02-10T14:40:38+00:00\n" +"POT-Creation-Date: 2025-02-23T11:25:21+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: ionos-essentials\n" @@ -162,7 +162,15 @@ msgstr "" msgid "Hello World !" msgstr "" -#: inc/dashboard/index.php:35 +#: inc/dashboard/blocks/nba/render.php:15 +msgid "Next best actions ⚡" +msgstr "" + +#: inc/dashboard/blocks/nba/render.php:16 +msgid "Description of this block" +msgstr "" + +#: inc/dashboard/index.php:37 msgid "IONOS Dashboard" msgstr "" @@ -176,6 +184,16 @@ msgctxt "block description" msgid "Show links to the Control Panel of your provider." msgstr "" +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block title" +msgid "NBA" +msgstr "" + +#: build/dashboard/blocks/next-best-actions/block.json +msgctxt "block description" +msgid "Next Best Actions" +msgstr "" + #: build/dashboard/blocks/quick-links/block.json msgctxt "block title" msgid "Quick Links" diff --git a/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/block.json b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/block.json new file mode 100644 index 0000000..da3441d --- /dev/null +++ b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/block.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 3, + "name": "ionos-dashboard-page/next-best-actions", + "version": "0.1.0", + "title": "NBA", + "category": "widgets", + "icon": "index-card", + "description": "Next Best Actions", + "example": {}, + "supports": { + "html": false + }, + "textdomain": "ionos-essentials", + "editorScript": "file:./index.js", + "viewScript": [ + "file:./view.js", + "wp-api-fetch" + ], + "viewStyle": "file:../../../../inc/dashboard/blocks/nba/style.css", + "render": "file:../../../../inc/dashboard/blocks/nba/render.php" +} diff --git a/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/edit.js b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/edit.js new file mode 100644 index 0000000..712e160 --- /dev/null +++ b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/edit.js @@ -0,0 +1,14 @@ +import { __ } from '@wordpress/i18n'; +import { useBlockProps } from '@wordpress/block-editor'; +import ServerSideRender from '@wordpress/server-side-render'; + +export default function Edit(props) { + return ( +
+ +
+ ); +} diff --git a/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/index.js b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/index.js new file mode 100644 index 0000000..0cf1a1d --- /dev/null +++ b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/index.js @@ -0,0 +1,8 @@ +import { registerBlockType } from '@wordpress/blocks'; +import Edit from './edit.js'; +import metadata from './block.json'; + +registerBlockType(metadata.name, { + edit: Edit, + save: () => null, // server-side rendering doesnt need a save function +}); diff --git a/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/view.js b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/view.js new file mode 100644 index 0000000..cd5fb7d --- /dev/null +++ b/packages/wp-plugin/essentials/src/dashboard/blocks/next-best-actions/view.js @@ -0,0 +1,24 @@ +import apiFetch from '@wordpress/api-fetch'; + +console.log('Next Best Actions block loaded'); +document.querySelectorAll('.dismiss-nba').forEach((el) => { + el.addEventListener('click', async (click) => { + click.preventDefault(); + console.log(wp.ajax); + // alert(`Dismiss NBA ${click.target.id}`); + const res = await apiFetch({ + path: `ionos/v1/dismiss_nba/${click.target.id}`, + method: 'GET', + }); + if (res.status === 'success') { + const TRANSITION_DURATION = 300; + const element = click.target.parentElement.parentElement.parentElement.parentElement; + element.style.transition = `opacity ${TRANSITION_DURATION}ms, transform ${TRANSITION_DURATION}ms`; + element.style.opacity = '0'; + element.style.transform = 'translateY(-10px)'; + setTimeout(() => { + element.style.display = 'none'; + }, TRANSITION_DURATION); + } + }); +});