Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: added renew/activate license notice #1147

Merged
merged 12 commits into from
May 13, 2024
1 change: 1 addition & 0 deletions classes/Visualizer/Module/Admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -1037,6 +1037,7 @@ public function renderLibraryPage() {
'copied' => __( 'The shortcode has been copied to your clipboard. Hit Ctrl-V/Cmd-V to paste it.', 'visualizer' ),
'conflict' => __( 'We have detected a potential conflict with another component that prevents Visualizer from functioning properly. Please disable any of the following components if they are activated on your instance: Modern Events Calendar plugin, Acronix plugin. In case the aforementioned components are not activated or you continue to see this error message, please disable all other plugins and enable them one by one to find out the component that is causing the conflict.', 'visualizer' ),
),
'is_pro_user' => Visualizer_Module::is_pro(),
)
);
// render library page
Expand Down
19 changes: 14 additions & 5 deletions classes/Visualizer/Render/Library.php
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,15 @@ private function _renderChartBox( $placeholder_id, $chart_id, $with_filter = fal
admin_url( 'admin-ajax.php' )
)
);
$chart_type = get_post_meta( $chart_id, Visualizer_Plugin::CF_CHART_TYPE, true );

$types = ['area', 'geo', 'column', 'bubble', 'scatter', 'gauge', 'candlestick', 'timeline', 'combo', 'polarArea', 'radar' ];

$pro_class = '';

if ( ! empty( $chart_type ) && in_array( $chart_type, $types, true ) ) {
$pro_class = 'viz-is-pro-chart';
}

