Skip to content

Commit fc192c7

Browse files
⚡ REFACTOR: PHP OOP integrated
1 parent 3139df6 commit fc192c7

File tree

4 files changed

+457
-35
lines changed

4 files changed

+457
-35
lines changed

includes/Admin/Menu.php

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
namespace Akash\JobPlace\Admin;
4+
5+
/**
6+
* Admin Menu class.
7+
*
8+
* Responsible for managing admin menus.
9+
*/
10+
class Menu {
11+
12+
/**
13+
* Constructor.
14+
*
15+
* @since 0.2.0
16+
*/
17+
public function __construct() {
18+
add_action( 'admin_menu', [ $this, 'init_menu' ] );
19+
}
20+
21+
/**
22+
* Init Menu.
23+
*
24+
* @since 0.2.0
25+
*
26+
* @return void
27+
*/
28+
public function init_menu() {
29+
global $submenu;
30+
31+
$slug = JOB_PLACE_SLUG;
32+
$menu_position = 50;
33+
$capability = 'manage_options';
34+
35+
add_menu_page( esc_attr__( 'Job Place', 'jobplace' ), esc_attr__( 'Job Place', 'jobplace' ), $capability, $slug, [ $this, 'plugin_page' ], 'dashicons-filter', $menu_position );
36+
37+
if ( current_user_can( $capability ) ) {
38+
$submenu[ $slug ][] = [ esc_attr__( 'Home', 'jobplace' ), $capability, 'admin.php?page=' . $slug . '#/' ]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
39+
$submenu[ $slug ][] = [ esc_attr__( 'Jobs', 'jobplace' ), $capability, 'admin.php?page=' . $slug . '#/jobs' ]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
40+
}
41+
}
42+
43+
/**
44+
* Render the plugin page.
45+
*
46+
* @since 0.2.0
47+
*
48+
* @return void
49+
*/
50+
public function plugin_page() {
51+
require_once JOB_PLACE_TEMPLATE_PATH . '/app.php';
52+
}
53+
}

includes/Assets/Manager.php

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?php
2+
3+
namespace Akash\JobPlace\Assets;
4+
5+
/**
6+
* Asset Manager class.
7+
*
8+
* Responsible for managing all of the assets (CSS, JS, Images, Locales).
9+
*/
10+
class Manager {
11+
12+
/**
13+
* Constructor.
14+
*
15+
* @since 0.2.0
16+
*/
17+
public function __construct() {
18+
add_action( 'init', [ $this, 'register_all_scripts' ], 10 );
19+
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_assets' ] );
20+
}
21+
22+
/**
23+
* Register all scripts and styles.
24+
*
25+
* @since 0.2.0
26+
*
27+
* @return void
28+
*/
29+
public function register_all_scripts() {
30+
$this->register_styles( $this->get_styles() );
31+
$this->register_scripts( $this->get_scripts() );
32+
}
33+
34+
/**
35+
* Get all styles.
36+
*
37+
* @since 0.2.0
38+
*
39+
* @return array
40+
*/
41+
public function get_styles(): array {
42+
return [
43+
'job-place-custom-css' => [
44+
'src' => JOB_PLACE_BUILD . '/style-index.css',
45+
'version' => filemtime( JOB_PLACE_DIR . '/build/style-index.css' ),
46+
'deps' => [],
47+
],
48+
'job-place-css' => [
49+
'src' => JOB_PLACE_BUILD . '/index.css',
50+
'version' => filemtime( JOB_PLACE_DIR . '/build/index.css' ),
51+
'deps' => [ 'job-place-custom-css' ],
52+
],
53+
];
54+
}
55+
56+
/**
57+
* Get all scripts.
58+
*
59+
* @since 0.2.0
60+
*
61+
* @return array
62+
*/
63+
public function get_scripts(): array {
64+
$dependency = require_once JOB_PLACE_DIR . '/build/index.asset.php';
65+
66+
return [
67+
'job-place-app' => [
68+
'src' => JOB_PLACE_BUILD . '/index.js',
69+
'version' => filemtime( JOB_PLACE_DIR . '/build/index.js' ),
70+
'deps' => $dependency['dependencies'],
71+
'in_footer' => true,
72+
],
73+
];
74+
}
75+
76+
/**
77+
* Register styles.
78+
*
79+
* @since 0.2.0
80+
*
81+
* @return void
82+
*/
83+
public function register_styles( array $styles ) {
84+
foreach ( $styles as $handle => $style ) {
85+
wp_register_style( $handle, $style['src'], $style['deps'], $style['version'] );
86+
}
87+
}
88+
89+
/**
90+
* Register scripts.
91+
*
92+
* @since 0.2.0
93+
*
94+
* @return void
95+
*/
96+
public function register_scripts( array $scripts ) {
97+
foreach ( $scripts as $handle =>$script ) {
98+
wp_register_script( $handle, $script['src'], $script['deps'], $script['version'], $script['in_footer'] );
99+
}
100+
}
101+
102+
/**
103+
* Enqueue admin styles and scripts.
104+
*
105+
* @since 0.2.0
106+
*
107+
* @return void
108+
*/
109+
public function enqueue_admin_assets() {
110+
wp_enqueue_style( 'job-place-css' );
111+
wp_enqueue_script( 'job-place-app' );
112+
}
113+
}

0 commit comments

Comments
 (0)