PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.5.0
Forumax – AI Powered Advanced Community Forum Plugin v2.5.0
2.5.0 2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 2.0.0 All 30 releases
← All changes | includes/admin/menu/admin_ui.php +92 -76 1.2.2 → 2.5.0 View file →
@@ -5,9 +5,8 @@
5 5
6 6 $parent_forums = [];
7 7 $fcount = wp_count_posts( bbp_get_forum_post_type() );
8 8 $forum_count = (int) ( $fcount->publish + $fcount->hidden + $fcount->spam );
9 -$bbpc_opt = get_option( 'bbp_core_settings' );
10 9 ?>
11 10 <div class="wrap">
12 11 <div class="body-dark">
13 12 <?php
@@ -17,25 +16,20 @@
17 16 <main>
18 17 <div class="easydocs-sidebar-menu">
19 18 <div class="tab-container">
20 19 <?php
21 - $forum_query = new WP_Query(
22 - [
23 - 'post_type' => bbp_get_forum_post_type(),
24 - 'posts_per_page' => -1,
25 - 'post_parent' => 0,
26 - 'orderby' => 'menu_order',
27 - 'order' => 'ASC',
28 - 'post_status' => 'publish',
29 - ]
30 - );
31 -
20 + $forum_query = new WP_Query( [
21 + 'post_type' => bbp_get_forum_post_type(),
22 + 'posts_per_page' => -1,
23 + 'post_parent' => 0,
24 + 'orderby' => 'menu_order',
25 + 'order' => 'ASC',
26 + 'post_status' => 'publish',
27 + ] );
32 28 $count = $forum_query->found_posts;
33 -
34 29 // Left Sidebar Forums.
35 30 include __DIR__ . '/admin_ui/forums.php';
36 31 ?>
37 -
38 32 <div class="easydocs-tab-content">
39 33 <?php
40 34 $ids = 0;
41 35 $container = 1;
@@ -63,20 +57,16 @@
63 57 $count_solved = 0;
64 58 $count_unsolved = 0;
65 59 $count_trash = 0;
66 60
67 - while ( $children->have_posts() ) :
68 - $children->the_post();
61 + while ( $children->have_posts() ) : $children->the_post();
69 62 $topic_id = get_the_ID();
63 + $replies = get_children( [
64 + 'post_parent' => $topic_id,
65 + 'post_type' => bbp_get_reply_post_type(),
66 + 'post_status' => [ 'publish', 'draft', 'pending' ],
67 + ] );
70 68
71 - $replies = get_children(
72 - [
73 - 'post_parent' => $topic_id,
74 - 'post_type' => bbp_get_reply_post_type(),
75 - 'post_status' => [ 'publish', 'draft', 'pending' ],
76 - ]
77 - );
78 -
79 69 // Count open/closed topics.
80 70 if ( bbp_is_topic_closed( $topic_id ) ) {
81 71 $count_closed++;
82 72 } else {
@@ -83,9 +73,9 @@
83 73 $count_open++;
84 74 }
85 75
86 76 // Count spam( hidden ) topics.
87 - if ( bbp_is_topic_spam( $topic_id ) ) {
77 + if ( bbp_is_topic_spam( $topic_id ) || bbp_is_topic_pending( $topic_id ) ) {
88 78 $count_hidden++;
89 79 }
90 80
91 81 // Replies count.
@@ -93,78 +83,88 @@
93 83 $count_no_reply++;
94 84 }
95 85
96 86 // Count solved.
97 - // Before using $GLOBALS['bbp_solved_topic'], check if it is set
98 - if (isset($GLOBALS['bbp_solved_topic']) && $GLOBALS['bbp_solved_topic']->is_solved($topic_id)) {
87 + // Before using $GLOBALS['forumax_solve_topic'], check if it is set
88 + if (isset($GLOBALS['forumax_solve_topic']) && $GLOBALS['forumax_solve_topic']->is_solved($topic_id)) {
99 89 $count_solved++;
100 90 } else {
101 91 $count_unsolved++;
102 92 }
93 + endwhile;
94 + wp_reset_postdata();
103 95
104 - endwhile; wp_reset_postdata();
105 -
106 - $trash_topic = new WP_Query(
107 - [
96 + $trash_topic = new WP_Query( [
108 97 'post_parent' => $item,
109 98 'post_type' => bbp_get_topic_post_type(),
110 99 'posts_per_page' => -1,
111 100 'post_status' => [ 'trash' ],
112 - ]
113 - );
114 -
115 - while ( $trash_topic->have_posts() ) :
116 - $trash_topic->the_post();
117 - $trash_topic_id = get_the_ID();
118 - // Count trash.
119 - if ( bbp_is_topic_trash( $trash_topic_id ) ) {
120 - $count_trash++;
121 - }
122 - endwhile; wp_reset_postdata();
123 - ?>
124 - <div class="easydocs-tab <?php echo esc_attr( $active ); ?>" id="tab-<?php echo esc_attr( $item ); ?>">
101 + ] );
102 +
103 + while ( $trash_topic->have_posts() ) :
104 + $trash_topic->the_post();
105 + $trash_topic_id = get_the_ID();
106 + // Count trash.
107 + if ( bbp_is_topic_trash( $trash_topic_id ) ) {
108 + $count_trash++;
109 + }
110 + endwhile;
111 + wp_reset_postdata();
112 + ?>
113 + <div class="easydocs-tab <?php echo esc_attr( $active ); ?>" id="tab-<?php echo esc_attr( $item ); ?>">
125 114
126 - <!-- Tab filters. -->
127 - <?php include __DIR__ . '/admin_ui/tab_filters.php'; ?>
115 + <!-- Tab filters. -->
116 + <?php include __DIR__ . '/admin_ui/tab_filters.php'; ?>
128 117
129 - <!-- Children topics. -->
130 - <?php include __DIR__ . '/admin_ui/topics.php'; ?>
118 + <!-- Children topics. -->
119 + <?php include __DIR__ . '/admin_ui/topics.php'; ?>
131 120
132 - <a class="easydocs-btn easydocs-btn-outline-blue easydocs-btn-sm easydocs-btn-round button button-info section-doc" id="bbpc-topic" target="_blank" name="submit" href="<?php echo admin_url( 'admin.php' ); ?>/Create_Topic.php?bbp_parentID=<?php echo $item; ?>&is_bbp_section=">
133 - <?php esc_html_e( 'Add Topic', 'bbp-core' ); ?>
134 - </a>
135 - </div>
121 + <?php if ( $children->post_count > 0 ) : ?>
122 + <div class="controls bbpc-admin-pagination" style="display:none;">
123 + <div class="mixitup-control mixitup-page-list"></div>
124 + </div>
125 + <?php endif; ?>
126 +
127 + <a class="easydocs-btn easydocs-btn-outline-blue easydocs-btn-sm easydocs-btn-round button button-info section-doc" id="bbpc-topic" target="_blank" name="submit" href="javascript:void(0)" bbp_forum_id="<?php echo esc_attr( $item ); ?>">
128 + <?php esc_html_e( 'Add Topic', 'forumax' ); ?>
129 + </a>
130 + </div>
136 131 <?php
137 - endforeach;
138 - endif;
139 - ?>
132 + endforeach;
133 + endif;
134 + ?>
135 + </div>
140 136 </div>
141 137 </div>
138 + </main>
139 + <?php
140 + else :
141 + ?>
142 + <div class="eazydocs-no-content">
143 + <img src="<?php echo esc_url( FORUMAX_IMG . 'icon/folder-open.png' ); ?>" alt="<?php esc_attr_e( 'Folder Open', 'forumax' ); ?>">
144 + <p class="big-p"> <?php esc_html_e( 'No forums found. Get started by creating a new forum or importing demo data.', 'forumax' ); ?> </p>
145 + <p class="forumax-empty-actions">
146 + <a href="javascript:void(0)" type="button" id="bbpc-forum" class="button button-primary ezd-btn btn-lg">
147 + <span class="dashicons dashicons-plus-alt2"></span>
148 + <?php esc_html_e( 'Create Forum', 'forumax' ); ?>
149 + </a>
150 + <span class="forumax-actions-separator"><?php esc_html_e( 'or', 'forumax' ); ?></span>
151 + <a href="javascript:void(0)" type="button" id="forumax-import-demo" class="button ezd-btn btn-lg forumax-import-demo-btn">
152 + <span class="dashicons dashicons-database-import"></span>
153 + <?php esc_html_e( 'Import Demo Data', 'forumax' ); ?>
154 + </a>
155 + </p>
142 156 </div>
143 - </main>
144 - <?php
145 - else :
157 + <?php
158 + endif;
146 159 ?>
147 - <div class="eazydocs-no-content">
148 - <img src="<?php echo BBPC_IMG; ?>/icon/folder-open.png" alt="<?php esc_attr_e( 'Folder Open', 'bbp-core' ); ?>">
149 - <p class="big-p"> <?php esc_html_e( 'No forum has been found . Perhaps', 'bbp-core' ); ?> </p>
150 - <p> <br>
151 - <a href="<?php echo admin_url( 'admin.php' ); ?>/Create_Forum.php?bbp_parent_title=" target="_blank" type="button" id="bbpc-forum" class="button button-primary ezd-btn btn-lg">
152 - <?php esc_html_e( 'Create Forum', 'bbp-core' ); ?>
153 - </a>
154 - </p>
155 - </div>
156 - <?php
157 - endif; //TODO: Fix open topics not being selected issue.
158 - ?>
160 + </div>
159 161 </div>
160 -</div>
161 162
162 163 <script>
163 164 (function ($) {
164 165 $(document).ready(function () {
165 166 let docContainer = document.querySelectorAll('.easydocs-tab');
166 -
167 167 var config = {
168 168 controls: {
169 169 scope: 'local',
170 170 },
@@ -171,15 +171,31 @@
171 171 animation: {
172 172 enable: false,
173 173 },
174 174 load: {
175 - filter: '<?php echo esc_js( $bbpc_opt['default_filter'] ?? '.open-topics' ); ?>'
175 + filter: '<?php echo esc_js( forumax_get_opt( 'default_filter', '.open-topics' ) ); ?>'
176 + },
177 + pagination: {
178 + limit: 10,
179 + },
180 + callbacks: {
181 + onMixEnd: function(state) {
182 + var pagination = state.container.querySelector('.bbpc-admin-pagination');
183 + if ( pagination ) {
184 + // Count matching items directly from the DOM using the active
185 + // filter selector. MixItUp always renders prev/next buttons so
186 + // children.length is unreliable for detecting multi-page results.
187 + var selector = state.activeFilter ? state.activeFilter.selector : '';
188 + var matchCount = ( ! selector || selector === 'all' )
189 + ? state.container.querySelectorAll('.mix').length
190 + : state.container.querySelectorAll(selector).length;
191 + pagination.style.display = matchCount > 10 ? 'block' : 'none';
192 + }
193 + }
176 194 }
177 195 };
178 -
179 196 for (let i = 0; i < docContainer.length; i++) {
180 197 var mixer1 = mixitup(docContainer[i], config);
181 198 }
182 199 });
183 200 })(jQuery);
184 -</script>
185 -
201 +</script>