PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Asset / Script.php
codepress-admin-columns / classes / Asset Last commit date
Location 1 day ago Script 1 day ago Assets.php 1 day ago Enqueueable.php 1 day ago Enqueueables.php 1 day ago Location.php 1 day ago Script.php 1 day ago Style.php 1 day ago
Script.php
116 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Asset;
6
7 use AC\Asset\Script\Inline\Position;
8
9 class Script extends Enqueueable
10 {
11 protected bool $in_footer;
12
13 protected array $templates = [];
14
15 public function __construct(
16 string $handle,
17 ?Location $location = null,
18 array $dependencies = [],
19 bool $in_footer = false
20 ) {
21 parent::__construct($handle, $location, $dependencies);
22
23 $this->in_footer = $in_footer;
24 }
25
26 protected function is_registered(): bool
27 {
28 return wp_script_is($this->get_handle(), 'registered');
29 }
30
31 public function is_in_footer(): bool
32 {
33 return $this->in_footer;
34 }
35
36 public function register(): void
37 {
38 if (! $this->location instanceof Location) {
39 return;
40 }
41
42 $version = $this->get_version();
43
44 wp_register_script(
45 $this->get_handle(),
46 $this->location->get_url(),
47 $this->dependencies,
48 $version !== null
49 ? (string)$version
50 : null,
51 $this->is_in_footer()
52 );
53 }
54
55 public function enqueue(): void
56 {
57 if (wp_script_is($this->get_handle())) {
58 return;
59 }
60
61 if (! $this->is_registered()) {
62 $this->register();
63 }
64
65 wp_enqueue_script($this->get_handle());
66
67 if ($this->templates) {
68 // Allows JS frameworks to use PHP templates
69 $this->add_inline(
70 sprintf(
71 'window.addEventListener("DOMContentLoaded",function(){document.body.insertAdjacentHTML("beforeend", %s);});',
72 json_encode(implode('', $this->templates))
73 )
74 );
75 }
76 }
77
78 public function localize(string $name, Script\Localize\Translation $translation): self
79 {
80 if (! $this->is_registered()) {
81 $this->register();
82 }
83
84 wp_localize_script($this->handle, $name, $translation->get_translation());
85
86 return $this;
87 }
88
89 public function add_inline(string $data, ?Position $position = null): self
90 {
91 if (! $this->is_registered()) {
92 $this->register();
93 }
94
95 wp_add_inline_script($this->handle, $data, (string)($position ?? Position::after()));
96
97 return $this;
98 }
99
100 public function add_inline_variable(string $name, $data): self
101 {
102 return $this->add_inline(
103 sprintf('var %s = %s;', $name, json_encode($data)),
104 Position::before()
105 );
106 }
107
108 public function add_template(string $id, string $html): self
109 {
110 $this->templates[] = sprintf('<template id="%s">%s</template>', esc_attr($id), $html);
111
112 return $this;
113 }
114
115 }
116