Skip to content

Commit 07d1906

Browse files
move permissions front-end to lite
1 parent 08364dc commit 07d1906

File tree

13 files changed

+7647
-14
lines changed

13 files changed

+7647
-14
lines changed

classes/Visualizer/Module/Chart.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,11 @@ public function renderChartPages() {
234234
defined( 'WP_TESTS_DOMAIN' ) ? wp_die() : exit();
235235
}
236236
// enqueue and register scripts and styles
237-
wp_register_style( 'visualizer-frame', VISUALIZER_ABSURL . 'css/frame.css', array(), Visualizer_Plugin::VERSION );
238-
wp_register_script( 'visualizer-frame', VISUALIZER_ABSURL . 'js/frame.js', array( 'jquery' ), Visualizer_Plugin::VERSION, true );
237+
wp_register_script( 'visualizer-chosen', VISUALIZER_ABSURL . 'js/lib/chosen.jquery.min.js', array( 'jquery' ), Visualizer_Plugin::VERSION );
238+
wp_register_style( 'visualizer-chosen', VISUALIZER_ABSURL . 'css/lib/chosen.min.css', array(), Visualizer_Plugin::VERSION );
239+
240+
wp_register_style( 'visualizer-frame', VISUALIZER_ABSURL . 'css/frame.css', array( 'visualizer-chosen' ), Visualizer_Plugin::VERSION );
241+
wp_register_script( 'visualizer-frame', VISUALIZER_ABSURL . 'js/frame.js', array( 'visualizer-chosen' ), Visualizer_Plugin::VERSION, true );
239242
wp_register_script( 'google-jsapi-new', '//www.gstatic.com/charts/loader.js', array(), null, true );
240243
wp_register_script( 'google-jsapi-old', '//www.google.com/jsapi', array( 'google-jsapi-new' ), null, true );
241244
wp_register_script(
@@ -318,11 +321,21 @@ private function _handleDataAndSettingsPage() {
318321
'visualizer-render', 'visualizer', array(
319322
'l10n' => array(
320323
'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
324+
'loading' => esc_html__( 'Loading...', 'visualizer' ),
321325
),
322326
'charts' => array(
323327
'canvas' => $data,
324328
),
325329
'map_api_key' => get_option( 'visualizer-map-api-key' ),
330+
'ajax' => array(
331+
'url' => admin_url( 'admin-ajax.php' ),
332+
'nonces' => array(
333+
'permissions' => wp_create_nonce( Visualizer_Plugin::ACTION_FETCH_PERMISSIONS_DATA ),
334+
),
335+
'actions' => array(
336+
'permissions' => Visualizer_Plugin::ACTION_FETCH_PERMISSIONS_DATA,
337+
),
338+
),
326339
)
327340
);
328341
$render = new Visualizer_Render_Page_Data();
@@ -559,6 +572,7 @@ private function _handleDataPage() {
559572
'visualizer-render', 'visualizer', array(
560573
'l10n' => array(
561574
'invalid_source' => esc_html__( 'You have entered invalid URL. Please, insert proper URL.', 'visualizer' ),
575+
'loading' => esc_html__( 'Loading...', 'visualizer' ),
562576
),
563577
'charts' => array(
564578
'canvas' => $data,

classes/Visualizer/Module/Sources.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,12 @@ public function filterChartData( $data, $chart_id ) {
130130
* @return string The new html code.
131131
*/
132132
public function addProUpsell( $old, $feature = null ) {
133+
$biz_features = array( 'schedule-chart', 'chart-permissions' );
133134
$return = '';
134135
$feature = strval( $feature );
135-
if ( empty( $feature ) || ( $feature == 'schedule-chart' && ! apply_filters( 'visualizer_is_business', false ) ) ) {
136+
if ( empty( $feature ) || ( in_array( $feature, $biz_features ) && ! apply_filters( 'visualizer_is_business', false ) ) ) {
136137
$plan = 'PRO';
137-
if ( $feature === 'schedule-chart' ) {
138+
if ( in_array( $feature, $biz_features ) ) {
138139
$plan = 'BUSINESS';
139140
}
140141
$return = '<div class="only-pro-content">';

classes/Visualizer/Plugin.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ class Visualizer_Plugin {
5252
// Added by Ash/Upwork
5353
const ACTION_EXPORT_DATA = 'visualizer-export-data';
5454

55+
/**
56+
*Action used for fetching specific users/roles for permissions.
57+
*/
58+
const ACTION_FETCH_PERMISSIONS_DATA = 'visualizer-fetch-permissions-data';
59+
5560
// custom filters
5661
const FILTER_CHART_WRAPPER_CLASS = 'visualizer-chart-wrapper-class';
5762
const FILTER_GET_CHART_SERIES = 'visualizer-get-chart-series';

classes/Visualizer/Render/Page/Data.php

Lines changed: 134 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,16 +253,146 @@ class="dashicons dashicons-lock"></span></h2>
253253
</form>
254254
</ul>
255255
</li>
256-
<?php echo apply_filters( 'visualizer_pro_sidebar_footer_links', '', $this->chart->ID ); ?>
257-
<li class=" group bottom-fixed vz-pro-sidebar-link" id="vz-chart-permissions">
258-
<a target="_blank"><span class="dashicons dashicons-admin-users"></span><?php _e( 'Permissions (PRO)', 'visualizer' ); ?></a>
259-
</li>
256+
257+
<?php $this->getPermissionsLink( $this->chart->ID ); ?>
258+
260259
<li class="group bottom-fixed" id="vz-chart-copyright">Visualizer &copy; <?php echo date( 'Y', current_time( 'timestamp' ) ); ?></li>
261260
</ul>
262261
<?php
263262
// changed by Ash/Upwork
264263
}
265264

265+
/**
266+
* Generates the permissions link.
267+
*
268+
* @access private
269+
* @param int $id The chart id.
270+
*/
271+
private function getPermissionsLink( $id ) {
272+
$permissions = apply_filters( 'visualizer_pro_get_permissions', null, $id );
273+
if ( $permissions ) {
274+
foreach ( $permissions as $k => $v ) {
275+
$this->$k = $v;
276+
}
277+
}
278+
?>
279+
<li class="group group-category bottom-fixed sidebar-footer-link" id="vz-chart-permissions">
280+
<a target="_blank"><span class="dashicons dashicons-admin-users"></span><?php _e( 'Permissions (PRO)', 'visualizer' ); ?></a>
281+
<div class="group-header">
282+
<button class="customize-section-back" tabindex="0"></button>
283+
<h3 class="group-title main-group"><?php _e( 'Chart Settings', 'visualizer' ); ?></h3>
284+
</div>
285+
<ul class="group-content">
286+
<form id="permissions-form" action="
287+
<?php
288+
echo add_query_arg(
289+
array(
290+
'nonce' => wp_create_nonce(),
291+
'tab' => 'permissions',
292+
), remove_query_arg( 'tab', $_SERVER['REQUEST_URI'] )
293+
);
294+
?>
295+
" method="post">
296+
<?php $this->permissionsSidebar(); ?>
297+
</form>
298+
</ul>
299+
</li>
300+
<?php
301+
}
302+
303+
/**
304+
* Generates the permissions form.
305+
*
306+
* @access private
307+
*/
308+
private function permissionsSidebar() {
309+
Visualizer_Render_Sidebar::_renderGroupStart(
310+
esc_html__( 'Who can see this chart?', 'visualizer' ) . '<span
311+
class="dashicons dashicons-lock"></span>', '', apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' )
312+
);
313+
Visualizer_Render_Sidebar::_renderSectionStart();
314+
Visualizer_Render_Sidebar::_renderSectionDescription( esc_html__( 'Select who can view the chart on the front-end.', 'visualizer' ) );
315+
316+
if ( ! isset( $this->permissions['read'] ) ) {
317+
$this->permissions['read'] = 'all';
318+
}
319+
320+
Visualizer_Render_Sidebar::_renderSelectItem(
321+
'',
322+
'permissions[read]',
323+
$this->permissions['read'],
324+
array(
325+
'all' => esc_html__( 'All Users', 'visualizer' ),
326+
'users' => esc_html__( 'Select Users', 'visualizer' ),
327+
'roles' => esc_html__( 'Select Roles', 'visualizer' ),
328+
),
329+
'',
330+
false,
331+
array( 'visualizer-permission', 'visualizer-permission-type', 'visualizer-permission-read' ),
332+
array(
333+
'permission-type' => 'read',
334+
)
335+
);
336+
337+
$options = apply_filters( 'visualizer_pro_get_permissions_data', array(), isset( $this->permissions['read'] ) ? $this->permissions['read'] : 'roles' );
338+
339+
Visualizer_Render_Sidebar::_renderSelectItem(
340+
'',
341+
'permissions[read-specific][]',
342+
isset( $this->permissions['read-specific'] ) ? $this->permissions['read-specific'] : array(),
343+
$options,
344+
'',
345+
true,
346+
array( 'visualizer-permission', 'visualizer-permission-specific', 'visualizer-permission-read-specific' )
347+
);
348+
Visualizer_Render_Sidebar::_renderSectionEnd( apply_filters( 'visualizer_pro_upsell', 'only-pro-feature', 'chart-permissions' ) );
349+
Visualizer_Render_Sidebar::_renderGroupEnd();
350+
351+
Visualizer_Render_Sidebar::_renderGroupStart(
352+
esc_html__( 'Who can edit this chart?', 'visualizer' ) . '<span
353+
class="dashicons dashicons-lock"></span>', '', apply_filters( 'visualizer_pro_upsell_class', 'only-pro-feature' )
354+
);
355+
Visualizer_Render_Sidebar::_renderSectionStart();
356+
Visualizer_Render_Sidebar::_renderSectionDescription( esc_html__( 'Select who can edit the chart on the front-end.', 'visualizer' ) );
357+
358+
if ( ! isset( $this->permissions['edit'] ) ) {
359+
$this->permissions['edit'] = 'roles';
360+
$this->permissions['edit-specific'] = 'administrator';
361+
}
362+
363+
Visualizer_Render_Sidebar::_renderSelectItem(
364+
'',
365+
'permissions[edit]',
366+
$this->permissions['edit'],
367+
array(
368+
'all' => esc_html__( 'All Users', 'visualizer' ),
369+
'users' => esc_html__( 'Select Users', 'visualizer' ),
370+
'roles' => esc_html__( 'Select Roles', 'visualizer' ),
371+
),
372+
'',
373+
false,
374+
array( 'visualizer-permission', 'visualizer-permission-type', 'visualizer-permission-edit' ),
375+
array(
376+
'permission-type' => 'edit',
377+
)
378+
);
379+
380+
$options = apply_filters( 'visualizer_pro_get_permissions_data', array(), isset( $this->permissions['edit'] ) ? $this->permissions['edit'] : 'roles' );
381+
382+
Visualizer_Render_Sidebar::_renderSelectItem(
383+
'',
384+
'permissions[edit-specific][]',
385+
isset( $this->permissions['edit-specific'] ) ? $this->permissions['edit-specific'] : array(),
386+
$options,
387+
'',
388+
true,
389+
array( 'visualizer-permission', 'visualizer-permission-specific', 'visualizer-permission-edit-specific' )
390+
);
391+
Visualizer_Render_Sidebar::_renderSectionEnd( apply_filters( 'visualizer_pro_upsell', 'only-pro-feature', 'chart-permissions' ) );
392+
Visualizer_Render_Sidebar::_renderGroupEnd();
393+
394+
}
395+
266396
/**
267397
* Renders toolbar content.
268398
*

classes/Visualizer/Render/Sidebar.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -549,10 +549,13 @@ protected static function _renderTextItem( $title, $name, $value, $desc, $placeh
549549
* @static
550550
* @access public
551551
* @param string $title The title of this group.
552+
* @param string $html Any additional HTML.
553+
* @param string $class Any additional classes.
552554
*/
553-
public static function _renderGroupStart( $title ) {
554-
echo '<li class="group">';
555+
public static function _renderGroupStart( $title, $html = '', $class = '' ) {
556+
echo '<li class="group ' . $class . '">';
555557
echo '<h3 class="group-title">', $title, '</h3>';
558+
echo $html;
556559
echo '<ul class="group-content">';
557560
}
558561

@@ -597,9 +600,11 @@ public static function _renderSectionStart( $title = false, $open = true ) {
597600
*
598601
* @public
599602
* @access protected
603+
* @param string $html Any addition HTML to add.
600604
*/
601-
public static function _renderSectionEnd() {
605+
public static function _renderSectionEnd( $html = '' ) {
602606
echo '</div>';
607+
echo $html;
603608
echo '</li>';
604609
}
605610

css/frame.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@
164164
padding: 7px 15px 7px 35px;
165165
}
166166

167-
.group h2 .dashicons {
167+
.group h2 .dashicons, .group h3 .dashicons {
168168
margin-right: 5px;
169169
vertical-align: -5px;
170170
}

0 commit comments

Comments
 (0)