File: /home/blushinc/loleverywhere.com/wp-content/plugins/td-composer/includes/wpeditor.php
<?php
/**
* Created by PhpStorm.
* User: tagdiv
* Date: 16.09.2016
* Time: 15:00
*/
define('WP_USE_THEMES', false);
$td_path = realpath($_GET['wp_path']);
require_once( $td_path . '/wp-load.php' );
if ( ! is_user_logged_in()) {
return;
}
// 'screen.php' is required by woo, which calls get_current_screen()
require_once (ABSPATH . "wp-admin/includes/screen.php");
//<link rel="stylesheet" href="../wp-admin/load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,admin-bar,buttons,media-views,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menu&load%5B%5D=s,widgets,site-icon,l10n,wp-auth-check,wp-color-picker&ver=4.6.1" type="text/css" >
?>
<html>
<head>
<?php
wp_enqueue_style( 'common' );
wp_enqueue_style( 'forms' );
wp_enqueue_style(
'td-wp-admin-td-panel-2',
TDC_URL_LEGACY_COMMON . '/wp_booster/wp-admin/css/wp-admin.css',
false,
TD_THEME_VERSION
);
wp_enqueue_script(
'td_confirm',
TDC_URL_LEGACY_COMMON . '/wp_booster/wp-admin/js/tdConfirm.js',
array( 'jquery' )
);
?>
<script>
// mini detector from td_js_generator
(function(){
var htmlTag = document.getElementsByTagName("html")[0];
if ( navigator.userAgent.indexOf("MSIE 10.0") > -1 ) {
htmlTag.className += ' ie10';
}
if ( !!navigator.userAgent.match(/Trident.*rv\:11\./) ) {
htmlTag.className += ' ie11';
}
if ( navigator.userAgent.indexOf("Edge") > -1 ) {
htmlTag.className += ' ieEdge';
}
if ( /(iPad|iPhone|iPod)/g.test(navigator.userAgent) ) {
htmlTag.className += ' td-md-is-ios';
}
var user_agent = navigator.userAgent.toLowerCase();
if ( user_agent.indexOf("android") > -1 ) {
htmlTag.className += ' td-md-is-android';
}
if ( -1 !== navigator.userAgent.indexOf('Mac OS X') ) {
htmlTag.className += ' td-md-is-os-x';
}
if ( /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) ) {
htmlTag.className += ' td-md-is-chrome';
}
if ( -1 !== navigator.userAgent.indexOf('Firefox') ) {
htmlTag.className += ' td-md-is-firefox';
}
if ( -1 !== navigator.userAgent.indexOf('Safari') && -1 === navigator.userAgent.indexOf('Chrome') ) {
htmlTag.className += ' td-md-is-safari';
}
if( -1 !== navigator.userAgent.indexOf('IEMobile') ){
htmlTag.className += ' td-md-is-iemobile';
}
})();
</script>
<style>
/* custom css - generated by TagDiv Composer */
.tdc-wpeditor {
display: flex;
flex-direction: column;
height: calc(100% - 69px) !important;
}
.tdc-wpeditor .mce-tinymce {
height: 100%;
}
.tdc-wpeditor #tdc-wpeditor_ifr {
height: calc(100% - 62px) !important;
}
.tdc-one-column .tdc-wpeditor #tdc-wpeditor_ifr {
height: calc(100% - 104px) !important;
}
.td-md-is-firefox .tdc-wpeditor #tdc-wpeditor_ifr {
height: 100% !important;
}
#wp-tdc-wpeditor-wrap {
display: flex;
flex-direction: column;
flex: 1;
}
#wp-tdc-wpeditor-editor-container {
display: flex;
flex-direction: column;
flex: 1;
}
#wp-tdc-wpeditor-editor-container textarea {
height: 100% !important;
}
#qt_tdc-wpeditor_toolbar {
min-height: auto;
}
.tdc-wpeditor {
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%)
}
.mce-fullscreen .tdc-wpeditor {
position: static !important;
top: auto !important;;
left: auto !important;;
margin-right: auto !important;;
transform: none !important;
}
</style>
<?php
if ( is_plugin_active( 'td-test-composer/td-test-composer.php' ) ) {
ob_start();
?>
<style>
/* custom css - generated by TagDiv Composer */
.media-menu > .media-menu-item,
.media-router > .media-menu-item:first-child,
.uploader-inline,
.edit-attachment,
.delete-attachment {
display: none !important;
}
</style>
<?php
echo ob_get_clean();
}
?>
<script>
window.loadIframe = function() {
var $body = jQuery( 'body' ),
$tdcWpeditor = jQuery( '.tdc-wpeditor' ),
$outerDocument = jQuery( window.parent.document ),
$tdcIframeWpeditor = $outerDocument.find( '#tdc-iframe-wpeditor' ),
modelId = $tdcIframeWpeditor.data( 'model_id' ),
model = window.parent.tdcIFrameData.getModel( modelId ),
editorWidth = model.get( 'cssWidth' ),
mappedParameterName = $tdcIframeWpeditor.data( 'mapped_parameter_name' ),
mappedParameterValue = model.get('attrs')[mappedParameterName];
function b64EncodeUnicode(str) {
// first we use encodeURIComponent to get percent-encoded UTF-8,
// then we convert the percent encodings into raw bytes which
// can be fed into btoa.
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
function toSolidBytes(match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
function b64DecodeUnicode(str) {
// Going backwards: from bytestream, to percent-encoding, to original string.
return decodeURIComponent(atob(str).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
// Add $tdcIframeWpeditor css classes to its body element (it's used to properly render the wpeditor and its textarea)
var tdcIframeWpeditorClass = $tdcIframeWpeditor.attr( 'class' );
if ( 'undefined' !== typeof tdcIframeWpeditorClass ) {
var bodyClass = $body.attr( 'class' );
if ( 'undefined' !== typeof bodyClass ) {
$body.attr( 'class', bodyClass + ' ' + tdcIframeWpeditorClass );
} else {
$body.attr( 'class', tdcIframeWpeditorClass );
}
}
$tdcIframeWpeditor.parent().removeClass( 'tdc-dropped-wpeditor' );
$tdcWpeditor.width( editorWidth + 50 );
$outerDocument.find( '#tdc-wpeditor' ).width( editorWidth + 120 );
var editor = window.tinymce.activeEditor;
// The editor should not be null
if ( _.isNull( editor ) ) {
tdcDebug.log( 'editor null' );
} else {
// Timeout used especially for IE or any browser where the editor is not already built at body 'onload'
// (no reliable event has been found for setting the content)
setTimeout(function() {
if ( 'undefined' !== typeof mappedParameterValue ) {
// Detect base64 encoding
try {
var decodedValue = b64DecodeUnicode( mappedParameterValue );
editor.setContent( decodedValue );
//editor.setContent( 'test' );
} catch( e ) {
editor.setContent( _.unescape( mappedParameterValue ) );
}
// The content must be unescaped because 'htmlentities' php function was used to encode editor content
//editor.setContent( _.unescape( mappedParameterValue ) );
//editor.setContent( mappedParameterValue );
}
}, 100);
editor.on( 'keyup undo change', function( event ) {
var currentValue = editor.getContent(),
// @todo This should be the content before change
previousValue = currentValue;
window.parent.tdcSidebarController.onUpdate (
model,
'content', // the name of the parameter
previousValue, // the old value
currentValue // the new value
);
}).on( 'mousedown', function(event) {
// Send the event to the #tdc-wpeditor component (to be activated)
window.parent.parent.jQuery( '#tdc-wpeditor' ).trigger( event );
});
$body.on( 'keyup change', '#tdc-wpeditor', function(event) {
// @todo This should be the content before change
var previousValue = jQuery(this).val();
// Make the active editor to update its formatted content (We need the formatted and not the raw content!)
editor.load();
// Get the formatted content
var currentValue = editor.getContent();
window.parent.tdcSidebarController.onUpdate (
model,
'content', // the name of the parameter
previousValue, // the old value
currentValue // the new value
);
// Update the model with the new content.
// In the editor, the new content is not present immediately, so we use a timeout function.
// The 'click' event can't be used.
}).on( 'mouseup', '.media-toolbar button', function(event) {
setTimeout(function() {
var currentValue = editor.getContent({format: 'html'}),
// @todo This should be the content before change
previousValue = currentValue;
window.parent.tdcSidebarController.onUpdate (
model,
'content', // the name of the parameter
previousValue, // the old value
currentValue // the new value
);
}, 200);
}).on( 'mousedown', function(event) {
// Send the event to the #tdc-wpeditor component (to be activated)
window.parent.jQuery( '#tdc-wpeditor' ).trigger( event );
});
}
}
</script>
</head>
<body onload="loadIframe()">
<div class="tdc-wpeditor">
<?php
// The editor id
global $wpeditorId;
$wpeditorId = 'tdc-wpeditor';
// Preset the 'visual' editor tab (This make the js editor to be instantiated - it's not null)
add_filter( 'wp_default_editor', 'tdc_wp_default_editor' );
function tdc_wp_default_editor() {
return "tmce";
}
// Add custom style to editor iframe content
add_filter('tiny_mce_before_init','tdc_tiny_mce_before_init');
function tdc_tiny_mce_before_init( $mceInit ) {
global $wpeditorId;
// Remove the css loaded in the wp editor
$styles = 'body.' . $wpeditorId . ' { word-wrap: normal !important;} ' .
'body.mceContentBody{ max-width: 100% !important; background: none !important} ' .
'body.mceContentBody:after{ content: none !important}';
if ( isset( $mceInit['content_style'] ) ) {
$mceInit['content_style'] .= ' ' . $styles . ' ';
} else {
$mceInit['content_style'] = $styles . ' ';
}
if ( 'deploy' === TDC_DEPLOY_MODE ) {
require_once TDC_PATH_LEGACY_COMMON . '/wp_booster/td_api.php';
} else {
require_once TDC_PATH_LEGACY_COMMON . '/wp_booster/td_api_tinymce_formats.php';
}
$mceInit['body_class'] .= ' tagdiv-type';
td_api_tinymce_formats::_helper_get_tinymce_format();
return $mceInit;
}
// Add editor extensions as they are in theme
require_once TDC_PATH_LEGACY_COMMON . '/wp_booster/wp-admin/tinymce/tinymce.php';
add_filter( 'mce_external_plugins', 'fb_add_tinymce_plugin' );
// Add to line 1 form WP TinyMCE
add_filter( 'mce_buttons', 'td_add_tinymce_button' );
// Render the editor
wp_editor(
'',
$wpeditorId,
array(
'teeny' => false,
'tinymce' => array(
'content_css' => get_stylesheet_directory_uri() . '/editor-style.css'
)
)
);
?>
</div>
<?php
// Dialog internal linking
_WP_Editors::enqueue_scripts();
do_action('wp_print_footer_scripts');
do_action( 'admin_footer' );
_WP_Editors::editor_js();
?>
<script type="text/javascript" src="<?php echo includes_url() ?>/js/mce-view.js"></script>
<script type="text/javascript" src="<?php echo includes_url() ?>/js/tinymce/plugins/compat3x/plugin.js"></script>
</body>
</html>