$chart_status = array( 'date' => get_the_modified_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $chart_id ), 'error' => get_post_meta( $chart_id, Visualizer_Plugin::CF_ERROR, true ), 'icon' => 'dashicons-yes-alt', 'title' => 'A-OK!' );
if ( ! empty( $chart_status['error'] ) ) {
Expand All @@ -361,13 +370,13 @@ private function _renderChartBox( $placeholder_id, $chart_id, $with_filter = fal
echo '<div class="visualizer-chart-footer visualizer-clearfix">';
echo '<div class="visualizer-action-group">';
echo '<a class="visualizer-chart-action visualizer-chart-delete" href="', $delete_url, '" onclick="return showNotice.warn();"><span class="dashicons dashicons-trash"></span><span class="tooltip-text">' . esc_attr__( 'Delete', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-shortcode" href="javascript:;" data-clipboard-text="', esc_attr( $shortcode ), '"><span class="dashicons dashicons-shortcode"></span><span class="tooltip-text">' . esc_attr__( 'Copy Shortcode', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-shortcode ' . esc_attr( $pro_class ) . '" href="javascript:;" data-clipboard-text="', esc_attr( $shortcode ), '"><span class="dashicons dashicons-shortcode"></span><span class="tooltip-text">' . esc_attr__( 'Copy Shortcode', 'visualizer' ) . '</span></a>';
if ( $this->can_chart_have_action( 'image', $chart_id ) ) {
echo '<a class="visualizer-chart-action visualizer-chart-image" href="javascript:;" data-chart="visualizer-', $chart_id, '" data-chart-title="', $title, '"><span class="dashicons dashicons-format-image"></span><span class="tooltip-text">' . esc_attr__( 'Download PNG', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-image ' . esc_attr( $pro_class ) . '" href="javascript:;" data-chart="visualizer-', $chart_id, '" data-chart-title="', $title, '"><span class="dashicons dashicons-format-image"></span><span class="tooltip-text">' . esc_attr__( 'Download PNG', 'visualizer' ) . '</span></a>';
}
echo '<a class="visualizer-chart-action visualizer-chart-export" href="javascript:;" data-chart="', $export_link, '"><span class="dashicons dashicons-download"></span><span class="tooltip-text">' . esc_attr__( 'Export CSV', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-clone" href="', $clone_url, '"><span class="dashicons dashicons-admin-page"></span><span class="tooltip-text">' . esc_attr__( 'Duplicate', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-edit" href="javascript:;" data-chart="', $chart_id, '"><span class="dashicons dashicons-admin-generic"></span><span class="tooltip-text">' . esc_attr__( 'Edit', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-export ' . esc_attr( $pro_class ) . '" href="javascript:;" data-chart="', $export_link, '"><span class="dashicons dashicons-download"></span><span class="tooltip-text">' . esc_attr__( 'Export CSV', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-clone ' . esc_attr( $pro_class ) . '" href="', $clone_url, '"><span class="dashicons dashicons-admin-page"></span><span class="tooltip-text">' . esc_attr__( 'Duplicate', 'visualizer' ) . '</span></a>';
echo '<a class="visualizer-chart-action visualizer-chart-edit ' . esc_attr( $pro_class ) . '" href="javascript:;" data-chart="', $chart_id, '"><span class="dashicons dashicons-admin-generic"></span><span class="tooltip-text">' . esc_attr__( 'Edit', 'visualizer' ) . '</span></a>';
echo '</div>';
do_action( 'visualizer_chart_languages', $chart_id );
echo '<hr><div class="visualizer-chart-status"><span title="' . __( 'Chart ID', 'visualizer' ) . '">(' . $chart_id . '):</span> <span class="visualizer-date" title="' . __( 'Last Updated', 'visualizer' ) . '">' . $chart_status['date'] . '</span><span class="visualizer-error"><i class="dashicons ' . $chart_status['icon'] . '" data-viz-error="' . esc_attr( str_replace( '"', "'", $chart_status['error'] ) ) . '" title="' . esc_attr( $chart_status['title'] ) . '"></i></span></div>';
Expand Down
89 changes: 85 additions & 4 deletions css/library.css
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@
.visualizer-chart-action .tooltip-text::before {
content: '';
position: absolute;
display: block;
width: 0px;
display: block;
width: 0px;
left: 50%;
top: 0;
border: 10px solid transparent;
Expand Down Expand Up @@ -253,8 +253,8 @@
justify-content: center;
}
.visualizer-sidebar-box .we-offer{
background-color: transparent;
color: #007CBA;
background-color: transparent;
color: #007CBA;
font-weight: 400;
padding: 0px;
font-size: 14px;
Expand Down Expand Up @@ -518,3 +518,84 @@ div#visualizer-types ul, div#visualizer-types form p {
height: calc(100% - 24px);
}
}



.vizualizer-renew-notice-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
}

.vizualizer-renew-notice-popup {
display: block;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: #fff;
z-index: 1000;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
max-width: 400px;
font-weight: bold;
margin-bottom: 20px;
}

.vizualizer-renew-notice-heading {
color: #d32f2f;
text-align: left;
margin-bottom: 10px;
}

.vizualizer-renew-notice-message {
word-wrap: break-word;
width: 250px;
}

.vizualizer-renew-notice-buttons-container {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
text-align: center;
margin-top: 20px;
}

.vizualizer-renew-notice-button {
padding: 10px 20px;
cursor: pointer;
color: white;
border: none;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
width: 200px;
height: 50px;
border-radius: 4px;
transition: background-color 0.3s;
font-weight: bold;
margin-top: 10px;
}

.vizualizer-renew-notice-renew-button {
background-color: #008CBA;
}

.vizualizer-renew-notice-activate-button {
background-color: #4CAF50;
}

.vizualizer-renew-notice-close-icon {
position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
color: #333;
}
97 changes: 93 additions & 4 deletions js/library.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,65 @@
});
})(wp.media.view);

