File "class-vc-vendor-qtranslate.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/js_composer/include/classes/vendors/plugins/class-vc-vendor-qtranslate.php
File size: 8.87 KB
MIME-type: text/x-php
Charset: utf-8
<?php
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* Class Vc_Vendor_Qtranslate
* @since 4.3
*/
class Vc_Vendor_Qtranslate {
/**
* @since 4.3
* @var array
*/
protected $languages = array();
/**
* @since 4.3
*/
public function setLanguages() {
global $q_config;
$languages = get_option( 'qtranslate_enabled_languages' );
if ( ! is_array( $languages ) ) {
$languages = $q_config['enabled_languages'];
}
$this->languages = $languages;
}
/**
* @return bool
*/
public function isValidPostType() {
return in_array( get_post_type(), vc_editor_post_types(), true );
}
/**
* @since 4.3
*/
public function load() {
$this->setLanguages();
global $q_config;
add_filter( 'vc_frontend_get_page_shortcodes_post_content', array(
$this,
'filterPostContent',
) );
add_action( 'vc_backend_editor_render', array(
$this,
'enqueueJsBackend',
) );
add_action( 'vc_frontend_editor_render', array(
$this,
'enqueueJsFrontend',
) );
add_action( 'vc_frontend_editor_render_template', array(
$this,
'vcFrontEndEditorRender',
) );
add_filter( 'vc_nav_controls', array(
$this,
'vcNavControls',
) );
add_filter( 'vc_nav_front_controls', array(
$this,
'vcNavControlsFrontend',
) );
add_filter( 'vc_frontend_editor_iframe_url', array(
$this,
'vcRenderEditButtonLink',
) );
if ( ! vc_is_frontend_editor() ) {
add_filter( 'vc_get_inline_url', array(
$this,
'vcRenderEditButtonLink',
) );
}
$q_lang = vc_get_param( 'qlang' );
if ( is_string( $q_lang ) ) {
$q_config['language'] = $q_lang;
}
add_action( 'init', array(
$this,
'qtransPostInit',
), 1000 );
}
/**
* @since 4.3
*/
public function qtransPostInit() {
global $q_config;
$q_config['js']['qtrans_switch'] = "
var swtg= jQuery.extend(true, {}, switchEditors);
switchEditors.go = function(id, lang) {
if ('content' !== id && 'qtrans_textarea_content' !== id && -1 === id.indexOf('qtrans')) {
return swtg.go(id,lang);
}
id = id || 'qtrans_textarea_content';
lang = lang || 'toggle';
if ( 'toggle' === lang ) {
if ( ed && !ed.isHidden() )
lang = 'html';
else
lang = 'tmce';
} else if ( 'tinymce' === lang )
lang = 'tmce';
var inst = tinyMCE.get('qtrans_textarea_' + id);
var vta = document.getElementById('qtrans_textarea_' + id);
var ta = document.getElementById(id);
var dom = tinymce.DOM;
var wrap_id = 'wp-'+id+'-wrap';
var wrap_id2 = 'wp-qtrans_textarea_content-wrap';
// update merged content
if (inst && ! inst.isHidden()) {
tinyMCE.triggerSave();
} else {
qtrans_save(vta.value);
}
// check if language is already active
if (lang !== 'tmce' && lang !== 'html' && document.getElementById('qtrans_select_'+lang).className === 'wp-switch-editor switch-tmce switch-html') {
return;
}
if (lang !== 'tmce' && lang !== 'html') {
document.getElementById('qtrans_select_'+qtrans_get_active_language()).className='wp-switch-editor';
document.getElementById('qtrans_select_'+lang).className='wp-switch-editor switch-tmce switch-html';
}
if (lang === 'html') {
if ( inst && inst.isHidden() )
return false;
if ( inst ) {
vta.style.height = inst.getContentAreaContainer().offsetHeight + 20 + 'px';
inst.hide();
}
dom.removeClass(wrap_id, 'tmce-active');
dom.addClass(wrap_id, 'html-active');
dom.removeClass(wrap_id2, 'tmce-active');
dom.addClass(wrap_id2, 'html-active');
setUserSetting( 'editor', 'html' );
} else if (lang === 'tmce') {
if (inst && ! inst.isHidden())
return false;
if ( 'undefined' !== typeof(QTags) )
QTags.closeAllTags('qtrans_textarea_' + id);
if ( tinyMCEPreInit.mceInit['qtrans_textarea_'+id] && tinyMCEPreInit.mceInit['qtrans_textarea_'+id].wpautop )
vta.value = this.wpautop(qtrans_use(qtrans_get_active_language(),ta.value));
if (inst) {
inst.show();
} else {
qtrans_hook_on_tinyMCE('qtrans_textarea_'+id, true);
}
dom.removeClass(wrap_id, 'html-active');
dom.addClass(wrap_id, 'tmce-active');
dom.removeClass(wrap_id2, 'html-active');
dom.addClass(wrap_id2, 'tmce-active');
setUserSetting('editor', 'tinymce');
} else {
// switch content
qtrans_assign('qtrans_textarea_'+id,qtrans_use(lang,ta.value));
}
}
";
$this->qtransSwitch();
}
/**
* @since 4.3
*/
public function qtransSwitch() {
global $q_config;
$q_config['js']['qtrans_switch'] .= '
jQuery(document).ready(function(){ switchEditors.switchto(document.getElementById("content-html")); });
';
}
/**
* @since 4.3
*/
public function enqueueJsBackend() {
if ( $this->isValidPostType() || apply_filters( 'vc_vendor_qtranslate_enqueue_js_backend', false ) ) {
wp_enqueue_script( 'vc_vendor_qtranslate_backend', vc_asset_url( 'js/vendors/qtranslate_backend.js' ), array( 'vc-backend-min-js' ), '1.0', true );
}
}
/**
* @since 4.3
*/
public function enqueueJsFrontend() {
if ( $this->isValidPostType() ) {
wp_enqueue_script( 'vc_vendor_qtranslate_frontend', vc_asset_url( 'js/vendors/qtranslate_frontend.js' ), array( 'vc-frontend-editor-min-js' ), '1.0', true );
global $q_config;
$q_config['js']['qtrans_save'] = '';
$q_config['js']['qtrans_integrate_category'] = '';
$q_config['js']['qtrans_integrate_title'] = '';
$q_config['js']['qtrans_assign'] = '';
$q_config['js']['qtrans_tinyMCEOverload'] = '';
$q_config['js']['qtrans_wpActiveEditorOverload'] = '';
$q_config['js']['qtrans_updateTinyMCE'] = '';
$q_config['js']['qtrans_wpOnload'] = '';
$q_config['js']['qtrans_editorInit'] = '';
$q_config['js']['qtrans_hook_on_tinyMCE'] = '';
$q_config['js']['qtrans_switch_postbox'] = '';
$q_config['js']['qtrans_switch'] = '';
}
}
/**
* @return string
* @since 4.3
*/
public function generateSelect() {
$output = '';
if ( is_array( $this->languages ) && ! empty( $this->languages ) ) {
$output .= '<select id="vc_vendor_qtranslate_langs" class="vc_select vc_select-navbar" style="display:none;">';
$inline_url = vc_frontend_editor()->getInlineUrl();
foreach ( $this->languages as $lang ) {
$output .= '<option value="' . $lang . '" link="' . add_query_arg( array( 'qlang' => $lang ), $inline_url ) . '">' . qtrans_getLanguageName( $lang ) . '</option>';
}
$output .= '</select>';
}
return $output;
}
/**
* @return string
* @since 4.3
*/
public function generateSelectFrontend() {
$output = '';
if ( is_array( $this->languages ) && ! empty( $this->languages ) ) {
$output .= '<select id="vc_vendor_qtranslate_langs_front" class="vc_select vc_select-navbar">';
$q_lang = vc_get_param( 'qlang' );
$inline_url = vc_frontend_editor()->getInlineUrl();
foreach ( $this->languages as $lang ) {
$output .= '<option value="' . add_query_arg( array( 'qlang' => $lang ), $inline_url ) . '"' . ( $q_lang == $lang ? ' selected' : '' ) . ' > ' . qtrans_getLanguageName( $lang ) . '</option > ';
}
$output .= '</select > ';
}
return $output;
}
/**
* @param $list
*
* @return array
* @since 4.3
*
*/
public function vcNavControls( $list ) {
if ( $this->isValidPostType() ) {
if ( is_array( $list ) ) {
$list[] = array(
'qtranslate',
$this->getControlSelectDropdown(),
);
}
}
return $list;
}
/**
* @param $list
*
* @return array
* @since 4.3
*
*/
public function vcNavControlsFrontend( $list ) {
if ( $this->isValidPostType() ) {
if ( is_array( $list ) ) {
$list[] = array(
'qtranslate',
$this->getControlSelectDropdownFrontend(),
);
}
}
return $list;
}
/**
* @return string
* @since 4.3
*/
public function getControlSelectDropdown() {
return '<li class="vc_pull-right" > ' . $this->generateSelect() . '</li > ';
}
/**
* @return string
*/
public function getControlSelectDropdownFrontend() {
return '<li class="vc_pull-right" > ' . $this->generateSelectFrontend() . '</li > ';
}
/**
* @param $link
*
* @return string
* @since 4.3
*
*/
public function vcRenderEditButtonLink( $link ) {
return add_query_arg( array( 'qlang' => qtrans_getLanguage() ), $link );
}
/**
* @since 4.3
*/
public function vcFrontendEditorRender() {
global $q_config;
$output = '';
$q_lang = vc_get_param( 'qlang' );
if ( ! is_string( $q_lang ) ) {
$q_lang = $q_config['language'];
}
$output .= '<input type="hidden" id="vc_vendor_qtranslate_postcontent" value="' . esc_attr( vc_frontend_editor()->post()->post_content ) . '" data-lang="' . $q_lang . '"/>';
$output .= '<input type="hidden" id="vc_vendor_qtranslate_posttitle" value="' . esc_attr( vc_frontend_editor()->post()->post_title ) . '" data-lang="' . $q_lang . '"/>';
echo $output;
}
/**
* @param $content
*
* @return string
* @since 4.3
*
*/
public function filterPostContent( $content ) {
return qtrans_useCurrentLanguageIfNotFoundShowAvailable( $content );
}
}