PluginProbe
Code Snippets / 3.10.0-beta.1
Code Snippets v3.10.0-beta.1
4.0.0-beta.2 3.10.2 3.10.1 3.10.0 3.10.0-beta.2 3.10.0-beta.1 4.0.0-beta.1 3.9.6 trunk 2.10.0 2.10.1 2.12.0 2.12.1 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.14.1 2.14.2 2.14.3 2.14.4 2.14.5 2.14.6 3.0.0 All 65 releases
code-snippets / php / Admin / Menus / Manage / Manage_Menu_Assets.php

Manage_Menu_Assets.php in Code Snippets 3.10.0-beta.1, at php/Admin/Menus/Manage/Manage_Menu_Assets.php

121 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Code_Snippets\Admin\Menus\Manage;
4
5 use Code_Snippets\Integration\Evaluate_Functions;
6 use function Code_Snippets\code_snippets;
7 use function Code_Snippets\get_snippets;
8 use function Code_Snippets\Settings\get_setting;
9 use function Code_Snippets\Utils\enqueue_code_preview_editor;
10 use const Code_Snippets\PLUGIN_FILE;
11 use const Code_Snippets\PLUGIN_VERSION;
12
13 /**
14 * Enqueues assets and builds localized data for the manage menu.
15 */
16 class Manage_Menu_Assets {
17
18 /**
19 * Handle for JavaScript asset file.
20 */
21 private const JS_HANDLE = 'code-snippets-manage-menu';
22
23 /**
24 * Handle for CSS asset file.
25 */
26 private const CSS_HANDLE = 'code-snippets-manage';
27
28 /**
29 * Manage menu Screen Options.
30 *
31 * @var Manage_Menu_Screen_Options
32 */
33 private Manage_Menu_Screen_Options $screen_options;
34
35 /**
36 * Class constructor.
37 *
38 * @param Manage_Menu_Screen_Options $screen_options Manage menu Screen Options.
39 */
40 public function __construct( Manage_Menu_Screen_Options $screen_options ) {
41 $this->screen_options = $screen_options;
42 }
43
44 /**
45 * Count non-trashed snippets by type.
46 *
47 * @return array<string, int> Map of type name to snippet count, including 'all'.
48 */
49 private function get_snippet_type_counts(): array {
50 $counts = [ 'all' => 0 ];
51
52 foreach ( get_snippets() as $snippet ) {
53 if ( $snippet->trashed ) {
54 continue;
55 }
56
57 $counts[ $snippet->type ] = ( $counts[ $snippet->type ] ?? 0 ) + 1;
58 ++$counts['all'];
59 }
60
61 return $counts;
62 }
63
64 /**
65 * Enqueue manage assets and localize their runtime data.
66 *
67 * @param string[] $script_dependencies JavaScript dependencies.
68 * @param string[] $style_dependencies CSS dependencies.
69 *
70 * @return void
71 */
72 public function enqueue( array $script_dependencies, array $style_dependencies ): void {
73 wp_enqueue_style(
74 self::CSS_HANDLE,
75 plugins_url( 'dist/manage.css', PLUGIN_FILE ),
76 $style_dependencies,
77 PLUGIN_VERSION
78 );
79
80 wp_enqueue_script(
81 self::JS_HANDLE,
82 plugins_url( 'dist/manage.js', PLUGIN_FILE ),
83 $script_dependencies,
84 PLUGIN_VERSION,
85 [ 'in_footer' => true ]
86 );
87
88 enqueue_code_preview_editor( 'php' );
89 wp_set_script_translations( self::JS_HANDLE, 'code-snippets' );
90 code_snippets()->localize_script( self::JS_HANDLE );
91
92 $localized = [
93 'hasNetworkCap' => current_user_can( code_snippets()->get_network_cap_name() ),
94 'hiddenColumns' => $this->screen_options->get_hidden_columns(),
95 'truncateRowValues' => (int) $this->screen_options->should_truncate_rows(),
96 'snippetsPerPage' => Manage_Menu::get_snippets_per_page(),
97 'cloudSearchPerPage' => Manage_Menu::get_cloud_search_per_page(),
98 'isSafeModeActive' => Evaluate_Functions::is_safe_mode_active(),
99 'bulkDownloadNonce' => wp_create_nonce( 'code_snippets_bulk_download' ),
100 'supportsZipDownloads' => class_exists( 'ZipArchive' ),
101 'editorTheme' => get_setting( 'editor', 'theme' ),
102 'typeCounts' => $this->get_snippet_type_counts(),
103 ];
104
105 if ( $this->screen_options->is_manage_table_view() ) {
106 $snippets = get_snippets();
107 $inline_limit = max( 0, intval( apply_filters( 'code_snippets/manage/inline_snippets_limit', 100 ) ) );
108
109 // Full code bodies make this payload grow with the size of the snippet library.
110 if ( 0 < $inline_limit && count( $snippets ) <= $inline_limit ) {
111 $localized['snippetsList'] = array_map(
112 fn( $snippet ) => $snippet->get_fields(),
113 $snippets
114 );
115 }
116 }
117
118 wp_localize_script( self::JS_HANDLE, 'CODE_SNIPPETS_MANAGE', $localized );
119 }
120 }
121