function createPopupProBlocker() {

var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css';
document.head.appendChild(link);

var overlay = document.createElement('div');
overlay.classList.add('vizualizer-renew-notice-overlay');
overlay.id = 'overlay-visualizer';
document.body.appendChild(overlay);

var popup = document.createElement('div');
popup.classList.add('vizualizer-renew-notice-popup');

var closeIcon = document.createElement('i');
closeIcon.classList.add('fas', 'fa-times', 'vizualizer-renew-notice-close-icon');
closeIcon.addEventListener('click', function() {
document.body.removeChild(overlay);
popup.style.display = 'none';
});
popup.appendChild(closeIcon);

var heading = document.createElement('h1');
heading.textContent = 'Alert!';
heading.classList.add('vizualizer-renew-notice-heading');
popup.appendChild(heading);

var message = document.createElement('p');
message.textContent = 'In order to edit premium charts, benefit from updates and support for Visualizer Premium plugin, please renew your license code or activate it.';
message.classList.add('vizualizer-renew-notice-message');
popup.appendChild(message);

var buttonsContainer = document.createElement('div');
buttonsContainer.classList.add('vizualizer-renew-notice-buttons-container');

var link1 = document.createElement('a');
link1.href = 'https://store.themeisle.com/';
link1.target = '_blank';
var button1 = document.createElement('button');
button1.innerHTML = '<span class="fas fa-shopping-cart"></span> Renew License';
button1.classList.add('vizualizer-renew-notice-button', 'vizualizer-renew-notice-renew-button');
link1.appendChild(button1);
buttonsContainer.appendChild(link1);

var link2 = document.createElement('a');
link2.href = '/wp-admin/options-general.php#visualizer_pro_license';
var button2 = document.createElement('button');
button2.innerHTML = '<span class="fas fa-key"></span> Activate License';
button2.classList.add('vizualizer-renew-notice-button', 'vizualizer-renew-notice-activate-button');
link2.appendChild(button2);
buttonsContainer.appendChild(link2);

popup.appendChild(buttonsContainer);

document.body.appendChild(popup);

}

(function ($, vmv, vu) {
var resizeTimeout;

Expand Down Expand Up @@ -77,6 +136,14 @@
});

$('.visualizer-chart-shortcode').click(function (e) {

if ( ! visualizer.is_pro_user && e.target.classList.contains('viz-is-pro-chart') ) {
createPopupProBlocker();
e.preventDefault();
e.stopPropagation();
return;
}

var range, selection;

if (window.getSelection && document.createRange) {
Expand Down Expand Up @@ -126,7 +193,13 @@
return false;
});

$('.visualizer-chart-edit').click(function () {
$('.visualizer-chart-edit').click(function (event) {

if ( ! visualizer.is_pro_user && event.target.classList.contains('viz-is-pro-chart') ) {
createPopupProBlocker();
return;
}

var wnd = window;
var view = new vmv.Chart( {
action: vu.edit.indexOf('&chart') != -1 ? vu.edit : vu.edit + '&chart=' + $(this).attr('data-chart')
Expand All @@ -141,8 +214,20 @@

return false;
});
$(".visualizer-chart-clone").on("click", function ( event ) {
if ( ! visualizer.is_pro_user && event.target.classList.contains('viz-is-pro-chart') ) {
createPopupProBlocker();
event.preventDefault();
}
});

$(".visualizer-chart-export").on("click", function (event) {

if ( ! visualizer.is_pro_user && event.target.classList.contains('viz-is-pro-chart') ) {
createPopupProBlocker();
return;
}

$(".visualizer-chart-export").on("click", function () {
$.ajax({
url: $(this).attr("data-chart"),
method: "get",
Expand All @@ -163,7 +248,11 @@
return false;
});

$(".visualizer-chart-image").on("click", function () {
$(".visualizer-chart-image").on("click", function (event) {
if ( ! visualizer.is_pro_user && event.target.classList.contains('viz-is-pro-chart') ) {
createPopupProBlocker();
return;
}
$('body').trigger('visualizer:action:specificchart', {action: 'image', id: $(this).attr("data-chart"), data: null, dataObj: {name: $(this).attr("data-chart-title")}});
return false;
});
Expand Down Expand Up @@ -192,7 +281,7 @@ document.querySelectorAll('.visualizer-chart').forEach(function (chart) {
if ( ! translatable ) {
return;
}

const chartId = chart.querySelector('.visualizer-chart-canvas')?.id?.replace('visualizer-', '');

if ( ! chartId ) {
Expand Down
Loading