| @@ -20,8 +20,10 @@ | ||
| 20 | 20 | use ThinkRank\Admin\Metabox_Manager; |
| 21 | 21 | use ThinkRank\Admin\Elementor_Metabox; |
| 22 | 22 | use ThinkRank\Admin\Oxygen_Metabox; |
| 23 | 23 | use ThinkRank\Admin\Divi_Metabox; |
| 24 | +use ThinkRank\Admin\Bricks_Metabox; | |
| 25 | +use ThinkRank\Admin\Beaver_Metabox; | |
| 24 | 26 | use ThinkRank\Admin\Bulk_Action_Manager; |
| 25 | 27 | use ThinkRank\Admin\Post_List_Filters; |
| 26 | 28 | |
| 27 | 29 | // Prevent direct access |
| @@ -80,8 +82,22 @@ | ||
| 80 | 82 | */ |
| 81 | 83 | private Divi_Metabox $divi_metabox; |
| 82 | 84 | |
| 83 | 85 | /** |
| 86 | + * Bricks builder metabox integration instance | |
| 87 | + * | |
| 88 | + * @var Bricks_Metabox | |
| 89 | + */ | |
| 90 | + private Bricks_Metabox $bricks_metabox; | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Beaver Builder metabox integration | |
| 94 | + * | |
| 95 | + * @var Beaver_Metabox | |
| 96 | + */ | |
| 97 | + private Beaver_Metabox $beaver_metabox; | |
| 98 | + | |
| 99 | + /** | |
| 84 | 100 | * Post list columns instance |
| 85 | 101 | * |
| 86 | 102 | * @var Post_List_Columns |
| 87 | 103 | */ |
| @@ -134,8 +150,10 @@ | ||
| 134 | 150 | $this->metabox_manager = new Metabox_Manager($this->settings); |
| 135 | 151 | $this->elementor_metabox = new Elementor_Metabox($this->metabox_manager); |
| 136 | 152 | $this->oxygen_metabox = new Oxygen_Metabox($this->metabox_manager); |
| 137 | 153 | $this->divi_metabox = new Divi_Metabox($this->metabox_manager); |
| 154 | + $this->bricks_metabox = new Bricks_Metabox($this->metabox_manager); | |
| 155 | + $this->beaver_metabox = new Beaver_Metabox($this->metabox_manager); | |
| 138 | 156 | $this->post_list_columns = new Post_List_Columns(); |
| 139 | 157 | $this->focus_keyword_ajax = new Focus_Keyword_Ajax(); |
| 140 | 158 | $this->seo_quick_edit_ajax = new Seo_Quick_Edit_Ajax(); |
| 141 | 159 | $this->bulk_action_manager = new Bulk_Action_Manager(); |
| @@ -171,8 +189,16 @@ | ||
| 171 | 189 | // Initialize Divi Visual Builder integration (hooks gate on the VB |
| 172 | 190 | // request, so they no-op without Divi) |
| 173 | 191 | $this->divi_metabox->init(); |
| 174 | 192 | |
| 193 | + // Initialize Bricks builder integration (hooks gate on Bricks' own | |
| 194 | + // builder detector, so they no-op without Bricks) | |
| 195 | + $this->bricks_metabox->init(); | |
| 196 | + | |
| 197 | + // Initialize Beaver Builder integration (hooks gate on Beaver Builder's | |
| 198 | + // own builder detector, so they no-op without Beaver Builder) | |
| 199 | + $this->beaver_metabox->init(); | |
| 200 | + | |
| 175 | 201 | // Initialize post list columns |
| 176 | 202 | $this->post_list_columns->init(); |
| 177 | 203 | |
| 178 | 204 | // Initialize focus keyword AJAX handler |
| @@ -426,13 +452,10 @@ | ||
| 426 | 452 | 'sectionCaps' => Capability_Manager::section_map(), |
| 427 | 453 | 'canManageRoles' => Capability_Manager::current_user_can(Capability_Manager::MANAGE_ROLES), |
| 428 | 454 | // Pro detection flag |
| 429 | 455 | 'isPro' => Plan_Config::is_pro(), |
| 430 | - // Data update frequency (Pro: daily, Free: every 3 days) | |
| 431 | - 'dataUpdateFrequency' => Plan_Config::is_pro() ? 'daily' : '3days', | |
| 432 | - // NB: no per-feature capability maps here. Email Reporting reads | |
| 433 | - // its capabilities from GET /thinkrank/v1/email-report/config; | |
| 434 | - // localizing a second copy only invited the two to drift. | |
| 456 | + // NB: no per-feature capability maps here; each screen reads its | |
| 457 | + // own state over REST, so a localized copy cannot drift from it. | |
| 435 | 458 | // MCP (Model Context Protocol) connection details for the MCP page. |
| 436 | 459 | 'mcp' => $this->get_mcp_globals(), |
| 437 | 460 | // Google OAuth: JS only ever gets a nonce-signed admin-post URL. |
| 438 | 461 | // The consent URL, client ID, and scopes are assembled by the proxy, |