File "Preview.php"
Full path: C:/Inetpub/vhosts/drshti.com/httpdocs/wp-content/plugins/depicter/app/src/Front/Preview.php
File
size: 5.6 B (5.6 KB bytes)
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
namespace Depicter\Front;
use Averta\Core\Utility\Arr;
use Depicter\Document\Models\Document;
use Depicter\Html\Html;
class Preview
{
/**
* Preview constructor.
*/
public function __construct()
{
}
/**
* Prepares viewArgs for document preview
*
* @return array
*/
public function prepare()
{
// prevent enabling preview mode if render mode param was passed
if( empty( $_REQUEST['renderMode'] ) ){
$this->enablePreviewMode();
}
$viewArgs = [
'head' => '',
'title' => __( 'Depicter Preview', 'depicter' ),
'footer' => ''
];
$styleLinks = \Depicter::front()->assets()->getStyles(['common', 'situational']);
foreach ( $styleLinks as $styleId => $styleLink ) {
$viewArgs['head'] .= Html::link([
'rel' => "stylesheet",
'id' => $styleId . '-css',
'href' => $styleLink,
'media' => 'all'
]) . "\n";
}
$scriptLinks = \Depicter::front()->assets()->getScripts('player');
foreach ( $scriptLinks as $scriptId => $scriptLink ){
$viewArgs['footer'] .= Html::script([
'id' => $scriptId . '-js',
'src' => $scriptLink
]) . "\n";
}
return $viewArgs;
}
/**
* Generates a complete HTML page to preview document
*
* @param $documentId
* @param array $documentArgs
*
* @return string|array
*/
public function document( $documentId, $documentArgs = [] )
{
$defaults = [
'status' => 'draft',
'start' => null
];
$documentArgs = Arr::merge( $documentArgs, $defaults );
$viewArgs = $this->prepare();
$where = [ 'status' => trim( $documentArgs['status'] ) ];
// support for multiple statuses (status=publish|draft)
if( strpos( $where['status'], '|' ) !== false ){
$where['status'] = explode('|', $where['status'] );
}
$where['start'] = $documentArgs['start'];
if ( !empty( $documentArgs['gutenberg'] ) ) {
$scriptLinks = \Depicter::front()->assets()->getScripts('iframe-resizer-content');
foreach ( $scriptLinks as $scriptId => $scriptLink ){
$viewArgs['footer'] .= Html::script([
'id' => $scriptId . '-js',
'src' => $scriptLink
]) . "\n";
}
if ( !$documentId ) {
$viewArgs['content'] = '<span class="depicter-no-content">' . esc_html__( 'Please select a slider from the list.', 'depicter' ) . '</span>';
return $this->view( $viewArgs );
}
}
try{
$documentModel = \Depicter::document()->getModel( $documentId, $where );
$documentModel->setShowAdminNotice( false );
$viewArgs = $this->prepareToRender( $documentModel, $viewArgs );
if ( !empty( $documentArgs['viewParts'] ) ) {
return $viewArgs;
}
if ( $documentModel->isDisplayExtension() ) {
$viewArgs['body_classes'][] = 'depicter-display-canvas';
}
} catch ( \Exception $exception ) {
$viewArgs['content'] = '<span class="depicter-no-content">' . $exception->getMessage() . '</span>';
}
return $this->view( $viewArgs );
}
/**
* prepare document model to render
*
* @param Document $documentModel
* @param $viewArgs
*
* @return mixed
*/
protected function prepareToRender( $documentModel, $viewArgs )
{
// Prepare and render document
$viewArgs['content'] = Html::div( [ 'class' => 'depicter-preview-canvas' ], $documentModel->prepare()
->render() );
// Link to special styles
$stylesList = [];
if( $fontsLink = $documentModel->getFontsLink() ){
$stylesList["depicter-google-fonts"] = $fontsLink;
}
foreach( $stylesList as $styleId => $styleLink ){
$viewArgs['head'] .= Html::link( [ 'rel' => "stylesheet",
'id' => $styleId . '-css',
'href' => $styleLink,
'media' => 'all' ] ) . "\n";
}
$documentID = $documentModel->getDocumentID();
// Add custom styles
$localFontsCss = \Depicter::documentFonts()->getLocalFontsCss( $documentID );
$viewArgs['head'] .= $documentModel->getBeforeInitCssAndTag() . "\n";
$viewArgs['head'] .= Html::style( [ 'type' => 'text/css' ], $documentModel->getCss() . $localFontsCss ) . "\n";
if ( $document = \Depicter::documentRepository()->findById( $documentID ) ) {
$documentName = $document->getFieldValue('name');
$viewArgs['title'] = empty( $documentName ) ? $viewArgs['title'] : $documentName;
}
$viewArgs['hasShortcode'] = $documentModel->hasShortcode();
return $viewArgs;
}
/**
* Renders a page with message
*
* @param $content
*
* @return string
*/
public function message( $content )
{
$viewArgs = $this->prepare();
$viewArgs['content'] = '<span class="depicter-no-content">' . $content . '</span>';
return $this->view( $viewArgs );
}
/**
* Renders page view
*
* @param $args
*
* @return string
*/
protected function view( $args ){
// JetPack compatibility issue
if ( class_exists( 'Filter_Embedded_HTML_Objects' ) ) {
remove_filter( 'pre_kses', array( 'Filter_Embedded_HTML_Objects', 'filter' ), 11 );
}
$view = \Depicter::view('canvas.php')->with( 'view_args', $args )->toString();
// JetPack compatibility issue
if ( class_exists( 'Filter_Embedded_HTML_Objects' ) ) {
add_filter( 'pre_kses', array( 'Filter_Embedded_HTML_Objects', 'filter' ), 11 );
}
return $view;
}
/**
* Set a constant to specify document preview mode
*/
protected function enablePreviewMode() {
if ( !defined('IS_DEPICTER_PREVIEW') ) {
define( 'IS_DEPICTER_PREVIEW', true );
}
}
/**
* Check if preview mode is active or not
*
* @return bool
*/
public function isPreview() {
return defined( 'IS_DEPICTER_PREVIEW' ) && IS_DEPICTER_PREVIEW;
}
}