PluginProbe
Responsive Menu – Create Mobile-Friendly Menu / 3.0.14
Responsive Menu – Create Mobile-Friendly Menu v3.0.14
4.7.3 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.10 4.1.11 4.1.12 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 All 90 releases
responsive-menu / src / app / View / FrontView.php

FrontView.php in Responsive Menu – Create Mobile-Friendly Menu 3.0.14, at src/app/View/FrontView.php

74 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ResponsiveMenu\View;
4
5 use ResponsiveMenu\Factories\CssFactory;
6 use ResponsiveMenu\Factories\JsFactory;
7 use ResponsiveMenu\Collections\OptionsCollection;
8 use ResponsiveMenu\ViewModels\Menu;
9 use ResponsiveMenu\ViewModels\Button;
10
11 class FrontView implements View {
12
13 public function __construct(JsFactory $js, CssFactory $css) {
14 $this->js = $js;
15 $this->css = $css;
16 }
17
18 public function render($location, $l = []) {
19 add_action('wp_footer', function() use ($location, $l) {
20 include dirname(dirname(dirname(__FILE__))) . '/views/' . $location . '.phtml';
21 });
22 }
23
24 public function make($location, $l = []) {
25 ob_start();
26 include dirname(dirname(dirname(__FILE__))) . '/views/' . $location . '.phtml';
27 $output = ob_get_contents();
28 ob_end_clean();
29 return $output;
30 }
31
32 public function echoOrIncludeScripts(OptionsCollection $options) {
33
34 $css = $this->css->build($options);
35 $js = $this->js->build($options);
36
37 add_filter('body_class', function($classes) use($options) {
38 $classes[] = 'responsive-menu-' . $options['animation_type'] . '-' . $options['menu_appear_from'];
39 return $classes;
40 });
41
42 wp_enqueue_script('jquery');
43
44 if($options['external_files'] == 'on') :
45 $data_folder_dir = plugins_url(). '/responsive-menu-data';
46 $css_file = $data_folder_dir . '/css/responsive-menu-' . get_current_blog_id() . '.css';
47 $js_file = $data_folder_dir . '/js/responsive-menu-' . get_current_blog_id() . '.js';
48 wp_enqueue_style('responsive-menu', $css_file, null, false);
49 wp_enqueue_script('responsive-menu', $js_file, ['jquery'], false, $options['scripts_in_footer'] == 'on' ? true : false);
50 else :
51 add_action('wp_head', function() use ($css) {
52 echo '<style>' . $css . '</style>';
53 }, 100);
54 add_action($options['scripts_in_footer'] == 'on' ? 'wp_footer' : 'wp_head', function() use ($js) {
55 echo '<script>' . $js . '</script>';
56 }, 100);
57 endif;
58 }
59
60 public function addShortcode($options, Button $button, Menu $menu) {
61 add_shortcode('responsive_menu', function($atts) use($options, $button, $menu) {
62
63 if($atts)
64 array_walk($atts, function($a, $b) use ($options) { $options[$b]->setValue($a); });
65
66 $html = $this->make('button', ['options' => $options, 'button' => $button->getHtml($options)]);
67
68 return $html . $this->make('menu', ['options' => $options, 'menu' => $menu->getHtml($options)]);
69
70 });
71 }
72
73 }
74