<?php
/**
* This is the main dispatcher for the customize interface, to edit collection settings from front-office
*
* ---------------------------------------------------------------------------------------------------------------
* IF YOU ARE READING THIS IN YOUR WEB BROWSER, IT MEANS THAT YOU DID NOT LOAD THIS FILE THROUGH A PHP WEB SERVER.
* TO GET STARTED, GO TO THIS PAGE: http://b2evolution.net/man/getting-started
* ---------------------------------------------------------------------------------------------------------------
*
* This file is part of the evoCore framework - {@link http://evocore.net/}
* See also {@link https://github.com/b2evolution/b2evolution}.
*
* @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
*
* @copyright (c)2003-2017 by Francois Planque - {@link http://fplanque.com/}
* Parts of this file are copyright (c)2004-2006 by Daniel HAHLER - {@link http://thequod.de/contact}.
* Parts of this file are copyright (c)2005-2006 by PROGIDISTRI - {@link http://progidistri.com/}.
*
* @package main
*/
/**
* Do the MAIN initializations:
*/
require_once dirname(__FILE__).'/conf/_config.php';
/**
* Check this: we are requiring _main.inc.php INSTEAD of _blog_main.inc.php because we are not
* trying to initialize any particular blog
*/
require_once $inc_path.'_main.inc.php';
$Timer->start( 'customize.php' );
// Get customizer mode:
param( 'customizer_mode', 'string', 'enable' );
param( 'customizing_url', 'url', NULL, true );
param( 'blog', 'integer', true, true );
param( 'view', 'string', '', true );
// Getting current blog info:
$BlogCache = & get_BlogCache();
/**
* @var Blog
*/
$Collection = $Blog = & $BlogCache->get_by_ID( $blog, false, false );
if( empty( $Blog ) )
{
load_funcs( 'skins/_skin.funcs.php' );
siteskin_init();
siteskin_include( '_404_blog_not_found.main.php' ); // error
exit(0);
// EXIT.
}
if( ! is_logged_in() )
{ // Anonymous user has no access to customize collection, Redirect to collection front page:
header_redirect( $Blog->get( 'url' ) );
}
if( empty( $view ) )
{ // If view is not defined try to get it from user settings per collection or set default:
$view = $UserSettings->get( 'customizer_view_'.$blog );
if( empty( $view ) )
{ // Display collection widget settings by default:
$view = 'coll_widgets';
}
memorize_param( 'view', 'string', '', $view );
}
if( $customizer_mode == 'enable' )
{ // Enable customizer mode:
$Session->set( 'customizer_mode_'.$blog, 1 );
if( $view == 'coll_widgets' )
{ // Allow to enable widgets designer mode only when user opens sub menu "Widgets" from the left panel of customizer mode:
$Session->set( 'designer_mode_'.$blog, 1 );
}
else
{ // Disable widgets designer mode for all other opened tabs:
$Session->delete( 'designer_mode_'.$blog );
}
}
elseif( $customizer_mode == 'disable' )
{ // Disable customizer mode:
$Session->delete( 'customizer_mode_'.$blog );
// Disable widgets designer mode together with customizer mode:
$Session->delete( 'designer_mode_'.$blog );
// This is a request to disable customizer mode:
if( empty( $customizing_url ) )
{ // Use collection base URL if no customizing URL is provided:
$redirect_to = $Blog->get( 'url' );
}
else
{ // Use current customizing URL, but remove params which are used only for enabled customizer mode:
$redirect_to = clear_url( $customizing_url, 'customizer_mode,designer_mode,show_toolbar,redir' );
if( strpos( $redirect_to, 'customizing_url=' ) !== false )
{ // Extract customizing URL in order to avoid redirect to same customize.php if it was added in URL params twice by mistake:
$redirect_to = urldecode( preg_replace( '#^.+[\?&]customizing_url=#', '', $redirect_to ) );
}
}
// 303 Redirect to normal page:
header_redirect( $redirect_to );
}
load_funcs( 'skins/_skin.funcs.php' );
// Initialize font-awesome icons and use them as a priority over the glyphicons, @see get_icon()
init_fontawesome_icons( 'fontawesome-glyphicons', 'blog' );
add_js_headline( 'var customizer_url = "'.get_customizer_url().'";'
.'var evo_js_lang_not_controlled_page = \''.TS_('This page is not controlled by b2evolution.').'\'' );
require_css( 'bootstrap-b2evo_base.bmin.css', 'blog' );
require_js_defer( 'build/bootstrap-evo_frontoffice-superbundle.bmin.js', 'blog' );
require_js_defer( 'src/evo_customizer.js', 'blog' );
require_css( '#bootstrap_css#', 'blog' );
// Initialize shortcut keys:
init_hotkeys_js( 'blog' );
// Send the predefined cookies:
evo_sendcookies();
headers_content_mightcache( 'text/html' ); // In most situations, you do NOT want to cache dynamic content!
?>
<!DOCTYPE html>
<html lang="<?php locale_lang() ?>" class="evo_customizer__html">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, follow" />
<title><?php printf( T_('Customizing Collection: %s'), $Blog->dget( 'shortname', 'htmlhead' ) ); ?></title>
<?php include_headlines() /* Add javascript and css files included by plugins and skin */ ?>
<?php echo_modalwindow_js(); /* Initialize JavaScript to build and open window */ ?>
</head>
<body<?php skin_body_attrs(); ?>>
<?php
// ---------------------------- TOOLBAR INCLUDED HERE ----------------------------
require skin_fallback_path( '_toolbar.inc.php' );
// ------------------------------- END OF TOOLBAR --------------------------------
?>
<div class="evo_customizer__wrapper">
<div class="evo_customizer__left">
<iframe id="evo_customizer__backoffice" name="evo_customizer__backoffice" src="<?php echo get_admin_url( 'ctrl=customize&view='.$view.'&blog='.$blog ); ?>" data-instance="<?php echo $instance_name; ?>" data-coll-id="<?php echo $Blog->ID; ?>"></iframe>
</div>
<div class="evo_customizer__right">
<iframe id="evo_customizer__frontoffice" name="evo_customizer__frontoffice" src="<?php echo url_add_param( $customizing_url, 'customizer_mode=enable&show_toolbar=hidden&redir=no' ); ?>" data-coll-url="<?php echo format_to_output( $Blog->get( 'url' ), 'htmlattr' ); ?>"></iframe>
<div id="evo_customizer__frontoffice_loader"></div>
</div>
<iframe id="evo_customizer__updater" name="evo_customizer__updater" style="display:none"></iframe>
<div id="evo_customizer__vtoggler" class="evo_customizer__vtoggler"></div>
</div>
<?php include_footerlines(); /* Add JavaScript and CSS files included by plugins and skin */ ?>
</body>
</html><?php
$Timer->stop( 'customize.php' );
?>