初始化6.2.2

Signed-off-by: HITSword <admin@huayizhiyun.com>
This commit is contained in:
HITSword
2020-04-16 16:26:24 +08:00
commit 26e6687c3f
1630 changed files with 144200 additions and 0 deletions
@@ -0,0 +1,151 @@
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2019 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderElementorWidget extends \Elementor\Widget_Shortcode {
public function get_name() {
return 'slider_revolution';
}
public function get_title() {
return 'Slider Revolution 6';
}
public function get_icon() {
return 'eicon-sync';
}
public function get_categories() {
return array('general');
}
protected function _register_controls() {
/*Fallback
$shortcode = $this->get_settings_for_display( 'text' );
if(empty($shortcode)) $shortcode = $this->get_settings_for_display( 'shortcode' );
$revslidertitle = $this->get_settings_for_display( 'sliderTitle' );
if(empty($revslidertitle)) $revslidertitle = $this->get_settings_for_display( 'revslidertitle' );
var_dump($revslidertitle);
*/
$this->start_controls_section(
'content_section',
array(
'label' => 'Slider Revolution 6',
'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
)
);
$this->add_control(
'revslidertitle',
array(
'label' => __( 'Selected Module:', 'revslider' ),
'type' => \Elementor\Controls_Manager::TEXT,
'render_type' => 'none',
'placeholder' => '',
'default' => '',
'event' => 'themepunch.selectslider',
)
);
$this->add_control(
'shortcode',
array(
//'type' => \Elementor\Controls_Manager::HIDDEN,
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Shortcode', 'revslider' ),
'dynamic' => ['active' => true],
'placeholder' => '',
'default' => '',
)
);
// Advanced
$this->add_control(
'select_slider',
array(
'type' => \Elementor\Controls_Manager::BUTTON,
'button_type' => 'default',
'text' => __( '<i type="button" class="material-icons">cached</i> Select Module', 'revslider' ),
'event' => 'themepunch.selectslider',
)
);
$this->add_control(
'edit_slider',
array(
'type' => \Elementor\Controls_Manager::BUTTON,
'button_type' => 'default',
'text' => __( '<i type="button" class="material-icons">edit</i> Edit Module', 'revslider' ),
'event' => 'themepunch.editslider',
)
);
$this->add_control(
'settings_slider',
array(
'type' => \Elementor\Controls_Manager::BUTTON,
'button_type' => 'default',
'text' => __( '<i type="button" class="material-icons">tune</i> Block Settings', 'revslider' ),
'event' => 'themepunch.settingsslider',
)
);
$this->add_control(
'optimize_slider',
array(
'type' => \Elementor\Controls_Manager::BUTTON,
'button_type' => 'default',
'text' => __( '<i type="button" class="material-icons">flash_on</i> Optimize File Sizes', 'revslider' ),
'event' => 'themepunch.optimizeslider',
)
);
$this->end_controls_section();
}
protected function render() {
$shortcode = $this->get_settings_for_display( 'shortcode' );
$shortcode = do_shortcode( shortcode_unautop( $shortcode ) );
$zindex = $this->get_settings_for_display( 'zindex' );
$style = $zindex ? ' style="z-index:'.$zindex.';"' : '';
/*if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
//EDIT
} else {
//FRONTEND
}*/
// hack to make sure object library only opens when the user manually adds a slider to the page
if(empty($shortcode)) {
?>
<script type="text/javascript">window.parent.elementorSelectRevSlider();</script>
<?php
}
?>
<div class="wp-block-themepunch-revslider"<?php echo $style;?>><?php echo $shortcode; ?></div>
<?php
}
}
@@ -0,0 +1,52 @@
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2019 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderElementor {
public static function init() {
$min_elementor_version = '2.0.0';
$min_php_version = '7.0';
// Check if Elementor installed and activated
if(!did_action('elementor/loaded')) return;
// Check for required Elementor version
if(!version_compare(ELEMENTOR_VERSION, $min_elementor_version, '>=' )) return;
// Check for required PHP version
if(version_compare(PHP_VERSION, $min_php_version, '<')) return;
// Add Plugin actions
add_action('elementor/widgets/widgets_registered', array('RevSliderElementor', 'init_elementor_widgets'));
// Register Widget Styles/Scripts
add_action('elementor/editor/after_enqueue_styles', array('RevSliderShortcodeWizard', 'add_styles'));
add_action('elementor/editor/after_enqueue_scripts', array('RevSliderElementor', 'add_scripts'));
}
public static function add_scripts() {
RevSliderShortcodeWizard::add_scripts(true);
}
public static function init_elementor_widgets() {
// Include Widget files
require_once(plugin_dir_path( __FILE__) . 'elementor-widget.class.php');
// Register widget
$widgets_manager = \Elementor\Plugin::instance()->widgets_manager;
$widgets_manager->register_widget_type( new RevSliderElementorWidget() );
}
}
@@ -0,0 +1,25 @@
This project was bootstrapped with [Create Guten Block](https://github.com/ahmadawais/create-guten-block).
Below you will find some information on how to run scripts.
>You can find the most recent version of this guide [here](https://github.com/ahmadawais/create-guten-block).
## 👉 `npm start`
- Use to compile and run the block in development mode.
- Watches for any changes and reports back any errors in your code.
## 👉 `npm run build`
- Use to build production code for your block inside `dist` folder.
- Runs once and reports back the gzip file sizes of the produced code.
## 👉 `npm run eject`
- Use to eject your plugin out of `create-guten-block`.
- Provides all the configurations so you can customize the project as you want.
- It's a one-way street, `eject` and you have to maintain everything yourself.
- You don't normally have to `eject` a project because by ejecting you lose the connection with `create-guten-block` and from there onwards you have to update and maintain all the dependencies on your own.
---
###### Feel free to tweet and say 👋 at me [@MrAhmadAwais](https://twitter.com/mrahmadawais/)
[![npm](https://img.shields.io/npm/v/create-guten-block.svg?style=flat-square)](https://www.npmjs.com/package/create-guten-block) [![npm](https://img.shields.io/npm/dt/create-guten-block.svg?style=flat-square&label=downloads)](https://www.npmjs.com/package/create-guten-block) [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](https://github.com/ahmadawais/create-guten-block) [![Tweet for help](https://img.shields.io/twitter/follow/mrahmadawais.svg?style=social&label=Tweet%20@MrAhmadAwais)](https://twitter.com/mrahmadawais/) [![GitHub stars](https://img.shields.io/github/stars/ahmadawais/create-guten-block.svg?style=social&label=Stars)](https://github.com/ahmadawais/create-guten-block/stargazers) [![GitHub followers](https://img.shields.io/github/followers/ahmadawais.svg?style=social&label=Follow)](https://github.com/ahmadawais?tab=followers)
File diff suppressed because one or more lines are too long
@@ -0,0 +1,185 @@
/**
* #.# Common SCSS
*
* Can include things like variables and mixins
* that are used across the project.
*/
/**
* #.# Common SCSS
*
* Can include things like variables and mixins
* that are used across the project.
*/
/**
* #.# Common SCSS
*
* Can include things like variables and mixins
* that are used across the project.
*/
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: contain;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: 700;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
font-size: 16px; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right; }
div.revslider_block .slider_editor_button {
float: right;
margin-left: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
font-size: 16px;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
div.revslider_block .slider_edit_button, div.revslider_block .slider_editor_button, div.revslider_block .slider_edit_button:focus, div.revslider_block .slider_editor_button:focus, div.revslider_block .slider_edit_button:active, div.revslider_block .slider_editor_button:active, div.revslider_block .slider_edit_button:active:enabled, div.revslider_block .slider_editor_button:active:enabled,
div.revslider_block .slider_edit_button.components-button, div.revslider_block .slider_editor_button.components-button, div.revslider_block .slider_edit_button.components-button:focus, div.revslider_block .slider_editor_button.components-button:focus, div.revslider_block .slider_edit_button.components-button:active, div.revslider_block .slider_editor_button.components-button:active, div.revslider_block .slider_edit_button.components-button:active:enabled, div.revslider_block .slider_editor_button.components-button:active:enabled {
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
div.revslider_block .slider_edit_button:hover, div.revslider_block .slider_editor_button:hover {
-webkit-filter: brightness(120%);
filter: brightness(120%);
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
.sliderBar {
padding-left: 160px; }
.sliderImage {
background: #e3e5e8;
text-align: center;
line-height: 0;
margin-top: 20px; }
.sliderImage div {
width: 267px;
height: 150px;
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
margin: 0 auto; }
.showSilderImage {
float: right;
margin-left: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga'; }
.hideSilderImage {
margin-right: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 13px !important;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga'; }
.wp-block[data-type="themepunch/revslider"] .editor-block-toolbar > .components-toolbar svg {
color: inherit !important; }
.wp-block[data-type="themepunch/revslider"] .editor-block-list__block-edit.block-editor-block-list__block-edit {
background: #f6f6f9; }
.wp-block[data-type="themepunch/revslider"] .revslider_block {
background-position: 14px 14px; }
.wp-block[data-type="themepunch/revslider"] .revslider_block .sliderBar {
padding: 14px 14px 14px 160px;
overflow: hidden;
position: relative; }
.wp-block[data-type="themepunch/revslider"] .revslider_block .sliderImage {
margin-top: 0px;
padding: 14px; }
.wp-block[data-type="themepunch/revslider"] .sliderBar slider_editor_button_wrap {
display: none; }
.slider_editor_button_wrap {
display: none;
position: absolute;
right: 14px;
top: 14px;
padding-top: 2px;
white-space: nowrap;
width: 220px;
height: 30px;
background: #f6f6f9; }
.wp-block[data-type="themepunch/revslider"].is-hovered .sliderBar .slider_editor_button_wrap,
.wp-block[data-type="themepunch/revslider"].is-selected .sliderBar .slider_editor_button_wrap {
display: inline-block; }
.wp-block[data-type="themepunch/revslider"] .sliderBar span {
white-space: nowrap;
height: 23px;
overflow: hidden;
display: inline-block;
max-width: 100%; }
@@ -0,0 +1,36 @@
/**
* #.# Common SCSS
*
* Can include things like variables and mixins
* that are used across the project.
*/
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: 120px 30px;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: bold;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right; }
/*
[data-type="themepunch/revslider"] .editor-block-list__block-edit:before {
outline: 1px solid rgba(145, 151, 162, 0.25) !important; }
*/
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,106 @@
<?php
/**
* Blocks Initializer
*
* Enqueue CSS/JS of all the blocks.
*
* @since 1.0.0
* @package CGB
*/
// Exit if accessed directly.
if(!defined('ABSPATH')) exit();
if(!class_exists('RevSliderGutenberg')){
class RevSliderGutenberg {
private $prefix;
public function __construct($pre){
$this->prefix = $pre;
// add ThemePunch block category
add_filter('block_categories', array($this, 'create_block_category'), 10, 2);
// Hook: Frontend assets.
add_action('enqueue_block_assets', array($this, 'revslider_gutenberg_cgb_block_assets'));
// Hook: Editor assets.
add_action('enqueue_block_editor_assets', array($this, 'revslider_gutenberg_cgb_editor_assets'));
}
/**
* Check Array for Value Recursive
*/
private function in_array_r($needle, $haystack, $strict = false){
if(is_array($haystack) && !empty($haystack)){
foreach($haystack as $item){
if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){
return true;
}
}
}
return false;
}
/**
* Add ThemePunch Gutenberg Block Category
*/
public function create_block_category($categories, $post){
if($this->in_array_r('themepunch', $categories)){
return $categories;
}
return array_merge($categories, array(array('slug' => 'themepunch', 'title' => __('ThemePunch', 'revslider'))));
}
/**
* Enqueue Gutenberg block assets for both frontend + backend.
*
* @uses {wp-editor} for WP editor styles.
* @since 1.0.0
*/
public function revslider_gutenberg_cgb_block_assets(){ // phpcs:ignore
// Styles.
wp_enqueue_style(
'revslider_gutenberg-cgb-style-css', // Handle.
plugins_url( $this->prefix . 'dist/blocks.style.build.css', dirname( __FILE__ )), // Block style CSS.
array('wp-editor'), // Dependency to include the CSS after it.
RS_REVISION// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.style.build.css') // Version: File modification time.
);
}
/**
* Enqueue Gutenberg block assets for backend editor.
*
* @uses {wp-blocks} for block type registration & related functions.
* @uses {wp-element} for WP Element abstraction — structure of blocks.
* @uses {wp-i18n} to internationalize the block's text.
* @uses {wp-editor} for WP editor styles.
* @since 1.0.0
*/
public function revslider_gutenberg_cgb_editor_assets(){ // phpcs:ignore
// Scripts.
wp_enqueue_script(
'revslider_gutenberg-cgb-block-js', // Handle.
plugins_url( $this->prefix . 'dist/blocks.build.js', dirname( __FILE__ )), // Block.build.js: We register the block here. Built with Webpack.
array('wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor'), // Dependencies, defined above.
// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.build.js'), // Version: File modification time.
RS_REVISION,
true // Enqueue the script in the footer.
);
// Styles.
wp_enqueue_style(
'revslider_gutenberg-cgb-block-editor-css', // Handle.
plugins_url( $this->prefix . 'dist/blocks.editor.build.css', dirname( __FILE__ )), // Block editor CSS.
array('wp-edit-blocks'), // Dependency to include the CSS after it.
RS_REVISION
// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.editor.build.css') // Version: File modification time.
);
}
}
}
?>
@@ -0,0 +1,13 @@
{
"name": "revslider-gutenberg-cgb-guten-block",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "^1.17.0"
}
}
@@ -0,0 +1,24 @@
<?php
/**
* Plugin Name: revslider-gutenberg — CGB Gutenberg Block Plugin
* Plugin URI: https://github.com/ahmadawais/create-guten-block/
* Description: revslider-gutenberg — is a Gutenberg plugin created via create-guten-block.
* Author: mrahmadawais, maedahbatool
* Author URI: https://AhmadAwais.com/
* Version: 1.0.0
* License: GPL2+
* License URI: https://www.gnu.org/licenses/gpl-2.0.txt
*
* @package CGB
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Block Initializer.
*/
require_once plugin_dir_path( __FILE__ ) . 'src/gutenberg-block.php';
new RevSliderGutenberg('');
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,172 @@
/**
* Block dependencies
*/
import './style.scss';
import './editor.scss';
/**
* Internal block libraries
*/
const { __ } = wp.i18n;
const { registerBlockType } = wp.blocks;
const { TextControl, Button } = wp.components;
const { Component } = wp.element;
/**
* RevSlider Editor Element
*/
export class RevSlider extends Component {
constructor() {
super( ...arguments );
const { attributes: { text, sliderTitle, modal } } = this.props;
this.state = {
text,
sliderTitle,
modal
}
}
componentDidMount() {
if(!this.props.attributes.checked) {
this.props.attributes.checked = true;
//RS_SC_WIZARD.openTemplateLibrary();
}
}
render() {
const {
attributes: { text, sliderTitle, modal },
setAttributes } = this.props;
window.revslider_react = this;
const openDialog = () => {
RS_SC_WIZARD.openTemplateLibrary();
}
const openSliderEditor = () => {
RS_SC_WIZARD.openSliderEditor();
};
return (
<div className="revslider_block" data-modal={ this.state.modal } >
<span><i class="material-icons">picture_in_picture</i>{this.state.sliderTitle}&nbsp;</span>
<TextControl
className="slider_slug"
value={ this.state.text }
onChange={ ( text ) => setAttributes( { text: this.state.text } ) }
/>
<Button
isDefault
onClick = { openSliderEditor }
className="slider_editor_button"
>
edit
</Button>
<Button
isDefault
onClick = { openDialog }
className="slider_edit_button"
>
Select Module
</Button>
</div>
)
}
}
/**
* Register block
*/
export default registerBlockType(
'themepunch/revslider',
{
title: __( 'Slider Revolution', 'revslider' ),
description: __( 'Add your Slider Revolution.', 'revslider' ),
category: 'themepunch',
icon: {
src: 'update',
background: 'rgb(94, 53, 177)',
color: 'white',
viewbox: "0 0 24 24"
},
keywords: [
__( 'Banner', 'revslider' ),
__( 'CTA', 'revslider' ),
__( 'Slider', 'revslider' ),
],
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
}
},
edit: props => {
const { setAttributes } = props;
return (
<div>
<RevSlider {...{ setAttributes, ...props }} />
</div>
);
},
save: props => {
const { attributes: { text, sliderTitle, modal } } = props;
return (
<div className="revslider" data-modal={modal} data-slidertitle={sliderTitle}>
{text}
</div>
);
},
deprecated: [
{
attributes: {
checked: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
}
},
save( props ) {
return (
<div className="revslider" data-slidertitle={props.attributes.sliderTitle}>
{props.attributes.text}
</div>
);
},
}
],
},
);
@@ -0,0 +1,290 @@
/**
* Block dependencies
*/
import './style.scss';
import './editor.scss';
/**
* Internal block libraries
*/
const { __ } = wp.i18n;
const { registerBlockType } = wp.blocks;
const { TextControl, Button, ToggleControl, PanelBody } = wp.components;
const { Component } = wp.element;
const { InspectorControls } = wp.blockEditor;
/**
* RevSlider Editor Element
*/
export class RevSlider extends Component {
constructor() {
super( ...arguments );
const { attributes: { text, sliderTitle, modal, sliderImage, hideSliderImage } } = this.props;
this.state = {
text,
sliderTitle,
modal,
sliderImage,
hideSliderImage,
message : ''
}
}
componentDidMount() {
if(!this.props.attributes.text && wp.data.select( 'core/editor' ).hasChangedContent()) {
window.revslider_react = this;
//this.props.attributes.checked = true;
RS_SC_WIZARD.openTemplateLibrary();
}
}
openDialog = () => {
window.revslider_react = this;
RS_SC_WIZARD.openTemplateLibrary();
}
openSliderEditor = () => {
window.revslider_react = this;
RS_SC_WIZARD.openSliderEditor();
};
openOptimizer = () => {
window.revslider_react = this;
RS_SC_WIZARD.openOptimizer();
}
setSliderAttributes = (alias) => {
setAttributes( { text: alias } );
setAttributes( { sliderImage: this.state.sliderImage } );
}
hideSliderImagePreview = () => {
window.revslider_react = this;
window.revslider_react.props.setAttributes( { hideSliderImage: this.state.hideSliderImage ? false : true } );
this.state.hideSliderImage = this.state.hideSliderImage ? false : true;
}
refreshSliderImage = () => {
window.revslider_react = this;
var alias_array = this.state.text.split('"');
var data;
RVS.F.ajaxRequest('getSliderImage', { alias : alias_array[1] }, function(response) {
if(response.success) {
try {
data = JSON.stringify(response.image);
data = JSON.parse(data);
}
catch(e) {
data = false;
}
if(data) {
window.revslider_react.props.setAttributes( { sliderImage: data } );
window.revslider_react.setState({ sliderImage: data });
window.revslider_react.setState({ message : ''});
//window.revslider_react.state.sliderImage = window.revslider_react.props.attributes.sliderImage = data;
//window.revslider_react.forceUpdate();
}
else {
//console.log('No image');
window.revslider_react.setState({message: __('No Admin Thumb set')});
window.setTimeout(function(){window.revslider_react.setState({ message : ''});},4000);
}
}
else {
window.revslider_react.setState({message: __('No Admin Thumb set')});
window.setTimeout(function(){window.revslider_react.setState({ message : ''});},4000);
}
});
}
render() {
const {
attributes: { text, sliderTitle, sliderImage, modal },
setAttributes } = this.props;
window.revslider_react = this;
return [
<InspectorControls>
<PanelBody title={ __('Admin Thumb') } initialOpen={ true }>
<div className="showHideButtons">
<Button
isDefault
onClick = { this.refreshSliderImage }
className="hideSilderImage"
>
{ this.state.sliderImage ? 'cached' : 'insert_photo' }
</Button>
<span>{ this.state.sliderImage ? __('Refresh Thumb') : __('Load Thumb') }</span>
</div>
<div className="sliderImageMessage">{this.state.message}</div>
{
this.state.sliderImage && (
<div className="showHideButtons">
<Button
isDefault
onClick = { this.hideSliderImagePreview }
className={ 'hideSilderImage' }
>
{ !this.state.hideSliderImage ? 'visibility_off' : 'visibility'}
</Button>
<span>{ this.state.hideSliderImage ? __('Show Thumb') : __('Hide Thumb') }</span>
</div>
)
}
</PanelBody>
<PanelBody title={ __('Optimization') } initialOpen={ true }>
<div className="optimizerButtons">
<Button
isDefault
onClick = { this.openOptimizer }
className={ 'optimizerOpen' }
>
flash_on
</Button>
<span>Optimize File Sizes</span>
</div>
</PanelBody>
</InspectorControls>
,
<div className="revslider_block" data-modal={ this.state.modal } >
<div class="sliderBar">
<span>{this.state.sliderTitle}&nbsp;</span>
<TextControl
className="slider_slug"
value={ this.state.text }
onChange={ ( text ) => setSliderAttributes ( this.state.text ) }
/>
<Button
isDefault
onClick = { this.openSliderEditor }
className="slider_editor_button"
>
edit
</Button>
<Button
isDefault
onClick = { this.openDialog }
className="slider_edit_button"
>
Select Module
</Button>
</div>
{
this.state.sliderImage && !this.state.hideSliderImage && (
<div className="sliderImage">
<div style={{ backgroundImage : 'url(' + this.state.sliderImage +')'}}></div>
</div>
)
}
</div>
]
}
}
/**
* Register block
*/
export default registerBlockType(
'themepunch/revslider',
{
title: __( 'Slider Revolution', 'revslider' ),
description: __( 'Add your Slider Revolution.', 'revslider' ),
category: 'themepunch',
icon: {
src: 'update',
background: 'rgb(94, 53, 177)',
color: 'white',
viewbox: "0 0 24 24"
},
keywords: [
__( 'Banner', 'revslider' ),
__( 'CTA', 'revslider' ),
__( 'Slider', 'revslider' ),
],
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
},
sliderImage: {
type:'string'
},
hideSliderImage:{
boolean: false
}
},
edit: props => {
const { setAttributes } = props;
return (
<div>
<RevSlider {...{ setAttributes, ...props }} />
</div>
);
},
save: props => {
const { attributes: { text, sliderTitle, modal } } = props;
return (
<div className="revslider" data-modal={modal} data-slidertitle={sliderTitle}>
{text}
</div>
);
},
deprecated: [
{
attributes: {
checked: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
}
},
save( props ) {
return (
<div className="revslider" data-slidertitle={props.attributes.sliderTitle}>
{props.attributes.text}
</div>
);
},
}
],
},
);
@@ -0,0 +1,164 @@
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: contain;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: 700;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
font-size: 16px; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right;
}
div.revslider_block .slider_editor_button {
float: right;
margin-left: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
font-size: 16px;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
border-color: #5e35b1;
background: #5e35b1;
color: #fff;
}
div.revslider_block .slider_edit_button, div.revslider_block .slider_editor_button, div.revslider_block .slider_edit_button:focus , div.revslider_block .slider_editor_button:focus, div.revslider_block .slider_edit_button:active , div.revslider_block .slider_editor_button:active, div.revslider_block .slider_edit_button:active:enabled , div.revslider_block .slider_editor_button:active:enabled{
border-color: #5e35b1;
background: #5e35b1;
color: #fff;
}
div.revslider_block .slider_edit_button:hover, div.revslider_block .slider_editor_button:hover{
filter: brightness(120%);
border-color: #5e35b1;
background: #5e35b1;
color: #fff;
}
[data-type="themepunch/revslider"] .editor-block-list__block-edit:before {
outline: 1px solid rgba(145, 151, 162, 0.25) !important; }
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
.sliderBar{
padding-left: 160px;
}
.sliderImage{
background: #e3e5e8;
text-align: center;
line-height: 0;
margin-top: 20px;
}
.sliderImage div {
width: 267px;
height:150px;
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
margin: 0 auto;
}
.showSilderImage {
float: right;
margin-left: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
}
.hideSilderImage{
margin-right: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
}
.showHideButtons span, .optimizerButtons span {
line-height: 28px;
}
.optimizerOpen {
margin-right: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
}
.wp-block[data-type="themepunch/revslider"] .editor-block-toolbar > .components-toolbar svg {
color: inherit!important;
}
@@ -0,0 +1,29 @@
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: 120px 30px;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: bold;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right; }
[data-type="themepunch/revslider"] .editor-block-list__block-edit:before {
outline: 1px solid rgba(145, 151, 162, 0.25) !important; }
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
@@ -0,0 +1,12 @@
/**
* Gutenberg Blocks
*
* All blocks related JavaScript files should be imported here.
* You can create a new block folder in this dir and include code
* for that block here as well.
*
* All blocks should be included here since this is the file that
* Webpack is compiling as the input file.
*/
import './revslider';
@@ -0,0 +1,13 @@
/**
* #.# Common SCSS
*
* Can include things like variables and mixins
* that are used across the project.
*/
// Colors.
$black: rgb(41, 41, 41);
$white: #f4f4f4;
$gray: #dedede;
$green: #bada55;
$red: orangered;
@@ -0,0 +1,110 @@
<?php
/**
* Blocks Initializer
*
* Enqueue CSS/JS of all the blocks.
*
* @since 1.0.0
* @package CGB
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if( ! class_exists( 'RevSliderGutenberg' ) ) {
class RevSliderGutenberg {
private $prefix;
public function __construct($pre) {
$this->prefix = $pre;
// add ThemePunch block category
add_filter('block_categories', array($this, 'create_block_category'), 10, 2);
// Hook: Frontend assets.
add_action( 'enqueue_block_assets', array( $this, 'revslider_gutenberg_cgb_block_assets' ) );
// Hook: Editor assets.
add_action( 'enqueue_block_editor_assets', array( $this, 'revslider_gutenberg_cgb_editor_assets' ) );
}
/**
* Check Array for Value Recursive
*/
private function in_array_r($needle, $haystack, $strict = false){
if(is_array($haystack) && !empty($haystack)){
foreach($haystack as $item){
if(($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->in_array_r($needle, $item, $strict))){
return true;
}
}
}
return false;
}
/**
* Add ThemePunch Gutenberg Block Category
*/
public function create_block_category($categories, $post) {
if($this->in_array_r('themepunch', $categories)){
return $categories;
}
return array_merge($categories, array(array('slug' => 'themepunch', 'title' => __('ThemePunch', 'revslider'))));
}
/**
* Enqueue Gutenberg block assets for both frontend + backend.
*
* @uses {wp-editor} for WP editor styles.
* @since 1.0.0
*/
public function revslider_gutenberg_cgb_block_assets() { // phpcs:ignore
// Styles.
wp_enqueue_style(
'revslider_gutenberg-cgb-style-css', // Handle.
plugins_url( $this->prefix . 'dist/blocks.style.build.css', dirname( __FILE__ ) ), // Block style CSS.
array( 'wp-editor' ) // Dependency to include the CSS after it.
// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.style.build.css' ) // Version: File modification time.
);
}
/**
* Enqueue Gutenberg block assets for backend editor.
*
* @uses {wp-blocks} for block type registration & related functions.
* @uses {wp-element} for WP Element abstraction — structure of blocks.
* @uses {wp-i18n} to internationalize the block's text.
* @uses {wp-editor} for WP editor styles.
* @since 1.0.0
*/
public function revslider_gutenberg_cgb_editor_assets() { // phpcs:ignore
// Scripts.
wp_enqueue_script(
'revslider_gutenberg-cgb-block-js', // Handle.
plugins_url( $this->prefix . 'dist/blocks.build.js', dirname( __FILE__ ) ), // Block.build.js: We register the block here. Built with Webpack.
array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ), // Dependencies, defined above.
// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.build.js' ), // Version: File modification time.
true // Enqueue the script in the footer.
);
// Styles.
wp_enqueue_style(
'revslider_gutenberg-cgb-block-editor-css', // Handle.
plugins_url( $this->prefix . 'dist/blocks.editor.build.css', dirname( __FILE__ ) ), // Block editor CSS.
array( 'wp-edit-blocks' ) // Dependency to include the CSS after it.
// filemtime( plugin_dir_path( __DIR__ ) . 'dist/blocks.editor.build.css' ) // Version: File modification time.
);
}
}
}
@@ -0,0 +1,187 @@
const deprecated = [
{
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
},
sliderImage: {
type:'string'
},
hideSliderImage:{
boolean: false
}
},
save( props ) {
const { attributes: { text, sliderTitle, modal } } = props;
return (
<div className="revslider" data-modal={modal} data-slidertitle={sliderTitle}>
{text}
</div>
);
},
},
{
attributes: {
checked: {
type: 'boolean',
default: false
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
}
},
save( props ) {
return (
<div className="revslider" data-slidertitle={props.attributes.sliderTitle}>
{props.attributes.text}
</div>
);
},
},
{
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
popup: {
type: 'object'
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
},
sliderImage: {
type:'string'
},
hideSliderImage:{
boolean: false
},
offset: {
type: 'object'
},
layout: {
type: 'string '
},
alias: {
type: 'string'
},
zindex: {
type: 'string'
},
shortcode: {
type: 'string'
}
},
save( props ) {
const { attributes: { text, sliderTitle, modal, zindex } } = props;
let style;
style = zindex ? "z-index:"+zindex+";" : "";
return (
<div className="revslider" data-modal={modal} data-slidertitle={sliderTitle} style={style}>
{text}
</div>
);
}
},
{
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
popup: {
type: 'object'
},
content: {
selector: '.revslider',
type: 'string',
source: 'text',
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
sliderTitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
},
sliderImage: {
type:'string'
},
hideSliderImage:{
boolean: false
},
offset: {
type: 'object'
},
layout: {
type: 'string '
},
alias: {
type: 'string'
},
zindex: {
type: 'string'
},
shortcode: {
type: 'string'
}
},
save( props ) {
const { attributes: { text, content, sliderTitle, modal, zindex } } = props;
let style;
style = zindex ? "z-index:" + zindex + ";" : "";
let shortcode = !content && text ? text : content;
return (
<div className="revslider" data-modal={ modal } data-slidertitle={ sliderTitle } style={ style }>
{ shortcode }
</div>
);
}
}
];
export {deprecated};
@@ -0,0 +1,119 @@
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: contain;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: 700;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
font-size: 16px; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right; }
div.revslider_block .slider_editor_button {
float: right;
margin-left: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
font-size: 16px;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga';
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
div.revslider_block .slider_edit_button, div.revslider_block .slider_editor_button, div.revslider_block .slider_edit_button:focus, div.revslider_block .slider_editor_button:focus, div.revslider_block .slider_edit_button:active, div.revslider_block .slider_editor_button:active, div.revslider_block .slider_edit_button:active:enabled, div.revslider_block .slider_editor_button:active:enabled,
div.revslider_block .slider_edit_button.components-button, div.revslider_block .slider_editor_button.components-button, div.revslider_block .slider_edit_button.components-button:focus, div.revslider_block .slider_editor_button.components-button:focus, div.revslider_block .slider_edit_button.components-button:active, div.revslider_block .slider_editor_button.components-button:active, div.revslider_block .slider_edit_button.components-button:active:enabled, div.revslider_block .slider_editor_button.components-button:active:enabled {
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
div.revslider_block .slider_edit_button:hover, div.revslider_block .slider_editor_button:hover {
-webkit-filter: brightness(120%);
filter: brightness(120%);
border-color: #5e35b1;
background: #5e35b1;
color: #fff; }
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
.sliderBar {
padding-left: 160px; }
.sliderImage {
background: #e3e5e8;
text-align: center;
line-height: 0;
margin-top: 20px; }
.sliderImage div {
width: 267px;
height: 150px;
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: cover;
margin: 0 auto; }
.showSilderImage {
float: right;
margin-left: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 26px;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga'; }
.hideSilderImage {
margin-right: 10px;
margin-bottom: 10px;
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
display: inline-block;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
vertical-align: top;
line-height: 13px !important;
/*font-size: 16px;*/
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: 'liga';
font-feature-settings: 'liga'; }
.wp-block[data-type="themepunch/revslider"] .editor-block-toolbar > .components-toolbar svg {
color: inherit !important; }
.wp-block[data-type="themepunch/revslider"] .editor-block-list__block-edit.block-editor-block-list__block-edit { background: #f6f6f9 }
.wp-block[data-type="themepunch/revslider"] .revslider_block { background-position: 14px 14px; }
.wp-block[data-type="themepunch/revslider"] .revslider_block .sliderBar { padding: 14px 14px 14px 160px; }
.wp-block[data-type="themepunch/revslider"] .revslider_block .sliderImage { margin-top: 0px; padding: 14px; }
.wp-block[data-type="themepunch/revslider"] .sliderBar button { display: none; }
.wp-block[data-type="themepunch/revslider"].is-hovered .sliderBar button,
.wp-block[data-type="themepunch/revslider"].is-selected .sliderBar button { display: inline-block; }
@@ -0,0 +1,95 @@
/**
* Block dependencies
*/
import './style.scss';
import './editor.scss';
/**
* Internal block libraries
*/
const { __ } = wp.i18n;
const { registerBlockType } = wp.blocks;
import { deprecated } from './deprecated';
import { RevSlider } from './revslider';
/**
* Register block
*/
export default registerBlockType(
'themepunch/revslider',
{
title: __( 'Slider Revolution', 'revslider' ),
description: __( 'Add your Slider Revolution Module!', 'revslider' ),
category: 'themepunch',
icon: {
src: 'update',
background: 'rgb(94, 53, 177)',
color: 'white',
viewbox: "0 0 28 28"
},
keywords: [
__( 'Banner', 'revslider' ),
__( 'CTA', 'revslider' ),
__( 'Slider', 'revslider' ),
],
attributes: {
checked: {
type: 'boolean',
default: false
},
modal: {
type: 'boolean',
default: false
},
content: {
selector: '.revslider',
type: 'string',
source: 'text',
},
text: {
selector: '.revslider',
type: 'string',
source: 'text',
},
slidertitle: {
selector: '.revslider',
type: 'string',
source: 'attribute',
attribute: 'data-slidertitle',
},
sliderImage: {
type:'string'
},
hideSliderImage:{
boolean: false
},
alias: {
type: 'string'
},
zindex: {
type: 'string'
}
},
edit: props => {
const { setAttributes } = props;
return (
<div>
<RevSlider {...{ setAttributes, ...props }} />
</div>
);
},
deprecated,
save: props => {
const { attributes: { text, content, slidertitle, modal, zindex } } = props;
let style;
style = zindex ? "z-index:"+zindex+";" : "";
let shortcode = !content && text ? text : content;
return (
<div className="revslider" data-modal={modal} data-slidertitle={slidertitle} style={style}>
{shortcode}
</div>
);
}
},
);
@@ -0,0 +1,93 @@
/**
* RevSlider Editor Element
*/
/**
* Internal block libraries
*/
const { Component } = wp.element;
/**
* Component RevSlider for usage in block
*/
export class RevSliderImage extends Component {
constructor() {
super( ...arguments );
this.state = {
response : undefined,
alias : this.props.attributes.alias,
slidertitle: this.props.attributes.slidertitle,
};
}
// Load Slider Image before it is mounted
componentWillMount(){
this.loadSliderImage();
}
// Load Slider Image when it is mounted
componentDidMount() {
//this.loadSliderImage();
}
// When new Props are send to the Block it will reload the image when the alias has changed
componentWillReceiveProps(){
if(this.state.alias != this.props.attributes.alias)
this.loadSliderImage();
}
// Loads the Slider Admin Thumb via Ajax Call
loadSliderImage(){
this.setState({response: undefined});
this.setState({alias: this.props.attributes.alias});
var self = this;
if(!this.props.attributes.alias){
if(this.props.attributes.content!==undefined || this.props.attributes.text!==undefined){
let shortcode = this.props.attributes.content!==undefined ? RVS.SC.parseShortCode(this.props.attributes.content) : RVS.SC.parseShortCode(this.props.attributes.text);
if(shortcode.attributes.alias) {
this.props.attributes.alias = shortcode.attributes.alias;
}
}
}
if(this.props.attributes.alias){
RVS.F.ajaxRequest('getSliderImage', { alias : this.props.attributes.alias }, function(response) {
if(response.success) {
if (response!==undefined && response.image!==undefined) {
self.setState({
response
});
}
RVS.F.showWaitAMinute({fadeIn:0,text:RVS_LANG.loadingcontent});
}
});
}
}
// Renders the different states of the image (loading, loaded and no image)
render() {
//Image Loaded
if(this.state.response && this.state.response.image !== ""){
return [
<div className="sliderImage">
<div style={{ backgroundImage : 'url(' + this.state.response.image +')'}}></div>
</div>
]
}
else {
//Image Loading
if(!this.state.response)
return [
<div className="sliderImageLoading"></div>
]
//No Image
else {
return [
<div className="noSliderImage"></div>
]
}
}
}
}
@@ -0,0 +1,166 @@
/**
* RevSlider Editor Element
*/
/**
* Internal block libraries
*/
const { Component } = wp.element;
const { TextControl, Button, Tooltip } = wp.components;
if(typeof wp.blockEditor !== 'undefined')
var { InspectorControls } = wp.blockEditor;
else
var { InspectorControls } = wp.editor;
import { RevSliderImage } from './revSliderImage';
/**
* Component RevSlider for usage in block
*/
export class RevSlider extends Component {
constructor() {
super( ...arguments );
this.state = jQuery.extend(true,{},this.props.attributes);
window.revslider_react = {};
}
componentDidMount() {
revslider_react = this;
// Create Block in RVS with current state
RVS.SC.BLOCK = this.state;
// Open Template Library when block is added for the first time to the page
if(!this.props.attributes.content && !this.props.attributes.text && wp.data.select( 'core/editor' ).isEditedPostDirty()) {
RVS.SC.openTemplateLibrary('gutenberg');
}
else{
// Fallback for saved blocks with no alias attribute (< RevSlider V6.1.6)
if(!this.props.attributes.alias){
let shortcode = this.props.attributes.content!==undefined ? RVS.SC.parseShortCode(this.props.attributes.content) : RVS.SC.parseShortCode(this.props.attributes.text);
if(shortcode.attributes.alias) {
this.props.attributes.alias = shortcode.attributes.alias;
RVS.SC.BLOCK.alias = this.props.attributes.alias;
this.props.setAttributes( { alias : shortcode.attributes.alias } );
}
}
if(!this.props.attributes.slidertitle ){
if(this.props.attributes.sliderTitle){
this.props.setAttributes( { slidertitle : this.props.attributes.sliderTitle } );
}
}
}
}
// Open Block Settings like offset, popup, admin thumb
openBlockSettings = () => {
var data = false;
RVS.SC.BLOCK = this.state;
revslider_react = this;
if(!this.props.attributes.alias) return false;
RVS.SC.openBlockSettings('gutenberg',this.props.attributes.content);
};
// Open Template Library
openLibrary = () => {
revslider_react = this;
RVS.SC.BLOCK = this.props.attributes;
RVS.SC.openTemplateLibrary('gutenberg');
}
// Link to Slider Editor in new tab
openSliderEditor = () => {
if(!this.props.attributes.alias) return false;
RVS.SC.openSliderEditor(this.props.attributes.alias);
};
// Open File Optimizer PopUp
openOptimizer = () => {
if(!this.props.attributes.alias) return false;
RVS.SC.openOptimizer(this.props.attributes.alias);
}
// Update Attributes in case Slider alias changes
setSliderAttributes = (alias) => {
setAttributes( { alias } );
setAttributes( { sliderImage: this.state.sliderImage } );
}
render() {
revslider_react = this;
// Set Attributes from State (state was changed in RevSlider JS)
this.props.setAttributes(this.state);
const { setAttributes } = this.props;
// Turn off Styling in Block Options Sidebar when leaving block
{
!this.props.isSelected &&
(RVS.SC.updateBlockViews(false))
}
if(!this.props.attributes.slidertitle ){
if(this.props.attributes.sliderTitle){
this.props.setAttributes( { slidertitle : this.props.attributes.sliderTitle } );
}
}
return [
<InspectorControls>
{
this.props.attributes.alias &&
<div className="rs_optimizer_button_wrapper" onClick={ this.openOptimizer } >
<Button
isDefault
className={ 'rs_optimizer_button' }
>
flash_on
</Button>
<span>Optimize File Sizes</span>
</div>
}
</InspectorControls>
,
<div className="revslider_block" data-modal={ this.props.attributes.modal } >
<div class="sliderBar">
<span>{ this.props.attributes.slidertitle }&nbsp;</span>
<TextControl
className="slider_slug"
value={ this.props.attributes.content }
onChange={ ( content ) => setSliderAttributes ( this.props.attributes.content ) }
/>
<Tooltip text="Open Block Settings">
<Button
isDefault
onClick = { this.openBlockSettings }
className="slider_editor_button"
>
tune
</Button>
</Tooltip>
<Tooltip text="Open Slider Editor">
<Button
isDefault
onClick = { this.openSliderEditor }
className="slider_editor_button"
>
edit
</Button>
</Tooltip>
<Button
isDefault
onClick = { this.openLibrary }
className="slider_edit_button"
>
Select Module
</Button>
</div>
<RevSliderImage {...{ setAttributes, ...this.props }} />
</div>
]
}
}
@@ -0,0 +1,31 @@
div.revslider_block {
background: url(images/rs6_logo_2x.png);
background-size: 120px 30px;
background-repeat: no-repeat;
line-height: 32px; }
div.revslider_block .components-text-control__input {
display: none; }
div.revslider_block span {
font-weight: bold;
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; }
div.revslider_block .slider_slug {
float: left; }
div.revslider_block .slider_edit_button {
float: right; }
/*
[data-type="themepunch/revslider"] .editor-block-list__block-edit:before {
outline: 1px solid rgba(145, 151, 162, 0.25) !important; }
*/
.editor-block-list-item-themepunch-revslider svg,
.components-panel__body.edit-post-block-sidebar__panel svg.dashicons-update {
width: 24px;
height: 24px; }
.editor-block-list-item-themepunch-revslider .editor-block-types-list__item-title {
padding: 4px 1px 4px 1px; }
@@ -0,0 +1,289 @@
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2019 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderShortcodeWizard extends RevSliderFunctions {
public static function enqueue_scripts(){
global $pagenow;
$f = new RevSliderFunctions();
$action = $f->get_val($_GET, 'action');
if($action === 'elementor') return;
// only add scripts if native WordPress editor, Gutenberg or Visual Composer
// Elementor has its own hooks for adding scripts
if($action === 'edit' || $pagenow === 'post-new.php' || $f->get_val($_GET, 'vc_action', '') === 'vc_inline'){
self::add_scripts();
}
}
public static function add_styles(){
wp_enqueue_style('revslider-material-icons', RS_PLUGIN_URL . 'admin/assets/icons/material-icons.css', array(), RS_REVISION);
wp_enqueue_style('revslider-basics-css', RS_PLUGIN_URL . 'admin/assets/css/basics.css', array(), RS_REVISION);
wp_enqueue_style('rs-color-picker-css', RS_PLUGIN_URL . 'admin/assets/css/tp-color-picker.css', array(), RS_REVISION);
wp_enqueue_style('revbuilder-select2RS', RS_PLUGIN_URL . 'admin/assets/css/select2RS.css', array(), RS_REVISION);
}
public static function add_scripts($elementor = false){
$f = new RevSliderFunctions();
$action = $f->get_val($_GET, 'action');
if($elementor && $action !== 'elementor') return;
require_once(RS_PLUGIN_PATH . 'admin/includes/functions-admin.class.php');
require_once(RS_PLUGIN_PATH . 'admin/includes/template.class.php');
require_once(RS_PLUGIN_PATH . 'admin/includes/folder.class.php');
require_once(RS_PLUGIN_PATH . 'public/revslider-front.class.php');
//check user permissions
if(!current_user_can('edit_posts') && !current_user_can('edit_pages')) return;
if(!$elementor){
//verify the post type
global $typenow;
$post_types = get_post_types();
if(empty($post_types) || !is_array($post_types)) $post_types = array('post', 'page');
if(!in_array($typenow, $post_types)) return;
$current_screen = get_current_screen();
// checks for built-in gutenberg version
$is_gutenberg = method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor();
// checks for old plugin version
if(!$is_gutenberg) $is_gutenberg = function_exists('is_gutenberg_page') && is_gutenberg_page();
// gutenberg
if(!$is_gutenberg){
add_filter('mce_external_plugins', array('RevSliderShortcodeWizard', 'add_tinymce_shortcode_editor_plugin'));
add_filter('mce_buttons', array('RevSliderShortcodeWizard', 'add_tinymce_shortcode_editor_button'));
}
// enqueue styles
self::add_styles();
}
$output_class = new RevSliderOutput();
$output_class->add_inline_double_jquery_error(true);
echo RevSliderFront::js_set_start_size();
$dev_mode = (!file_exists(RS_PLUGIN_PATH.'admin/assets/js/plugins/utils.min.js') && !file_exists(RS_PLUGIN_PATH.'admin/assets/js/modules/editor.min.js')) ? true : false;
if($dev_mode === true){
wp_enqueue_script('revbuilder-basics', RS_PLUGIN_URL . 'admin/assets/js/modules/basics.js', array('jquery'), RS_REVISION, false);
wp_enqueue_script('revbuilder-select2RS', RS_PLUGIN_URL . 'admin/assets/js/plugins/select2RS.full.min.js', array('jquery'), RS_REVISION, false);
wp_enqueue_script('revbuilder-color-picker-js', RS_PLUGIN_URL . 'admin/assets/js/plugins/tp-color-picker.min.js', array('jquery', 'revbuilder-select2RS', 'wp-color-picker'), RS_REVISION);
wp_enqueue_script('revbuilder-clipboard', RS_PLUGIN_URL . 'admin/assets/js/plugins/clipboard.min.js', array('jquery'), RS_REVISION, false);
wp_enqueue_script('revbuilder-utils', RS_PLUGIN_URL . 'admin/assets/js/modules/objectlibrary.js', array('jquery'), RS_REVISION, false);
wp_enqueue_script('revbuilder-optimizer', RS_PLUGIN_URL . 'admin/assets/js/modules/optimizer.js', array('jquery'), RS_REVISION, false);
}else{
wp_enqueue_script('revbuilder-utils', RS_PLUGIN_URL . 'admin/assets/js/plugins/utils.min.js', array('jquery','wp-color-picker'), RS_REVISION, false);
}
wp_enqueue_script('tp-tools', RS_PLUGIN_URL . 'public/assets/js/rbtools.min.js', array('jquery'), RS_REVISION, true);
// object library translations
wp_localize_script('revbuilder-utils', 'RVS_LANG', array(
'sliderasmodal' => __('Use as Modal', 'revslider'),
'noadminthumbs' => __('No Admin Thumb set', 'revslider'),
'corejs' => __('Core JavaScript', 'revslider'),
'corecss' => __('Core CSS', 'revslider'),
'coretools' => __('Core Tools (GreenSock & Co)', 'revslider'),
'enablecompression' => __('Enable Server Compression', 'revslider'),
'noservercompression' => __('Not Available, read FAQ', 'revslider'),
'servercompression' => __('Serverside Compression', 'revslider'),
'sizeafteroptim' => __('Size after Optimization', 'revslider'),
'chgimgsizesrc' => __('Change Image Size or Src', 'revslider'),
'pickandim' => __('Pick another Dimension', 'revslider'),
'optimize' => __('Optimize', 'revslider'),
'applychanges' => __('Apply Changes', 'revslider'),
'savechanges' => __('Save Changes', 'revslider'),
'suggestion' => __('Suggestion', 'revslider'),
'toosmall' => __('Too Small', 'revslider'),
'standard1x' => __('Standard (1x)', 'revslider'),
'retina2x' => __('Retina (2x)', 'revslider'),
'oversized' => __('Oversized', 'revslider'),
'quality' => __('Quality', 'revslider'),
'file' => __('File', 'revslider'),
'resize' => __('Resize', 'revslider'),
'lowquality' => __('Optimized (Low Quality)', 'revslider'),
'notretinaready' => __('Not Retina Ready', 'revslider'),
'element' => __('Element', 'revslider'),
'calculating' => __('Calculating...', 'revslider'),
'filesize' => __('File Size', 'revslider'),
'dimension' => __('Dimension', 'revslider'),
'dimensions' => __('Dimensions', 'revslider'),
'optimization' => __('Optimization', 'revslider'),
'optimized' => __('Optimized', 'revslider'),
'smartresize' => __('Smart Resize', 'revslider'),
'optimal' => __('Optimal', 'revslider'),
'recommended' => __('Recommended', 'revslider'),
'hrecommended' => __('Highly Recommended', 'revslider'),
'optimizertitel' => __('File Size Optimizer', 'revslider'),
'loadedmediafiles' => __('Loaded Media Files', 'revslider'),
'loadedmediainfo' => __('Optimize to save up to ', 'revslider'),
'optselection' => __('Optimize Selection', 'revslider'),
'copyrightandlicenseinfo' => __('&copy; Copyright & License Info', 'revslider'),
'ol_images' => __('Images', 'revslider'),
'ol_layers' => __('Layer Objects', 'revslider'),
'ol_objects' => __('Objects', 'revslider'),
'ol_modules' => __('Own Modules', 'revslider'),
'ol_fonticons' => __('Font Icons', 'revslider'),
'ol_moduletemplates' => __('Module Templates', 'revslider'),
'ol_videos' => __('Videos', 'revslider'),
'ol_svgs' => __('SVG\'s', 'revslider'),
'ol_favorite' => __('Favorites', 'revslider'),
'simproot' => __('Root', 'revslider'),
'loading' => __('Loading', 'revslider'),
'elements' => __('Elements', 'revslider'),
'loadingthumbs' => __('Loading Thumbnails...', 'revslider'),
'moduleBIG' => __('MODULE', 'revslider'),
'packageBIG' => __('PACKAGE', 'revslider'),
'installed' => __('Installed', 'revslider'),
'notinstalled' => __('Not Installed', 'revslider'),
'setupnotes' => __('Setup Notes', 'revslider'),
'requirements' => __('Requirements', 'revslider'),
'installedversion' => __('Installed Version', 'revslider'),
'availableversion' => __('Available Version', 'revslider'),
'installpackage' => __('Installing Template Package', 'revslider'),
'installtemplate' => __('Install Template', 'revslider'),
'licencerequired' => __('Activate License', 'revslider'),
'redownloadTemplate' => __('Re-Download Online', 'revslider'),
'createBlankPage' => __('Create Blank Page', 'revslider'),
'please_wait_a_moment' => __('Please Wait a Moment', 'revslider'),
'search' => __('Search', 'revslider'),
'folderBIG' => __('FOLDER', 'revslider'),
'objectBIG' => __('OBJECT', 'revslider'),
'imageBIG' => __('IMAGE', 'revslider'),
'videoBIG' => __('VIDEO', 'revslider'),
'iconBIG' => __('ICON', 'revslider'),
'svgBIG' => __('SVG', 'revslider'),
'fontBIG' => __('FONT', 'revslider'),
'show' => __('Show', 'revslider'),
'perpage' => __('Per Page', 'revslider'),
'updatefromserver' => __('Update List', 'revslider'),
'imageisloading' => __('Image is Loading...', 'revslider'),
'importinglayers' => __('Importing Layers...', 'revslider'),
'layerwithaction' => __('Layer with Action', 'revslider'),
'triggeredby' => __('Behavior', 'revslider'),
'nrlayersimporting' => __('Layers Importing', 'revslider'),
'nothingselected' => __('Nothing Selected', 'revslider'),
'sortbycreation' => __('Sort by Creation', 'revslider'),
'creationascending' => __('Creation Ascending', 'revslider'),
'sortbytitle' => __('Sort by Title', 'revslider'),
'titledescending' => __('Title Descending', 'revslider'),
'active_sr_to_access' => __('Register Slider Revolution<br>to Unlock Premium Features', 'revslider'),
'addons' => __('Add-Ons', 'revslider'),
'active_sr_tmp_obl' => __('Template & Object Library', 'revslider'),
'active_sr_inst_upd' => __('Instant Updates', 'revslider'),
'active_sr_one_on_one' => __('1on1 Support', 'revslider'),
'membersarea' => __('Members Area', 'revslider'),
'onelicensekey' => __('1 License Key per Website!', 'revslider'),
'onepurchasekey' => __('1 Purchase Code per Website!', 'revslider'),
'onelicensekey_info' => __('If you want to use your license key on another domain, please<br> deregister it in the members area or use a different key.', 'revslider'),
'onepurchasekey_info' => __('If you want to use your purchase code on<br>another domain, please deregister it first or', 'revslider'),
'registeredlicensekey' => __('Registered License Key', 'revslider'),
'registeredpurchasecode' => __('Registered Purchase Code', 'revslider'),
'registerlicensekey' => __('Register License Key', 'revslider'),
'registerpurchasecode' => __('Register Purchase Code', 'revslider'),
'registerCode' => __('Register this Code', 'revslider'),
'registerKey' => __('Register this License Key', 'revslider'),
'deregisterCode' => __('Deregister this Code', 'revslider'),
'deregisterKey' => __('Deregister this License Key', 'revslider'),
'active_sr_plg_activ' => __('Register Purchase Code', 'revslider'),
'active_sr_plg_activ_key' => __('Register License Key', 'revslider'),
'getpurchasecode' => __('Get a Purchase Code', 'revslider'),
'getlicensekey' => __('Licensing Options', 'revslider'),
'ihavepurchasecode' => __('I have a Purchase Code', 'revslider'),
'ihavelicensekey' => __('I have a License Key', 'revslider'),
'enterlicensekey' => __('Enter License Key', 'revslider'),
'enterpurchasecode' => __('Enter Purchase Code', 'revslider')
));
wp_enqueue_script('revbuildet-shortcode-generator-js', RS_PLUGIN_URL . 'admin/assets/js/shortcode_generator/shortcode_generator.js', array('jquery'), RS_REVISION, true);
$rsaf = new RevSliderFunctionsAdmin();
$rsa = $rsaf->get_short_library();
if(!empty($rsa)) $obj = $rsaf->json_encode_client_side($rsa);
$rs_compression = $rsaf->compression_settings();
$favs = get_option('rs_favorite', array());
$favs = !empty($favs) ? $rsaf->json_encode_client_side($favs) : false;
?>
<script type="text/javascript">
window.RVS = window.RVS === undefined ? {F:{}, C:{}, ENV:{}, LIB:{}, V:{}, S:{}} : window.RVS;
RVS.LIB.OBJ = RVS.LIB.OBJ===undefined ? {} : RVS.LIB.OBJ;
var RS_DEFALIAS,
RS_SHORTCODE_FAV;
RVS.ENV.plugin_url = '<?php echo RS_PLUGIN_URL; ?>';
RVS.ENV.plugin_dir = 'revslider';
RVS.ENV.admin_url = '<?php echo admin_url('admin.php?page=revslider'); ?>';
RVS.ENV.nonce = '<?php echo wp_create_nonce('revslider_actions'); ?>';
RVS.ENV.activated = '<?php echo (get_option('revslider-valid', 'false')) == 'true' ? 'true' : 'false'; ?>';
RVS.ENV.activated = RVS.ENV.activated == 'true' || RVS.ENV.activated == true ? true : false;
RVS.ENV.selling = <?php echo ($rsaf->get_addition('selling') === true) ? 'true' : 'false'; ?>;
window.addEventListener('load', function(){
RVS.ENV.output_compress = <?php echo (!empty($rs_compression)) ? 'jQuery.parseJSON('. $rsaf->json_encode_client_side($rs_compression) .')' : '[]'; ?>;
<?php if(!empty($rsa)){ ?>
RVS.LIB.OBJ = {shortcode_generator: true, types: jQuery.parseJSON(<?php echo $obj; ?>)};
<?php }else{ ?>
RVS.LIB.OBJ = {};
<?php }
if(!empty($favs)){ ?>
RS_SHORTCODE_FAV = jQuery.parseJSON(<?php echo $favs; ?>);
<?php } ?>
});
</script>
<?php
}
public static function enqueue_files(){
echo '<div id="rb_modal_underlay" style="display:none"></div>';
require_once(RS_PLUGIN_PATH . 'admin/views/modals-copyright.php');
}
/**
* add script tinymce shortcode script
* @since: 5.1.1
*/
public static function add_tinymce_shortcode_editor_plugin($plugin_array){
$plugin_array['revslider_sc_button'] = RS_PLUGIN_URL . 'admin/assets/js/shortcode_generator/tinymce.js';
return $plugin_array;
}
/**
* Add button to tinymce
* @since: 5.1.1
*/
public static function add_tinymce_shortcode_editor_button($buttons){
array_push($buttons, 'revslider_sc_button');
return $buttons;
}
}
/**
* old classname extends new one (old classnames will be obsolete soon)
* @since: 5.0
**/
class RevSlider_TinyBox extends RevSliderShortcodeWizard {}
class RevSliderTinyBox extends RevSlider_TinyBox {}
?>
@@ -0,0 +1,88 @@
<?php
/**
* called from revslider-front.class.php
* @since: 6.1.6
*/
if(!defined('ABSPATH')) exit();
class RevSliderWpbakeryShortcode {
public static function visual_composer_include(){
// VC is enabled
if(defined('WPB_VC_VERSION') && function_exists('vc_map')){
vc_map(
array(
'name' => __('Slider Revolution 6', 'revslider'),
'base' => 'rev_slider',
'icon' => 'icon-wpb-revslider',
'category' => __('Content', 'revslider'),
'show_settings_on_create' => false,
'js_view' => 'VcSliderRevolution',
'admin_enqueue_js' => RS_PLUGIN_URL.'admin/assets/js/shortcode_generator/vc.js',
'front_enqueue_js' => RS_PLUGIN_URL.'admin/assets/js/shortcode_generator/vc.js',
'params' => array(
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Modal', 'revslider'),
'param_name' => 'modal',
'admin_label' => false,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Popup', 'revslider'),
'param_name' => 'popup',
'admin_label' => false,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Title', 'revslider'),
'param_name' => 'slidertitle',
'admin_label' => true,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Alias', 'revslider'),
'param_name' => 'alias',
'admin_label' => true,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Offset', 'revslider'),
'param_name' => 'offset',
'admin_label' => false,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Layout', 'revslider'),
'param_name' => 'layout',
'admin_label' => false,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('z-Index', 'revslider'),
'param_name' => 'zindex',
'admin_label' => false,
'value' => ''
),
array(
'type' => 'rev_slider_shortcode',
'heading' => __('Usage', 'revslider'),
'param_name' => 'usage',
'admin_label' => false,
'value' => ''
),
)
)
);
}
}
}
?>